404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 88.222.222.217
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

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

package iottwinmaker

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 opBatchPutPropertyValues = "BatchPutPropertyValues"

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

	if input == nil {
		input = &BatchPutPropertyValuesInput{}
	}

	output = &BatchPutPropertyValuesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("data.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// BatchPutPropertyValues API operation for AWS IoT TwinMaker.
//
// Sets values for multiple time series properties.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation BatchPutPropertyValues for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/BatchPutPropertyValues
func (c *IoTTwinMaker) BatchPutPropertyValues(input *BatchPutPropertyValuesInput) (*BatchPutPropertyValuesOutput, error) {
	req, out := c.BatchPutPropertyValuesRequest(input)
	return out, req.Send()
}

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

const opCancelMetadataTransferJob = "CancelMetadataTransferJob"

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

	if input == nil {
		input = &CancelMetadataTransferJobInput{}
	}

	output = &CancelMetadataTransferJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CancelMetadataTransferJob API operation for AWS IoT TwinMaker.
//
// Cancels the metadata transfer job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CancelMetadataTransferJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CancelMetadataTransferJob
func (c *IoTTwinMaker) CancelMetadataTransferJob(input *CancelMetadataTransferJobInput) (*CancelMetadataTransferJobOutput, error) {
	req, out := c.CancelMetadataTransferJobRequest(input)
	return out, req.Send()
}

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

const opCreateComponentType = "CreateComponentType"

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

	if input == nil {
		input = &CreateComponentTypeInput{}
	}

	output = &CreateComponentTypeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateComponentType API operation for AWS IoT TwinMaker.
//
// Creates a component type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateComponentType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateComponentType
func (c *IoTTwinMaker) CreateComponentType(input *CreateComponentTypeInput) (*CreateComponentTypeOutput, error) {
	req, out := c.CreateComponentTypeRequest(input)
	return out, req.Send()
}

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

const opCreateEntity = "CreateEntity"

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

	if input == nil {
		input = &CreateEntityInput{}
	}

	output = &CreateEntityOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateEntity API operation for AWS IoT TwinMaker.
//
// Creates an entity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateEntity for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateEntity
func (c *IoTTwinMaker) CreateEntity(input *CreateEntityInput) (*CreateEntityOutput, error) {
	req, out := c.CreateEntityRequest(input)
	return out, req.Send()
}

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

const opCreateMetadataTransferJob = "CreateMetadataTransferJob"

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

	if input == nil {
		input = &CreateMetadataTransferJobInput{}
	}

	output = &CreateMetadataTransferJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateMetadataTransferJob API operation for AWS IoT TwinMaker.
//
// Creates a new metadata transfer job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateMetadataTransferJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateMetadataTransferJob
func (c *IoTTwinMaker) CreateMetadataTransferJob(input *CreateMetadataTransferJobInput) (*CreateMetadataTransferJobOutput, error) {
	req, out := c.CreateMetadataTransferJobRequest(input)
	return out, req.Send()
}

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

const opCreateScene = "CreateScene"

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

	if input == nil {
		input = &CreateSceneInput{}
	}

	output = &CreateSceneOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateScene API operation for AWS IoT TwinMaker.
//
// Creates a scene.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateScene for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateScene
func (c *IoTTwinMaker) CreateScene(input *CreateSceneInput) (*CreateSceneOutput, error) {
	req, out := c.CreateSceneRequest(input)
	return out, req.Send()
}

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

const opCreateSyncJob = "CreateSyncJob"

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

	if input == nil {
		input = &CreateSyncJobInput{}
	}

	output = &CreateSyncJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateSyncJob API operation for AWS IoT TwinMaker.
//
// This action creates a SyncJob.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateSyncJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateSyncJob
func (c *IoTTwinMaker) CreateSyncJob(input *CreateSyncJobInput) (*CreateSyncJobOutput, error) {
	req, out := c.CreateSyncJobRequest(input)
	return out, req.Send()
}

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

const opCreateWorkspace = "CreateWorkspace"

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

	if input == nil {
		input = &CreateWorkspaceInput{}
	}

	output = &CreateWorkspaceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// CreateWorkspace API operation for AWS IoT TwinMaker.
//
// Creates a workplace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation CreateWorkspace for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/CreateWorkspace
func (c *IoTTwinMaker) CreateWorkspace(input *CreateWorkspaceInput) (*CreateWorkspaceOutput, error) {
	req, out := c.CreateWorkspaceRequest(input)
	return out, req.Send()
}

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

const opDeleteComponentType = "DeleteComponentType"

// DeleteComponentTypeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteComponentType operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteComponentType for more information on using the DeleteComponentType
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteComponentTypeRequest method.
//	req, resp := client.DeleteComponentTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteComponentType
func (c *IoTTwinMaker) DeleteComponentTypeRequest(input *DeleteComponentTypeInput) (req *request.Request, output *DeleteComponentTypeOutput) {
	op := &request.Operation{
		Name:       opDeleteComponentType,
		HTTPMethod: "DELETE",
		HTTPPath:   "/workspaces/{workspaceId}/component-types/{componentTypeId}",
	}

	if input == nil {
		input = &DeleteComponentTypeInput{}
	}

	output = &DeleteComponentTypeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// DeleteComponentType API operation for AWS IoT TwinMaker.
//
// Deletes a component type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation DeleteComponentType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteComponentType
func (c *IoTTwinMaker) DeleteComponentType(input *DeleteComponentTypeInput) (*DeleteComponentTypeOutput, error) {
	req, out := c.DeleteComponentTypeRequest(input)
	return out, req.Send()
}

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

const opDeleteEntity = "DeleteEntity"

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

	if input == nil {
		input = &DeleteEntityInput{}
	}

	output = &DeleteEntityOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// DeleteEntity API operation for AWS IoT TwinMaker.
//
// Deletes an entity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation DeleteEntity for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteEntity
func (c *IoTTwinMaker) DeleteEntity(input *DeleteEntityInput) (*DeleteEntityOutput, error) {
	req, out := c.DeleteEntityRequest(input)
	return out, req.Send()
}

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

const opDeleteScene = "DeleteScene"

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

	if input == nil {
		input = &DeleteSceneInput{}
	}

	output = &DeleteSceneOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// DeleteScene API operation for AWS IoT TwinMaker.
//
// Deletes a scene.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation DeleteScene for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteScene
func (c *IoTTwinMaker) DeleteScene(input *DeleteSceneInput) (*DeleteSceneOutput, error) {
	req, out := c.DeleteSceneRequest(input)
	return out, req.Send()
}

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

const opDeleteSyncJob = "DeleteSyncJob"

// DeleteSyncJobRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSyncJob operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteSyncJob for more information on using the DeleteSyncJob
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteSyncJobRequest method.
//	req, resp := client.DeleteSyncJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteSyncJob
func (c *IoTTwinMaker) DeleteSyncJobRequest(input *DeleteSyncJobInput) (req *request.Request, output *DeleteSyncJobOutput) {
	op := &request.Operation{
		Name:       opDeleteSyncJob,
		HTTPMethod: "DELETE",
		HTTPPath:   "/workspaces/{workspaceId}/sync-jobs/{syncSource}",
	}

	if input == nil {
		input = &DeleteSyncJobInput{}
	}

	output = &DeleteSyncJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// DeleteSyncJob API operation for AWS IoT TwinMaker.
//
// Delete the SyncJob.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation DeleteSyncJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteSyncJob
func (c *IoTTwinMaker) DeleteSyncJob(input *DeleteSyncJobInput) (*DeleteSyncJobOutput, error) {
	req, out := c.DeleteSyncJobRequest(input)
	return out, req.Send()
}

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

const opDeleteWorkspace = "DeleteWorkspace"

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

	if input == nil {
		input = &DeleteWorkspaceInput{}
	}

	output = &DeleteWorkspaceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// DeleteWorkspace API operation for AWS IoT TwinMaker.
//
// Deletes a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation DeleteWorkspace for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/DeleteWorkspace
func (c *IoTTwinMaker) DeleteWorkspace(input *DeleteWorkspaceInput) (*DeleteWorkspaceOutput, error) {
	req, out := c.DeleteWorkspaceRequest(input)
	return out, req.Send()
}

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

const opExecuteQuery = "ExecuteQuery"

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

	if input == nil {
		input = &ExecuteQueryInput{}
	}

	output = &ExecuteQueryOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ExecuteQuery API operation for AWS IoT TwinMaker.
//
// Run queries to access information from your knowledge graph of entities within
// individual workspaces.
//
// The ExecuteQuery action only works with Amazon Web Services Java SDK2 (https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html).
// ExecuteQuery will not work with any Amazon Web Services Java SDK version
// < 2.x.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ExecuteQuery for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - QueryTimeoutException
//     The query timeout exception.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ExecuteQuery
func (c *IoTTwinMaker) ExecuteQuery(input *ExecuteQueryInput) (*ExecuteQueryOutput, error) {
	req, out := c.ExecuteQueryRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetComponentType = "GetComponentType"

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

	if input == nil {
		input = &GetComponentTypeInput{}
	}

	output = &GetComponentTypeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetComponentType API operation for AWS IoT TwinMaker.
//
// Retrieves information about a component type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetComponentType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetComponentType
func (c *IoTTwinMaker) GetComponentType(input *GetComponentTypeInput) (*GetComponentTypeOutput, error) {
	req, out := c.GetComponentTypeRequest(input)
	return out, req.Send()
}

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

const opGetEntity = "GetEntity"

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

	if input == nil {
		input = &GetEntityInput{}
	}

	output = &GetEntityOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetEntity API operation for AWS IoT TwinMaker.
//
// Retrieves information about an entity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetEntity for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetEntity
func (c *IoTTwinMaker) GetEntity(input *GetEntityInput) (*GetEntityOutput, error) {
	req, out := c.GetEntityRequest(input)
	return out, req.Send()
}

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

const opGetMetadataTransferJob = "GetMetadataTransferJob"

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

	if input == nil {
		input = &GetMetadataTransferJobInput{}
	}

	output = &GetMetadataTransferJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetMetadataTransferJob API operation for AWS IoT TwinMaker.
//
// Gets a nmetadata transfer job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetMetadataTransferJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetMetadataTransferJob
func (c *IoTTwinMaker) GetMetadataTransferJob(input *GetMetadataTransferJobInput) (*GetMetadataTransferJobOutput, error) {
	req, out := c.GetMetadataTransferJobRequest(input)
	return out, req.Send()
}

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

const opGetPricingPlan = "GetPricingPlan"

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

	if input == nil {
		input = &GetPricingPlanInput{}
	}

	output = &GetPricingPlanOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetPricingPlan API operation for AWS IoT TwinMaker.
//
// Gets the pricing plan.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetPricingPlan for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetPricingPlan
func (c *IoTTwinMaker) GetPricingPlan(input *GetPricingPlanInput) (*GetPricingPlanOutput, error) {
	req, out := c.GetPricingPlanRequest(input)
	return out, req.Send()
}

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

const opGetPropertyValue = "GetPropertyValue"

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

	if input == nil {
		input = &GetPropertyValueInput{}
	}

	output = &GetPropertyValueOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("data.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetPropertyValue API operation for AWS IoT TwinMaker.
//
// Gets the property values for a component, component type, entity, or workspace.
//
// You must specify a value for either componentName, componentTypeId, entityId,
// or workspaceId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetPropertyValue for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ConnectorFailureException
//     The connector failed.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConnectorTimeoutException
//     The connector timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetPropertyValue
func (c *IoTTwinMaker) GetPropertyValue(input *GetPropertyValueInput) (*GetPropertyValueOutput, error) {
	req, out := c.GetPropertyValueRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetPropertyValueHistory = "GetPropertyValueHistory"

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

	if input == nil {
		input = &GetPropertyValueHistoryInput{}
	}

	output = &GetPropertyValueHistoryOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("data.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetPropertyValueHistory API operation for AWS IoT TwinMaker.
//
// Retrieves information about the history of a time series property value for
// a component, component type, entity, or workspace.
//
// You must specify a value for workspaceId. For entity-specific queries, specify
// values for componentName and entityId. For cross-entity quries, specify a
// value for componentTypeId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetPropertyValueHistory for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ConnectorFailureException
//     The connector failed.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConnectorTimeoutException
//     The connector timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetPropertyValueHistory
func (c *IoTTwinMaker) GetPropertyValueHistory(input *GetPropertyValueHistoryInput) (*GetPropertyValueHistoryOutput, error) {
	req, out := c.GetPropertyValueHistoryRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetScene = "GetScene"

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

	if input == nil {
		input = &GetSceneInput{}
	}

	output = &GetSceneOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetScene API operation for AWS IoT TwinMaker.
//
// Retrieves information about a scene.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetScene for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetScene
func (c *IoTTwinMaker) GetScene(input *GetSceneInput) (*GetSceneOutput, error) {
	req, out := c.GetSceneRequest(input)
	return out, req.Send()
}

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

const opGetSyncJob = "GetSyncJob"

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

	if input == nil {
		input = &GetSyncJobInput{}
	}

	output = &GetSyncJobOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetSyncJob API operation for AWS IoT TwinMaker.
//
// Gets the SyncJob.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetSyncJob for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetSyncJob
func (c *IoTTwinMaker) GetSyncJob(input *GetSyncJobInput) (*GetSyncJobOutput, error) {
	req, out := c.GetSyncJobRequest(input)
	return out, req.Send()
}

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

const opGetWorkspace = "GetWorkspace"

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

	if input == nil {
		input = &GetWorkspaceInput{}
	}

	output = &GetWorkspaceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// GetWorkspace API operation for AWS IoT TwinMaker.
//
// Retrieves information about a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation GetWorkspace for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/GetWorkspace
func (c *IoTTwinMaker) GetWorkspace(input *GetWorkspaceInput) (*GetWorkspaceOutput, error) {
	req, out := c.GetWorkspaceRequest(input)
	return out, req.Send()
}

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

const opListComponentTypes = "ListComponentTypes"

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

	if input == nil {
		input = &ListComponentTypesInput{}
	}

	output = &ListComponentTypesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListComponentTypes API operation for AWS IoT TwinMaker.
//
// Lists all component types in a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListComponentTypes for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListComponentTypes
func (c *IoTTwinMaker) ListComponentTypes(input *ListComponentTypesInput) (*ListComponentTypesOutput, error) {
	req, out := c.ListComponentTypesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListComponents = "ListComponents"

// ListComponentsRequest generates a "aws/request.Request" representing the
// client's request for the ListComponents operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListComponents for more information on using the ListComponents
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListComponentsRequest method.
//	req, resp := client.ListComponentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListComponents
func (c *IoTTwinMaker) ListComponentsRequest(input *ListComponentsInput) (req *request.Request, output *ListComponentsOutput) {
	op := &request.Operation{
		Name:       opListComponents,
		HTTPMethod: "POST",
		HTTPPath:   "/workspaces/{workspaceId}/entities/{entityId}/components-list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListComponentsInput{}
	}

	output = &ListComponentsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListComponents API operation for AWS IoT TwinMaker.
//
// This API lists the components of an entity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListComponents for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListComponents
func (c *IoTTwinMaker) ListComponents(input *ListComponentsInput) (*ListComponentsOutput, error) {
	req, out := c.ListComponentsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEntities = "ListEntities"

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

	if input == nil {
		input = &ListEntitiesInput{}
	}

	output = &ListEntitiesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListEntities API operation for AWS IoT TwinMaker.
//
// Lists all entities in a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListEntities for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListEntities
func (c *IoTTwinMaker) ListEntities(input *ListEntitiesInput) (*ListEntitiesOutput, error) {
	req, out := c.ListEntitiesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListMetadataTransferJobs = "ListMetadataTransferJobs"

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

	if input == nil {
		input = &ListMetadataTransferJobsInput{}
	}

	output = &ListMetadataTransferJobsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListMetadataTransferJobs API operation for AWS IoT TwinMaker.
//
// Lists the metadata transfer jobs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListMetadataTransferJobs for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListMetadataTransferJobs
func (c *IoTTwinMaker) ListMetadataTransferJobs(input *ListMetadataTransferJobsInput) (*ListMetadataTransferJobsOutput, error) {
	req, out := c.ListMetadataTransferJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListProperties = "ListProperties"

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

	if input == nil {
		input = &ListPropertiesInput{}
	}

	output = &ListPropertiesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListProperties API operation for AWS IoT TwinMaker.
//
// This API lists the properties of a component.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListProperties for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListProperties
func (c *IoTTwinMaker) ListProperties(input *ListPropertiesInput) (*ListPropertiesOutput, error) {
	req, out := c.ListPropertiesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListScenes = "ListScenes"

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

	if input == nil {
		input = &ListScenesInput{}
	}

	output = &ListScenesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListScenes API operation for AWS IoT TwinMaker.
//
// Lists all scenes in a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListScenes for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListScenes
func (c *IoTTwinMaker) ListScenes(input *ListScenesInput) (*ListScenesOutput, error) {
	req, out := c.ListScenesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSyncJobs = "ListSyncJobs"

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

	if input == nil {
		input = &ListSyncJobsInput{}
	}

	output = &ListSyncJobsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListSyncJobs API operation for AWS IoT TwinMaker.
//
// List all SyncJobs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListSyncJobs for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListSyncJobs
func (c *IoTTwinMaker) ListSyncJobs(input *ListSyncJobsInput) (*ListSyncJobsOutput, error) {
	req, out := c.ListSyncJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSyncResources = "ListSyncResources"

// ListSyncResourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListSyncResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListSyncResources for more information on using the ListSyncResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListSyncResourcesRequest method.
//	req, resp := client.ListSyncResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListSyncResources
func (c *IoTTwinMaker) ListSyncResourcesRequest(input *ListSyncResourcesInput) (req *request.Request, output *ListSyncResourcesOutput) {
	op := &request.Operation{
		Name:       opListSyncResources,
		HTTPMethod: "POST",
		HTTPPath:   "/workspaces/{workspaceId}/sync-jobs/{syncSource}/resources-list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListSyncResourcesInput{}
	}

	output = &ListSyncResourcesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListSyncResources API operation for AWS IoT TwinMaker.
//
// Lists the sync resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListSyncResources for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListSyncResources
func (c *IoTTwinMaker) ListSyncResources(input *ListSyncResourcesInput) (*ListSyncResourcesOutput, error) {
	req, out := c.ListSyncResourcesRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListSyncResourcesOutput), !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/iottwinmaker-2021-11-29/ListTagsForResource
func (c *IoTTwinMaker) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags-list",
	}

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

	output = &ListTagsForResourceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListTagsForResource API operation for AWS IoT TwinMaker.
//
// Lists all tags associated with a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListTagsForResource
func (c *IoTTwinMaker) 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 *IoTTwinMaker) 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 opListWorkspaces = "ListWorkspaces"

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

	if input == nil {
		input = &ListWorkspacesInput{}
	}

	output = &ListWorkspacesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// ListWorkspaces API operation for AWS IoT TwinMaker.
//
// Retrieves information about workspaces in the current account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation ListWorkspaces for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/ListWorkspaces
func (c *IoTTwinMaker) ListWorkspaces(input *ListWorkspacesInput) (*ListWorkspacesOutput, error) {
	req, out := c.ListWorkspacesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

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/iottwinmaker-2021-11-29/TagResource
func (c *IoTTwinMaker) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags",
	}

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

	output = &TagResourceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// TagResource API operation for AWS IoT TwinMaker.
//
// Adds tags to a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - TooManyTagsException
//     The number of tags exceeds the limit.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/TagResource
func (c *IoTTwinMaker) 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 *IoTTwinMaker) 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/iottwinmaker-2021-11-29/UntagResource
func (c *IoTTwinMaker) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/tags",
	}

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

	output = &UntagResourceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UntagResource API operation for AWS IoT TwinMaker.
//
// Removes tags from a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UntagResource
func (c *IoTTwinMaker) 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 *IoTTwinMaker) 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 opUpdateComponentType = "UpdateComponentType"

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

	if input == nil {
		input = &UpdateComponentTypeInput{}
	}

	output = &UpdateComponentTypeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UpdateComponentType API operation for AWS IoT TwinMaker.
//
// Updates information in a component type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UpdateComponentType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UpdateComponentType
func (c *IoTTwinMaker) UpdateComponentType(input *UpdateComponentTypeInput) (*UpdateComponentTypeOutput, error) {
	req, out := c.UpdateComponentTypeRequest(input)
	return out, req.Send()
}

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

const opUpdateEntity = "UpdateEntity"

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

	if input == nil {
		input = &UpdateEntityInput{}
	}

	output = &UpdateEntityOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UpdateEntity API operation for AWS IoT TwinMaker.
//
// Updates an entity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UpdateEntity for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ConflictException
//     A conflict occurred.
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UpdateEntity
func (c *IoTTwinMaker) UpdateEntity(input *UpdateEntityInput) (*UpdateEntityOutput, error) {
	req, out := c.UpdateEntityRequest(input)
	return out, req.Send()
}

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

const opUpdatePricingPlan = "UpdatePricingPlan"

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

	if input == nil {
		input = &UpdatePricingPlanInput{}
	}

	output = &UpdatePricingPlanOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UpdatePricingPlan API operation for AWS IoT TwinMaker.
//
// Update the pricing plan.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UpdatePricingPlan for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UpdatePricingPlan
func (c *IoTTwinMaker) UpdatePricingPlan(input *UpdatePricingPlanInput) (*UpdatePricingPlanOutput, error) {
	req, out := c.UpdatePricingPlanRequest(input)
	return out, req.Send()
}

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

const opUpdateScene = "UpdateScene"

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

	if input == nil {
		input = &UpdateSceneInput{}
	}

	output = &UpdateSceneOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UpdateScene API operation for AWS IoT TwinMaker.
//
// Updates a scene.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UpdateScene for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UpdateScene
func (c *IoTTwinMaker) UpdateScene(input *UpdateSceneInput) (*UpdateSceneOutput, error) {
	req, out := c.UpdateSceneRequest(input)
	return out, req.Send()
}

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

const opUpdateWorkspace = "UpdateWorkspace"

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

	if input == nil {
		input = &UpdateWorkspaceInput{}
	}

	output = &UpdateWorkspaceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("api.", nil))
	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
	return
}

// UpdateWorkspace API operation for AWS IoT TwinMaker.
//
// Updates a workspace.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS IoT TwinMaker's
// API operation UpdateWorkspace for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An unexpected error has occurred.
//
//   - AccessDeniedException
//     Access is denied.
//
//   - ResourceNotFoundException
//     The resource wasn't found.
//
//   - ThrottlingException
//     The rate exceeds the limit.
//
//   - ValidationException
//     Failed
//
//   - ServiceQuotaExceededException
//     The service quota was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/iottwinmaker-2021-11-29/UpdateWorkspace
func (c *IoTTwinMaker) UpdateWorkspace(input *UpdateWorkspaceInput) (*UpdateWorkspaceOutput, error) {
	req, out := c.UpdateWorkspaceRequest(input)
	return out, req.Send()
}

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

// Access is denied.
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
}

// An error returned by the BatchPutProperty action.
type BatchPutPropertyError struct {
	_ struct{} `type:"structure"`

	// An object that contains information about errors returned by the BatchPutProperty
	// action.
	//
	// Entry is a required field
	Entry *PropertyValueEntry `locationName:"entry" type:"structure" required:"true"`

	// The error code.
	//
	// ErrorCode is a required field
	ErrorCode *string `locationName:"errorCode" min:"1" type:"string" required:"true"`

	// The error message.
	//
	// ErrorMessage is a required field
	ErrorMessage *string `locationName:"errorMessage" 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 BatchPutPropertyError) String() string {
	return awsutil.Prettify(s)
}

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

// SetEntry sets the Entry field's value.
func (s *BatchPutPropertyError) SetEntry(v *PropertyValueEntry) *BatchPutPropertyError {
	s.Entry = v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *BatchPutPropertyError) SetErrorCode(v string) *BatchPutPropertyError {
	s.ErrorCode = &v
	return s
}

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

// An object that contains information about errors returned by the BatchPutProperty
// action.
type BatchPutPropertyErrorEntry struct {
	_ struct{} `type:"structure"`

	// A list of objects that contain information about errors returned by the BatchPutProperty
	// action.
	//
	// Errors is a required field
	Errors []*BatchPutPropertyError `locationName:"errors" 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 BatchPutPropertyErrorEntry) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchPutPropertyErrorEntry) SetErrors(v []*BatchPutPropertyError) *BatchPutPropertyErrorEntry {
	s.Errors = v
	return s
}

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

	// An object that maps strings to the property value entries to set. Each string
	// in the mapping must be unique to this object.
	//
	// Entries is a required field
	Entries []*PropertyValueEntry `locationName:"entries" min:"1" type:"list" required:"true"`

	// The ID of the workspace that contains the properties to set.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 BatchPutPropertyValuesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchPutPropertyValuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchPutPropertyValuesInput"}
	if s.Entries == nil {
		invalidParams.Add(request.NewErrParamRequired("Entries"))
	}
	if s.Entries != nil && len(s.Entries) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Entries", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.Entries != nil {
		for i, v := range s.Entries {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Entries", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetEntries sets the Entries field's value.
func (s *BatchPutPropertyValuesInput) SetEntries(v []*PropertyValueEntry) *BatchPutPropertyValuesInput {
	s.Entries = v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *BatchPutPropertyValuesInput) SetWorkspaceId(v string) *BatchPutPropertyValuesInput {
	s.WorkspaceId = &v
	return s
}

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

	// Entries that caused errors in the batch put operation.
	//
	// ErrorEntries is a required field
	ErrorEntries []*BatchPutPropertyErrorEntry `locationName:"errorEntries" 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 BatchPutPropertyValuesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrorEntries sets the ErrorEntries field's value.
func (s *BatchPutPropertyValuesOutput) SetErrorEntries(v []*BatchPutPropertyErrorEntry) *BatchPutPropertyValuesOutput {
	s.ErrorEntries = v
	return s
}

// Information about the pricing bundle.
type BundleInformation struct {
	_ struct{} `type:"structure"`

	// The bundle names.
	//
	// BundleNames is a required field
	BundleNames []*string `locationName:"bundleNames" min:"1" type:"list" required:"true"`

	// The pricing tier.
	PricingTier *string `locationName:"pricingTier" type:"string" enum:"PricingTier"`
}

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

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

// SetBundleNames sets the BundleNames field's value.
func (s *BundleInformation) SetBundleNames(v []*string) *BundleInformation {
	s.BundleNames = v
	return s
}

// SetPricingTier sets the PricingTier field's value.
func (s *BundleInformation) SetPricingTier(v string) *BundleInformation {
	s.PricingTier = &v
	return s
}

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

	// The metadata transfer job Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `location:"uri" locationName:"metadataTransferJobId" 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 CancelMetadataTransferJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *CancelMetadataTransferJobInput) SetMetadataTransferJobId(v string) *CancelMetadataTransferJobInput {
	s.MetadataTransferJobId = &v
	return s
}

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

	// The metadata transfer job ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The metadata transfer job Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `locationName:"metadataTransferJobId" min:"1" type:"string" required:"true"`

	// The metadata transfer job's progress.
	Progress *MetadataTransferJobProgress `locationName:"progress" type:"structure"`

	// The metadata transfer job's status.
	//
	// Status is a required field
	Status *MetadataTransferJobStatus `locationName:"status" type:"structure" required:"true"`

	// Used to update the DateTime property.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *CancelMetadataTransferJobOutput) SetMetadataTransferJobId(v string) *CancelMetadataTransferJobOutput {
	s.MetadataTransferJobId = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *CancelMetadataTransferJobOutput) SetProgress(v *MetadataTransferJobProgress) *CancelMetadataTransferJobOutput {
	s.Progress = v
	return s
}

// SetStatus sets the Status field's value.
func (s *CancelMetadataTransferJobOutput) SetStatus(v *MetadataTransferJobStatus) *CancelMetadataTransferJobOutput {
	s.Status = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *CancelMetadataTransferJobOutput) SetUpdateDateTime(v time.Time) *CancelMetadataTransferJobOutput {
	s.UpdateDateTime = &v
	return s
}

// A description of the column in the query results.
type ColumnDescription struct {
	_ struct{} `type:"structure"`

	// The name of the column description.
	Name *string `locationName:"name" type:"string"`

	// The type of the column description.
	Type *string `locationName:"type" type:"string" enum:"ColumnType"`
}

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

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

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

// SetType sets the Type field's value.
func (s *ColumnDescription) SetType(v string) *ColumnDescription {
	s.Type = &v
	return s
}

// The component property group request.
type ComponentPropertyGroupRequest struct {
	_ struct{} `type:"structure"`

	// The group type.
	GroupType *string `locationName:"groupType" type:"string" enum:"GroupType"`

	// The property names.
	PropertyNames []*string `locationName:"propertyNames" type:"list"`

	// The update type.
	UpdateType *string `locationName:"updateType" type:"string" enum:"PropertyGroupUpdateType"`
}

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

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

// SetGroupType sets the GroupType field's value.
func (s *ComponentPropertyGroupRequest) SetGroupType(v string) *ComponentPropertyGroupRequest {
	s.GroupType = &v
	return s
}

// SetPropertyNames sets the PropertyNames field's value.
func (s *ComponentPropertyGroupRequest) SetPropertyNames(v []*string) *ComponentPropertyGroupRequest {
	s.PropertyNames = v
	return s
}

// SetUpdateType sets the UpdateType field's value.
func (s *ComponentPropertyGroupRequest) SetUpdateType(v string) *ComponentPropertyGroupRequest {
	s.UpdateType = &v
	return s
}

// The component property group response.
type ComponentPropertyGroupResponse struct {
	_ struct{} `type:"structure"`

	// The group type.
	//
	// GroupType is a required field
	GroupType *string `locationName:"groupType" type:"string" required:"true" enum:"GroupType"`

	// A Boolean value that specifies whether the property group is inherited from
	// a parent entity
	//
	// IsInherited is a required field
	IsInherited *bool `locationName:"isInherited" type:"boolean" required:"true"`

	// The names of properties
	//
	// PropertyNames is a required field
	PropertyNames []*string `locationName:"propertyNames" 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 ComponentPropertyGroupResponse) String() string {
	return awsutil.Prettify(s)
}

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

// SetGroupType sets the GroupType field's value.
func (s *ComponentPropertyGroupResponse) SetGroupType(v string) *ComponentPropertyGroupResponse {
	s.GroupType = &v
	return s
}

// SetIsInherited sets the IsInherited field's value.
func (s *ComponentPropertyGroupResponse) SetIsInherited(v bool) *ComponentPropertyGroupResponse {
	s.IsInherited = &v
	return s
}

// SetPropertyNames sets the PropertyNames field's value.
func (s *ComponentPropertyGroupResponse) SetPropertyNames(v []*string) *ComponentPropertyGroupResponse {
	s.PropertyNames = v
	return s
}

// An object that sets information about a component type create or update request.
type ComponentRequest struct {
	_ struct{} `type:"structure"`

	// The ID of the component type.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

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

	// An object that maps strings to the properties to set in the component type.
	// Each string in the mapping must be unique to this object.
	Properties map[string]*PropertyRequest `locationName:"properties" type:"map"`

	// The property groups.
	PropertyGroups map[string]*ComponentPropertyGroupRequest `locationName:"propertyGroups" 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 ComponentRequest) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComponentRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComponentRequest"}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.Properties != nil {
		for i, v := range s.Properties {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Properties", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ComponentRequest) SetComponentTypeId(v string) *ComponentRequest {
	s.ComponentTypeId = &v
	return s
}

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

// SetProperties sets the Properties field's value.
func (s *ComponentRequest) SetProperties(v map[string]*PropertyRequest) *ComponentRequest {
	s.Properties = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *ComponentRequest) SetPropertyGroups(v map[string]*ComponentPropertyGroupRequest) *ComponentRequest {
	s.PropertyGroups = v
	return s
}

// An object that returns information about a component type create or update
// request.
type ComponentResponse struct {
	_ struct{} `type:"structure"`

	// This flag notes whether all compositeComponents are returned in the API response.
	AreAllCompositeComponentsReturned *bool `locationName:"areAllCompositeComponentsReturned" type:"boolean"`

	// This flag notes whether all properties of the component are returned in the
	// API response. The maximum number of properties returned is 800.
	AreAllPropertiesReturned *bool `locationName:"areAllPropertiesReturned" type:"boolean"`

	// The name of the component.
	ComponentName *string `locationName:"componentName" min:"1" type:"string"`

	// The ID of the component type.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

	// This lists objects that contain information about the compositeComponents.
	CompositeComponents map[string]*ComponentSummary `locationName:"compositeComponents" type:"map"`

	// The name of the property definition set in the request.
	DefinedIn *string `locationName:"definedIn" min:"1" type:"string"`

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

	// An object that maps strings to the properties to set in the component type.
	// Each string in the mapping must be unique to this object.
	Properties map[string]*PropertyResponse `locationName:"properties" type:"map"`

	// The property groups.
	PropertyGroups map[string]*ComponentPropertyGroupResponse `locationName:"propertyGroups" type:"map"`

	// The status of the component type.
	Status *Status `locationName:"status" type:"structure"`

	// The syncSource of the sync job, if this entity was created by a sync job.
	SyncSource *string `locationName:"syncSource" type:"string"`
}

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

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

// SetAreAllCompositeComponentsReturned sets the AreAllCompositeComponentsReturned field's value.
func (s *ComponentResponse) SetAreAllCompositeComponentsReturned(v bool) *ComponentResponse {
	s.AreAllCompositeComponentsReturned = &v
	return s
}

// SetAreAllPropertiesReturned sets the AreAllPropertiesReturned field's value.
func (s *ComponentResponse) SetAreAllPropertiesReturned(v bool) *ComponentResponse {
	s.AreAllPropertiesReturned = &v
	return s
}

// SetComponentName sets the ComponentName field's value.
func (s *ComponentResponse) SetComponentName(v string) *ComponentResponse {
	s.ComponentName = &v
	return s
}

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ComponentResponse) SetComponentTypeId(v string) *ComponentResponse {
	s.ComponentTypeId = &v
	return s
}

// SetCompositeComponents sets the CompositeComponents field's value.
func (s *ComponentResponse) SetCompositeComponents(v map[string]*ComponentSummary) *ComponentResponse {
	s.CompositeComponents = v
	return s
}

// SetDefinedIn sets the DefinedIn field's value.
func (s *ComponentResponse) SetDefinedIn(v string) *ComponentResponse {
	s.DefinedIn = &v
	return s
}

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

// SetProperties sets the Properties field's value.
func (s *ComponentResponse) SetProperties(v map[string]*PropertyResponse) *ComponentResponse {
	s.Properties = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *ComponentResponse) SetPropertyGroups(v map[string]*ComponentPropertyGroupResponse) *ComponentResponse {
	s.PropertyGroups = v
	return s
}

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

// SetSyncSource sets the SyncSource field's value.
func (s *ComponentResponse) SetSyncSource(v string) *ComponentResponse {
	s.SyncSource = &v
	return s
}

// An object that returns information about a component summary.
type ComponentSummary struct {
	_ struct{} `type:"structure"`

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

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The name of the property definition set in the request.
	DefinedIn *string `locationName:"definedIn" min:"1" type:"string"`

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

	// The property groups.
	PropertyGroups map[string]*ComponentPropertyGroupResponse `locationName:"propertyGroups" type:"map"`

	// The status of the component type.
	//
	// Status is a required field
	Status *Status `locationName:"status" type:"structure" required:"true"`

	// The syncSource of the sync job, if this entity was created by a sync job.
	SyncSource *string `locationName:"syncSource" type:"string"`
}

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

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

// SetComponentName sets the ComponentName field's value.
func (s *ComponentSummary) SetComponentName(v string) *ComponentSummary {
	s.ComponentName = &v
	return s
}

// SetComponentPath sets the ComponentPath field's value.
func (s *ComponentSummary) SetComponentPath(v string) *ComponentSummary {
	s.ComponentPath = &v
	return s
}

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ComponentSummary) SetComponentTypeId(v string) *ComponentSummary {
	s.ComponentTypeId = &v
	return s
}

// SetDefinedIn sets the DefinedIn field's value.
func (s *ComponentSummary) SetDefinedIn(v string) *ComponentSummary {
	s.DefinedIn = &v
	return s
}

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

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *ComponentSummary) SetPropertyGroups(v map[string]*ComponentPropertyGroupResponse) *ComponentSummary {
	s.PropertyGroups = v
	return s
}

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

// SetSyncSource sets the SyncSource field's value.
func (s *ComponentSummary) SetSyncSource(v string) *ComponentSummary {
	s.SyncSource = &v
	return s
}

// An object that contains information about a component type.
type ComponentTypeSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the component type.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The component type name.
	ComponentTypeName *string `locationName:"componentTypeName" type:"string"`

	// The date and time when the component type was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// The current status of the component type.
	Status *Status `locationName:"status" type:"structure"`

	// The date and time when the component type was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ComponentTypeSummary) SetComponentTypeId(v string) *ComponentTypeSummary {
	s.ComponentTypeId = &v
	return s
}

// SetComponentTypeName sets the ComponentTypeName field's value.
func (s *ComponentTypeSummary) SetComponentTypeName(v string) *ComponentTypeSummary {
	s.ComponentTypeName = &v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *ComponentTypeSummary) SetCreationDateTime(v time.Time) *ComponentTypeSummary {
	s.CreationDateTime = &v
	return s
}

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

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *ComponentTypeSummary) SetUpdateDateTime(v time.Time) *ComponentTypeSummary {
	s.UpdateDateTime = &v
	return s
}

// The component update request.
type ComponentUpdateRequest struct {
	_ struct{} `type:"structure"`

	// The ID of the component type.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

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

	// The property group updates.
	PropertyGroupUpdates map[string]*ComponentPropertyGroupRequest `locationName:"propertyGroupUpdates" type:"map"`

	// An object that maps strings to the properties to set in the component type
	// update. Each string in the mapping must be unique to this object.
	PropertyUpdates map[string]*PropertyRequest `locationName:"propertyUpdates" type:"map"`

	// The update type of the component update request.
	UpdateType *string `locationName:"updateType" type:"string" enum:"ComponentUpdateType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComponentUpdateRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComponentUpdateRequest"}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.PropertyUpdates != nil {
		for i, v := range s.PropertyUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ComponentUpdateRequest) SetComponentTypeId(v string) *ComponentUpdateRequest {
	s.ComponentTypeId = &v
	return s
}

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

// SetPropertyGroupUpdates sets the PropertyGroupUpdates field's value.
func (s *ComponentUpdateRequest) SetPropertyGroupUpdates(v map[string]*ComponentPropertyGroupRequest) *ComponentUpdateRequest {
	s.PropertyGroupUpdates = v
	return s
}

// SetPropertyUpdates sets the PropertyUpdates field's value.
func (s *ComponentUpdateRequest) SetPropertyUpdates(v map[string]*PropertyRequest) *ComponentUpdateRequest {
	s.PropertyUpdates = v
	return s
}

// SetUpdateType sets the UpdateType field's value.
func (s *ComponentUpdateRequest) SetUpdateType(v string) *ComponentUpdateRequest {
	s.UpdateType = &v
	return s
}

// An object that sets information about the composite component update request.
type CompositeComponentRequest struct {
	_ struct{} `type:"structure"`

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

	// This is an object that maps strings to the properties to set in the component
	// type. Each string in the mapping must be unique to this object.
	Properties map[string]*PropertyRequest `locationName:"properties" type:"map"`

	// The property groups.
	PropertyGroups map[string]*ComponentPropertyGroupRequest `locationName:"propertyGroups" 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 CompositeComponentRequest) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CompositeComponentRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CompositeComponentRequest"}
	if s.Properties != nil {
		for i, v := range s.Properties {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Properties", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetProperties sets the Properties field's value.
func (s *CompositeComponentRequest) SetProperties(v map[string]*PropertyRequest) *CompositeComponentRequest {
	s.Properties = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *CompositeComponentRequest) SetPropertyGroups(v map[string]*ComponentPropertyGroupRequest) *CompositeComponentRequest {
	s.PropertyGroups = v
	return s
}

// An object that sets information about the composite component types of a
// component type.
type CompositeComponentTypeRequest struct {
	_ struct{} `type:"structure"`

	// This is the componentTypeId that the compositeComponentType refers to.
	ComponentTypeId *string `locationName:"componentTypeId" 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 CompositeComponentTypeRequest) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *CompositeComponentTypeRequest) SetComponentTypeId(v string) *CompositeComponentTypeRequest {
	s.ComponentTypeId = &v
	return s
}

// An object that returns information about the composite component types of
// a component type.
type CompositeComponentTypeResponse struct {
	_ struct{} `type:"structure"`

	// This is the componentTypeId that this compositeComponentType refers to.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

	// This boolean indicates whether this compositeComponentType is inherited from
	// its parent.
	IsInherited *bool `locationName:"isInherited" 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 CompositeComponentTypeResponse) String() string {
	return awsutil.Prettify(s)
}

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *CompositeComponentTypeResponse) SetComponentTypeId(v string) *CompositeComponentTypeResponse {
	s.ComponentTypeId = &v
	return s
}

// SetIsInherited sets the IsInherited field's value.
func (s *CompositeComponentTypeResponse) SetIsInherited(v bool) *CompositeComponentTypeResponse {
	s.IsInherited = &v
	return s
}

// An object that sets information about the composite component update request.
type CompositeComponentUpdateRequest struct {
	_ struct{} `type:"structure"`

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

	// The property group updates.
	PropertyGroupUpdates map[string]*ComponentPropertyGroupRequest `locationName:"propertyGroupUpdates" type:"map"`

	// An object that maps strings to the properties to set in the component type
	// update. Each string in the mapping must be unique to this object.
	PropertyUpdates map[string]*PropertyRequest `locationName:"propertyUpdates" type:"map"`

	// The update type of the component update request.
	UpdateType *string `locationName:"updateType" type:"string" enum:"ComponentUpdateType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CompositeComponentUpdateRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CompositeComponentUpdateRequest"}
	if s.PropertyUpdates != nil {
		for i, v := range s.PropertyUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetPropertyGroupUpdates sets the PropertyGroupUpdates field's value.
func (s *CompositeComponentUpdateRequest) SetPropertyGroupUpdates(v map[string]*ComponentPropertyGroupRequest) *CompositeComponentUpdateRequest {
	s.PropertyGroupUpdates = v
	return s
}

// SetPropertyUpdates sets the PropertyUpdates field's value.
func (s *CompositeComponentUpdateRequest) SetPropertyUpdates(v map[string]*PropertyRequest) *CompositeComponentUpdateRequest {
	s.PropertyUpdates = v
	return s
}

// SetUpdateType sets the UpdateType field's value.
func (s *CompositeComponentUpdateRequest) SetUpdateType(v string) *CompositeComponentUpdateRequest {
	s.UpdateType = &v
	return s
}

// A conflict occurred.
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
}

// The connector failed.
type ConnectorFailureException 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 ConnectorFailureException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorConnectorFailureException(v protocol.ResponseMetadata) error {
	return &ConnectorFailureException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ConnectorFailureException) 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 *ConnectorFailureException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The connector timed out.
type ConnectorTimeoutException 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 ConnectorTimeoutException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorConnectorTimeoutException(v protocol.ResponseMetadata) error {
	return &ConnectorTimeoutException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ConnectorTimeoutException) 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 *ConnectorTimeoutException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

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

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `location:"uri" locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// A friendly name for the component type.
	ComponentTypeName *string `locationName:"componentTypeName" type:"string"`

	// This is an object that maps strings to compositeComponentTypes of the componentType.
	// CompositeComponentType is referenced by componentTypeId.
	CompositeComponentTypes map[string]*CompositeComponentTypeRequest `locationName:"compositeComponentTypes" type:"map"`

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

	// Specifies the parent component type to extend.
	ExtendsFrom []*string `locationName:"extendsFrom" type:"list"`

	// An object that maps strings to the functions in the component type. Each
	// string in the mapping must be unique to this object.
	Functions map[string]*FunctionRequest `locationName:"functions" type:"map"`

	// A Boolean value that specifies whether an entity can have more than one component
	// of this type.
	IsSingleton *bool `locationName:"isSingleton" type:"boolean"`

	// An object that maps strings to the property definitions in the component
	// type. Each string in the mapping must be unique to this object.
	PropertyDefinitions map[string]*PropertyDefinitionRequest `locationName:"propertyDefinitions" type:"map"`

	PropertyGroups map[string]*PropertyGroupRequest `locationName:"propertyGroups" type:"map"`

	// Metadata that you can use to manage the component type.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The ID of the workspace that contains the component type.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 CreateComponentTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateComponentTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateComponentTypeInput"}
	if s.ComponentTypeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComponentTypeId"))
	}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.CompositeComponentTypes != nil {
		for i, v := range s.CompositeComponentTypes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CompositeComponentTypes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Functions != nil {
		for i, v := range s.Functions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Functions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PropertyDefinitions != nil {
		for i, v := range s.PropertyDefinitions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyDefinitions", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *CreateComponentTypeInput) SetComponentTypeId(v string) *CreateComponentTypeInput {
	s.ComponentTypeId = &v
	return s
}

// SetComponentTypeName sets the ComponentTypeName field's value.
func (s *CreateComponentTypeInput) SetComponentTypeName(v string) *CreateComponentTypeInput {
	s.ComponentTypeName = &v
	return s
}

// SetCompositeComponentTypes sets the CompositeComponentTypes field's value.
func (s *CreateComponentTypeInput) SetCompositeComponentTypes(v map[string]*CompositeComponentTypeRequest) *CreateComponentTypeInput {
	s.CompositeComponentTypes = v
	return s
}

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

// SetExtendsFrom sets the ExtendsFrom field's value.
func (s *CreateComponentTypeInput) SetExtendsFrom(v []*string) *CreateComponentTypeInput {
	s.ExtendsFrom = v
	return s
}

// SetFunctions sets the Functions field's value.
func (s *CreateComponentTypeInput) SetFunctions(v map[string]*FunctionRequest) *CreateComponentTypeInput {
	s.Functions = v
	return s
}

// SetIsSingleton sets the IsSingleton field's value.
func (s *CreateComponentTypeInput) SetIsSingleton(v bool) *CreateComponentTypeInput {
	s.IsSingleton = &v
	return s
}

// SetPropertyDefinitions sets the PropertyDefinitions field's value.
func (s *CreateComponentTypeInput) SetPropertyDefinitions(v map[string]*PropertyDefinitionRequest) *CreateComponentTypeInput {
	s.PropertyDefinitions = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *CreateComponentTypeInput) SetPropertyGroups(v map[string]*PropertyGroupRequest) *CreateComponentTypeInput {
	s.PropertyGroups = v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *CreateComponentTypeInput) SetWorkspaceId(v string) *CreateComponentTypeInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the component type.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the entity was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The current state of the component type.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateComponentTypeOutput) SetCreationDateTime(v time.Time) *CreateComponentTypeOutput {
	s.CreationDateTime = &v
	return s
}

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

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

	// An object that maps strings to the components in the entity. Each string
	// in the mapping must be unique to this object.
	Components map[string]*ComponentRequest `locationName:"components" type:"map"`

	// This is an object that maps strings to compositeComponent updates in the
	// request. Each key of the map represents the componentPath of the compositeComponent.
	CompositeComponents map[string]*CompositeComponentRequest `locationName:"compositeComponents" type:"map"`

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

	// The ID of the entity.
	EntityId *string `locationName:"entityId" min:"1" type:"string"`

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

	// The ID of the entity's parent entity.
	ParentEntityId *string `locationName:"parentEntityId" min:"1" type:"string"`

	// Metadata that you can use to manage the entity.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The ID of the workspace that contains the entity.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 CreateEntityInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateEntityInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateEntityInput"}
	if s.EntityId != nil && len(*s.EntityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityId", 1))
	}
	if s.EntityName == nil {
		invalidParams.Add(request.NewErrParamRequired("EntityName"))
	}
	if s.EntityName != nil && len(*s.EntityName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityName", 1))
	}
	if s.ParentEntityId != nil && len(*s.ParentEntityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParentEntityId", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.Components != nil {
		for i, v := range s.Components {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Components", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.CompositeComponents != nil {
		for i, v := range s.CompositeComponents {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CompositeComponents", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponents sets the Components field's value.
func (s *CreateEntityInput) SetComponents(v map[string]*ComponentRequest) *CreateEntityInput {
	s.Components = v
	return s
}

// SetCompositeComponents sets the CompositeComponents field's value.
func (s *CreateEntityInput) SetCompositeComponents(v map[string]*CompositeComponentRequest) *CreateEntityInput {
	s.CompositeComponents = v
	return s
}

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

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

// SetEntityName sets the EntityName field's value.
func (s *CreateEntityInput) SetEntityName(v string) *CreateEntityInput {
	s.EntityName = &v
	return s
}

// SetParentEntityId sets the ParentEntityId field's value.
func (s *CreateEntityInput) SetParentEntityId(v string) *CreateEntityInput {
	s.ParentEntityId = &v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *CreateEntityInput) SetWorkspaceId(v string) *CreateEntityInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the entity.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the entity was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The ID of the entity.
	//
	// EntityId is a required field
	EntityId *string `locationName:"entityId" min:"1" type:"string" required:"true"`

	// The current state of the entity.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateEntityOutput) SetCreationDateTime(v time.Time) *CreateEntityOutput {
	s.CreationDateTime = &v
	return s
}

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

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

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

	// The metadata transfer job description.
	Description *string `locationName:"description" type:"string"`

	// The metadata transfer job destination.
	//
	// Destination is a required field
	Destination *DestinationConfiguration `locationName:"destination" type:"structure" required:"true"`

	// The metadata transfer job Id.
	MetadataTransferJobId *string `locationName:"metadataTransferJobId" min:"1" type:"string"`

	// The metadata transfer job sources.
	//
	// Sources is a required field
	Sources []*SourceConfiguration `locationName:"sources" 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 CreateMetadataTransferJobInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateMetadataTransferJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateMetadataTransferJobInput"}
	if s.Destination == nil {
		invalidParams.Add(request.NewErrParamRequired("Destination"))
	}
	if s.MetadataTransferJobId != nil && len(*s.MetadataTransferJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MetadataTransferJobId", 1))
	}
	if s.Sources == nil {
		invalidParams.Add(request.NewErrParamRequired("Sources"))
	}
	if s.Sources != nil && len(s.Sources) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Sources", 1))
	}
	if s.Destination != nil {
		if err := s.Destination.Validate(); err != nil {
			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
		}
	}
	if s.Sources != nil {
		for i, v := range s.Sources {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sources", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetDestination sets the Destination field's value.
func (s *CreateMetadataTransferJobInput) SetDestination(v *DestinationConfiguration) *CreateMetadataTransferJobInput {
	s.Destination = v
	return s
}

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *CreateMetadataTransferJobInput) SetMetadataTransferJobId(v string) *CreateMetadataTransferJobInput {
	s.MetadataTransferJobId = &v
	return s
}

// SetSources sets the Sources field's value.
func (s *CreateMetadataTransferJobInput) SetSources(v []*SourceConfiguration) *CreateMetadataTransferJobInput {
	s.Sources = v
	return s
}

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

	// The metadata transfer job ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The The metadata transfer job creation DateTime property.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The metadata transfer job Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `locationName:"metadataTransferJobId" min:"1" type:"string" required:"true"`

	// The metadata transfer job response status.
	//
	// Status is a required field
	Status *MetadataTransferJobStatus `locationName:"status" 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 CreateMetadataTransferJobOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateMetadataTransferJobOutput) SetCreationDateTime(v time.Time) *CreateMetadataTransferJobOutput {
	s.CreationDateTime = &v
	return s
}

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *CreateMetadataTransferJobOutput) SetMetadataTransferJobId(v string) *CreateMetadataTransferJobOutput {
	s.MetadataTransferJobId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *CreateMetadataTransferJobOutput) SetStatus(v *MetadataTransferJobStatus) *CreateMetadataTransferJobOutput {
	s.Status = v
	return s
}

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

	// A list of capabilities that the scene uses to render itself.
	Capabilities []*string `locationName:"capabilities" type:"list"`

	// The relative path that specifies the location of the content definition file.
	//
	// ContentLocation is a required field
	ContentLocation *string `locationName:"contentLocation" type:"string" required:"true"`

	// The description for this scene.
	Description *string `locationName:"description" type:"string"`

	// The ID of the scene.
	//
	// SceneId is a required field
	SceneId *string `locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The request metadata.
	SceneMetadata map[string]*string `locationName:"sceneMetadata" type:"map"`

	// Metadata that you can use to manage the scene.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The ID of the workspace that contains the scene.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 CreateSceneInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCapabilities sets the Capabilities field's value.
func (s *CreateSceneInput) SetCapabilities(v []*string) *CreateSceneInput {
	s.Capabilities = v
	return s
}

// SetContentLocation sets the ContentLocation field's value.
func (s *CreateSceneInput) SetContentLocation(v string) *CreateSceneInput {
	s.ContentLocation = &v
	return s
}

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

// SetSceneId sets the SceneId field's value.
func (s *CreateSceneInput) SetSceneId(v string) *CreateSceneInput {
	s.SceneId = &v
	return s
}

// SetSceneMetadata sets the SceneMetadata field's value.
func (s *CreateSceneInput) SetSceneMetadata(v map[string]*string) *CreateSceneInput {
	s.SceneMetadata = v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *CreateSceneInput) SetWorkspaceId(v string) *CreateSceneInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the scene.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the scene was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateSceneOutput) SetCreationDateTime(v time.Time) *CreateSceneOutput {
	s.CreationDateTime = &v
	return s
}

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

	// The SyncJob IAM role. This IAM role is used by the SyncJob to read from the
	// syncSource, and create, update, or delete the corresponding resources.
	//
	// SyncRole is a required field
	SyncRole *string `locationName:"syncRole" min:"20" type:"string" required:"true"`

	// The sync source.
	//
	// Currently the only supported syncSoource is SITEWISE .
	//
	// SyncSource is a required field
	SyncSource *string `location:"uri" locationName:"syncSource" type:"string" required:"true"`

	// The SyncJob tags.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The workspace ID.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 CreateSyncJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSyncRole sets the SyncRole field's value.
func (s *CreateSyncJobInput) SetSyncRole(v string) *CreateSyncJobInput {
	s.SyncRole = &v
	return s
}

// SetSyncSource sets the SyncSource field's value.
func (s *CreateSyncJobInput) SetSyncSource(v string) *CreateSyncJobInput {
	s.SyncSource = &v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *CreateSyncJobInput) SetWorkspaceId(v string) *CreateSyncJobInput {
	s.WorkspaceId = &v
	return s
}

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

	// The SyncJob ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time for the SyncJob creation.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The SyncJob response state.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"SyncJobState"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateSyncJobOutput) SetCreationDateTime(v time.Time) *CreateSyncJobOutput {
	s.CreationDateTime = &v
	return s
}

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

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

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

	// The ARN of the execution role associated with the workspace.
	Role *string `locationName:"role" min:"20" type:"string"`

	// The ARN of the S3 bucket where resources associated with the workspace are
	// stored.
	S3Location *string `locationName:"s3Location" type:"string"`

	// Metadata that you can use to manage the workspace
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 CreateWorkspaceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetRole sets the Role field's value.
func (s *CreateWorkspaceInput) SetRole(v string) *CreateWorkspaceInput {
	s.Role = &v
	return s
}

// SetS3Location sets the S3Location field's value.
func (s *CreateWorkspaceInput) SetS3Location(v string) *CreateWorkspaceInput {
	s.S3Location = &v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *CreateWorkspaceInput) SetWorkspaceId(v string) *CreateWorkspaceInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the workspace.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the workspace was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *CreateWorkspaceOutput) SetCreationDateTime(v time.Time) *CreateWorkspaceOutput {
	s.CreationDateTime = &v
	return s
}

// The data connector.
type DataConnector struct {
	_ struct{} `type:"structure"`

	// A Boolean value that specifies whether the data connector is native to IoT
	// TwinMaker.
	IsNative *bool `locationName:"isNative" type:"boolean"`

	// The Lambda function associated with this data connector.
	Lambda *LambdaFunction `locationName:"lambda" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataConnector) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataConnector"}
	if s.Lambda != nil {
		if err := s.Lambda.Validate(); err != nil {
			invalidParams.AddNested("Lambda", err.(request.ErrInvalidParams))
		}
	}

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

// SetIsNative sets the IsNative field's value.
func (s *DataConnector) SetIsNative(v bool) *DataConnector {
	s.IsNative = &v
	return s
}

// SetLambda sets the Lambda field's value.
func (s *DataConnector) SetLambda(v *LambdaFunction) *DataConnector {
	s.Lambda = v
	return s
}

// An object that specifies the data type of a property.
type DataType struct {
	_ struct{} `type:"structure"`

	// The allowed values for this data type.
	AllowedValues []*DataValue `locationName:"allowedValues" type:"list"`

	// The nested type in the data type.
	NestedType *DataType `locationName:"nestedType" type:"structure"`

	// A relationship that associates a component with another component.
	Relationship *Relationship `locationName:"relationship" type:"structure"`

	// The underlying type of the data type.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"Type"`

	// The unit of measure used in this data type.
	UnitOfMeasure *string `locationName:"unitOfMeasure" 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 DataType) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataType) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataType"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.UnitOfMeasure != nil && len(*s.UnitOfMeasure) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UnitOfMeasure", 1))
	}
	if s.AllowedValues != nil {
		for i, v := range s.AllowedValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AllowedValues", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.NestedType != nil {
		if err := s.NestedType.Validate(); err != nil {
			invalidParams.AddNested("NestedType", err.(request.ErrInvalidParams))
		}
	}
	if s.Relationship != nil {
		if err := s.Relationship.Validate(); err != nil {
			invalidParams.AddNested("Relationship", err.(request.ErrInvalidParams))
		}
	}

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

// SetAllowedValues sets the AllowedValues field's value.
func (s *DataType) SetAllowedValues(v []*DataValue) *DataType {
	s.AllowedValues = v
	return s
}

// SetNestedType sets the NestedType field's value.
func (s *DataType) SetNestedType(v *DataType) *DataType {
	s.NestedType = v
	return s
}

// SetRelationship sets the Relationship field's value.
func (s *DataType) SetRelationship(v *Relationship) *DataType {
	s.Relationship = v
	return s
}

// SetType sets the Type field's value.
func (s *DataType) SetType(v string) *DataType {
	s.Type = &v
	return s
}

// SetUnitOfMeasure sets the UnitOfMeasure field's value.
func (s *DataType) SetUnitOfMeasure(v string) *DataType {
	s.UnitOfMeasure = &v
	return s
}

// An object that specifies a value for a property.
type DataValue struct {
	_ struct{} `type:"structure"`

	// A Boolean value.
	BooleanValue *bool `locationName:"booleanValue" type:"boolean"`

	// A double value.
	DoubleValue *float64 `locationName:"doubleValue" type:"double"`

	// An expression that produces the value.
	Expression *string `locationName:"expression" min:"1" type:"string"`

	// An integer value.
	IntegerValue *int64 `locationName:"integerValue" type:"integer"`

	// A list of multiple values.
	ListValue []*DataValue `locationName:"listValue" type:"list"`

	// A long value.
	LongValue *int64 `locationName:"longValue" type:"long"`

	// An object that maps strings to multiple DataValue objects.
	MapValue map[string]*DataValue `locationName:"mapValue" type:"map"`

	// A value that relates a component to another component.
	RelationshipValue *RelationshipValue `locationName:"relationshipValue" type:"structure"`

	// A string value.
	StringValue *string `locationName:"stringValue" 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 DataValue) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataValue"}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}
	if s.StringValue != nil && len(*s.StringValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StringValue", 1))
	}
	if s.ListValue != nil {
		for i, v := range s.ListValue {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ListValue", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.MapValue != nil {
		for i, v := range s.MapValue {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MapValue", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RelationshipValue != nil {
		if err := s.RelationshipValue.Validate(); err != nil {
			invalidParams.AddNested("RelationshipValue", err.(request.ErrInvalidParams))
		}
	}

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

// SetBooleanValue sets the BooleanValue field's value.
func (s *DataValue) SetBooleanValue(v bool) *DataValue {
	s.BooleanValue = &v
	return s
}

// SetDoubleValue sets the DoubleValue field's value.
func (s *DataValue) SetDoubleValue(v float64) *DataValue {
	s.DoubleValue = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *DataValue) SetExpression(v string) *DataValue {
	s.Expression = &v
	return s
}

// SetIntegerValue sets the IntegerValue field's value.
func (s *DataValue) SetIntegerValue(v int64) *DataValue {
	s.IntegerValue = &v
	return s
}

// SetListValue sets the ListValue field's value.
func (s *DataValue) SetListValue(v []*DataValue) *DataValue {
	s.ListValue = v
	return s
}

// SetLongValue sets the LongValue field's value.
func (s *DataValue) SetLongValue(v int64) *DataValue {
	s.LongValue = &v
	return s
}

// SetMapValue sets the MapValue field's value.
func (s *DataValue) SetMapValue(v map[string]*DataValue) *DataValue {
	s.MapValue = v
	return s
}

// SetRelationshipValue sets the RelationshipValue field's value.
func (s *DataValue) SetRelationshipValue(v *RelationshipValue) *DataValue {
	s.RelationshipValue = v
	return s
}

// SetStringValue sets the StringValue field's value.
func (s *DataValue) SetStringValue(v string) *DataValue {
	s.StringValue = &v
	return s
}

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

	// The ID of the component type to delete.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `location:"uri" locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The ID of the workspace that contains the component type.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 DeleteComponentTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *DeleteComponentTypeInput) SetComponentTypeId(v string) *DeleteComponentTypeInput {
	s.ComponentTypeId = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *DeleteComponentTypeInput) SetWorkspaceId(v string) *DeleteComponentTypeInput {
	s.WorkspaceId = &v
	return s
}

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

	// The current state of the component type to be deleted.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`
}

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

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

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

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

	// The ID of the entity to delete.
	//
	// EntityId is a required field
	EntityId *string `location:"uri" locationName:"entityId" min:"1" type:"string" required:"true"`

	// A Boolean value that specifies whether the operation deletes child entities.
	IsRecursive *bool `location:"querystring" locationName:"isRecursive" type:"boolean"`

	// The ID of the workspace that contains the entity to delete.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 DeleteEntityInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetIsRecursive sets the IsRecursive field's value.
func (s *DeleteEntityInput) SetIsRecursive(v bool) *DeleteEntityInput {
	s.IsRecursive = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *DeleteEntityInput) SetWorkspaceId(v string) *DeleteEntityInput {
	s.WorkspaceId = &v
	return s
}

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

	// The current state of the deleted entity.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`
}

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

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

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

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

	// The ID of the scene to delete.
	//
	// SceneId is a required field
	SceneId *string `location:"uri" locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 DeleteSceneInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSceneId sets the SceneId field's value.
func (s *DeleteSceneInput) SetSceneId(v string) *DeleteSceneInput {
	s.SceneId = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *DeleteSceneInput) SetWorkspaceId(v string) *DeleteSceneInput {
	s.WorkspaceId = &v
	return s
}

type DeleteSceneOutput 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 DeleteSceneOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The sync source.
	//
	// Currently the only supported syncSource is SITEWISE .
	//
	// SyncSource is a required field
	SyncSource *string `location:"uri" locationName:"syncSource" type:"string" required:"true"`

	// The workspace ID.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 DeleteSyncJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSyncSource sets the SyncSource field's value.
func (s *DeleteSyncJobInput) SetSyncSource(v string) *DeleteSyncJobInput {
	s.SyncSource = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *DeleteSyncJobInput) SetWorkspaceId(v string) *DeleteSyncJobInput {
	s.WorkspaceId = &v
	return s
}

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

	// The SyncJob response state.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"SyncJobState"`
}

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

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

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

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

	// The ID of the workspace to delete.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 DeleteWorkspaceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *DeleteWorkspaceInput) SetWorkspaceId(v string) *DeleteWorkspaceInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the delete result for the workspace.
	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 DeleteWorkspaceOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMessage sets the Message field's value.
func (s *DeleteWorkspaceOutput) SetMessage(v string) *DeleteWorkspaceOutput {
	s.Message = &v
	return s
}

// The [link to action] metadata transfer job destination configuration.
type DestinationConfiguration struct {
	_ struct{} `type:"structure"`

	// The metadata transfer job Amazon Web Services IoT TwinMaker configuration.
	IotTwinMakerConfiguration *IotTwinMakerDestinationConfiguration `locationName:"iotTwinMakerConfiguration" type:"structure"`

	// The metadata transfer job S3 configuration. [need to add S3 entity]
	S3Configuration *S3DestinationConfiguration `locationName:"s3Configuration" type:"structure"`

	// The destination type.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"DestinationType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DestinationConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DestinationConfiguration"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.IotTwinMakerConfiguration != nil {
		if err := s.IotTwinMakerConfiguration.Validate(); err != nil {
			invalidParams.AddNested("IotTwinMakerConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Configuration != nil {
		if err := s.S3Configuration.Validate(); err != nil {
			invalidParams.AddNested("S3Configuration", err.(request.ErrInvalidParams))
		}
	}

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

// SetIotTwinMakerConfiguration sets the IotTwinMakerConfiguration field's value.
func (s *DestinationConfiguration) SetIotTwinMakerConfiguration(v *IotTwinMakerDestinationConfiguration) *DestinationConfiguration {
	s.IotTwinMakerConfiguration = v
	return s
}

// SetS3Configuration sets the S3Configuration field's value.
func (s *DestinationConfiguration) SetS3Configuration(v *S3DestinationConfiguration) *DestinationConfiguration {
	s.S3Configuration = v
	return s
}

// SetType sets the Type field's value.
func (s *DestinationConfiguration) SetType(v string) *DestinationConfiguration {
	s.Type = &v
	return s
}

// An object that uniquely identifies an entity property.
type EntityPropertyReference struct {
	_ struct{} `type:"structure"`

	// The name of the component.
	ComponentName *string `locationName:"componentName" min:"1" type:"string"`

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID of the entity.
	EntityId *string `locationName:"entityId" min:"1" type:"string"`

	// A mapping of external IDs to property names. External IDs uniquely identify
	// properties from external data stores.
	ExternalIdProperty map[string]*string `locationName:"externalIdProperty" type:"map"`

	// The name of the property.
	//
	// PropertyName is a required field
	PropertyName *string `locationName:"propertyName" 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 EntityPropertyReference) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentName sets the ComponentName field's value.
func (s *EntityPropertyReference) SetComponentName(v string) *EntityPropertyReference {
	s.ComponentName = &v
	return s
}

// SetComponentPath sets the ComponentPath field's value.
func (s *EntityPropertyReference) SetComponentPath(v string) *EntityPropertyReference {
	s.ComponentPath = &v
	return s
}

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

// SetExternalIdProperty sets the ExternalIdProperty field's value.
func (s *EntityPropertyReference) SetExternalIdProperty(v map[string]*string) *EntityPropertyReference {
	s.ExternalIdProperty = v
	return s
}

// SetPropertyName sets the PropertyName field's value.
func (s *EntityPropertyReference) SetPropertyName(v string) *EntityPropertyReference {
	s.PropertyName = &v
	return s
}

// An object that contains information about an entity.
type EntitySummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the entity.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the entity was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// The ID of the entity.
	//
	// EntityId is a required field
	EntityId *string `locationName:"entityId" min:"1" type:"string" required:"true"`

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

	// An eventual Boolean value that specifies whether the entity has child entities
	// or not.
	HasChildEntities *bool `locationName:"hasChildEntities" type:"boolean"`

	// The ID of the parent entity.
	ParentEntityId *string `locationName:"parentEntityId" min:"1" type:"string"`

	// The current status of the entity.
	//
	// Status is a required field
	Status *Status `locationName:"status" type:"structure" required:"true"`

	// The last date and time when the entity was updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *EntitySummary) SetCreationDateTime(v time.Time) *EntitySummary {
	s.CreationDateTime = &v
	return s
}

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

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

// SetEntityName sets the EntityName field's value.
func (s *EntitySummary) SetEntityName(v string) *EntitySummary {
	s.EntityName = &v
	return s
}

// SetHasChildEntities sets the HasChildEntities field's value.
func (s *EntitySummary) SetHasChildEntities(v bool) *EntitySummary {
	s.HasChildEntities = &v
	return s
}

// SetParentEntityId sets the ParentEntityId field's value.
func (s *EntitySummary) SetParentEntityId(v string) *EntitySummary {
	s.ParentEntityId = &v
	return s
}

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *EntitySummary) SetUpdateDateTime(v time.Time) *EntitySummary {
	s.UpdateDateTime = &v
	return s
}

// The error details.
type ErrorDetails struct {
	_ struct{} `type:"structure"`

	// The error code.
	Code *string `locationName:"code" type:"string" enum:"ErrorCode"`

	// 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 ErrorDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCode sets the Code field's value.
func (s *ErrorDetails) SetCode(v string) *ErrorDetails {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *ErrorDetails) SetMessage(v string) *ErrorDetails {
	s.Message = &v
	return s
}

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

	// The maximum number of results to return at one time. The default is 50.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The query statement.
	//
	// QueryStatement is a required field
	QueryStatement *string `locationName:"queryStatement" min:"1" type:"string" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 ExecuteQueryInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetQueryStatement sets the QueryStatement field's value.
func (s *ExecuteQueryInput) SetQueryStatement(v string) *ExecuteQueryInput {
	s.QueryStatement = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ExecuteQueryInput) SetWorkspaceId(v string) *ExecuteQueryInput {
	s.WorkspaceId = &v
	return s
}

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

	// A list of ColumnDescription objects.
	ColumnDescriptions []*ColumnDescription `locationName:"columnDescriptions" type:"list"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Represents a single row in the query results.
	Rows []*Row `locationName:"rows" 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 ExecuteQueryOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetColumnDescriptions sets the ColumnDescriptions field's value.
func (s *ExecuteQueryOutput) SetColumnDescriptions(v []*ColumnDescription) *ExecuteQueryOutput {
	s.ColumnDescriptions = v
	return s
}

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

// SetRows sets the Rows field's value.
func (s *ExecuteQueryOutput) SetRows(v []*Row) *ExecuteQueryOutput {
	s.Rows = v
	return s
}

// Filter by asset. [TwinMaker asset]
type FilterByAsset struct {
	_ struct{} `type:"structure"`

	// The external-Id property of an asset.
	AssetExternalId *string `locationName:"assetExternalId" min:"2" type:"string"`

	// Filter by asset Id.
	AssetId *string `locationName:"assetId" min:"36" type:"string"`

	// Boolean to include the asset model.
	IncludeAssetModel *bool `locationName:"includeAssetModel" type:"boolean"`

	// Includes sub-assets.[need description hekp for this]
	IncludeOffspring *bool `locationName:"includeOffspring" 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 FilterByAsset) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssetExternalId sets the AssetExternalId field's value.
func (s *FilterByAsset) SetAssetExternalId(v string) *FilterByAsset {
	s.AssetExternalId = &v
	return s
}

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

// SetIncludeAssetModel sets the IncludeAssetModel field's value.
func (s *FilterByAsset) SetIncludeAssetModel(v bool) *FilterByAsset {
	s.IncludeAssetModel = &v
	return s
}

// SetIncludeOffspring sets the IncludeOffspring field's value.
func (s *FilterByAsset) SetIncludeOffspring(v bool) *FilterByAsset {
	s.IncludeOffspring = &v
	return s
}

// Filter by asset model.
type FilterByAssetModel struct {
	_ struct{} `type:"structure"`

	// The external-Id property of an asset model.
	AssetModelExternalId *string `locationName:"assetModelExternalId" min:"2" type:"string"`

	// The asset model Id.
	AssetModelId *string `locationName:"assetModelId" min:"36" type:"string"`

	// Bolean to include assets.
	IncludeAssets *bool `locationName:"includeAssets" type:"boolean"`

	// Include asset offspring. [need desc.]
	IncludeOffspring *bool `locationName:"includeOffspring" 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 FilterByAssetModel) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssetModelExternalId sets the AssetModelExternalId field's value.
func (s *FilterByAssetModel) SetAssetModelExternalId(v string) *FilterByAssetModel {
	s.AssetModelExternalId = &v
	return s
}

// SetAssetModelId sets the AssetModelId field's value.
func (s *FilterByAssetModel) SetAssetModelId(v string) *FilterByAssetModel {
	s.AssetModelId = &v
	return s
}

// SetIncludeAssets sets the IncludeAssets field's value.
func (s *FilterByAssetModel) SetIncludeAssets(v bool) *FilterByAssetModel {
	s.IncludeAssets = &v
	return s
}

// SetIncludeOffspring sets the IncludeOffspring field's value.
func (s *FilterByAssetModel) SetIncludeOffspring(v bool) *FilterByAssetModel {
	s.IncludeOffspring = &v
	return s
}

// Filter by component type.
type FilterByComponentType struct {
	_ struct{} `type:"structure"`

	// The component type Id.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `locationName:"componentTypeId" 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 FilterByComponentType) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *FilterByComponentType) SetComponentTypeId(v string) *FilterByComponentType {
	s.ComponentTypeId = &v
	return s
}

// Vilter by entity.
type FilterByEntity struct {
	_ struct{} `type:"structure"`

	// The entity Id.
	//
	// EntityId is a required field
	EntityId *string `locationName:"entityId" 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 FilterByEntity) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// The function request body.
type FunctionRequest struct {
	_ struct{} `type:"structure"`

	// The data connector.
	ImplementedBy *DataConnector `locationName:"implementedBy" type:"structure"`

	// The required properties of the function.
	RequiredProperties []*string `locationName:"requiredProperties" type:"list"`

	// The scope of the function.
	Scope *string `locationName:"scope" type:"string" enum:"Scope"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunctionRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunctionRequest"}
	if s.ImplementedBy != nil {
		if err := s.ImplementedBy.Validate(); err != nil {
			invalidParams.AddNested("ImplementedBy", err.(request.ErrInvalidParams))
		}
	}

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

// SetImplementedBy sets the ImplementedBy field's value.
func (s *FunctionRequest) SetImplementedBy(v *DataConnector) *FunctionRequest {
	s.ImplementedBy = v
	return s
}

// SetRequiredProperties sets the RequiredProperties field's value.
func (s *FunctionRequest) SetRequiredProperties(v []*string) *FunctionRequest {
	s.RequiredProperties = v
	return s
}

// SetScope sets the Scope field's value.
func (s *FunctionRequest) SetScope(v string) *FunctionRequest {
	s.Scope = &v
	return s
}

// The function response.
type FunctionResponse struct {
	_ struct{} `type:"structure"`

	// The data connector.
	ImplementedBy *DataConnector `locationName:"implementedBy" type:"structure"`

	// Indicates whether this function is inherited.
	IsInherited *bool `locationName:"isInherited" type:"boolean"`

	// The required properties of the function.
	RequiredProperties []*string `locationName:"requiredProperties" type:"list"`

	// The scope of the function.
	Scope *string `locationName:"scope" type:"string" enum:"Scope"`
}

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

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

// SetImplementedBy sets the ImplementedBy field's value.
func (s *FunctionResponse) SetImplementedBy(v *DataConnector) *FunctionResponse {
	s.ImplementedBy = v
	return s
}

// SetIsInherited sets the IsInherited field's value.
func (s *FunctionResponse) SetIsInherited(v bool) *FunctionResponse {
	s.IsInherited = &v
	return s
}

// SetRequiredProperties sets the RequiredProperties field's value.
func (s *FunctionResponse) SetRequiredProperties(v []*string) *FunctionResponse {
	s.RequiredProperties = v
	return s
}

// SetScope sets the Scope field's value.
func (s *FunctionResponse) SetScope(v string) *FunctionResponse {
	s.Scope = &v
	return s
}

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

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `location:"uri" locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The ID of the workspace that contains the component type.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetComponentTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *GetComponentTypeInput) SetComponentTypeId(v string) *GetComponentTypeInput {
	s.ComponentTypeId = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetComponentTypeInput) SetWorkspaceId(v string) *GetComponentTypeInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the component type.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The component type name.
	ComponentTypeName *string `locationName:"componentTypeName" type:"string"`

	// This is an object that maps strings to compositeComponentTypes of the componentType.
	// CompositeComponentType is referenced by componentTypeId.
	CompositeComponentTypes map[string]*CompositeComponentTypeResponse `locationName:"compositeComponentTypes" type:"map"`

	// The date and time when the component type was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// The name of the parent component type that this component type extends.
	ExtendsFrom []*string `locationName:"extendsFrom" type:"list"`

	// An object that maps strings to the functions in the component type. Each
	// string in the mapping must be unique to this object.
	Functions map[string]*FunctionResponse `locationName:"functions" type:"map"`

	// A Boolean value that specifies whether the component type is abstract.
	IsAbstract *bool `locationName:"isAbstract" type:"boolean"`

	// A Boolean value that specifies whether the component type has a schema initializer
	// and that the schema initializer has run.
	IsSchemaInitialized *bool `locationName:"isSchemaInitialized" type:"boolean"`

	// A Boolean value that specifies whether an entity can have more than one component
	// of this type.
	IsSingleton *bool `locationName:"isSingleton" type:"boolean"`

	// An object that maps strings to the property definitions in the component
	// type. Each string in the mapping must be unique to this object.
	PropertyDefinitions map[string]*PropertyDefinitionResponse `locationName:"propertyDefinitions" type:"map"`

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	PropertyGroups map[string]*PropertyGroupResponse `locationName:"propertyGroups" type:"map"`

	// The current status of the component type.
	Status *Status `locationName:"status" type:"structure"`

	// The syncSource of the SyncJob, if this entity was created by a SyncJob.
	SyncSource *string `locationName:"syncSource" type:"string"`

	// The date and time when the component was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace that contains the component type.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 GetComponentTypeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *GetComponentTypeOutput) SetComponentTypeId(v string) *GetComponentTypeOutput {
	s.ComponentTypeId = &v
	return s
}

// SetComponentTypeName sets the ComponentTypeName field's value.
func (s *GetComponentTypeOutput) SetComponentTypeName(v string) *GetComponentTypeOutput {
	s.ComponentTypeName = &v
	return s
}

// SetCompositeComponentTypes sets the CompositeComponentTypes field's value.
func (s *GetComponentTypeOutput) SetCompositeComponentTypes(v map[string]*CompositeComponentTypeResponse) *GetComponentTypeOutput {
	s.CompositeComponentTypes = v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetComponentTypeOutput) SetCreationDateTime(v time.Time) *GetComponentTypeOutput {
	s.CreationDateTime = &v
	return s
}

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

// SetExtendsFrom sets the ExtendsFrom field's value.
func (s *GetComponentTypeOutput) SetExtendsFrom(v []*string) *GetComponentTypeOutput {
	s.ExtendsFrom = v
	return s
}

// SetFunctions sets the Functions field's value.
func (s *GetComponentTypeOutput) SetFunctions(v map[string]*FunctionResponse) *GetComponentTypeOutput {
	s.Functions = v
	return s
}

// SetIsAbstract sets the IsAbstract field's value.
func (s *GetComponentTypeOutput) SetIsAbstract(v bool) *GetComponentTypeOutput {
	s.IsAbstract = &v
	return s
}

// SetIsSchemaInitialized sets the IsSchemaInitialized field's value.
func (s *GetComponentTypeOutput) SetIsSchemaInitialized(v bool) *GetComponentTypeOutput {
	s.IsSchemaInitialized = &v
	return s
}

// SetIsSingleton sets the IsSingleton field's value.
func (s *GetComponentTypeOutput) SetIsSingleton(v bool) *GetComponentTypeOutput {
	s.IsSingleton = &v
	return s
}

// SetPropertyDefinitions sets the PropertyDefinitions field's value.
func (s *GetComponentTypeOutput) SetPropertyDefinitions(v map[string]*PropertyDefinitionResponse) *GetComponentTypeOutput {
	s.PropertyDefinitions = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *GetComponentTypeOutput) SetPropertyGroups(v map[string]*PropertyGroupResponse) *GetComponentTypeOutput {
	s.PropertyGroups = v
	return s
}

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

// SetSyncSource sets the SyncSource field's value.
func (s *GetComponentTypeOutput) SetSyncSource(v string) *GetComponentTypeOutput {
	s.SyncSource = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetComponentTypeOutput) SetUpdateDateTime(v time.Time) *GetComponentTypeOutput {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetComponentTypeOutput) SetWorkspaceId(v string) *GetComponentTypeOutput {
	s.WorkspaceId = &v
	return s
}

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

	// The ID of the entity.
	//
	// EntityId is a required field
	EntityId *string `location:"uri" locationName:"entityId" min:"1" type:"string" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetEntityInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetEntityInput) SetWorkspaceId(v string) *GetEntityInput {
	s.WorkspaceId = &v
	return s
}

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

	// This flag notes whether all components are returned in the API response.
	// The maximum number of components returned is 30.
	AreAllComponentsReturned *bool `locationName:"areAllComponentsReturned" type:"boolean"`

	// The ARN of the entity.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// An object that maps strings to the components in the entity. Each string
	// in the mapping must be unique to this object.
	Components map[string]*ComponentResponse `locationName:"components" type:"map"`

	// The date and time when the entity was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// The ID of the entity.
	//
	// EntityId is a required field
	EntityId *string `locationName:"entityId" min:"1" type:"string" required:"true"`

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

	// A Boolean value that specifies whether the entity has associated child entities.
	//
	// HasChildEntities is a required field
	HasChildEntities *bool `locationName:"hasChildEntities" type:"boolean" required:"true"`

	// The ID of the parent entity for this entity.
	//
	// ParentEntityId is a required field
	ParentEntityId *string `locationName:"parentEntityId" min:"1" type:"string" required:"true"`

	// The current status of the entity.
	//
	// Status is a required field
	Status *Status `locationName:"status" type:"structure" required:"true"`

	// The syncSource of the sync job, if this entity was created by a sync job.
	SyncSource *string `locationName:"syncSource" type:"string"`

	// The date and time when the entity was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 GetEntityOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAreAllComponentsReturned sets the AreAllComponentsReturned field's value.
func (s *GetEntityOutput) SetAreAllComponentsReturned(v bool) *GetEntityOutput {
	s.AreAllComponentsReturned = &v
	return s
}

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

// SetComponents sets the Components field's value.
func (s *GetEntityOutput) SetComponents(v map[string]*ComponentResponse) *GetEntityOutput {
	s.Components = v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetEntityOutput) SetCreationDateTime(v time.Time) *GetEntityOutput {
	s.CreationDateTime = &v
	return s
}

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

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

// SetEntityName sets the EntityName field's value.
func (s *GetEntityOutput) SetEntityName(v string) *GetEntityOutput {
	s.EntityName = &v
	return s
}

// SetHasChildEntities sets the HasChildEntities field's value.
func (s *GetEntityOutput) SetHasChildEntities(v bool) *GetEntityOutput {
	s.HasChildEntities = &v
	return s
}

// SetParentEntityId sets the ParentEntityId field's value.
func (s *GetEntityOutput) SetParentEntityId(v string) *GetEntityOutput {
	s.ParentEntityId = &v
	return s
}

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

// SetSyncSource sets the SyncSource field's value.
func (s *GetEntityOutput) SetSyncSource(v string) *GetEntityOutput {
	s.SyncSource = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetEntityOutput) SetUpdateDateTime(v time.Time) *GetEntityOutput {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetEntityOutput) SetWorkspaceId(v string) *GetEntityOutput {
	s.WorkspaceId = &v
	return s
}

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

	// The metadata transfer job Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `location:"uri" locationName:"metadataTransferJobId" 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 GetMetadataTransferJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *GetMetadataTransferJobInput) SetMetadataTransferJobId(v string) *GetMetadataTransferJobInput {
	s.MetadataTransferJobId = &v
	return s
}

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

	// The metadata transfer job ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The metadata transfer job's creation DateTime property.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The metadata transfer job description.
	Description *string `locationName:"description" type:"string"`

	// The metadata transfer job's destination.
	//
	// Destination is a required field
	Destination *DestinationConfiguration `locationName:"destination" type:"structure" required:"true"`

	// The metadata transfer job Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `locationName:"metadataTransferJobId" min:"1" type:"string" required:"true"`

	// The metadata transfer job's role.
	//
	// MetadataTransferJobRole is a required field
	MetadataTransferJobRole *string `locationName:"metadataTransferJobRole" min:"20" type:"string" required:"true"`

	// The metadata transfer job's progress.
	Progress *MetadataTransferJobProgress `locationName:"progress" type:"structure"`

	// The metadata transfer job's report URL.
	ReportUrl *string `locationName:"reportUrl" min:"1" type:"string"`

	// The metadata transfer job's sources.
	//
	// Sources is a required field
	Sources []*SourceConfiguration `locationName:"sources" min:"1" type:"list" required:"true"`

	// The metadata transfer job's status.
	//
	// Status is a required field
	Status *MetadataTransferJobStatus `locationName:"status" type:"structure" required:"true"`

	// The metadata transfer job's update DateTime property.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetMetadataTransferJobOutput) SetCreationDateTime(v time.Time) *GetMetadataTransferJobOutput {
	s.CreationDateTime = &v
	return s
}

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

// SetDestination sets the Destination field's value.
func (s *GetMetadataTransferJobOutput) SetDestination(v *DestinationConfiguration) *GetMetadataTransferJobOutput {
	s.Destination = v
	return s
}

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *GetMetadataTransferJobOutput) SetMetadataTransferJobId(v string) *GetMetadataTransferJobOutput {
	s.MetadataTransferJobId = &v
	return s
}

// SetMetadataTransferJobRole sets the MetadataTransferJobRole field's value.
func (s *GetMetadataTransferJobOutput) SetMetadataTransferJobRole(v string) *GetMetadataTransferJobOutput {
	s.MetadataTransferJobRole = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *GetMetadataTransferJobOutput) SetProgress(v *MetadataTransferJobProgress) *GetMetadataTransferJobOutput {
	s.Progress = v
	return s
}

// SetReportUrl sets the ReportUrl field's value.
func (s *GetMetadataTransferJobOutput) SetReportUrl(v string) *GetMetadataTransferJobOutput {
	s.ReportUrl = &v
	return s
}

// SetSources sets the Sources field's value.
func (s *GetMetadataTransferJobOutput) SetSources(v []*SourceConfiguration) *GetMetadataTransferJobOutput {
	s.Sources = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetMetadataTransferJobOutput) SetStatus(v *MetadataTransferJobStatus) *GetMetadataTransferJobOutput {
	s.Status = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetMetadataTransferJobOutput) SetUpdateDateTime(v time.Time) *GetMetadataTransferJobOutput {
	s.UpdateDateTime = &v
	return s
}

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

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

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

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

	// The chosen pricing plan for the current billing cycle.
	//
	// CurrentPricingPlan is a required field
	CurrentPricingPlan *PricingPlan `locationName:"currentPricingPlan" type:"structure" required:"true"`

	// The pending pricing plan.
	PendingPricingPlan *PricingPlan `locationName:"pendingPricingPlan" type:"structure"`
}

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

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

// SetCurrentPricingPlan sets the CurrentPricingPlan field's value.
func (s *GetPricingPlanOutput) SetCurrentPricingPlan(v *PricingPlan) *GetPricingPlanOutput {
	s.CurrentPricingPlan = v
	return s
}

// SetPendingPricingPlan sets the PendingPricingPlan field's value.
func (s *GetPricingPlanOutput) SetPendingPricingPlan(v *PricingPlan) *GetPricingPlanOutput {
	s.PendingPricingPlan = v
	return s
}

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

	// The name of the component.
	ComponentName *string `locationName:"componentName" min:"1" type:"string"`

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID of the component type.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

	// The date and time of the latest property value to return.
	//
	// Deprecated: This field is deprecated and will throw an error in the future. Use endTime instead.
	EndDateTime *time.Time `locationName:"endDateTime" deprecated:"true" type:"timestamp"`

	// The ISO8601 DateTime of the latest property value to return.
	//
	// For more information about the ISO8601 DateTime format, see the data type
	// PropertyValue (https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_PropertyValue.html).
	EndTime *string `locationName:"endTime" min:"20" type:"string"`

	// The ID of the entity.
	EntityId *string `locationName:"entityId" min:"1" type:"string"`

	// An object that specifies the interpolation type and the interval over which
	// to interpolate data.
	Interpolation *InterpolationParameters `locationName:"interpolation" type:"structure"`

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The time direction to use in the result order.
	OrderByTime *string `locationName:"orderByTime" type:"string" enum:"OrderByTime"`

	// A list of objects that filter the property value history request.
	PropertyFilters []*PropertyFilter `locationName:"propertyFilters" min:"1" type:"list"`

	// A list of properties whose value histories the request retrieves.
	//
	// SelectedProperties is a required field
	SelectedProperties []*string `locationName:"selectedProperties" min:"1" type:"list" required:"true"`

	// The date and time of the earliest property value to return.
	//
	// Deprecated: This field is deprecated and will throw an error in the future. Use startTime instead.
	StartDateTime *time.Time `locationName:"startDateTime" deprecated:"true" type:"timestamp"`

	// The ISO8601 DateTime of the earliest property value to return.
	//
	// For more information about the ISO8601 DateTime format, see the data type
	// PropertyValue (https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_PropertyValue.html).
	StartTime *string `locationName:"startTime" min:"20" type:"string"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetPropertyValueHistoryInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPropertyValueHistoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPropertyValueHistoryInput"}
	if s.ComponentName != nil && len(*s.ComponentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentName", 1))
	}
	if s.ComponentPath != nil && len(*s.ComponentPath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentPath", 1))
	}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.EndTime != nil && len(*s.EndTime) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("EndTime", 20))
	}
	if s.EntityId != nil && len(*s.EntityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityId", 1))
	}
	if s.PropertyFilters != nil && len(s.PropertyFilters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PropertyFilters", 1))
	}
	if s.SelectedProperties == nil {
		invalidParams.Add(request.NewErrParamRequired("SelectedProperties"))
	}
	if s.SelectedProperties != nil && len(s.SelectedProperties) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SelectedProperties", 1))
	}
	if s.StartTime != nil && len(*s.StartTime) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("StartTime", 20))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.PropertyFilters != nil {
		for i, v := range s.PropertyFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponentName sets the ComponentName field's value.
func (s *GetPropertyValueHistoryInput) SetComponentName(v string) *GetPropertyValueHistoryInput {
	s.ComponentName = &v
	return s
}

// SetComponentPath sets the ComponentPath field's value.
func (s *GetPropertyValueHistoryInput) SetComponentPath(v string) *GetPropertyValueHistoryInput {
	s.ComponentPath = &v
	return s
}

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *GetPropertyValueHistoryInput) SetComponentTypeId(v string) *GetPropertyValueHistoryInput {
	s.ComponentTypeId = &v
	return s
}

// SetEndDateTime sets the EndDateTime field's value.
func (s *GetPropertyValueHistoryInput) SetEndDateTime(v time.Time) *GetPropertyValueHistoryInput {
	s.EndDateTime = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *GetPropertyValueHistoryInput) SetEndTime(v string) *GetPropertyValueHistoryInput {
	s.EndTime = &v
	return s
}

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

// SetInterpolation sets the Interpolation field's value.
func (s *GetPropertyValueHistoryInput) SetInterpolation(v *InterpolationParameters) *GetPropertyValueHistoryInput {
	s.Interpolation = v
	return s
}

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

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

// SetOrderByTime sets the OrderByTime field's value.
func (s *GetPropertyValueHistoryInput) SetOrderByTime(v string) *GetPropertyValueHistoryInput {
	s.OrderByTime = &v
	return s
}

// SetPropertyFilters sets the PropertyFilters field's value.
func (s *GetPropertyValueHistoryInput) SetPropertyFilters(v []*PropertyFilter) *GetPropertyValueHistoryInput {
	s.PropertyFilters = v
	return s
}

// SetSelectedProperties sets the SelectedProperties field's value.
func (s *GetPropertyValueHistoryInput) SetSelectedProperties(v []*string) *GetPropertyValueHistoryInput {
	s.SelectedProperties = v
	return s
}

// SetStartDateTime sets the StartDateTime field's value.
func (s *GetPropertyValueHistoryInput) SetStartDateTime(v time.Time) *GetPropertyValueHistoryInput {
	s.StartDateTime = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetPropertyValueHistoryInput) SetStartTime(v string) *GetPropertyValueHistoryInput {
	s.StartTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetPropertyValueHistoryInput) SetWorkspaceId(v string) *GetPropertyValueHistoryInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An object that maps strings to the property definitions in the component
	// type. Each string in the mapping must be unique to this object.
	//
	// PropertyValues is a required field
	PropertyValues []*PropertyValueHistory `locationName:"propertyValues" 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 GetPropertyValueHistoryOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetPropertyValues sets the PropertyValues field's value.
func (s *GetPropertyValueHistoryOutput) SetPropertyValues(v []*PropertyValueHistory) *GetPropertyValueHistoryOutput {
	s.PropertyValues = v
	return s
}

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

	// The name of the component whose property values the operation returns.
	ComponentName *string `locationName:"componentName" min:"1" type:"string"`

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID of the component type whose property values the operation returns.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

	// The ID of the entity whose property values the operation returns.
	EntityId *string `locationName:"entityId" min:"1" type:"string"`

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The property group name.
	PropertyGroupName *string `locationName:"propertyGroupName" min:"1" type:"string"`

	// The properties whose values the operation returns.
	//
	// SelectedProperties is a required field
	SelectedProperties []*string `locationName:"selectedProperties" min:"1" type:"list" required:"true"`

	// The tabular conditions.
	TabularConditions *TabularConditions `locationName:"tabularConditions" type:"structure"`

	// The ID of the workspace whose values the operation returns.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetPropertyValueInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPropertyValueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPropertyValueInput"}
	if s.ComponentName != nil && len(*s.ComponentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentName", 1))
	}
	if s.ComponentPath != nil && len(*s.ComponentPath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentPath", 1))
	}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.EntityId != nil && len(*s.EntityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityId", 1))
	}
	if s.PropertyGroupName != nil && len(*s.PropertyGroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PropertyGroupName", 1))
	}
	if s.SelectedProperties == nil {
		invalidParams.Add(request.NewErrParamRequired("SelectedProperties"))
	}
	if s.SelectedProperties != nil && len(s.SelectedProperties) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SelectedProperties", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.TabularConditions != nil {
		if err := s.TabularConditions.Validate(); err != nil {
			invalidParams.AddNested("TabularConditions", err.(request.ErrInvalidParams))
		}
	}

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

// SetComponentName sets the ComponentName field's value.
func (s *GetPropertyValueInput) SetComponentName(v string) *GetPropertyValueInput {
	s.ComponentName = &v
	return s
}

// SetComponentPath sets the ComponentPath field's value.
func (s *GetPropertyValueInput) SetComponentPath(v string) *GetPropertyValueInput {
	s.ComponentPath = &v
	return s
}

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *GetPropertyValueInput) SetComponentTypeId(v string) *GetPropertyValueInput {
	s.ComponentTypeId = &v
	return s
}

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

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

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

// SetPropertyGroupName sets the PropertyGroupName field's value.
func (s *GetPropertyValueInput) SetPropertyGroupName(v string) *GetPropertyValueInput {
	s.PropertyGroupName = &v
	return s
}

// SetSelectedProperties sets the SelectedProperties field's value.
func (s *GetPropertyValueInput) SetSelectedProperties(v []*string) *GetPropertyValueInput {
	s.SelectedProperties = v
	return s
}

// SetTabularConditions sets the TabularConditions field's value.
func (s *GetPropertyValueInput) SetTabularConditions(v *TabularConditions) *GetPropertyValueInput {
	s.TabularConditions = v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetPropertyValueInput) SetWorkspaceId(v string) *GetPropertyValueInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An object that maps strings to the properties and latest property values
	// in the response. Each string in the mapping must be unique to this object.
	PropertyValues map[string]*PropertyLatestValue `locationName:"propertyValues" type:"map"`

	// A table of property values.
	TabularPropertyValues [][]map[string]*DataValue `locationName:"tabularPropertyValues" 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 GetPropertyValueOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetPropertyValues sets the PropertyValues field's value.
func (s *GetPropertyValueOutput) SetPropertyValues(v map[string]*PropertyLatestValue) *GetPropertyValueOutput {
	s.PropertyValues = v
	return s
}

// SetTabularPropertyValues sets the TabularPropertyValues field's value.
func (s *GetPropertyValueOutput) SetTabularPropertyValues(v [][]map[string]*DataValue) *GetPropertyValueOutput {
	s.TabularPropertyValues = v
	return s
}

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

	// The ID of the scene.
	//
	// SceneId is a required field
	SceneId *string `location:"uri" locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The ID of the workspace that contains the scene.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetSceneInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSceneId sets the SceneId field's value.
func (s *GetSceneInput) SetSceneId(v string) *GetSceneInput {
	s.SceneId = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetSceneInput) SetWorkspaceId(v string) *GetSceneInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the scene.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// A list of capabilities that the scene uses to render.
	Capabilities []*string `locationName:"capabilities" type:"list"`

	// The relative path that specifies the location of the content definition file.
	//
	// ContentLocation is a required field
	ContentLocation *string `locationName:"contentLocation" type:"string" required:"true"`

	// The date and time when the scene was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// The SceneResponse error.
	Error *SceneError `locationName:"error" type:"structure"`

	// The generated scene metadata.
	GeneratedSceneMetadata map[string]*string `locationName:"generatedSceneMetadata" type:"map"`

	// The ID of the scene.
	//
	// SceneId is a required field
	SceneId *string `locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The response metadata.
	SceneMetadata map[string]*string `locationName:"sceneMetadata" type:"map"`

	// The date and time when the scene was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace that contains the scene.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 GetSceneOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCapabilities sets the Capabilities field's value.
func (s *GetSceneOutput) SetCapabilities(v []*string) *GetSceneOutput {
	s.Capabilities = v
	return s
}

// SetContentLocation sets the ContentLocation field's value.
func (s *GetSceneOutput) SetContentLocation(v string) *GetSceneOutput {
	s.ContentLocation = &v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetSceneOutput) SetCreationDateTime(v time.Time) *GetSceneOutput {
	s.CreationDateTime = &v
	return s
}

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

// SetError sets the Error field's value.
func (s *GetSceneOutput) SetError(v *SceneError) *GetSceneOutput {
	s.Error = v
	return s
}

// SetGeneratedSceneMetadata sets the GeneratedSceneMetadata field's value.
func (s *GetSceneOutput) SetGeneratedSceneMetadata(v map[string]*string) *GetSceneOutput {
	s.GeneratedSceneMetadata = v
	return s
}

// SetSceneId sets the SceneId field's value.
func (s *GetSceneOutput) SetSceneId(v string) *GetSceneOutput {
	s.SceneId = &v
	return s
}

// SetSceneMetadata sets the SceneMetadata field's value.
func (s *GetSceneOutput) SetSceneMetadata(v map[string]*string) *GetSceneOutput {
	s.SceneMetadata = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetSceneOutput) SetUpdateDateTime(v time.Time) *GetSceneOutput {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetSceneOutput) SetWorkspaceId(v string) *GetSceneOutput {
	s.WorkspaceId = &v
	return s
}

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

	// The sync source.
	//
	// Currently the only supported syncSource is SITEWISE .
	//
	// SyncSource is a required field
	SyncSource *string `location:"uri" locationName:"syncSource" type:"string" required:"true"`

	// The workspace ID.
	WorkspaceId *string `location:"querystring" locationName:"workspace" 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 GetSyncJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSyncSource sets the SyncSource field's value.
func (s *GetSyncJobInput) SetSyncSource(v string) *GetSyncJobInput {
	s.SyncSource = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetSyncJobInput) SetWorkspaceId(v string) *GetSyncJobInput {
	s.WorkspaceId = &v
	return s
}

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

	// The sync job ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The creation date and time.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The SyncJob response status.
	//
	// Status is a required field
	Status *SyncJobStatus `locationName:"status" type:"structure" required:"true"`

	// The sync IAM role.
	//
	// SyncRole is a required field
	SyncRole *string `locationName:"syncRole" min:"20" type:"string" required:"true"`

	// The sync soucre.
	//
	// Currently the only supported syncSource is SITEWISE .
	//
	// SyncSource is a required field
	SyncSource *string `locationName:"syncSource" type:"string" required:"true"`

	// The update date and time.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace that contains the sync job.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 GetSyncJobOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetSyncJobOutput) SetCreationDateTime(v time.Time) *GetSyncJobOutput {
	s.CreationDateTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSyncJobOutput) SetStatus(v *SyncJobStatus) *GetSyncJobOutput {
	s.Status = v
	return s
}

// SetSyncRole sets the SyncRole field's value.
func (s *GetSyncJobOutput) SetSyncRole(v string) *GetSyncJobOutput {
	s.SyncRole = &v
	return s
}

// SetSyncSource sets the SyncSource field's value.
func (s *GetSyncJobOutput) SetSyncSource(v string) *GetSyncJobOutput {
	s.SyncSource = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetSyncJobOutput) SetUpdateDateTime(v time.Time) *GetSyncJobOutput {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetSyncJobOutput) SetWorkspaceId(v string) *GetSyncJobOutput {
	s.WorkspaceId = &v
	return s
}

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

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 GetWorkspaceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetWorkspaceInput) SetWorkspaceId(v string) *GetWorkspaceInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the workspace.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the workspace was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// A list of services that are linked to the workspace.
	LinkedServices []*string `locationName:"linkedServices" type:"list"`

	// The ARN of the execution role associated with the workspace.
	Role *string `locationName:"role" min:"20" type:"string"`

	// The ARN of the S3 bucket where resources associated with the workspace are
	// stored.
	S3Location *string `locationName:"s3Location" type:"string"`

	// The date and time when the workspace was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 GetWorkspaceOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *GetWorkspaceOutput) SetCreationDateTime(v time.Time) *GetWorkspaceOutput {
	s.CreationDateTime = &v
	return s
}

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

// SetLinkedServices sets the LinkedServices field's value.
func (s *GetWorkspaceOutput) SetLinkedServices(v []*string) *GetWorkspaceOutput {
	s.LinkedServices = v
	return s
}

// SetRole sets the Role field's value.
func (s *GetWorkspaceOutput) SetRole(v string) *GetWorkspaceOutput {
	s.Role = &v
	return s
}

// SetS3Location sets the S3Location field's value.
func (s *GetWorkspaceOutput) SetS3Location(v string) *GetWorkspaceOutput {
	s.S3Location = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *GetWorkspaceOutput) SetUpdateDateTime(v time.Time) *GetWorkspaceOutput {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *GetWorkspaceOutput) SetWorkspaceId(v string) *GetWorkspaceOutput {
	s.WorkspaceId = &v
	return s
}

// An unexpected error has occurred.
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
}

// An object that specifies how to interpolate data in a list.
type InterpolationParameters struct {
	_ struct{} `type:"structure"`

	// The interpolation type.
	InterpolationType *string `locationName:"interpolationType" type:"string" enum:"InterpolationType"`

	// The interpolation time interval in seconds.
	IntervalInSeconds *int64 `locationName:"intervalInSeconds" type:"long"`
}

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

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

// SetInterpolationType sets the InterpolationType field's value.
func (s *InterpolationParameters) SetInterpolationType(v string) *InterpolationParameters {
	s.InterpolationType = &v
	return s
}

// SetIntervalInSeconds sets the IntervalInSeconds field's value.
func (s *InterpolationParameters) SetIntervalInSeconds(v int64) *InterpolationParameters {
	s.IntervalInSeconds = &v
	return s
}

// The metadata transfer job AWS IoT SiteWise source configuration.
type IotSiteWiseSourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The AWS IoT SiteWise soucre configuration filters.
	Filters []*IotSiteWiseSourceConfigurationFilter `locationName:"filters" 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 IotSiteWiseSourceConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *IotSiteWiseSourceConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IotSiteWiseSourceConfiguration"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetFilters sets the Filters field's value.
func (s *IotSiteWiseSourceConfiguration) SetFilters(v []*IotSiteWiseSourceConfigurationFilter) *IotSiteWiseSourceConfiguration {
	s.Filters = v
	return s
}

// The AWS IoT SiteWise soucre configuration filter.[need held with desc here]
type IotSiteWiseSourceConfigurationFilter struct {
	_ struct{} `type:"structure"`

	// Filter by asset.
	FilterByAsset *FilterByAsset `locationName:"filterByAsset" type:"structure"`

	// Filter by asset model.
	FilterByAssetModel *FilterByAssetModel `locationName:"filterByAssetModel" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *IotSiteWiseSourceConfigurationFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IotSiteWiseSourceConfigurationFilter"}
	if s.FilterByAsset != nil {
		if err := s.FilterByAsset.Validate(); err != nil {
			invalidParams.AddNested("FilterByAsset", err.(request.ErrInvalidParams))
		}
	}
	if s.FilterByAssetModel != nil {
		if err := s.FilterByAssetModel.Validate(); err != nil {
			invalidParams.AddNested("FilterByAssetModel", err.(request.ErrInvalidParams))
		}
	}

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

// SetFilterByAsset sets the FilterByAsset field's value.
func (s *IotSiteWiseSourceConfigurationFilter) SetFilterByAsset(v *FilterByAsset) *IotSiteWiseSourceConfigurationFilter {
	s.FilterByAsset = v
	return s
}

// SetFilterByAssetModel sets the FilterByAssetModel field's value.
func (s *IotSiteWiseSourceConfigurationFilter) SetFilterByAssetModel(v *FilterByAssetModel) *IotSiteWiseSourceConfigurationFilter {
	s.FilterByAssetModel = v
	return s
}

// The metadata transfer job AWS IoT TwinMaker destination configuration.
type IotTwinMakerDestinationConfiguration struct {
	_ struct{} `type:"structure"`

	// The IoT TwinMaker workspace.
	//
	// Workspace is a required field
	Workspace *string `locationName:"workspace" min:"20" type:"string" required:"true"`
}

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

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

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

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

// SetWorkspace sets the Workspace field's value.
func (s *IotTwinMakerDestinationConfiguration) SetWorkspace(v string) *IotTwinMakerDestinationConfiguration {
	s.Workspace = &v
	return s
}

// The metadata transfer job AWS IoT TwinMaker source configuration.
type IotTwinMakerSourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The metadata transfer job AWS IoT TwinMaker source configuration filters.
	Filters []*IotTwinMakerSourceConfigurationFilter `locationName:"filters" type:"list"`

	// The IoT TwinMaker workspace.
	//
	// Workspace is a required field
	Workspace *string `locationName:"workspace" min:"20" type:"string" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *IotTwinMakerSourceConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IotTwinMakerSourceConfiguration"}
	if s.Workspace == nil {
		invalidParams.Add(request.NewErrParamRequired("Workspace"))
	}
	if s.Workspace != nil && len(*s.Workspace) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Workspace", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetFilters sets the Filters field's value.
func (s *IotTwinMakerSourceConfiguration) SetFilters(v []*IotTwinMakerSourceConfigurationFilter) *IotTwinMakerSourceConfiguration {
	s.Filters = v
	return s
}

// SetWorkspace sets the Workspace field's value.
func (s *IotTwinMakerSourceConfiguration) SetWorkspace(v string) *IotTwinMakerSourceConfiguration {
	s.Workspace = &v
	return s
}

// The metadata transfer job AWS IoT TwinMaker source configuration filter.
type IotTwinMakerSourceConfigurationFilter struct {
	_ struct{} `type:"structure"`

	// Filter by component type.
	FilterByComponentType *FilterByComponentType `locationName:"filterByComponentType" type:"structure"`

	// Filter by entity.
	FilterByEntity *FilterByEntity `locationName:"filterByEntity" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *IotTwinMakerSourceConfigurationFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IotTwinMakerSourceConfigurationFilter"}
	if s.FilterByComponentType != nil {
		if err := s.FilterByComponentType.Validate(); err != nil {
			invalidParams.AddNested("FilterByComponentType", err.(request.ErrInvalidParams))
		}
	}
	if s.FilterByEntity != nil {
		if err := s.FilterByEntity.Validate(); err != nil {
			invalidParams.AddNested("FilterByEntity", err.(request.ErrInvalidParams))
		}
	}

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

// SetFilterByComponentType sets the FilterByComponentType field's value.
func (s *IotTwinMakerSourceConfigurationFilter) SetFilterByComponentType(v *FilterByComponentType) *IotTwinMakerSourceConfigurationFilter {
	s.FilterByComponentType = v
	return s
}

// SetFilterByEntity sets the FilterByEntity field's value.
func (s *IotTwinMakerSourceConfigurationFilter) SetFilterByEntity(v *FilterByEntity) *IotTwinMakerSourceConfigurationFilter {
	s.FilterByEntity = v
	return s
}

// The Lambda function.
type LambdaFunction struct {
	_ struct{} `type:"structure"`

	// The ARN of the Lambda function.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`
}

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

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

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

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

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

// An object that filters items in a list of component types.
//
// Only one object is accepted as a valid input.
type ListComponentTypesFilter struct {
	_ struct{} `type:"structure"`

	// The component type that the component types in the list extend.
	ExtendsFrom *string `locationName:"extendsFrom" min:"1" type:"string"`

	// A Boolean value that specifies whether the component types in the list are
	// abstract.
	IsAbstract *bool `locationName:"isAbstract" type:"boolean"`

	// The namespace to which the component types in the list belong.
	Namespace *string `locationName:"namespace" 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 ListComponentTypesFilter) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExtendsFrom sets the ExtendsFrom field's value.
func (s *ListComponentTypesFilter) SetExtendsFrom(v string) *ListComponentTypesFilter {
	s.ExtendsFrom = &v
	return s
}

// SetIsAbstract sets the IsAbstract field's value.
func (s *ListComponentTypesFilter) SetIsAbstract(v bool) *ListComponentTypesFilter {
	s.IsAbstract = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListComponentTypesFilter) SetNamespace(v string) *ListComponentTypesFilter {
	s.Namespace = &v
	return s
}

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

	// A list of objects that filter the request.
	Filters []*ListComponentTypesFilter `locationName:"filters" type:"list"`

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListComponentTypesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListComponentTypesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListComponentTypesInput"}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetFilters sets the Filters field's value.
func (s *ListComponentTypesInput) SetFilters(v []*ListComponentTypesFilter) *ListComponentTypesInput {
	s.Filters = v
	return s
}

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListComponentTypesInput) SetWorkspaceId(v string) *ListComponentTypesInput {
	s.WorkspaceId = &v
	return s
}

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

	// A list of objects that contain information about the component types.
	//
	// ComponentTypeSummaries is a required field
	ComponentTypeSummaries []*ComponentTypeSummary `locationName:"componentTypeSummaries" type:"list" required:"true"`

	// Specifies the maximum number of results to display.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 ListComponentTypesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetComponentTypeSummaries sets the ComponentTypeSummaries field's value.
func (s *ListComponentTypesOutput) SetComponentTypeSummaries(v []*ComponentTypeSummary) *ListComponentTypesOutput {
	s.ComponentTypeSummaries = v
	return s
}

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListComponentTypesOutput) SetWorkspaceId(v string) *ListComponentTypesOutput {
	s.WorkspaceId = &v
	return s
}

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

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID for the entity whose metadata (component/properties) is returned by
	// the operation.
	//
	// EntityId is a required field
	EntityId *string `location:"uri" locationName:"entityId" min:"1" type:"string" required:"true"`

	// The maximum number of results returned at one time. The default is 25.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The workspace ID.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListComponentsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentPath sets the ComponentPath field's value.
func (s *ListComponentsInput) SetComponentPath(v string) *ListComponentsInput {
	s.ComponentPath = &v
	return s
}

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListComponentsInput) SetWorkspaceId(v string) *ListComponentsInput {
	s.WorkspaceId = &v
	return s
}

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

	// A list of objects that contain information about the components.
	//
	// ComponentSummaries is a required field
	ComponentSummaries []*ComponentSummary `locationName:"componentSummaries" type:"list" required:"true"`

	// The string that specifies the next page of component results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetComponentSummaries sets the ComponentSummaries field's value.
func (s *ListComponentsOutput) SetComponentSummaries(v []*ComponentSummary) *ListComponentsOutput {
	s.ComponentSummaries = v
	return s
}

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

// An object that filters items in a list of entities.
type ListEntitiesFilter struct {
	_ struct{} `type:"structure"`

	// The ID of the component type in the entities in the list.
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string"`

	// The external-Id property of a component. The external-Id property is the
	// primary key of an external storage system.
	ExternalId *string `locationName:"externalId" min:"1" type:"string"`

	// The parent of the entities in the list.
	ParentEntityId *string `locationName:"parentEntityId" 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 ListEntitiesFilter) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *ListEntitiesFilter) SetComponentTypeId(v string) *ListEntitiesFilter {
	s.ComponentTypeId = &v
	return s
}

// SetExternalId sets the ExternalId field's value.
func (s *ListEntitiesFilter) SetExternalId(v string) *ListEntitiesFilter {
	s.ExternalId = &v
	return s
}

// SetParentEntityId sets the ParentEntityId field's value.
func (s *ListEntitiesFilter) SetParentEntityId(v string) *ListEntitiesFilter {
	s.ParentEntityId = &v
	return s
}

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

	// A list of objects that filter the request.
	//
	// Only one object is accepted as a valid input.
	Filters []*ListEntitiesFilter `locationName:"filters" type:"list"`

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListEntitiesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEntitiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEntitiesInput"}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetFilters sets the Filters field's value.
func (s *ListEntitiesInput) SetFilters(v []*ListEntitiesFilter) *ListEntitiesInput {
	s.Filters = v
	return s
}

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListEntitiesInput) SetWorkspaceId(v string) *ListEntitiesInput {
	s.WorkspaceId = &v
	return s
}

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

	// A list of objects that contain information about the entities.
	EntitySummaries []*EntitySummary `locationName:"entitySummaries" type:"list"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetEntitySummaries sets the EntitySummaries field's value.
func (s *ListEntitiesOutput) SetEntitySummaries(v []*EntitySummary) *ListEntitiesOutput {
	s.EntitySummaries = v
	return s
}

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

// The ListMetadataTransferJobs filter.
type ListMetadataTransferJobsFilter struct {
	_ struct{} `type:"structure"`

	// The filter state.
	State *string `locationName:"state" type:"string" enum:"MetadataTransferJobState"`

	// The workspace Id.
	WorkspaceId *string `locationName:"workspaceId" 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 ListMetadataTransferJobsFilter) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListMetadataTransferJobsFilter) SetWorkspaceId(v string) *ListMetadataTransferJobsFilter {
	s.WorkspaceId = &v
	return s
}

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

	// The metadata transfer job's destination type.
	//
	// DestinationType is a required field
	DestinationType *string `locationName:"destinationType" type:"string" required:"true" enum:"DestinationType"`

	// An object that filters metadata transfer jobs.
	Filters []*ListMetadataTransferJobsFilter `locationName:"filters" type:"list"`

	// The maximum number of results to return at one time.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The metadata transfer job's source type.
	//
	// SourceType is a required field
	SourceType *string `locationName:"sourceType" type:"string" required:"true" enum:"SourceType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListMetadataTransferJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListMetadataTransferJobsInput"}
	if s.DestinationType == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationType"))
	}
	if s.SourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceType"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDestinationType sets the DestinationType field's value.
func (s *ListMetadataTransferJobsInput) SetDestinationType(v string) *ListMetadataTransferJobsInput {
	s.DestinationType = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListMetadataTransferJobsInput) SetFilters(v []*ListMetadataTransferJobsFilter) *ListMetadataTransferJobsInput {
	s.Filters = v
	return s
}

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

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

// SetSourceType sets the SourceType field's value.
func (s *ListMetadataTransferJobsInput) SetSourceType(v string) *ListMetadataTransferJobsInput {
	s.SourceType = &v
	return s
}

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

	// The metadata transfer job summaries.
	//
	// MetadataTransferJobSummaries is a required field
	MetadataTransferJobSummaries []*MetadataTransferJobSummary `locationName:"metadataTransferJobSummaries" type:"list" required:"true"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetMetadataTransferJobSummaries sets the MetadataTransferJobSummaries field's value.
func (s *ListMetadataTransferJobsOutput) SetMetadataTransferJobSummaries(v []*MetadataTransferJobSummary) *ListMetadataTransferJobsOutput {
	s.MetadataTransferJobSummaries = v
	return s
}

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

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

	// The name of the component whose properties are returned by the operation.
	ComponentName *string `locationName:"componentName" min:"1" type:"string"`

	// This string specifies the path to the composite component, starting from
	// the top-level component.
	ComponentPath *string `locationName:"componentPath" min:"1" type:"string"`

	// The ID for the entity whose metadata (component/properties) is returned by
	// the operation.
	//
	// EntityId is a required field
	EntityId *string `locationName:"entityId" min:"1" type:"string" required:"true"`

	// The maximum number of results returned at one time. The default is 25.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The workspace ID.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListPropertiesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComponentName sets the ComponentName field's value.
func (s *ListPropertiesInput) SetComponentName(v string) *ListPropertiesInput {
	s.ComponentName = &v
	return s
}

// SetComponentPath sets the ComponentPath field's value.
func (s *ListPropertiesInput) SetComponentPath(v string) *ListPropertiesInput {
	s.ComponentPath = &v
	return s
}

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListPropertiesInput) SetWorkspaceId(v string) *ListPropertiesInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of property results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// A list of objects that contain information about the properties.
	//
	// PropertySummaries is a required field
	PropertySummaries []*PropertySummary `locationName:"propertySummaries" 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 ListPropertiesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetPropertySummaries sets the PropertySummaries field's value.
func (s *ListPropertiesOutput) SetPropertySummaries(v []*PropertySummary) *ListPropertiesOutput {
	s.PropertySummaries = v
	return s
}

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

	// Specifies the maximum number of results to display.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ID of the workspace that contains the scenes.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListScenesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListScenesInput) SetWorkspaceId(v string) *ListScenesInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// A list of objects that contain information about the scenes.
	SceneSummaries []*SceneSummary `locationName:"sceneSummaries" 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 ListScenesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetSceneSummaries sets the SceneSummaries field's value.
func (s *ListScenesOutput) SetSceneSummaries(v []*SceneSummary) *ListScenesOutput {
	s.SceneSummaries = v
	return s
}

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

	// The maximum number of results to return at one time. The default is 50.
	//
	// Valid Range: Minimum value of 0. Maximum value of 200.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ID of the workspace that contains the sync job.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListSyncJobsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListSyncJobsInput) SetWorkspaceId(v string) *ListSyncJobsInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The listed SyncJob summaries.
	SyncJobSummaries []*SyncJobSummary `locationName:"syncJobSummaries" 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 ListSyncJobsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetSyncJobSummaries sets the SyncJobSummaries field's value.
func (s *ListSyncJobsOutput) SetSyncJobSummaries(v []*SyncJobSummary) *ListSyncJobsOutput {
	s.SyncJobSummaries = v
	return s
}

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

	// A list of objects that filter the request.
	//
	// The following filter combinations are supported:
	//
	//    * Filter with state
	//
	//    * Filter with ResourceType and ResourceId
	//
	//    * Filter with ResourceType and ExternalId
	Filters []*SyncResourceFilter `locationName:"filters" type:"list"`

	// The maximum number of results to return at one time. The default is 50.
	//
	// Valid Range: Minimum value of 0. Maximum value of 200.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The sync source.
	//
	// Currently the only supported syncSource is SITEWISE .
	//
	// SyncSource is a required field
	SyncSource *string `location:"uri" locationName:"syncSource" type:"string" required:"true"`

	// The ID of the workspace that contains the sync job.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 ListSyncResourcesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSyncResourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSyncResourcesInput"}
	if s.SyncSource == nil {
		invalidParams.Add(request.NewErrParamRequired("SyncSource"))
	}
	if s.SyncSource != nil && len(*s.SyncSource) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SyncSource", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetFilters sets the Filters field's value.
func (s *ListSyncResourcesInput) SetFilters(v []*SyncResourceFilter) *ListSyncResourcesInput {
	s.Filters = v
	return s
}

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

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

// SetSyncSource sets the SyncSource field's value.
func (s *ListSyncResourcesInput) SetSyncSource(v string) *ListSyncResourcesInput {
	s.SyncSource = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *ListSyncResourcesInput) SetWorkspaceId(v string) *ListSyncResourcesInput {
	s.WorkspaceId = &v
	return s
}

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The sync resources.
	SyncResources []*SyncResourceSummary `locationName:"syncResources" 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 ListSyncResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetSyncResources sets the SyncResources field's value.
func (s *ListSyncResourcesOutput) SetSyncResources(v []*SyncResourceSummary) *ListSyncResourcesOutput {
	s.SyncResources = v
	return s
}

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

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ARN of the resource.
	//
	// ResourceARN is a required field
	ResourceARN *string `locationName:"resourceARN" min:"20" type:"string" required:"true"`
}

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

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

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

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

// 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 string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Metadata that you can use to manage a 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()
}

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

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

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

	// The maximum number of results to return at one time. The default is 25.
	//
	// Valid Range: Minimum value of 1. Maximum value of 250.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

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

	// The string that specifies the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// A list of objects that contain information about the workspaces.
	WorkspaceSummaries []*WorkspaceSummary `locationName:"workspaceSummaries" 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 ListWorkspacesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetWorkspaceSummaries sets the WorkspaceSummaries field's value.
func (s *ListWorkspacesOutput) SetWorkspaceSummaries(v []*WorkspaceSummary) *ListWorkspacesOutput {
	s.WorkspaceSummaries = v
	return s
}

// The metadata transfer job's progress.
type MetadataTransferJobProgress struct {
	_ struct{} `type:"structure"`

	// The failed count.
	FailedCount *int64 `locationName:"failedCount" type:"integer"`

	// The skipped count.
	SkippedCount *int64 `locationName:"skippedCount" type:"integer"`

	// The succeeded count.
	SucceededCount *int64 `locationName:"succeededCount" type:"integer"`

	// The total count. [of what]
	TotalCount *int64 `locationName:"totalCount" 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 MetadataTransferJobProgress) String() string {
	return awsutil.Prettify(s)
}

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

// SetFailedCount sets the FailedCount field's value.
func (s *MetadataTransferJobProgress) SetFailedCount(v int64) *MetadataTransferJobProgress {
	s.FailedCount = &v
	return s
}

// SetSkippedCount sets the SkippedCount field's value.
func (s *MetadataTransferJobProgress) SetSkippedCount(v int64) *MetadataTransferJobProgress {
	s.SkippedCount = &v
	return s
}

// SetSucceededCount sets the SucceededCount field's value.
func (s *MetadataTransferJobProgress) SetSucceededCount(v int64) *MetadataTransferJobProgress {
	s.SucceededCount = &v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *MetadataTransferJobProgress) SetTotalCount(v int64) *MetadataTransferJobProgress {
	s.TotalCount = &v
	return s
}

// The metadata transfer job status.
type MetadataTransferJobStatus struct {
	_ struct{} `type:"structure"`

	// The metadata transfer job error.
	Error *ErrorDetails `locationName:"error" type:"structure"`

	// The queued position.
	QueuedPosition *int64 `locationName:"queuedPosition" type:"integer"`

	// The metadata transfer job state.
	State *string `locationName:"state" type:"string" enum:"MetadataTransferJobState"`
}

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

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

// SetError sets the Error field's value.
func (s *MetadataTransferJobStatus) SetError(v *ErrorDetails) *MetadataTransferJobStatus {
	s.Error = v
	return s
}

// SetQueuedPosition sets the QueuedPosition field's value.
func (s *MetadataTransferJobStatus) SetQueuedPosition(v int64) *MetadataTransferJobStatus {
	s.QueuedPosition = &v
	return s
}

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

// The metadata transfer job summary.
type MetadataTransferJobSummary struct {
	_ struct{} `type:"structure"`

	// The metadata transfer job summary ARN.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The metadata transfer job summary creation DateTime object.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The metadata transfer job summary Id.
	//
	// MetadataTransferJobId is a required field
	MetadataTransferJobId *string `locationName:"metadataTransferJobId" min:"1" type:"string" required:"true"`

	// The metadata transfer job summary progess.
	Progress *MetadataTransferJobProgress `locationName:"progress" type:"structure"`

	// The metadata transfer job summary status.
	//
	// Status is a required field
	Status *MetadataTransferJobStatus `locationName:"status" type:"structure" required:"true"`

	// The metadata transfer job summary update DateTime object
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *MetadataTransferJobSummary) SetCreationDateTime(v time.Time) *MetadataTransferJobSummary {
	s.CreationDateTime = &v
	return s
}

// SetMetadataTransferJobId sets the MetadataTransferJobId field's value.
func (s *MetadataTransferJobSummary) SetMetadataTransferJobId(v string) *MetadataTransferJobSummary {
	s.MetadataTransferJobId = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *MetadataTransferJobSummary) SetProgress(v *MetadataTransferJobProgress) *MetadataTransferJobSummary {
	s.Progress = v
	return s
}

// SetStatus sets the Status field's value.
func (s *MetadataTransferJobSummary) SetStatus(v *MetadataTransferJobStatus) *MetadataTransferJobSummary {
	s.Status = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *MetadataTransferJobSummary) SetUpdateDateTime(v time.Time) *MetadataTransferJobSummary {
	s.UpdateDateTime = &v
	return s
}

// Filter criteria that orders the return output. It can be sorted in ascending
// or descending order.
type OrderBy struct {
	_ struct{} `type:"structure"`

	// The set order that filters results.
	Order *string `locationName:"order" type:"string" enum:"Order"`

	// The property name.
	//
	// PropertyName is a required field
	PropertyName *string `locationName:"propertyName" 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 OrderBy) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetOrder sets the Order field's value.
func (s *OrderBy) SetOrder(v string) *OrderBy {
	s.Order = &v
	return s
}

// SetPropertyName sets the PropertyName field's value.
func (s *OrderBy) SetPropertyName(v string) *OrderBy {
	s.PropertyName = &v
	return s
}

// The parent entity update request.
type ParentEntityUpdateRequest struct {
	_ struct{} `type:"structure"`

	// The ID of the parent entity.
	ParentEntityId *string `locationName:"parentEntityId" min:"1" type:"string"`

	// The type of the update.
	//
	// UpdateType is a required field
	UpdateType *string `locationName:"updateType" type:"string" required:"true" enum:"ParentEntityUpdateType"`
}

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

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

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

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

// SetParentEntityId sets the ParentEntityId field's value.
func (s *ParentEntityUpdateRequest) SetParentEntityId(v string) *ParentEntityUpdateRequest {
	s.ParentEntityId = &v
	return s
}

// SetUpdateType sets the UpdateType field's value.
func (s *ParentEntityUpdateRequest) SetUpdateType(v string) *ParentEntityUpdateRequest {
	s.UpdateType = &v
	return s
}

// The pricing plan.
type PricingPlan struct {
	_ struct{} `type:"structure"`

	// The billable entity count.
	BillableEntityCount *int64 `locationName:"billableEntityCount" type:"long"`

	// The pricing plan's bundle information.
	BundleInformation *BundleInformation `locationName:"bundleInformation" type:"structure"`

	// The effective date and time of the pricing plan.
	//
	// EffectiveDateTime is a required field
	EffectiveDateTime *time.Time `locationName:"effectiveDateTime" type:"timestamp" required:"true"`

	// The pricing mode.
	//
	// PricingMode is a required field
	PricingMode *string `locationName:"pricingMode" type:"string" required:"true" enum:"PricingMode"`

	// The set date and time for updating a pricing plan.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The update reason for changing a pricing plan.
	//
	// UpdateReason is a required field
	UpdateReason *string `locationName:"updateReason" type:"string" required:"true" enum:"UpdateReason"`
}

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

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

// SetBillableEntityCount sets the BillableEntityCount field's value.
func (s *PricingPlan) SetBillableEntityCount(v int64) *PricingPlan {
	s.BillableEntityCount = &v
	return s
}

// SetBundleInformation sets the BundleInformation field's value.
func (s *PricingPlan) SetBundleInformation(v *BundleInformation) *PricingPlan {
	s.BundleInformation = v
	return s
}

// SetEffectiveDateTime sets the EffectiveDateTime field's value.
func (s *PricingPlan) SetEffectiveDateTime(v time.Time) *PricingPlan {
	s.EffectiveDateTime = &v
	return s
}

// SetPricingMode sets the PricingMode field's value.
func (s *PricingPlan) SetPricingMode(v string) *PricingPlan {
	s.PricingMode = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *PricingPlan) SetUpdateDateTime(v time.Time) *PricingPlan {
	s.UpdateDateTime = &v
	return s
}

// SetUpdateReason sets the UpdateReason field's value.
func (s *PricingPlan) SetUpdateReason(v string) *PricingPlan {
	s.UpdateReason = &v
	return s
}

// An object that sets information about a property.
type PropertyDefinitionRequest struct {
	_ struct{} `type:"structure"`

	// A mapping that specifies configuration information about the property. Use
	// this field to specify information that you read from and write to an external
	// source.
	Configuration map[string]*string `locationName:"configuration" type:"map"`

	// An object that contains information about the data type.
	DataType *DataType `locationName:"dataType" type:"structure"`

	// An object that contains the default value.
	DefaultValue *DataValue `locationName:"defaultValue" type:"structure"`

	// A friendly name for the property.
	DisplayName *string `locationName:"displayName" type:"string"`

	// A Boolean value that specifies whether the property ID comes from an external
	// data store.
	IsExternalId *bool `locationName:"isExternalId" type:"boolean"`

	// A Boolean value that specifies whether the property is required.
	IsRequiredInEntity *bool `locationName:"isRequiredInEntity" type:"boolean"`

	// A Boolean value that specifies whether the property is stored externally.
	IsStoredExternally *bool `locationName:"isStoredExternally" type:"boolean"`

	// A Boolean value that specifies whether the property consists of time series
	// data.
	IsTimeSeries *bool `locationName:"isTimeSeries" 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 PropertyDefinitionRequest) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PropertyDefinitionRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PropertyDefinitionRequest"}
	if s.DataType != nil {
		if err := s.DataType.Validate(); err != nil {
			invalidParams.AddNested("DataType", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultValue != nil {
		if err := s.DefaultValue.Validate(); err != nil {
			invalidParams.AddNested("DefaultValue", err.(request.ErrInvalidParams))
		}
	}

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

// SetConfiguration sets the Configuration field's value.
func (s *PropertyDefinitionRequest) SetConfiguration(v map[string]*string) *PropertyDefinitionRequest {
	s.Configuration = v
	return s
}

// SetDataType sets the DataType field's value.
func (s *PropertyDefinitionRequest) SetDataType(v *DataType) *PropertyDefinitionRequest {
	s.DataType = v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *PropertyDefinitionRequest) SetDefaultValue(v *DataValue) *PropertyDefinitionRequest {
	s.DefaultValue = v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *PropertyDefinitionRequest) SetDisplayName(v string) *PropertyDefinitionRequest {
	s.DisplayName = &v
	return s
}

// SetIsExternalId sets the IsExternalId field's value.
func (s *PropertyDefinitionRequest) SetIsExternalId(v bool) *PropertyDefinitionRequest {
	s.IsExternalId = &v
	return s
}

// SetIsRequiredInEntity sets the IsRequiredInEntity field's value.
func (s *PropertyDefinitionRequest) SetIsRequiredInEntity(v bool) *PropertyDefinitionRequest {
	s.IsRequiredInEntity = &v
	return s
}

// SetIsStoredExternally sets the IsStoredExternally field's value.
func (s *PropertyDefinitionRequest) SetIsStoredExternally(v bool) *PropertyDefinitionRequest {
	s.IsStoredExternally = &v
	return s
}

// SetIsTimeSeries sets the IsTimeSeries field's value.
func (s *PropertyDefinitionRequest) SetIsTimeSeries(v bool) *PropertyDefinitionRequest {
	s.IsTimeSeries = &v
	return s
}

// An object that contains response data from a property definition request.
type PropertyDefinitionResponse struct {
	_ struct{} `type:"structure"`

	// A mapping that specifies configuration information about the property.
	Configuration map[string]*string `locationName:"configuration" type:"map"`

	// An object that contains information about the data type.
	//
	// DataType is a required field
	DataType *DataType `locationName:"dataType" type:"structure" required:"true"`

	// An object that contains the default value.
	DefaultValue *DataValue `locationName:"defaultValue" type:"structure"`

	// A friendly name for the property.
	DisplayName *string `locationName:"displayName" type:"string"`

	// A Boolean value that specifies whether the property ID comes from an external
	// data store.
	//
	// IsExternalId is a required field
	IsExternalId *bool `locationName:"isExternalId" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property definition can be updated.
	//
	// IsFinal is a required field
	IsFinal *bool `locationName:"isFinal" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property definition is imported
	// from an external data store.
	//
	// IsImported is a required field
	IsImported *bool `locationName:"isImported" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property definition is inherited
	// from a parent entity.
	//
	// IsInherited is a required field
	IsInherited *bool `locationName:"isInherited" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property is required in an entity.
	//
	// IsRequiredInEntity is a required field
	IsRequiredInEntity *bool `locationName:"isRequiredInEntity" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property is stored externally.
	//
	// IsStoredExternally is a required field
	IsStoredExternally *bool `locationName:"isStoredExternally" type:"boolean" required:"true"`

	// A Boolean value that specifies whether the property consists of time series
	// data.
	//
	// IsTimeSeries is a required field
	IsTimeSeries *bool `locationName:"isTimeSeries" type:"boolean" required:"true"`
}

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

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

// SetConfiguration sets the Configuration field's value.
func (s *PropertyDefinitionResponse) SetConfiguration(v map[string]*string) *PropertyDefinitionResponse {
	s.Configuration = v
	return s
}

// SetDataType sets the DataType field's value.
func (s *PropertyDefinitionResponse) SetDataType(v *DataType) *PropertyDefinitionResponse {
	s.DataType = v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *PropertyDefinitionResponse) SetDefaultValue(v *DataValue) *PropertyDefinitionResponse {
	s.DefaultValue = v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *PropertyDefinitionResponse) SetDisplayName(v string) *PropertyDefinitionResponse {
	s.DisplayName = &v
	return s
}

// SetIsExternalId sets the IsExternalId field's value.
func (s *PropertyDefinitionResponse) SetIsExternalId(v bool) *PropertyDefinitionResponse {
	s.IsExternalId = &v
	return s
}

// SetIsFinal sets the IsFinal field's value.
func (s *PropertyDefinitionResponse) SetIsFinal(v bool) *PropertyDefinitionResponse {
	s.IsFinal = &v
	return s
}

// SetIsImported sets the IsImported field's value.
func (s *PropertyDefinitionResponse) SetIsImported(v bool) *PropertyDefinitionResponse {
	s.IsImported = &v
	return s
}

// SetIsInherited sets the IsInherited field's value.
func (s *PropertyDefinitionResponse) SetIsInherited(v bool) *PropertyDefinitionResponse {
	s.IsInherited = &v
	return s
}

// SetIsRequiredInEntity sets the IsRequiredInEntity field's value.
func (s *PropertyDefinitionResponse) SetIsRequiredInEntity(v bool) *PropertyDefinitionResponse {
	s.IsRequiredInEntity = &v
	return s
}

// SetIsStoredExternally sets the IsStoredExternally field's value.
func (s *PropertyDefinitionResponse) SetIsStoredExternally(v bool) *PropertyDefinitionResponse {
	s.IsStoredExternally = &v
	return s
}

// SetIsTimeSeries sets the IsTimeSeries field's value.
func (s *PropertyDefinitionResponse) SetIsTimeSeries(v bool) *PropertyDefinitionResponse {
	s.IsTimeSeries = &v
	return s
}

// An object that filters items returned by a property request.
type PropertyFilter struct {
	_ struct{} `type:"structure"`

	// The operator associated with this property filter.
	Operator *string `locationName:"operator" min:"1" type:"string"`

	// The property name associated with this property filter.
	PropertyName *string `locationName:"propertyName" min:"1" type:"string"`

	// The value associated with this property filter.
	Value *DataValue `locationName:"value" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PropertyFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PropertyFilter"}
	if s.Operator != nil && len(*s.Operator) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Operator", 1))
	}
	if s.PropertyName != nil && len(*s.PropertyName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PropertyName", 1))
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

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

// SetOperator sets the Operator field's value.
func (s *PropertyFilter) SetOperator(v string) *PropertyFilter {
	s.Operator = &v
	return s
}

// SetPropertyName sets the PropertyName field's value.
func (s *PropertyFilter) SetPropertyName(v string) *PropertyFilter {
	s.PropertyName = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertyFilter) SetValue(v *DataValue) *PropertyFilter {
	s.Value = v
	return s
}

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

	// The group type.
	GroupType *string `locationName:"groupType" type:"string" enum:"GroupType"`

	// The names of properties.
	PropertyNames []*string `locationName:"propertyNames" 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 PropertyGroupRequest) String() string {
	return awsutil.Prettify(s)
}

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

// SetGroupType sets the GroupType field's value.
func (s *PropertyGroupRequest) SetGroupType(v string) *PropertyGroupRequest {
	s.GroupType = &v
	return s
}

// SetPropertyNames sets the PropertyNames field's value.
func (s *PropertyGroupRequest) SetPropertyNames(v []*string) *PropertyGroupRequest {
	s.PropertyNames = v
	return s
}

// The property group response
type PropertyGroupResponse struct {
	_ struct{} `type:"structure"`

	// The group types.
	//
	// GroupType is a required field
	GroupType *string `locationName:"groupType" type:"string" required:"true" enum:"GroupType"`

	// A Boolean value that specifies whether the property group is inherited from
	// a parent entity
	//
	// IsInherited is a required field
	IsInherited *bool `locationName:"isInherited" type:"boolean" required:"true"`

	// The names of properties.
	//
	// PropertyNames is a required field
	PropertyNames []*string `locationName:"propertyNames" 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 PropertyGroupResponse) String() string {
	return awsutil.Prettify(s)
}

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

// SetGroupType sets the GroupType field's value.
func (s *PropertyGroupResponse) SetGroupType(v string) *PropertyGroupResponse {
	s.GroupType = &v
	return s
}

// SetIsInherited sets the IsInherited field's value.
func (s *PropertyGroupResponse) SetIsInherited(v bool) *PropertyGroupResponse {
	s.IsInherited = &v
	return s
}

// SetPropertyNames sets the PropertyNames field's value.
func (s *PropertyGroupResponse) SetPropertyNames(v []*string) *PropertyGroupResponse {
	s.PropertyNames = v
	return s
}

// The latest value of the property.
type PropertyLatestValue struct {
	_ struct{} `type:"structure"`

	// An object that specifies information about a property.
	//
	// PropertyReference is a required field
	PropertyReference *EntityPropertyReference `locationName:"propertyReference" type:"structure" required:"true"`

	// The value of the property.
	PropertyValue *DataValue `locationName:"propertyValue" type:"structure"`
}

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

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

// SetPropertyReference sets the PropertyReference field's value.
func (s *PropertyLatestValue) SetPropertyReference(v *EntityPropertyReference) *PropertyLatestValue {
	s.PropertyReference = v
	return s
}

// SetPropertyValue sets the PropertyValue field's value.
func (s *PropertyLatestValue) SetPropertyValue(v *DataValue) *PropertyLatestValue {
	s.PropertyValue = v
	return s
}

// An object that sets information about a property.
type PropertyRequest struct {
	_ struct{} `type:"structure"`

	// An object that specifies information about a property.
	Definition *PropertyDefinitionRequest `locationName:"definition" type:"structure"`

	// The update type of the update property request.
	UpdateType *string `locationName:"updateType" type:"string" enum:"PropertyUpdateType"`

	// The value of the property.
	Value *DataValue `locationName:"value" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PropertyRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PropertyRequest"}
	if s.Definition != nil {
		if err := s.Definition.Validate(); err != nil {
			invalidParams.AddNested("Definition", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

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

// SetDefinition sets the Definition field's value.
func (s *PropertyRequest) SetDefinition(v *PropertyDefinitionRequest) *PropertyRequest {
	s.Definition = v
	return s
}

// SetUpdateType sets the UpdateType field's value.
func (s *PropertyRequest) SetUpdateType(v string) *PropertyRequest {
	s.UpdateType = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertyRequest) SetValue(v *DataValue) *PropertyRequest {
	s.Value = v
	return s
}

// An object that contains information about a property response.
type PropertyResponse struct {
	_ struct{} `type:"structure"`

	// This flag notes whether all values of a list or map type property are returned
	// in the API response. The maximum number of values per property returned is
	// 50.
	AreAllPropertyValuesReturned *bool `locationName:"areAllPropertyValuesReturned" type:"boolean"`

	// An object that specifies information about a property.
	Definition *PropertyDefinitionResponse `locationName:"definition" type:"structure"`

	// The value of the property.
	Value *DataValue `locationName:"value" type:"structure"`
}

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

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

// SetAreAllPropertyValuesReturned sets the AreAllPropertyValuesReturned field's value.
func (s *PropertyResponse) SetAreAllPropertyValuesReturned(v bool) *PropertyResponse {
	s.AreAllPropertyValuesReturned = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *PropertyResponse) SetDefinition(v *PropertyDefinitionResponse) *PropertyResponse {
	s.Definition = v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertyResponse) SetValue(v *DataValue) *PropertyResponse {
	s.Value = v
	return s
}

// This is an object that contains the information of a property.
type PropertySummary struct {
	_ struct{} `type:"structure"`

	// This flag notes whether all values of a list or map type property are returned
	// in the API response. The maximum number of values per property returned is
	// 50.
	AreAllPropertyValuesReturned *bool `locationName:"areAllPropertyValuesReturned" type:"boolean"`

	// This is the schema for the property.
	Definition *PropertyDefinitionResponse `locationName:"definition" type:"structure"`

	// This is the name of the property.
	//
	// PropertyName is a required field
	PropertyName *string `locationName:"propertyName" min:"1" type:"string" required:"true"`

	// This is the value for the property.
	Value *DataValue `locationName:"value" type:"structure"`
}

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

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

// SetAreAllPropertyValuesReturned sets the AreAllPropertyValuesReturned field's value.
func (s *PropertySummary) SetAreAllPropertyValuesReturned(v bool) *PropertySummary {
	s.AreAllPropertyValuesReturned = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *PropertySummary) SetDefinition(v *PropertyDefinitionResponse) *PropertySummary {
	s.Definition = v
	return s
}

// SetPropertyName sets the PropertyName field's value.
func (s *PropertySummary) SetPropertyName(v string) *PropertySummary {
	s.PropertyName = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertySummary) SetValue(v *DataValue) *PropertySummary {
	s.Value = v
	return s
}

// An object that contains information about a value for a time series property.
type PropertyValue struct {
	_ struct{} `type:"structure"`

	// ISO8601 DateTime of a value for a time series property.
	//
	// The time for when the property value was recorded in ISO 8601 format: YYYY-MM-DDThh:mm:ss[.SSSSSSSSS][Z/±HH:mm].
	//
	//    * [YYYY]: year
	//
	//    * [MM]: month
	//
	//    * [DD]: day
	//
	//    * [hh]: hour
	//
	//    * [mm]: minute
	//
	//    * [ss]: seconds
	//
	//    * [.SSSSSSSSS]: additional precision, where precedence is maintained.
	//    For example: [.573123] is equal to 573123000 nanoseconds.
	//
	//    * Z: default timezone UTC
	//
	//    * ± HH:mm: time zone offset in Hours and Minutes.
	//
	// Required sub-fields: YYYY-MM-DDThh:mm:ss and [Z/±HH:mm]
	Time *string `locationName:"time" min:"20" type:"string"`

	// The timestamp of a value for a time series property.
	//
	// Deprecated: This field is deprecated and will throw an error in the future. Use time instead.
	Timestamp *time.Time `locationName:"timestamp" deprecated:"true" type:"timestamp"`

	// An object that specifies a value for a time series property.
	//
	// Value is a required field
	Value *DataValue `locationName:"value" 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 PropertyValue) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PropertyValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PropertyValue"}
	if s.Time != nil && len(*s.Time) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Time", 20))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

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

// SetTime sets the Time field's value.
func (s *PropertyValue) SetTime(v string) *PropertyValue {
	s.Time = &v
	return s
}

// SetTimestamp sets the Timestamp field's value.
func (s *PropertyValue) SetTimestamp(v time.Time) *PropertyValue {
	s.Timestamp = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertyValue) SetValue(v *DataValue) *PropertyValue {
	s.Value = v
	return s
}

// An object that specifies information about time series property values. This
// object is used and consumed by the BatchPutPropertyValues (https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_BatchPutPropertyValues.html)
// action.
type PropertyValueEntry struct {
	_ struct{} `type:"structure"`

	// An object that contains information about the entity that has the property.
	//
	// EntityPropertyReference is a required field
	EntityPropertyReference *EntityPropertyReference `locationName:"entityPropertyReference" type:"structure" required:"true"`

	// A list of objects that specify time series property values.
	PropertyValues []*PropertyValue `locationName:"propertyValues" 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 PropertyValueEntry) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PropertyValueEntry) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PropertyValueEntry"}
	if s.EntityPropertyReference == nil {
		invalidParams.Add(request.NewErrParamRequired("EntityPropertyReference"))
	}
	if s.PropertyValues != nil && len(s.PropertyValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PropertyValues", 1))
	}
	if s.EntityPropertyReference != nil {
		if err := s.EntityPropertyReference.Validate(); err != nil {
			invalidParams.AddNested("EntityPropertyReference", err.(request.ErrInvalidParams))
		}
	}
	if s.PropertyValues != nil {
		for i, v := range s.PropertyValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyValues", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetEntityPropertyReference sets the EntityPropertyReference field's value.
func (s *PropertyValueEntry) SetEntityPropertyReference(v *EntityPropertyReference) *PropertyValueEntry {
	s.EntityPropertyReference = v
	return s
}

// SetPropertyValues sets the PropertyValues field's value.
func (s *PropertyValueEntry) SetPropertyValues(v []*PropertyValue) *PropertyValueEntry {
	s.PropertyValues = v
	return s
}

// The history of values for a time series property.
type PropertyValueHistory struct {
	_ struct{} `type:"structure"`

	// An object that uniquely identifies an entity property.
	//
	// EntityPropertyReference is a required field
	EntityPropertyReference *EntityPropertyReference `locationName:"entityPropertyReference" type:"structure" required:"true"`

	// A list of objects that contain information about the values in the history
	// of a time series property.
	Values []*PropertyValue `locationName:"values" 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 PropertyValueHistory) String() string {
	return awsutil.Prettify(s)
}

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

// SetEntityPropertyReference sets the EntityPropertyReference field's value.
func (s *PropertyValueHistory) SetEntityPropertyReference(v *EntityPropertyReference) *PropertyValueHistory {
	s.EntityPropertyReference = v
	return s
}

// SetValues sets the Values field's value.
func (s *PropertyValueHistory) SetValues(v []*PropertyValue) *PropertyValueHistory {
	s.Values = v
	return s
}

// The query timeout exception.
type QueryTimeoutException 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 QueryTimeoutException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorQueryTimeoutException(v protocol.ResponseMetadata) error {
	return &QueryTimeoutException{
		RespMetadata: v,
	}
}

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

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

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

func (s *QueryTimeoutException) 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 *QueryTimeoutException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// An object that specifies a relationship with another component type.
type Relationship struct {
	_ struct{} `type:"structure"`

	// The type of the relationship.
	RelationshipType *string `locationName:"relationshipType" min:"1" type:"string"`

	// The ID of the target component type associated with this relationship.
	TargetComponentTypeId *string `locationName:"targetComponentTypeId" 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 Relationship) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRelationshipType sets the RelationshipType field's value.
func (s *Relationship) SetRelationshipType(v string) *Relationship {
	s.RelationshipType = &v
	return s
}

// SetTargetComponentTypeId sets the TargetComponentTypeId field's value.
func (s *Relationship) SetTargetComponentTypeId(v string) *Relationship {
	s.TargetComponentTypeId = &v
	return s
}

// A value that associates a component and an entity.
type RelationshipValue struct {
	_ struct{} `type:"structure"`

	// The name of the target component associated with the relationship value.
	TargetComponentName *string `locationName:"targetComponentName" min:"1" type:"string"`

	// The ID of the target entity associated with this relationship value.
	TargetEntityId *string `locationName:"targetEntityId" 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 RelationshipValue) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTargetComponentName sets the TargetComponentName field's value.
func (s *RelationshipValue) SetTargetComponentName(v string) *RelationshipValue {
	s.TargetComponentName = &v
	return s
}

// SetTargetEntityId sets the TargetEntityId field's value.
func (s *RelationshipValue) SetTargetEntityId(v string) *RelationshipValue {
	s.TargetEntityId = &v
	return s
}

// The resource wasn't 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
}

// Represents a single row in the query results.
type Row 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 Row) String() string {
	return awsutil.Prettify(s)
}

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

// The S3 destination configuration.
type S3DestinationConfiguration struct {
	_ struct{} `type:"structure"`

	// The S3 destination configuration location.
	//
	// Location is a required field
	Location *string `locationName:"location" type:"string" required:"true"`
}

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

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

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

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

// SetLocation sets the Location field's value.
func (s *S3DestinationConfiguration) SetLocation(v string) *S3DestinationConfiguration {
	s.Location = &v
	return s
}

// The S3 destination source configuration.
type S3SourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The S3 destination source configuration location.
	//
	// Location is a required field
	Location *string `locationName:"location" type:"string" required:"true"`
}

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

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

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

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

// SetLocation sets the Location field's value.
func (s *S3SourceConfiguration) SetLocation(v string) *S3SourceConfiguration {
	s.Location = &v
	return s
}

// The scene error.
type SceneError struct {
	_ struct{} `type:"structure"`

	// The SceneError code.
	Code *string `locationName:"code" type:"string" enum:"SceneErrorCode"`

	// The SceneError 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 SceneError) String() string {
	return awsutil.Prettify(s)
}

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

// SetCode sets the Code field's value.
func (s *SceneError) SetCode(v string) *SceneError {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *SceneError) SetMessage(v string) *SceneError {
	s.Message = &v
	return s
}

// An object that contains information about a scene.
type SceneSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the scene.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The relative path that specifies the location of the content definition file.
	//
	// ContentLocation is a required field
	ContentLocation *string `locationName:"contentLocation" type:"string" required:"true"`

	// The date and time when the scene was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

	// The scene description.
	Description *string `locationName:"description" type:"string"`

	// The ID of the scene.
	//
	// SceneId is a required field
	SceneId *string `locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The date and time when the scene was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetContentLocation sets the ContentLocation field's value.
func (s *SceneSummary) SetContentLocation(v string) *SceneSummary {
	s.ContentLocation = &v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *SceneSummary) SetCreationDateTime(v time.Time) *SceneSummary {
	s.CreationDateTime = &v
	return s
}

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

// SetSceneId sets the SceneId field's value.
func (s *SceneSummary) SetSceneId(v string) *SceneSummary {
	s.SceneId = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *SceneSummary) SetUpdateDateTime(v time.Time) *SceneSummary {
	s.UpdateDateTime = &v
	return s
}

// The service quota was exceeded.
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 source configuration.
type SourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The source configuration IoT SiteWise configuration.
	IotSiteWiseConfiguration *IotSiteWiseSourceConfiguration `locationName:"iotSiteWiseConfiguration" type:"structure"`

	// The source configuration IoT TwinMaker configuration.
	IotTwinMakerConfiguration *IotTwinMakerSourceConfiguration `locationName:"iotTwinMakerConfiguration" type:"structure"`

	// The source configuration S3 configuration.
	S3Configuration *S3SourceConfiguration `locationName:"s3Configuration" type:"structure"`

	// The source configuration type.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"SourceType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SourceConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SourceConfiguration"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.IotSiteWiseConfiguration != nil {
		if err := s.IotSiteWiseConfiguration.Validate(); err != nil {
			invalidParams.AddNested("IotSiteWiseConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.IotTwinMakerConfiguration != nil {
		if err := s.IotTwinMakerConfiguration.Validate(); err != nil {
			invalidParams.AddNested("IotTwinMakerConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Configuration != nil {
		if err := s.S3Configuration.Validate(); err != nil {
			invalidParams.AddNested("S3Configuration", err.(request.ErrInvalidParams))
		}
	}

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

// SetIotSiteWiseConfiguration sets the IotSiteWiseConfiguration field's value.
func (s *SourceConfiguration) SetIotSiteWiseConfiguration(v *IotSiteWiseSourceConfiguration) *SourceConfiguration {
	s.IotSiteWiseConfiguration = v
	return s
}

// SetIotTwinMakerConfiguration sets the IotTwinMakerConfiguration field's value.
func (s *SourceConfiguration) SetIotTwinMakerConfiguration(v *IotTwinMakerSourceConfiguration) *SourceConfiguration {
	s.IotTwinMakerConfiguration = v
	return s
}

// SetS3Configuration sets the S3Configuration field's value.
func (s *SourceConfiguration) SetS3Configuration(v *S3SourceConfiguration) *SourceConfiguration {
	s.S3Configuration = v
	return s
}

// SetType sets the Type field's value.
func (s *SourceConfiguration) SetType(v string) *SourceConfiguration {
	s.Type = &v
	return s
}

// An object that represents the status of an entity, component, component type,
// or workspace.
type Status struct {
	_ struct{} `type:"structure"`

	// The error message.
	Error *ErrorDetails `locationName:"error" type:"structure"`

	// The current state of the entity, component, component type, or workspace.
	State *string `locationName:"state" type:"string" enum:"State"`
}

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

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

// SetError sets the Error field's value.
func (s *Status) SetError(v *ErrorDetails) *Status {
	s.Error = v
	return s
}

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

// The SyncJob status.
type SyncJobStatus struct {
	_ struct{} `type:"structure"`

	// The SyncJob error.
	Error *ErrorDetails `locationName:"error" type:"structure"`

	// The SyncJob status state.
	State *string `locationName:"state" type:"string" enum:"SyncJobState"`
}

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

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

// SetError sets the Error field's value.
func (s *SyncJobStatus) SetError(v *ErrorDetails) *SyncJobStatus {
	s.Error = v
	return s
}

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

// The SyncJob summary.
type SyncJobSummary struct {
	_ struct{} `type:"structure"`

	// The SyncJob summary ARN.
	Arn *string `locationName:"arn" min:"20" type:"string"`

	// The creation date and time.
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp"`

	// The SyncJob summaries status.
	Status *SyncJobStatus `locationName:"status" type:"structure"`

	// The sync source.
	SyncSource *string `locationName:"syncSource" type:"string"`

	// The update date and time.
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp"`

	// The ID of the workspace that contains the sync job.
	WorkspaceId *string `locationName:"workspaceId" 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 SyncJobSummary) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *SyncJobSummary) SetCreationDateTime(v time.Time) *SyncJobSummary {
	s.CreationDateTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SyncJobSummary) SetStatus(v *SyncJobStatus) *SyncJobSummary {
	s.Status = v
	return s
}

// SetSyncSource sets the SyncSource field's value.
func (s *SyncJobSummary) SetSyncSource(v string) *SyncJobSummary {
	s.SyncSource = &v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *SyncJobSummary) SetUpdateDateTime(v time.Time) *SyncJobSummary {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *SyncJobSummary) SetWorkspaceId(v string) *SyncJobSummary {
	s.WorkspaceId = &v
	return s
}

// The sync resource filter.
type SyncResourceFilter struct {
	_ struct{} `type:"structure"`

	// The external ID.
	ExternalId *string `locationName:"externalId" min:"1" type:"string"`

	// The sync resource filter resource ID.
	ResourceId *string `locationName:"resourceId" min:"1" type:"string"`

	// The sync resource filter resource type
	ResourceType *string `locationName:"resourceType" type:"string" enum:"SyncResourceType"`

	// The sync resource filter's state.
	State *string `locationName:"state" type:"string" enum:"SyncResourceState"`
}

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

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

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

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

// SetExternalId sets the ExternalId field's value.
func (s *SyncResourceFilter) SetExternalId(v string) *SyncResourceFilter {
	s.ExternalId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *SyncResourceFilter) SetResourceId(v string) *SyncResourceFilter {
	s.ResourceId = &v
	return s
}

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

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

// The sync resource status.
type SyncResourceStatus struct {
	_ struct{} `type:"structure"`

	// The status error.
	Error *ErrorDetails `locationName:"error" type:"structure"`

	// The sync resource status state.
	State *string `locationName:"state" type:"string" enum:"SyncResourceState"`
}

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

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

// SetError sets the Error field's value.
func (s *SyncResourceStatus) SetError(v *ErrorDetails) *SyncResourceStatus {
	s.Error = v
	return s
}

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

// The sync resource summary.
type SyncResourceSummary struct {
	_ struct{} `type:"structure"`

	// The external ID.
	ExternalId *string `locationName:"externalId" min:"1" type:"string"`

	// The resource ID.
	ResourceId *string `locationName:"resourceId" min:"1" type:"string"`

	// The resource type.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"SyncResourceType"`

	// The sync resource summary status.
	Status *SyncResourceStatus `locationName:"status" type:"structure"`

	// The update date and time.
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp"`
}

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

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

// SetExternalId sets the ExternalId field's value.
func (s *SyncResourceSummary) SetExternalId(v string) *SyncResourceSummary {
	s.ExternalId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *SyncResourceSummary) SetResourceId(v string) *SyncResourceSummary {
	s.ResourceId = &v
	return s
}

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

// SetStatus sets the Status field's value.
func (s *SyncResourceSummary) SetStatus(v *SyncResourceStatus) *SyncResourceSummary {
	s.Status = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *SyncResourceSummary) SetUpdateDateTime(v time.Time) *SyncResourceSummary {
	s.UpdateDateTime = &v
	return s
}

// The tabular conditions.
type TabularConditions struct {
	_ struct{} `type:"structure"`

	// Filter criteria that orders the output. It can be sorted in ascending or
	// descending order.
	OrderBy []*OrderBy `locationName:"orderBy" min:"1" type:"list"`

	// You can filter the request using various logical operators and a key-value
	// format. For example:
	//
	// {"key": "serverType", "value": "webServer"}
	PropertyFilters []*PropertyFilter `locationName:"propertyFilters" 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 TabularConditions) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *TabularConditions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TabularConditions"}
	if s.OrderBy != nil && len(s.OrderBy) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OrderBy", 1))
	}
	if s.PropertyFilters != nil && len(s.PropertyFilters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PropertyFilters", 1))
	}
	if s.OrderBy != nil {
		for i, v := range s.OrderBy {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OrderBy", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PropertyFilters != nil {
		for i, v := range s.PropertyFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetOrderBy sets the OrderBy field's value.
func (s *TabularConditions) SetOrderBy(v []*OrderBy) *TabularConditions {
	s.OrderBy = v
	return s
}

// SetPropertyFilters sets the PropertyFilters field's value.
func (s *TabularConditions) SetPropertyFilters(v []*PropertyFilter) *TabularConditions {
	s.PropertyFilters = v
	return s
}

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

	// The ARN of the resource.
	//
	// ResourceARN is a required field
	ResourceARN *string `locationName:"resourceARN" min:"20" type:"string" required:"true"`

	// Metadata to add to this resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceARN == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceARN"))
	}
	if s.ResourceARN != nil && len(*s.ResourceARN) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceARN", 20))
	}
	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 rate exceeds the limit.
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 number of tags exceeds the limit.
type TooManyTagsException 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 TooManyTagsException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorTooManyTagsException(v protocol.ResponseMetadata) error {
	return &TooManyTagsException{
		RespMetadata: v,
	}
}

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

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

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

func (s *TooManyTagsException) 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 *TooManyTagsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

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

	// The ARN of the resource.
	//
	// ResourceARN is a required field
	ResourceARN *string `location:"querystring" locationName:"resourceARN" min:"20" type:"string" required:"true"`

	// A list of tag key names to remove from the resource. You don't specify the
	// value. Both the key and its associated value are removed.
	//
	// 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) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceARN", 20))
	}
	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 UpdateComponentTypeInput struct {
	_ struct{} `type:"structure"`

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `location:"uri" locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The component type name.
	ComponentTypeName *string `locationName:"componentTypeName" type:"string"`

	// This is an object that maps strings to compositeComponentTypes of the componentType.
	// CompositeComponentType is referenced by componentTypeId.
	CompositeComponentTypes map[string]*CompositeComponentTypeRequest `locationName:"compositeComponentTypes" type:"map"`

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

	// Specifies the component type that this component type extends.
	ExtendsFrom []*string `locationName:"extendsFrom" type:"list"`

	// An object that maps strings to the functions in the component type. Each
	// string in the mapping must be unique to this object.
	Functions map[string]*FunctionRequest `locationName:"functions" type:"map"`

	// A Boolean value that specifies whether an entity can have more than one component
	// of this type.
	IsSingleton *bool `locationName:"isSingleton" type:"boolean"`

	// An object that maps strings to the property definitions in the component
	// type. Each string in the mapping must be unique to this object.
	PropertyDefinitions map[string]*PropertyDefinitionRequest `locationName:"propertyDefinitions" type:"map"`

	// The property groups.
	PropertyGroups map[string]*PropertyGroupRequest `locationName:"propertyGroups" type:"map"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 UpdateComponentTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateComponentTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateComponentTypeInput"}
	if s.ComponentTypeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComponentTypeId"))
	}
	if s.ComponentTypeId != nil && len(*s.ComponentTypeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentTypeId", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.CompositeComponentTypes != nil {
		for i, v := range s.CompositeComponentTypes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CompositeComponentTypes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Functions != nil {
		for i, v := range s.Functions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Functions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PropertyDefinitions != nil {
		for i, v := range s.PropertyDefinitions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PropertyDefinitions", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *UpdateComponentTypeInput) SetComponentTypeId(v string) *UpdateComponentTypeInput {
	s.ComponentTypeId = &v
	return s
}

// SetComponentTypeName sets the ComponentTypeName field's value.
func (s *UpdateComponentTypeInput) SetComponentTypeName(v string) *UpdateComponentTypeInput {
	s.ComponentTypeName = &v
	return s
}

// SetCompositeComponentTypes sets the CompositeComponentTypes field's value.
func (s *UpdateComponentTypeInput) SetCompositeComponentTypes(v map[string]*CompositeComponentTypeRequest) *UpdateComponentTypeInput {
	s.CompositeComponentTypes = v
	return s
}

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

// SetExtendsFrom sets the ExtendsFrom field's value.
func (s *UpdateComponentTypeInput) SetExtendsFrom(v []*string) *UpdateComponentTypeInput {
	s.ExtendsFrom = v
	return s
}

// SetFunctions sets the Functions field's value.
func (s *UpdateComponentTypeInput) SetFunctions(v map[string]*FunctionRequest) *UpdateComponentTypeInput {
	s.Functions = v
	return s
}

// SetIsSingleton sets the IsSingleton field's value.
func (s *UpdateComponentTypeInput) SetIsSingleton(v bool) *UpdateComponentTypeInput {
	s.IsSingleton = &v
	return s
}

// SetPropertyDefinitions sets the PropertyDefinitions field's value.
func (s *UpdateComponentTypeInput) SetPropertyDefinitions(v map[string]*PropertyDefinitionRequest) *UpdateComponentTypeInput {
	s.PropertyDefinitions = v
	return s
}

// SetPropertyGroups sets the PropertyGroups field's value.
func (s *UpdateComponentTypeInput) SetPropertyGroups(v map[string]*PropertyGroupRequest) *UpdateComponentTypeInput {
	s.PropertyGroups = v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *UpdateComponentTypeInput) SetWorkspaceId(v string) *UpdateComponentTypeInput {
	s.WorkspaceId = &v
	return s
}

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

	// The ARN of the component type.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The ID of the component type.
	//
	// ComponentTypeId is a required field
	ComponentTypeId *string `locationName:"componentTypeId" min:"1" type:"string" required:"true"`

	// The current state of the component type.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`

	// The ID of the workspace that contains the component type.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 UpdateComponentTypeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetComponentTypeId sets the ComponentTypeId field's value.
func (s *UpdateComponentTypeOutput) SetComponentTypeId(v string) *UpdateComponentTypeOutput {
	s.ComponentTypeId = &v
	return s
}

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

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *UpdateComponentTypeOutput) SetWorkspaceId(v string) *UpdateComponentTypeOutput {
	s.WorkspaceId = &v
	return s
}

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

	// An object that maps strings to the component updates in the request. Each
	// string in the mapping must be unique to this object.
	ComponentUpdates map[string]*ComponentUpdateRequest `locationName:"componentUpdates" type:"map"`

	// This is an object that maps strings to compositeComponent updates in the
	// request. Each key of the map represents the componentPath of the compositeComponent.
	CompositeComponentUpdates map[string]*CompositeComponentUpdateRequest `locationName:"compositeComponentUpdates" type:"map"`

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

	// The ID of the entity.
	//
	// EntityId is a required field
	EntityId *string `location:"uri" locationName:"entityId" min:"1" type:"string" required:"true"`

	// The name of the entity.
	EntityName *string `locationName:"entityName" min:"1" type:"string"`

	// An object that describes the update request for a parent entity.
	ParentEntityUpdate *ParentEntityUpdateRequest `locationName:"parentEntityUpdate" type:"structure"`

	// The ID of the workspace that contains the entity.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 UpdateEntityInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEntityInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEntityInput"}
	if s.EntityId == nil {
		invalidParams.Add(request.NewErrParamRequired("EntityId"))
	}
	if s.EntityId != nil && len(*s.EntityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityId", 1))
	}
	if s.EntityName != nil && len(*s.EntityName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntityName", 1))
	}
	if s.WorkspaceId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkspaceId"))
	}
	if s.WorkspaceId != nil && len(*s.WorkspaceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkspaceId", 1))
	}
	if s.ComponentUpdates != nil {
		for i, v := range s.ComponentUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.CompositeComponentUpdates != nil {
		for i, v := range s.CompositeComponentUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CompositeComponentUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ParentEntityUpdate != nil {
		if err := s.ParentEntityUpdate.Validate(); err != nil {
			invalidParams.AddNested("ParentEntityUpdate", err.(request.ErrInvalidParams))
		}
	}

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

// SetComponentUpdates sets the ComponentUpdates field's value.
func (s *UpdateEntityInput) SetComponentUpdates(v map[string]*ComponentUpdateRequest) *UpdateEntityInput {
	s.ComponentUpdates = v
	return s
}

// SetCompositeComponentUpdates sets the CompositeComponentUpdates field's value.
func (s *UpdateEntityInput) SetCompositeComponentUpdates(v map[string]*CompositeComponentUpdateRequest) *UpdateEntityInput {
	s.CompositeComponentUpdates = v
	return s
}

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

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

// SetEntityName sets the EntityName field's value.
func (s *UpdateEntityInput) SetEntityName(v string) *UpdateEntityInput {
	s.EntityName = &v
	return s
}

// SetParentEntityUpdate sets the ParentEntityUpdate field's value.
func (s *UpdateEntityInput) SetParentEntityUpdate(v *ParentEntityUpdateRequest) *UpdateEntityInput {
	s.ParentEntityUpdate = v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *UpdateEntityInput) SetWorkspaceId(v string) *UpdateEntityInput {
	s.WorkspaceId = &v
	return s
}

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

	// The current state of the entity update.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"State"`

	// The date and time when the entity was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *UpdateEntityOutput) SetUpdateDateTime(v time.Time) *UpdateEntityOutput {
	s.UpdateDateTime = &v
	return s
}

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

	// The bundle names.
	BundleNames []*string `locationName:"bundleNames" min:"1" type:"list"`

	// The pricing mode.
	//
	// PricingMode is a required field
	PricingMode *string `locationName:"pricingMode" type:"string" required:"true" enum:"PricingMode"`
}

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

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

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

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

// SetBundleNames sets the BundleNames field's value.
func (s *UpdatePricingPlanInput) SetBundleNames(v []*string) *UpdatePricingPlanInput {
	s.BundleNames = v
	return s
}

// SetPricingMode sets the PricingMode field's value.
func (s *UpdatePricingPlanInput) SetPricingMode(v string) *UpdatePricingPlanInput {
	s.PricingMode = &v
	return s
}

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

	// Update the current pricing plan.
	//
	// CurrentPricingPlan is a required field
	CurrentPricingPlan *PricingPlan `locationName:"currentPricingPlan" type:"structure" required:"true"`

	// Update the pending pricing plan.
	PendingPricingPlan *PricingPlan `locationName:"pendingPricingPlan" type:"structure"`
}

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

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

// SetCurrentPricingPlan sets the CurrentPricingPlan field's value.
func (s *UpdatePricingPlanOutput) SetCurrentPricingPlan(v *PricingPlan) *UpdatePricingPlanOutput {
	s.CurrentPricingPlan = v
	return s
}

// SetPendingPricingPlan sets the PendingPricingPlan field's value.
func (s *UpdatePricingPlanOutput) SetPendingPricingPlan(v *PricingPlan) *UpdatePricingPlanOutput {
	s.PendingPricingPlan = v
	return s
}

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

	// A list of capabilities that the scene uses to render.
	Capabilities []*string `locationName:"capabilities" type:"list"`

	// The relative path that specifies the location of the content definition file.
	ContentLocation *string `locationName:"contentLocation" type:"string"`

	// The description of this scene.
	Description *string `locationName:"description" type:"string"`

	// The ID of the scene.
	//
	// SceneId is a required field
	SceneId *string `location:"uri" locationName:"sceneId" min:"1" type:"string" required:"true"`

	// The scene metadata.
	SceneMetadata map[string]*string `locationName:"sceneMetadata" type:"map"`

	// The ID of the workspace that contains the scene.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 UpdateSceneInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCapabilities sets the Capabilities field's value.
func (s *UpdateSceneInput) SetCapabilities(v []*string) *UpdateSceneInput {
	s.Capabilities = v
	return s
}

// SetContentLocation sets the ContentLocation field's value.
func (s *UpdateSceneInput) SetContentLocation(v string) *UpdateSceneInput {
	s.ContentLocation = &v
	return s
}

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

// SetSceneId sets the SceneId field's value.
func (s *UpdateSceneInput) SetSceneId(v string) *UpdateSceneInput {
	s.SceneId = &v
	return s
}

// SetSceneMetadata sets the SceneMetadata field's value.
func (s *UpdateSceneInput) SetSceneMetadata(v map[string]*string) *UpdateSceneInput {
	s.SceneMetadata = v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *UpdateSceneInput) SetWorkspaceId(v string) *UpdateSceneInput {
	s.WorkspaceId = &v
	return s
}

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

	// The date and time when the scene was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *UpdateSceneOutput) SetUpdateDateTime(v time.Time) *UpdateSceneOutput {
	s.UpdateDateTime = &v
	return s
}

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

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

	// The ARN of the execution role associated with the workspace.
	Role *string `locationName:"role" min:"20" type:"string"`

	// The ARN of the S3 bucket where resources associated with the workspace are
	// stored.
	S3Location *string `locationName:"s3Location" type:"string"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `location:"uri" locationName:"workspaceId" 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 UpdateWorkspaceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetRole sets the Role field's value.
func (s *UpdateWorkspaceInput) SetRole(v string) *UpdateWorkspaceInput {
	s.Role = &v
	return s
}

// SetS3Location sets the S3Location field's value.
func (s *UpdateWorkspaceInput) SetS3Location(v string) *UpdateWorkspaceInput {
	s.S3Location = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *UpdateWorkspaceInput) SetWorkspaceId(v string) *UpdateWorkspaceInput {
	s.WorkspaceId = &v
	return s
}

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

	// The date and time of the current update.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`
}

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

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *UpdateWorkspaceOutput) SetUpdateDateTime(v time.Time) *UpdateWorkspaceOutput {
	s.UpdateDateTime = &v
	return s
}

// Failed
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
}

// An object that contains information about a workspace.
type WorkspaceSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the workspace.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"20" type:"string" required:"true"`

	// The date and time when the workspace was created.
	//
	// CreationDateTime is a required field
	CreationDateTime *time.Time `locationName:"creationDateTime" type:"timestamp" required:"true"`

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

	// A list of services that are linked to the workspace.
	LinkedServices []*string `locationName:"linkedServices" type:"list"`

	// The date and time when the workspace was last updated.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `locationName:"updateDateTime" type:"timestamp" required:"true"`

	// The ID of the workspace.
	//
	// WorkspaceId is a required field
	WorkspaceId *string `locationName:"workspaceId" 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 WorkspaceSummary) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *WorkspaceSummary) SetCreationDateTime(v time.Time) *WorkspaceSummary {
	s.CreationDateTime = &v
	return s
}

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

// SetLinkedServices sets the LinkedServices field's value.
func (s *WorkspaceSummary) SetLinkedServices(v []*string) *WorkspaceSummary {
	s.LinkedServices = v
	return s
}

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *WorkspaceSummary) SetUpdateDateTime(v time.Time) *WorkspaceSummary {
	s.UpdateDateTime = &v
	return s
}

// SetWorkspaceId sets the WorkspaceId field's value.
func (s *WorkspaceSummary) SetWorkspaceId(v string) *WorkspaceSummary {
	s.WorkspaceId = &v
	return s
}

const (
	// ColumnTypeNode is a ColumnType enum value
	ColumnTypeNode = "NODE"

	// ColumnTypeEdge is a ColumnType enum value
	ColumnTypeEdge = "EDGE"

	// ColumnTypeValue is a ColumnType enum value
	ColumnTypeValue = "VALUE"
)

// ColumnType_Values returns all elements of the ColumnType enum
func ColumnType_Values() []string {
	return []string{
		ColumnTypeNode,
		ColumnTypeEdge,
		ColumnTypeValue,
	}
}

const (
	// ComponentUpdateTypeCreate is a ComponentUpdateType enum value
	ComponentUpdateTypeCreate = "CREATE"

	// ComponentUpdateTypeUpdate is a ComponentUpdateType enum value
	ComponentUpdateTypeUpdate = "UPDATE"

	// ComponentUpdateTypeDelete is a ComponentUpdateType enum value
	ComponentUpdateTypeDelete = "DELETE"
)

// ComponentUpdateType_Values returns all elements of the ComponentUpdateType enum
func ComponentUpdateType_Values() []string {
	return []string{
		ComponentUpdateTypeCreate,
		ComponentUpdateTypeUpdate,
		ComponentUpdateTypeDelete,
	}
}

const (
	// DestinationTypeS3 is a DestinationType enum value
	DestinationTypeS3 = "s3"

	// DestinationTypeIotsitewise is a DestinationType enum value
	DestinationTypeIotsitewise = "iotsitewise"

	// DestinationTypeIottwinmaker is a DestinationType enum value
	DestinationTypeIottwinmaker = "iottwinmaker"
)

// DestinationType_Values returns all elements of the DestinationType enum
func DestinationType_Values() []string {
	return []string{
		DestinationTypeS3,
		DestinationTypeIotsitewise,
		DestinationTypeIottwinmaker,
	}
}

const (
	// ErrorCodeValidationError is a ErrorCode enum value
	ErrorCodeValidationError = "VALIDATION_ERROR"

	// ErrorCodeInternalFailure is a ErrorCode enum value
	ErrorCodeInternalFailure = "INTERNAL_FAILURE"

	// ErrorCodeSyncInitializingError is a ErrorCode enum value
	ErrorCodeSyncInitializingError = "SYNC_INITIALIZING_ERROR"

	// ErrorCodeSyncCreatingError is a ErrorCode enum value
	ErrorCodeSyncCreatingError = "SYNC_CREATING_ERROR"

	// ErrorCodeSyncProcessingError is a ErrorCode enum value
	ErrorCodeSyncProcessingError = "SYNC_PROCESSING_ERROR"

	// ErrorCodeSyncDeletingError is a ErrorCode enum value
	ErrorCodeSyncDeletingError = "SYNC_DELETING_ERROR"

	// ErrorCodeProcessingError is a ErrorCode enum value
	ErrorCodeProcessingError = "PROCESSING_ERROR"

	// ErrorCodeCompositeComponentFailure is a ErrorCode enum value
	ErrorCodeCompositeComponentFailure = "COMPOSITE_COMPONENT_FAILURE"
)

// ErrorCode_Values returns all elements of the ErrorCode enum
func ErrorCode_Values() []string {
	return []string{
		ErrorCodeValidationError,
		ErrorCodeInternalFailure,
		ErrorCodeSyncInitializingError,
		ErrorCodeSyncCreatingError,
		ErrorCodeSyncProcessingError,
		ErrorCodeSyncDeletingError,
		ErrorCodeProcessingError,
		ErrorCodeCompositeComponentFailure,
	}
}

const (
	// GroupTypeTabular is a GroupType enum value
	GroupTypeTabular = "TABULAR"
)

// GroupType_Values returns all elements of the GroupType enum
func GroupType_Values() []string {
	return []string{
		GroupTypeTabular,
	}
}

const (
	// InterpolationTypeLinear is a InterpolationType enum value
	InterpolationTypeLinear = "LINEAR"
)

// InterpolationType_Values returns all elements of the InterpolationType enum
func InterpolationType_Values() []string {
	return []string{
		InterpolationTypeLinear,
	}
}

const (
	// MetadataTransferJobStateValidating is a MetadataTransferJobState enum value
	MetadataTransferJobStateValidating = "VALIDATING"

	// MetadataTransferJobStatePending is a MetadataTransferJobState enum value
	MetadataTransferJobStatePending = "PENDING"

	// MetadataTransferJobStateRunning is a MetadataTransferJobState enum value
	MetadataTransferJobStateRunning = "RUNNING"

	// MetadataTransferJobStateCancelling is a MetadataTransferJobState enum value
	MetadataTransferJobStateCancelling = "CANCELLING"

	// MetadataTransferJobStateError is a MetadataTransferJobState enum value
	MetadataTransferJobStateError = "ERROR"

	// MetadataTransferJobStateCompleted is a MetadataTransferJobState enum value
	MetadataTransferJobStateCompleted = "COMPLETED"

	// MetadataTransferJobStateCancelled is a MetadataTransferJobState enum value
	MetadataTransferJobStateCancelled = "CANCELLED"
)

// MetadataTransferJobState_Values returns all elements of the MetadataTransferJobState enum
func MetadataTransferJobState_Values() []string {
	return []string{
		MetadataTransferJobStateValidating,
		MetadataTransferJobStatePending,
		MetadataTransferJobStateRunning,
		MetadataTransferJobStateCancelling,
		MetadataTransferJobStateError,
		MetadataTransferJobStateCompleted,
		MetadataTransferJobStateCancelled,
	}
}

const (
	// OrderAscending is a Order enum value
	OrderAscending = "ASCENDING"

	// OrderDescending is a Order enum value
	OrderDescending = "DESCENDING"
)

// Order_Values returns all elements of the Order enum
func Order_Values() []string {
	return []string{
		OrderAscending,
		OrderDescending,
	}
}

const (
	// OrderByTimeAscending is a OrderByTime enum value
	OrderByTimeAscending = "ASCENDING"

	// OrderByTimeDescending is a OrderByTime enum value
	OrderByTimeDescending = "DESCENDING"
)

// OrderByTime_Values returns all elements of the OrderByTime enum
func OrderByTime_Values() []string {
	return []string{
		OrderByTimeAscending,
		OrderByTimeDescending,
	}
}

const (
	// ParentEntityUpdateTypeUpdate is a ParentEntityUpdateType enum value
	ParentEntityUpdateTypeUpdate = "UPDATE"

	// ParentEntityUpdateTypeDelete is a ParentEntityUpdateType enum value
	ParentEntityUpdateTypeDelete = "DELETE"
)

// ParentEntityUpdateType_Values returns all elements of the ParentEntityUpdateType enum
func ParentEntityUpdateType_Values() []string {
	return []string{
		ParentEntityUpdateTypeUpdate,
		ParentEntityUpdateTypeDelete,
	}
}

const (
	// PricingModeBasic is a PricingMode enum value
	PricingModeBasic = "BASIC"

	// PricingModeStandard is a PricingMode enum value
	PricingModeStandard = "STANDARD"

	// PricingModeTieredBundle is a PricingMode enum value
	PricingModeTieredBundle = "TIERED_BUNDLE"
)

// PricingMode_Values returns all elements of the PricingMode enum
func PricingMode_Values() []string {
	return []string{
		PricingModeBasic,
		PricingModeStandard,
		PricingModeTieredBundle,
	}
}

const (
	// PricingTierTier1 is a PricingTier enum value
	PricingTierTier1 = "TIER_1"

	// PricingTierTier2 is a PricingTier enum value
	PricingTierTier2 = "TIER_2"

	// PricingTierTier3 is a PricingTier enum value
	PricingTierTier3 = "TIER_3"

	// PricingTierTier4 is a PricingTier enum value
	PricingTierTier4 = "TIER_4"
)

// PricingTier_Values returns all elements of the PricingTier enum
func PricingTier_Values() []string {
	return []string{
		PricingTierTier1,
		PricingTierTier2,
		PricingTierTier3,
		PricingTierTier4,
	}
}

const (
	// PropertyGroupUpdateTypeUpdate is a PropertyGroupUpdateType enum value
	PropertyGroupUpdateTypeUpdate = "UPDATE"

	// PropertyGroupUpdateTypeDelete is a PropertyGroupUpdateType enum value
	PropertyGroupUpdateTypeDelete = "DELETE"

	// PropertyGroupUpdateTypeCreate is a PropertyGroupUpdateType enum value
	PropertyGroupUpdateTypeCreate = "CREATE"
)

// PropertyGroupUpdateType_Values returns all elements of the PropertyGroupUpdateType enum
func PropertyGroupUpdateType_Values() []string {
	return []string{
		PropertyGroupUpdateTypeUpdate,
		PropertyGroupUpdateTypeDelete,
		PropertyGroupUpdateTypeCreate,
	}
}

const (
	// PropertyUpdateTypeUpdate is a PropertyUpdateType enum value
	PropertyUpdateTypeUpdate = "UPDATE"

	// PropertyUpdateTypeDelete is a PropertyUpdateType enum value
	PropertyUpdateTypeDelete = "DELETE"

	// PropertyUpdateTypeCreate is a PropertyUpdateType enum value
	PropertyUpdateTypeCreate = "CREATE"
)

// PropertyUpdateType_Values returns all elements of the PropertyUpdateType enum
func PropertyUpdateType_Values() []string {
	return []string{
		PropertyUpdateTypeUpdate,
		PropertyUpdateTypeDelete,
		PropertyUpdateTypeCreate,
	}
}

const (
	// SceneErrorCodeMatterportError is a SceneErrorCode enum value
	SceneErrorCodeMatterportError = "MATTERPORT_ERROR"
)

// SceneErrorCode_Values returns all elements of the SceneErrorCode enum
func SceneErrorCode_Values() []string {
	return []string{
		SceneErrorCodeMatterportError,
	}
}

const (
	// ScopeEntity is a Scope enum value
	ScopeEntity = "ENTITY"

	// ScopeWorkspace is a Scope enum value
	ScopeWorkspace = "WORKSPACE"
)

// Scope_Values returns all elements of the Scope enum
func Scope_Values() []string {
	return []string{
		ScopeEntity,
		ScopeWorkspace,
	}
}

const (
	// SourceTypeS3 is a SourceType enum value
	SourceTypeS3 = "s3"

	// SourceTypeIotsitewise is a SourceType enum value
	SourceTypeIotsitewise = "iotsitewise"

	// SourceTypeIottwinmaker is a SourceType enum value
	SourceTypeIottwinmaker = "iottwinmaker"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeS3,
		SourceTypeIotsitewise,
		SourceTypeIottwinmaker,
	}
}

const (
	// StateCreating is a State enum value
	StateCreating = "CREATING"

	// StateUpdating is a State enum value
	StateUpdating = "UPDATING"

	// StateDeleting is a State enum value
	StateDeleting = "DELETING"

	// StateActive is a State enum value
	StateActive = "ACTIVE"

	// StateError is a State enum value
	StateError = "ERROR"
)

// State_Values returns all elements of the State enum
func State_Values() []string {
	return []string{
		StateCreating,
		StateUpdating,
		StateDeleting,
		StateActive,
		StateError,
	}
}

const (
	// SyncJobStateCreating is a SyncJobState enum value
	SyncJobStateCreating = "CREATING"

	// SyncJobStateInitializing is a SyncJobState enum value
	SyncJobStateInitializing = "INITIALIZING"

	// SyncJobStateActive is a SyncJobState enum value
	SyncJobStateActive = "ACTIVE"

	// SyncJobStateDeleting is a SyncJobState enum value
	SyncJobStateDeleting = "DELETING"

	// SyncJobStateError is a SyncJobState enum value
	SyncJobStateError = "ERROR"
)

// SyncJobState_Values returns all elements of the SyncJobState enum
func SyncJobState_Values() []string {
	return []string{
		SyncJobStateCreating,
		SyncJobStateInitializing,
		SyncJobStateActive,
		SyncJobStateDeleting,
		SyncJobStateError,
	}
}

const (
	// SyncResourceStateInitializing is a SyncResourceState enum value
	SyncResourceStateInitializing = "INITIALIZING"

	// SyncResourceStateProcessing is a SyncResourceState enum value
	SyncResourceStateProcessing = "PROCESSING"

	// SyncResourceStateDeleted is a SyncResourceState enum value
	SyncResourceStateDeleted = "DELETED"

	// SyncResourceStateInSync is a SyncResourceState enum value
	SyncResourceStateInSync = "IN_SYNC"

	// SyncResourceStateError is a SyncResourceState enum value
	SyncResourceStateError = "ERROR"
)

// SyncResourceState_Values returns all elements of the SyncResourceState enum
func SyncResourceState_Values() []string {
	return []string{
		SyncResourceStateInitializing,
		SyncResourceStateProcessing,
		SyncResourceStateDeleted,
		SyncResourceStateInSync,
		SyncResourceStateError,
	}
}

const (
	// SyncResourceTypeEntity is a SyncResourceType enum value
	SyncResourceTypeEntity = "ENTITY"

	// SyncResourceTypeComponentType is a SyncResourceType enum value
	SyncResourceTypeComponentType = "COMPONENT_TYPE"
)

// SyncResourceType_Values returns all elements of the SyncResourceType enum
func SyncResourceType_Values() []string {
	return []string{
		SyncResourceTypeEntity,
		SyncResourceTypeComponentType,
	}
}

const (
	// TypeRelationship is a Type enum value
	TypeRelationship = "RELATIONSHIP"

	// TypeString is a Type enum value
	TypeString = "STRING"

	// TypeLong is a Type enum value
	TypeLong = "LONG"

	// TypeBoolean is a Type enum value
	TypeBoolean = "BOOLEAN"

	// TypeInteger is a Type enum value
	TypeInteger = "INTEGER"

	// TypeDouble is a Type enum value
	TypeDouble = "DOUBLE"

	// TypeList is a Type enum value
	TypeList = "LIST"

	// TypeMap is a Type enum value
	TypeMap = "MAP"
)

// Type_Values returns all elements of the Type enum
func Type_Values() []string {
	return []string{
		TypeRelationship,
		TypeString,
		TypeLong,
		TypeBoolean,
		TypeInteger,
		TypeDouble,
		TypeList,
		TypeMap,
	}
}

const (
	// UpdateReasonDefault is a UpdateReason enum value
	UpdateReasonDefault = "DEFAULT"

	// UpdateReasonPricingTierUpdate is a UpdateReason enum value
	UpdateReasonPricingTierUpdate = "PRICING_TIER_UPDATE"

	// UpdateReasonEntityCountUpdate is a UpdateReason enum value
	UpdateReasonEntityCountUpdate = "ENTITY_COUNT_UPDATE"

	// UpdateReasonPricingModeUpdate is a UpdateReason enum value
	UpdateReasonPricingModeUpdate = "PRICING_MODE_UPDATE"

	// UpdateReasonOverwritten is a UpdateReason enum value
	UpdateReasonOverwritten = "OVERWRITTEN"
)

// UpdateReason_Values returns all elements of the UpdateReason enum
func UpdateReason_Values() []string {
	return []string{
		UpdateReasonDefault,
		UpdateReasonPricingTierUpdate,
		UpdateReasonEntityCountUpdate,
		UpdateReasonPricingModeUpdate,
		UpdateReasonOverwritten,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

Welcome to Beegazpacho,
where creativity meets strategy,
and innovation drives success.


Contact
Now


OUR CLIENTS

WhatsApp-Image-2021-12-06.png
Untitled-design-11.png
niaf-logo.png
20220406-163308-scaled.jpg
karchi-logo.png
20220405-171252.png
20220405-171309.png
20220321-161603.png
20220321-161611.png
20220321-161628.png
20220321-161244.png
20220321-161256.png
20220321-161450.png
20220321-161205.png
20220226-170222.png
20220321-161051.png
20211202-170852.png
Untitled-design-9
pidilite-png-logo-colour
logo-black-e1706125740216-qisosldqhzgcaerhdt6n4t3m4s50jr0iik48z0h5vk
Fraikin-Dayim-logo-1
hpcl-logo-2-1
services

Transforming Ideas into
Success

.01
Digital Marketing

We drive growth through data-driven strategies and cutting-edge techniques.

Learn More

.02
SEO

Improve your online visibility and rank higher on search engines with our expert SEO services.

Learn More

.03
Website Designing

We design websites that are not only visually stunning but also user-centric, ensuring seamless navigation and enhanced user experience.

Learn More

.04
App Development

Our apps are crafted to be intuitive, engaging, and functional, providing your users with an exceptional mobile experience.

Learn More

.05
Social Media Ads

Target the right audience with precision and creativity to maximize engagement and conversions.

Learn More

.06
Google Ads

Maximize ROI with precision-targeted campaigns on Google’s powerful ad platform.

Learn More

.07
Google My Business

Optimize your local presence with strategies that put your business on the map and attract more customers.

Learn More

.08
Graphic Designing

Our designs tell your brand’s story in a visually compelling way.

Learn More

.09
3D Videos

Bring your product to life with immersive and dynamic 3D explainer videos.

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

Our vision is not just to be a service provider but to be your partner in growth. We see ourselves as an extension of your team, working tirelessly to ensure that your brand not only meets its goals but surpasses them.

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

DIGITAL MARKETING
SEO
WEBSITE DESIGNING
APP DEVELOPMENT
SOCIAL MEDIA ADS
GOOGLE ADS
GOOGLE MY BUSINESS
GRAPHIC DESINING
3D VIDEOS
Client Stories

Hear It from Those Who Know Us Best

Our clients’ success stories speak volumes about our commitment to excellence. Don’t just take our word for it—hear directly from the brands we’ve partnered with. Their testimonials highlight our ability to bring visions to life and create a lasting impact on their businesses.

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors