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: 93.127.173.108
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 appstream

import (
	"fmt"
	"time"

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

const opAssociateAppBlockBuilderAppBlock = "AssociateAppBlockBuilderAppBlock"

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

	if input == nil {
		input = &AssociateAppBlockBuilderAppBlockInput{}
	}

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

// AssociateAppBlockBuilderAppBlock API operation for Amazon AppStream.
//
// Associates the specified app block builder with the specified app block.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation AssociateAppBlockBuilderAppBlock for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/AssociateAppBlockBuilderAppBlock
func (c *AppStream) AssociateAppBlockBuilderAppBlock(input *AssociateAppBlockBuilderAppBlockInput) (*AssociateAppBlockBuilderAppBlockOutput, error) {
	req, out := c.AssociateAppBlockBuilderAppBlockRequest(input)
	return out, req.Send()
}

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

const opAssociateApplicationFleet = "AssociateApplicationFleet"

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

	if input == nil {
		input = &AssociateApplicationFleetInput{}
	}

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

// AssociateApplicationFleet API operation for Amazon AppStream.
//
// Associates the specified application with the specified fleet. This is only
// supported for Elastic fleets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation AssociateApplicationFleet for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/AssociateApplicationFleet
func (c *AppStream) AssociateApplicationFleet(input *AssociateApplicationFleetInput) (*AssociateApplicationFleetOutput, error) {
	req, out := c.AssociateApplicationFleetRequest(input)
	return out, req.Send()
}

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

const opAssociateApplicationToEntitlement = "AssociateApplicationToEntitlement"

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

	if input == nil {
		input = &AssociateApplicationToEntitlementInput{}
	}

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

// AssociateApplicationToEntitlement API operation for Amazon AppStream.
//
// Associates an application to entitle.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation AssociateApplicationToEntitlement for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/AssociateApplicationToEntitlement
func (c *AppStream) AssociateApplicationToEntitlement(input *AssociateApplicationToEntitlementInput) (*AssociateApplicationToEntitlementOutput, error) {
	req, out := c.AssociateApplicationToEntitlementRequest(input)
	return out, req.Send()
}

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

const opAssociateFleet = "AssociateFleet"

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

	if input == nil {
		input = &AssociateFleetInput{}
	}

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

// AssociateFleet API operation for Amazon AppStream.
//
// Associates the specified fleet with the specified stack.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation AssociateFleet for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/AssociateFleet
func (c *AppStream) AssociateFleet(input *AssociateFleetInput) (*AssociateFleetOutput, error) {
	req, out := c.AssociateFleetRequest(input)
	return out, req.Send()
}

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

const opBatchAssociateUserStack = "BatchAssociateUserStack"

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

	if input == nil {
		input = &BatchAssociateUserStackInput{}
	}

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

// BatchAssociateUserStack API operation for Amazon AppStream.
//
// Associates the specified users with the specified stacks. Users in a user
// pool cannot be assigned to stacks with fleets that are joined to an Active
// Directory domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation BatchAssociateUserStack for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/BatchAssociateUserStack
func (c *AppStream) BatchAssociateUserStack(input *BatchAssociateUserStackInput) (*BatchAssociateUserStackOutput, error) {
	req, out := c.BatchAssociateUserStackRequest(input)
	return out, req.Send()
}

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

const opBatchDisassociateUserStack = "BatchDisassociateUserStack"

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

	if input == nil {
		input = &BatchDisassociateUserStackInput{}
	}

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

// BatchDisassociateUserStack API operation for Amazon AppStream.
//
// Disassociates the specified users from the specified stacks.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation BatchDisassociateUserStack for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/BatchDisassociateUserStack
func (c *AppStream) BatchDisassociateUserStack(input *BatchDisassociateUserStackInput) (*BatchDisassociateUserStackOutput, error) {
	req, out := c.BatchDisassociateUserStackRequest(input)
	return out, req.Send()
}

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

const opCopyImage = "CopyImage"

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

	if input == nil {
		input = &CopyImageInput{}
	}

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

// CopyImage API operation for Amazon AppStream.
//
// Copies the image within the same region or to a new region within the same
// AWS account. Note that any tags you added to the image will not be copied.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CopyImage for usage and error information.
//
// Returned Error Types:
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CopyImage
func (c *AppStream) CopyImage(input *CopyImageInput) (*CopyImageOutput, error) {
	req, out := c.CopyImageRequest(input)
	return out, req.Send()
}

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

const opCreateAppBlock = "CreateAppBlock"

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

	if input == nil {
		input = &CreateAppBlockInput{}
	}

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

// CreateAppBlock API operation for Amazon AppStream.
//
// Creates an app block.
//
// App blocks are an Amazon AppStream 2.0 resource that stores the details about
// the virtual hard disk in an S3 bucket. It also stores the setup script with
// details about how to mount the virtual hard disk. The virtual hard disk includes
// the application binaries and other files necessary to launch your applications.
// Multiple applications can be assigned to a single app block.
//
// This is only supported for Elastic fleets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateAppBlock for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateAppBlock
func (c *AppStream) CreateAppBlock(input *CreateAppBlockInput) (*CreateAppBlockOutput, error) {
	req, out := c.CreateAppBlockRequest(input)
	return out, req.Send()
}

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

const opCreateAppBlockBuilder = "CreateAppBlockBuilder"

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

	if input == nil {
		input = &CreateAppBlockBuilderInput{}
	}

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

// CreateAppBlockBuilder API operation for Amazon AppStream.
//
// Creates an app block builder.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateAppBlockBuilder for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateAppBlockBuilder
func (c *AppStream) CreateAppBlockBuilder(input *CreateAppBlockBuilderInput) (*CreateAppBlockBuilderOutput, error) {
	req, out := c.CreateAppBlockBuilderRequest(input)
	return out, req.Send()
}

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

const opCreateAppBlockBuilderStreamingURL = "CreateAppBlockBuilderStreamingURL"

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

	if input == nil {
		input = &CreateAppBlockBuilderStreamingURLInput{}
	}

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

// CreateAppBlockBuilderStreamingURL API operation for Amazon AppStream.
//
// Creates a URL to start a create app block builder streaming session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateAppBlockBuilderStreamingURL for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateAppBlockBuilderStreamingURL
func (c *AppStream) CreateAppBlockBuilderStreamingURL(input *CreateAppBlockBuilderStreamingURLInput) (*CreateAppBlockBuilderStreamingURLOutput, error) {
	req, out := c.CreateAppBlockBuilderStreamingURLRequest(input)
	return out, req.Send()
}

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

const opCreateApplication = "CreateApplication"

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

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

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

// CreateApplication API operation for Amazon AppStream.
//
// Creates an application.
//
// Applications are an Amazon AppStream 2.0 resource that stores the details
// about how to launch applications on Elastic fleet streaming instances. An
// application consists of the launch details, icon, and display name. Applications
// are associated with an app block that contains the application binaries and
// other files. The applications assigned to an Elastic fleet are the applications
// users can launch.
//
// This is only supported for Elastic fleets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateApplication for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateApplication
func (c *AppStream) CreateApplication(input *CreateApplicationInput) (*CreateApplicationOutput, error) {
	req, out := c.CreateApplicationRequest(input)
	return out, req.Send()
}

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

const opCreateDirectoryConfig = "CreateDirectoryConfig"

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

	if input == nil {
		input = &CreateDirectoryConfigInput{}
	}

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

// CreateDirectoryConfig API operation for Amazon AppStream.
//
// Creates a Directory Config object in AppStream 2.0. This object includes
// the configuration information required to join fleets and image builders
// to Microsoft Active Directory domains.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateDirectoryConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateDirectoryConfig
func (c *AppStream) CreateDirectoryConfig(input *CreateDirectoryConfigInput) (*CreateDirectoryConfigOutput, error) {
	req, out := c.CreateDirectoryConfigRequest(input)
	return out, req.Send()
}

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

const opCreateEntitlement = "CreateEntitlement"

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

	if input == nil {
		input = &CreateEntitlementInput{}
	}

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

// CreateEntitlement API operation for Amazon AppStream.
//
// Creates a new entitlement. Entitlements control access to specific applications
// within a stack, based on user attributes. Entitlements apply to SAML 2.0
// federated user identities. Amazon AppStream 2.0 user pool and streaming URL
// users are entitled to all applications in a stack. Entitlements don't apply
// to the desktop stream view application, or to applications managed by a dynamic
// app provider using the Dynamic Application Framework.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateEntitlement for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - EntitlementAlreadyExistsException
//     The entitlement already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateEntitlement
func (c *AppStream) CreateEntitlement(input *CreateEntitlementInput) (*CreateEntitlementOutput, error) {
	req, out := c.CreateEntitlementRequest(input)
	return out, req.Send()
}

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

const opCreateFleet = "CreateFleet"

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

	if input == nil {
		input = &CreateFleetInput{}
	}

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

// CreateFleet API operation for Amazon AppStream.
//
// Creates a fleet. A fleet consists of streaming instances that your users
// access for their applications and desktops.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateFleet
func (c *AppStream) CreateFleet(input *CreateFleetInput) (*CreateFleetOutput, error) {
	req, out := c.CreateFleetRequest(input)
	return out, req.Send()
}

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

const opCreateImageBuilder = "CreateImageBuilder"

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

	if input == nil {
		input = &CreateImageBuilderInput{}
	}

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

// CreateImageBuilder API operation for Amazon AppStream.
//
// Creates an image builder. An image builder is a virtual machine that is used
// to create an image.
//
// The initial state of the builder is PENDING. When it is ready, the state
// is RUNNING.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateImageBuilder for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateImageBuilder
func (c *AppStream) CreateImageBuilder(input *CreateImageBuilderInput) (*CreateImageBuilderOutput, error) {
	req, out := c.CreateImageBuilderRequest(input)
	return out, req.Send()
}

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

const opCreateImageBuilderStreamingURL = "CreateImageBuilderStreamingURL"

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

	if input == nil {
		input = &CreateImageBuilderStreamingURLInput{}
	}

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

// CreateImageBuilderStreamingURL API operation for Amazon AppStream.
//
// Creates a URL to start an image builder streaming session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateImageBuilderStreamingURL for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateImageBuilderStreamingURL
func (c *AppStream) CreateImageBuilderStreamingURL(input *CreateImageBuilderStreamingURLInput) (*CreateImageBuilderStreamingURLOutput, error) {
	req, out := c.CreateImageBuilderStreamingURLRequest(input)
	return out, req.Send()
}

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

const opCreateStack = "CreateStack"

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

	if input == nil {
		input = &CreateStackInput{}
	}

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

// CreateStack API operation for Amazon AppStream.
//
// Creates a stack to start streaming applications to users. A stack consists
// of an associated fleet, user access policies, and storage configurations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateStack for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateStack
func (c *AppStream) CreateStack(input *CreateStackInput) (*CreateStackOutput, error) {
	req, out := c.CreateStackRequest(input)
	return out, req.Send()
}

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

const opCreateStreamingURL = "CreateStreamingURL"

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

	if input == nil {
		input = &CreateStreamingURLInput{}
	}

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

// CreateStreamingURL API operation for Amazon AppStream.
//
// Creates a temporary URL to start an AppStream 2.0 streaming session for the
// specified user. A streaming URL enables application streaming to be tested
// without user setup.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateStreamingURL for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateStreamingURL
func (c *AppStream) CreateStreamingURL(input *CreateStreamingURLInput) (*CreateStreamingURLOutput, error) {
	req, out := c.CreateStreamingURLRequest(input)
	return out, req.Send()
}

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

const opCreateUpdatedImage = "CreateUpdatedImage"

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

	if input == nil {
		input = &CreateUpdatedImageInput{}
	}

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

// CreateUpdatedImage API operation for Amazon AppStream.
//
// Creates a new image with the latest Windows operating system updates, driver
// updates, and AppStream 2.0 agent software.
//
// For more information, see the "Update an Image by Using Managed AppStream
// 2.0 Image Updates" section in Administer Your AppStream 2.0 Images (https://docs.aws.amazon.com/appstream2/latest/developerguide/administer-images.html),
// in the Amazon AppStream 2.0 Administration Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateUpdatedImage for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateUpdatedImage
func (c *AppStream) CreateUpdatedImage(input *CreateUpdatedImageInput) (*CreateUpdatedImageOutput, error) {
	req, out := c.CreateUpdatedImageRequest(input)
	return out, req.Send()
}

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

const opCreateUsageReportSubscription = "CreateUsageReportSubscription"

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

	if input == nil {
		input = &CreateUsageReportSubscriptionInput{}
	}

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

// CreateUsageReportSubscription API operation for Amazon AppStream.
//
// Creates a usage report subscription. Usage reports are generated daily.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateUsageReportSubscription for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateUsageReportSubscription
func (c *AppStream) CreateUsageReportSubscription(input *CreateUsageReportSubscriptionInput) (*CreateUsageReportSubscriptionOutput, error) {
	req, out := c.CreateUsageReportSubscriptionRequest(input)
	return out, req.Send()
}

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

const opCreateUser = "CreateUser"

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

	if input == nil {
		input = &CreateUserInput{}
	}

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

// CreateUser API operation for Amazon AppStream.
//
// Creates a new user in the user pool.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation CreateUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceAlreadyExistsException
//     The specified resource already exists.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/CreateUser
func (c *AppStream) CreateUser(input *CreateUserInput) (*CreateUserOutput, error) {
	req, out := c.CreateUserRequest(input)
	return out, req.Send()
}

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

const opDeleteAppBlock = "DeleteAppBlock"

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

	if input == nil {
		input = &DeleteAppBlockInput{}
	}

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

// DeleteAppBlock API operation for Amazon AppStream.
//
// Deletes an app block.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteAppBlock for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteAppBlock
func (c *AppStream) DeleteAppBlock(input *DeleteAppBlockInput) (*DeleteAppBlockOutput, error) {
	req, out := c.DeleteAppBlockRequest(input)
	return out, req.Send()
}

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

const opDeleteAppBlockBuilder = "DeleteAppBlockBuilder"

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

	if input == nil {
		input = &DeleteAppBlockBuilderInput{}
	}

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

// DeleteAppBlockBuilder API operation for Amazon AppStream.
//
// Deletes an app block builder.
//
// An app block builder can only be deleted when it has no association with
// an app block.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteAppBlockBuilder for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteAppBlockBuilder
func (c *AppStream) DeleteAppBlockBuilder(input *DeleteAppBlockBuilderInput) (*DeleteAppBlockBuilderOutput, error) {
	req, out := c.DeleteAppBlockBuilderRequest(input)
	return out, req.Send()
}

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

const opDeleteApplication = "DeleteApplication"

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

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

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

// DeleteApplication API operation for Amazon AppStream.
//
// Deletes an application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteApplication for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteApplication
func (c *AppStream) DeleteApplication(input *DeleteApplicationInput) (*DeleteApplicationOutput, error) {
	req, out := c.DeleteApplicationRequest(input)
	return out, req.Send()
}

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

const opDeleteDirectoryConfig = "DeleteDirectoryConfig"

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

	if input == nil {
		input = &DeleteDirectoryConfigInput{}
	}

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

// DeleteDirectoryConfig API operation for Amazon AppStream.
//
// Deletes the specified Directory Config object from AppStream 2.0. This object
// includes the information required to join streaming instances to an Active
// Directory domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteDirectoryConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteDirectoryConfig
func (c *AppStream) DeleteDirectoryConfig(input *DeleteDirectoryConfigInput) (*DeleteDirectoryConfigOutput, error) {
	req, out := c.DeleteDirectoryConfigRequest(input)
	return out, req.Send()
}

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

const opDeleteEntitlement = "DeleteEntitlement"

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

	if input == nil {
		input = &DeleteEntitlementInput{}
	}

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

// DeleteEntitlement API operation for Amazon AppStream.
//
// Deletes the specified entitlement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteEntitlement for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteEntitlement
func (c *AppStream) DeleteEntitlement(input *DeleteEntitlementInput) (*DeleteEntitlementOutput, error) {
	req, out := c.DeleteEntitlementRequest(input)
	return out, req.Send()
}

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

const opDeleteFleet = "DeleteFleet"

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

	if input == nil {
		input = &DeleteFleetInput{}
	}

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

// DeleteFleet API operation for Amazon AppStream.
//
// Deletes the specified fleet.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteFleet
func (c *AppStream) DeleteFleet(input *DeleteFleetInput) (*DeleteFleetOutput, error) {
	req, out := c.DeleteFleetRequest(input)
	return out, req.Send()
}

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

const opDeleteImage = "DeleteImage"

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

	if input == nil {
		input = &DeleteImageInput{}
	}

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

// DeleteImage API operation for Amazon AppStream.
//
// Deletes the specified image. You cannot delete an image when it is in use.
// After you delete an image, you cannot provision new capacity using the image.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteImage for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteImage
func (c *AppStream) DeleteImage(input *DeleteImageInput) (*DeleteImageOutput, error) {
	req, out := c.DeleteImageRequest(input)
	return out, req.Send()
}

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

const opDeleteImageBuilder = "DeleteImageBuilder"

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

	if input == nil {
		input = &DeleteImageBuilderInput{}
	}

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

// DeleteImageBuilder API operation for Amazon AppStream.
//
// Deletes the specified image builder and releases the capacity.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteImageBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteImageBuilder
func (c *AppStream) DeleteImageBuilder(input *DeleteImageBuilderInput) (*DeleteImageBuilderOutput, error) {
	req, out := c.DeleteImageBuilderRequest(input)
	return out, req.Send()
}

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

const opDeleteImagePermissions = "DeleteImagePermissions"

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

	if input == nil {
		input = &DeleteImagePermissionsInput{}
	}

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

// DeleteImagePermissions API operation for Amazon AppStream.
//
// Deletes permissions for the specified private image. After you delete permissions
// for an image, AWS accounts to which you previously granted these permissions
// can no longer use the image.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteImagePermissions for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteImagePermissions
func (c *AppStream) DeleteImagePermissions(input *DeleteImagePermissionsInput) (*DeleteImagePermissionsOutput, error) {
	req, out := c.DeleteImagePermissionsRequest(input)
	return out, req.Send()
}

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

const opDeleteStack = "DeleteStack"

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

	if input == nil {
		input = &DeleteStackInput{}
	}

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

// DeleteStack API operation for Amazon AppStream.
//
// Deletes the specified stack. After the stack is deleted, the application
// streaming environment provided by the stack is no longer available to users.
// Also, any reservations made for application streaming sessions for the stack
// are released.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteStack for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteStack
func (c *AppStream) DeleteStack(input *DeleteStackInput) (*DeleteStackOutput, error) {
	req, out := c.DeleteStackRequest(input)
	return out, req.Send()
}

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

const opDeleteUsageReportSubscription = "DeleteUsageReportSubscription"

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

	if input == nil {
		input = &DeleteUsageReportSubscriptionInput{}
	}

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

// DeleteUsageReportSubscription API operation for Amazon AppStream.
//
// Disables usage report generation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteUsageReportSubscription for usage and error information.
//
// Returned Error Types:
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteUsageReportSubscription
func (c *AppStream) DeleteUsageReportSubscription(input *DeleteUsageReportSubscriptionInput) (*DeleteUsageReportSubscriptionOutput, error) {
	req, out := c.DeleteUsageReportSubscriptionRequest(input)
	return out, req.Send()
}

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

const opDeleteUser = "DeleteUser"

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

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

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

// DeleteUser API operation for Amazon AppStream.
//
// Deletes a user from the user pool.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DeleteUser for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DeleteUser
func (c *AppStream) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
	req, out := c.DeleteUserRequest(input)
	return out, req.Send()
}

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

const opDescribeAppBlockBuilderAppBlockAssociations = "DescribeAppBlockBuilderAppBlockAssociations"

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

	if input == nil {
		input = &DescribeAppBlockBuilderAppBlockAssociationsInput{}
	}

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

// DescribeAppBlockBuilderAppBlockAssociations API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more app block builder associations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeAppBlockBuilderAppBlockAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeAppBlockBuilderAppBlockAssociations
func (c *AppStream) DescribeAppBlockBuilderAppBlockAssociations(input *DescribeAppBlockBuilderAppBlockAssociationsInput) (*DescribeAppBlockBuilderAppBlockAssociationsOutput, error) {
	req, out := c.DescribeAppBlockBuilderAppBlockAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeAppBlockBuilders = "DescribeAppBlockBuilders"

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

	if input == nil {
		input = &DescribeAppBlockBuildersInput{}
	}

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

// DescribeAppBlockBuilders API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more app block builders.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeAppBlockBuilders for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeAppBlockBuilders
func (c *AppStream) DescribeAppBlockBuilders(input *DescribeAppBlockBuildersInput) (*DescribeAppBlockBuildersOutput, error) {
	req, out := c.DescribeAppBlockBuildersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeAppBlocks = "DescribeAppBlocks"

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

	if input == nil {
		input = &DescribeAppBlocksInput{}
	}

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

// DescribeAppBlocks API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more app blocks.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeAppBlocks for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeAppBlocks
func (c *AppStream) DescribeAppBlocks(input *DescribeAppBlocksInput) (*DescribeAppBlocksOutput, error) {
	req, out := c.DescribeAppBlocksRequest(input)
	return out, req.Send()
}

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

const opDescribeApplicationFleetAssociations = "DescribeApplicationFleetAssociations"

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

	if input == nil {
		input = &DescribeApplicationFleetAssociationsInput{}
	}

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

// DescribeApplicationFleetAssociations API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more application fleet associations.
// Either ApplicationArn or FleetName must be specified.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeApplicationFleetAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeApplicationFleetAssociations
func (c *AppStream) DescribeApplicationFleetAssociations(input *DescribeApplicationFleetAssociationsInput) (*DescribeApplicationFleetAssociationsOutput, error) {
	req, out := c.DescribeApplicationFleetAssociationsRequest(input)
	return out, req.Send()
}

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

const opDescribeApplications = "DescribeApplications"

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

	if input == nil {
		input = &DescribeApplicationsInput{}
	}

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

// DescribeApplications API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more applications.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeApplications for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeApplications
func (c *AppStream) DescribeApplications(input *DescribeApplicationsInput) (*DescribeApplicationsOutput, error) {
	req, out := c.DescribeApplicationsRequest(input)
	return out, req.Send()
}

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

const opDescribeDirectoryConfigs = "DescribeDirectoryConfigs"

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

	if input == nil {
		input = &DescribeDirectoryConfigsInput{}
	}

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

// DescribeDirectoryConfigs API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified Directory Config objects
// for AppStream 2.0, if the names for these objects are provided. Otherwise,
// all Directory Config objects in the account are described. These objects
// include the configuration information required to join fleets and image builders
// to Microsoft Active Directory domains.
//
// Although the response syntax in this topic includes the account password,
// this password is not returned in the actual response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeDirectoryConfigs for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeDirectoryConfigs
func (c *AppStream) DescribeDirectoryConfigs(input *DescribeDirectoryConfigsInput) (*DescribeDirectoryConfigsOutput, error) {
	req, out := c.DescribeDirectoryConfigsRequest(input)
	return out, req.Send()
}

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

const opDescribeEntitlements = "DescribeEntitlements"

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

	if input == nil {
		input = &DescribeEntitlementsInput{}
	}

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

// DescribeEntitlements API operation for Amazon AppStream.
//
// Retrieves a list that describes one of more entitlements.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeEntitlements for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeEntitlements
func (c *AppStream) DescribeEntitlements(input *DescribeEntitlementsInput) (*DescribeEntitlementsOutput, error) {
	req, out := c.DescribeEntitlementsRequest(input)
	return out, req.Send()
}

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

const opDescribeFleets = "DescribeFleets"

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

	if input == nil {
		input = &DescribeFleetsInput{}
	}

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

// DescribeFleets API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified fleets, if the fleet
// names are provided. Otherwise, all fleets in the account are described.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeFleets for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeFleets
func (c *AppStream) DescribeFleets(input *DescribeFleetsInput) (*DescribeFleetsOutput, error) {
	req, out := c.DescribeFleetsRequest(input)
	return out, req.Send()
}

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

const opDescribeImageBuilders = "DescribeImageBuilders"

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

	if input == nil {
		input = &DescribeImageBuildersInput{}
	}

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

// DescribeImageBuilders API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified image builders, if
// the image builder names are provided. Otherwise, all image builders in the
// account are described.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeImageBuilders for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeImageBuilders
func (c *AppStream) DescribeImageBuilders(input *DescribeImageBuildersInput) (*DescribeImageBuildersOutput, error) {
	req, out := c.DescribeImageBuildersRequest(input)
	return out, req.Send()
}

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

const opDescribeImagePermissions = "DescribeImagePermissions"

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

	if input == nil {
		input = &DescribeImagePermissionsInput{}
	}

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

// DescribeImagePermissions API operation for Amazon AppStream.
//
// Retrieves a list that describes the permissions for shared AWS account IDs
// on a private image that you own.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeImagePermissions for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeImagePermissions
func (c *AppStream) DescribeImagePermissions(input *DescribeImagePermissionsInput) (*DescribeImagePermissionsOutput, error) {
	req, out := c.DescribeImagePermissionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeImages = "DescribeImages"

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

	if input == nil {
		input = &DescribeImagesInput{}
	}

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

// DescribeImages API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified images, if the image
// names or image ARNs are provided. Otherwise, all images in the account are
// described.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeImages for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeImages
func (c *AppStream) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) {
	req, out := c.DescribeImagesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeSessions = "DescribeSessions"

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

	if input == nil {
		input = &DescribeSessionsInput{}
	}

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

// DescribeSessions API operation for Amazon AppStream.
//
// Retrieves a list that describes the streaming sessions for a specified stack
// and fleet. If a UserId is provided for the stack and fleet, only streaming
// sessions for that user are described. If an authentication type is not provided,
// the default is to authenticate users using a streaming URL.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeSessions for usage and error information.
//
// Returned Error Types:
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeSessions
func (c *AppStream) DescribeSessions(input *DescribeSessionsInput) (*DescribeSessionsOutput, error) {
	req, out := c.DescribeSessionsRequest(input)
	return out, req.Send()
}

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

const opDescribeStacks = "DescribeStacks"

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

	if input == nil {
		input = &DescribeStacksInput{}
	}

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

// DescribeStacks API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified stacks, if the stack
// names are provided. Otherwise, all stacks in the account are described.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeStacks for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeStacks
func (c *AppStream) DescribeStacks(input *DescribeStacksInput) (*DescribeStacksOutput, error) {
	req, out := c.DescribeStacksRequest(input)
	return out, req.Send()
}

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

const opDescribeUsageReportSubscriptions = "DescribeUsageReportSubscriptions"

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

	if input == nil {
		input = &DescribeUsageReportSubscriptionsInput{}
	}

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

// DescribeUsageReportSubscriptions API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more usage report subscriptions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeUsageReportSubscriptions for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeUsageReportSubscriptions
func (c *AppStream) DescribeUsageReportSubscriptions(input *DescribeUsageReportSubscriptionsInput) (*DescribeUsageReportSubscriptionsOutput, error) {
	req, out := c.DescribeUsageReportSubscriptionsRequest(input)
	return out, req.Send()
}

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

const opDescribeUserStackAssociations = "DescribeUserStackAssociations"

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

	if input == nil {
		input = &DescribeUserStackAssociationsInput{}
	}

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

// DescribeUserStackAssociations API operation for Amazon AppStream.
//
// Retrieves a list that describes the UserStackAssociation objects. You must
// specify either or both of the following:
//
//   - The stack name
//
//   - The user name (email address of the user associated with the stack)
//     and the authentication type for the user
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeUserStackAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeUserStackAssociations
func (c *AppStream) DescribeUserStackAssociations(input *DescribeUserStackAssociationsInput) (*DescribeUserStackAssociationsOutput, error) {
	req, out := c.DescribeUserStackAssociationsRequest(input)
	return out, req.Send()
}

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

const opDescribeUsers = "DescribeUsers"

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

	if input == nil {
		input = &DescribeUsersInput{}
	}

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

// DescribeUsers API operation for Amazon AppStream.
//
// Retrieves a list that describes one or more specified users in the user pool.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DescribeUsers for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DescribeUsers
func (c *AppStream) DescribeUsers(input *DescribeUsersInput) (*DescribeUsersOutput, error) {
	req, out := c.DescribeUsersRequest(input)
	return out, req.Send()
}

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

const opDisableUser = "DisableUser"

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

	if input == nil {
		input = &DisableUserInput{}
	}

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

// DisableUser API operation for Amazon AppStream.
//
// Disables the specified user in the user pool. Users can't sign in to AppStream
// 2.0 until they are re-enabled. This action does not delete the user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DisableUser for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DisableUser
func (c *AppStream) DisableUser(input *DisableUserInput) (*DisableUserOutput, error) {
	req, out := c.DisableUserRequest(input)
	return out, req.Send()
}

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

const opDisassociateAppBlockBuilderAppBlock = "DisassociateAppBlockBuilderAppBlock"

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

	if input == nil {
		input = &DisassociateAppBlockBuilderAppBlockInput{}
	}

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

// DisassociateAppBlockBuilderAppBlock API operation for Amazon AppStream.
//
// Disassociates a specified app block builder from a specified app block.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DisassociateAppBlockBuilderAppBlock for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DisassociateAppBlockBuilderAppBlock
func (c *AppStream) DisassociateAppBlockBuilderAppBlock(input *DisassociateAppBlockBuilderAppBlockInput) (*DisassociateAppBlockBuilderAppBlockOutput, error) {
	req, out := c.DisassociateAppBlockBuilderAppBlockRequest(input)
	return out, req.Send()
}

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

const opDisassociateApplicationFleet = "DisassociateApplicationFleet"

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

	if input == nil {
		input = &DisassociateApplicationFleetInput{}
	}

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

// DisassociateApplicationFleet API operation for Amazon AppStream.
//
// Disassociates the specified application from the fleet.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DisassociateApplicationFleet for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DisassociateApplicationFleet
func (c *AppStream) DisassociateApplicationFleet(input *DisassociateApplicationFleetInput) (*DisassociateApplicationFleetOutput, error) {
	req, out := c.DisassociateApplicationFleetRequest(input)
	return out, req.Send()
}

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

const opDisassociateApplicationFromEntitlement = "DisassociateApplicationFromEntitlement"

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

	if input == nil {
		input = &DisassociateApplicationFromEntitlementInput{}
	}

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

// DisassociateApplicationFromEntitlement API operation for Amazon AppStream.
//
// Deletes the specified application from the specified entitlement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DisassociateApplicationFromEntitlement for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DisassociateApplicationFromEntitlement
func (c *AppStream) DisassociateApplicationFromEntitlement(input *DisassociateApplicationFromEntitlementInput) (*DisassociateApplicationFromEntitlementOutput, error) {
	req, out := c.DisassociateApplicationFromEntitlementRequest(input)
	return out, req.Send()
}

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

const opDisassociateFleet = "DisassociateFleet"

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

	if input == nil {
		input = &DisassociateFleetInput{}
	}

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

// DisassociateFleet API operation for Amazon AppStream.
//
// Disassociates the specified fleet from the specified stack.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation DisassociateFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/DisassociateFleet
func (c *AppStream) DisassociateFleet(input *DisassociateFleetInput) (*DisassociateFleetOutput, error) {
	req, out := c.DisassociateFleetRequest(input)
	return out, req.Send()
}

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

const opEnableUser = "EnableUser"

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

	if input == nil {
		input = &EnableUserInput{}
	}

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

// EnableUser API operation for Amazon AppStream.
//
// Enables a user in the user pool. After being enabled, users can sign in to
// AppStream 2.0 and open applications from the stacks to which they are assigned.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation EnableUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/EnableUser
func (c *AppStream) EnableUser(input *EnableUserInput) (*EnableUserOutput, error) {
	req, out := c.EnableUserRequest(input)
	return out, req.Send()
}

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

const opExpireSession = "ExpireSession"

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

	if input == nil {
		input = &ExpireSessionInput{}
	}

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

// ExpireSession API operation for Amazon AppStream.
//
// Immediately stops the specified streaming session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation ExpireSession for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/ExpireSession
func (c *AppStream) ExpireSession(input *ExpireSessionInput) (*ExpireSessionOutput, error) {
	req, out := c.ExpireSessionRequest(input)
	return out, req.Send()
}

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

const opListAssociatedFleets = "ListAssociatedFleets"

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

	if input == nil {
		input = &ListAssociatedFleetsInput{}
	}

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

// ListAssociatedFleets API operation for Amazon AppStream.
//
// Retrieves the name of the fleet that is associated with the specified stack.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation ListAssociatedFleets for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/ListAssociatedFleets
func (c *AppStream) ListAssociatedFleets(input *ListAssociatedFleetsInput) (*ListAssociatedFleetsOutput, error) {
	req, out := c.ListAssociatedFleetsRequest(input)
	return out, req.Send()
}

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

const opListAssociatedStacks = "ListAssociatedStacks"

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

	if input == nil {
		input = &ListAssociatedStacksInput{}
	}

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

// ListAssociatedStacks API operation for Amazon AppStream.
//
// Retrieves the name of the stack with which the specified fleet is associated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation ListAssociatedStacks for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/ListAssociatedStacks
func (c *AppStream) ListAssociatedStacks(input *ListAssociatedStacksInput) (*ListAssociatedStacksOutput, error) {
	req, out := c.ListAssociatedStacksRequest(input)
	return out, req.Send()
}

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

const opListEntitledApplications = "ListEntitledApplications"

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

	if input == nil {
		input = &ListEntitledApplicationsInput{}
	}

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

// ListEntitledApplications API operation for Amazon AppStream.
//
// Retrieves a list of entitled applications.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation ListEntitledApplications for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/ListEntitledApplications
func (c *AppStream) ListEntitledApplications(input *ListEntitledApplicationsInput) (*ListEntitledApplicationsOutput, error) {
	req, out := c.ListEntitledApplicationsRequest(input)
	return out, req.Send()
}

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

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/appstream-2016-12-01/ListTagsForResource
func (c *AppStream) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

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

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

// ListTagsForResource API operation for Amazon AppStream.
//
// Retrieves a list of all tags for the specified AppStream 2.0 resource. You
// can tag AppStream 2.0 image builders, images, fleets, and stacks.
//
// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
// in the Amazon AppStream 2.0 Administration Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/ListTagsForResource
func (c *AppStream) 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 *AppStream) 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 opStartAppBlockBuilder = "StartAppBlockBuilder"

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

	if input == nil {
		input = &StartAppBlockBuilderInput{}
	}

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

// StartAppBlockBuilder API operation for Amazon AppStream.
//
// Starts an app block builder.
//
// An app block builder can only be started when it's associated with an app
// block.
//
// Starting an app block builder starts a new instance, which is equivalent
// to an elastic fleet instance with application builder assistance functionality.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StartAppBlockBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StartAppBlockBuilder
func (c *AppStream) StartAppBlockBuilder(input *StartAppBlockBuilderInput) (*StartAppBlockBuilderOutput, error) {
	req, out := c.StartAppBlockBuilderRequest(input)
	return out, req.Send()
}

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

const opStartFleet = "StartFleet"

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

	if input == nil {
		input = &StartFleetInput{}
	}

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

// StartFleet API operation for Amazon AppStream.
//
// Starts the specified fleet.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StartFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StartFleet
func (c *AppStream) StartFleet(input *StartFleetInput) (*StartFleetOutput, error) {
	req, out := c.StartFleetRequest(input)
	return out, req.Send()
}

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

const opStartImageBuilder = "StartImageBuilder"

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

	if input == nil {
		input = &StartImageBuilderInput{}
	}

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

// StartImageBuilder API operation for Amazon AppStream.
//
// Starts the specified image builder.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StartImageBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StartImageBuilder
func (c *AppStream) StartImageBuilder(input *StartImageBuilderInput) (*StartImageBuilderOutput, error) {
	req, out := c.StartImageBuilderRequest(input)
	return out, req.Send()
}

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

const opStopAppBlockBuilder = "StopAppBlockBuilder"

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

	if input == nil {
		input = &StopAppBlockBuilderInput{}
	}

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

// StopAppBlockBuilder API operation for Amazon AppStream.
//
// Stops an app block builder.
//
// Stopping an app block builder terminates the instance, and the instance state
// is not persisted.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StopAppBlockBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StopAppBlockBuilder
func (c *AppStream) StopAppBlockBuilder(input *StopAppBlockBuilderInput) (*StopAppBlockBuilderOutput, error) {
	req, out := c.StopAppBlockBuilderRequest(input)
	return out, req.Send()
}

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

const opStopFleet = "StopFleet"

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

	if input == nil {
		input = &StopFleetInput{}
	}

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

// StopFleet API operation for Amazon AppStream.
//
// Stops the specified fleet.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StopFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StopFleet
func (c *AppStream) StopFleet(input *StopFleetInput) (*StopFleetOutput, error) {
	req, out := c.StopFleetRequest(input)
	return out, req.Send()
}

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

const opStopImageBuilder = "StopImageBuilder"

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

	if input == nil {
		input = &StopImageBuilderInput{}
	}

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

// StopImageBuilder API operation for Amazon AppStream.
//
// Stops the specified image builder.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation StopImageBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/StopImageBuilder
func (c *AppStream) StopImageBuilder(input *StopImageBuilderInput) (*StopImageBuilderOutput, error) {
	req, out := c.StopImageBuilderRequest(input)
	return out, req.Send()
}

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

const opTagResource = "TagResource"

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

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

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

// TagResource API operation for Amazon AppStream.
//
// Adds or overwrites one or more tags for the specified AppStream 2.0 resource.
// You can tag AppStream 2.0 image builders, images, fleets, and stacks.
//
// Each tag consists of a key and an optional value. If a resource already has
// a tag with the same key, this operation updates its value.
//
// To list the current tags for your resources, use ListTagsForResource. To
// disassociate tags from your resources, use UntagResource.
//
// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
// in the Amazon AppStream 2.0 Administration Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/TagResource
func (c *AppStream) 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 *AppStream) 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/appstream-2016-12-01/UntagResource
func (c *AppStream) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

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

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

// UntagResource API operation for Amazon AppStream.
//
// Disassociates one or more specified tags from the specified AppStream 2.0
// resource.
//
// To list the current tags for your resources, use ListTagsForResource.
//
// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
// in the Amazon AppStream 2.0 Administration Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UntagResource
func (c *AppStream) 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 *AppStream) 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 opUpdateAppBlockBuilder = "UpdateAppBlockBuilder"

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

	if input == nil {
		input = &UpdateAppBlockBuilderInput{}
	}

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

// UpdateAppBlockBuilder API operation for Amazon AppStream.
//
// Updates an app block builder.
//
// If the app block builder is in the STARTING or STOPPING state, you can't
// update it. If the app block builder is in the RUNNING state, you can only
// update the DisplayName and Description. If the app block builder is in the
// STOPPED state, you can update any attribute except the Name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateAppBlockBuilder for usage and error information.
//
// Returned Error Types:
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateAppBlockBuilder
func (c *AppStream) UpdateAppBlockBuilder(input *UpdateAppBlockBuilderInput) (*UpdateAppBlockBuilderOutput, error) {
	req, out := c.UpdateAppBlockBuilderRequest(input)
	return out, req.Send()
}

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

const opUpdateApplication = "UpdateApplication"

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

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

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

// UpdateApplication API operation for Amazon AppStream.
//
// Updates the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateApplication for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateApplication
func (c *AppStream) UpdateApplication(input *UpdateApplicationInput) (*UpdateApplicationOutput, error) {
	req, out := c.UpdateApplicationRequest(input)
	return out, req.Send()
}

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

const opUpdateDirectoryConfig = "UpdateDirectoryConfig"

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

	if input == nil {
		input = &UpdateDirectoryConfigInput{}
	}

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

// UpdateDirectoryConfig API operation for Amazon AppStream.
//
// Updates the specified Directory Config object in AppStream 2.0. This object
// includes the configuration information required to join fleets and image
// builders to Microsoft Active Directory domains.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateDirectoryConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateDirectoryConfig
func (c *AppStream) UpdateDirectoryConfig(input *UpdateDirectoryConfigInput) (*UpdateDirectoryConfigOutput, error) {
	req, out := c.UpdateDirectoryConfigRequest(input)
	return out, req.Send()
}

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

const opUpdateEntitlement = "UpdateEntitlement"

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

	if input == nil {
		input = &UpdateEntitlementInput{}
	}

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

// UpdateEntitlement API operation for Amazon AppStream.
//
// Updates the specified entitlement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateEntitlement for usage and error information.
//
// Returned Error Types:
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - EntitlementNotFoundException
//     The entitlement can't be found.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateEntitlement
func (c *AppStream) UpdateEntitlement(input *UpdateEntitlementInput) (*UpdateEntitlementOutput, error) {
	req, out := c.UpdateEntitlementRequest(input)
	return out, req.Send()
}

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

const opUpdateFleet = "UpdateFleet"

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

	if input == nil {
		input = &UpdateFleetInput{}
	}

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

// UpdateFleet API operation for Amazon AppStream.
//
// Updates the specified fleet.
//
// If the fleet is in the STOPPED state, you can update any attribute except
// the fleet name.
//
// If the fleet is in the RUNNING state, you can update the following based
// on the fleet type:
//
//   - Always-On and On-Demand fleet types You can update the DisplayName,
//     ComputeCapacity, ImageARN, ImageName, IdleDisconnectTimeoutInSeconds,
//     and DisconnectTimeoutInSeconds attributes.
//
//   - Elastic fleet type You can update the DisplayName, IdleDisconnectTimeoutInSeconds,
//     DisconnectTimeoutInSeconds, MaxConcurrentSessions, SessionScriptS3Location
//     and UsbDeviceFilterStrings attributes.
//
// If the fleet is in the STARTING or STOPPED state, you can't update it.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateFleet for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - RequestLimitExceededException
//     AppStream 2.0 can’t process the request right now because the Describe
//     calls from your AWS account are being throttled by Amazon EC2. Try again
//     later.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateFleet
func (c *AppStream) UpdateFleet(input *UpdateFleetInput) (*UpdateFleetOutput, error) {
	req, out := c.UpdateFleetRequest(input)
	return out, req.Send()
}

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

const opUpdateImagePermissions = "UpdateImagePermissions"

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

	if input == nil {
		input = &UpdateImagePermissionsInput{}
	}

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

// UpdateImagePermissions API operation for Amazon AppStream.
//
// Adds or updates permissions for the specified private image.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateImagePermissions for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceNotAvailableException
//     The specified resource exists and is not in use, but isn't available.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateImagePermissions
func (c *AppStream) UpdateImagePermissions(input *UpdateImagePermissionsInput) (*UpdateImagePermissionsOutput, error) {
	req, out := c.UpdateImagePermissionsRequest(input)
	return out, req.Send()
}

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

const opUpdateStack = "UpdateStack"

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

	if input == nil {
		input = &UpdateStackInput{}
	}

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

// UpdateStack API operation for Amazon AppStream.
//
// Updates the specified fields for the specified stack.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon AppStream's
// API operation UpdateStack for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     The specified resource is in use.
//
//   - InvalidRoleException
//     The specified role is invalid.
//
//   - InvalidParameterCombinationException
//     Indicates an incorrect combination of parameters, or a missing parameter.
//
//   - LimitExceededException
//     The requested limit exceeds the permitted limit for an account.
//
//   - InvalidAccountStatusException
//     The resource cannot be created because your AWS account is suspended. For
//     assistance, contact AWS Support.
//
//   - IncompatibleImageException
//     The image can't be updated because it's not compatible for updates.
//
//   - OperationNotPermittedException
//     The attempted operation is not permitted.
//
//   - ConcurrentModificationException
//     An API error occurred. Wait a few minutes and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/appstream-2016-12-01/UpdateStack
func (c *AppStream) UpdateStack(input *UpdateStackInput) (*UpdateStackOutput, error) {
	req, out := c.UpdateStackRequest(input)
	return out, req.Send()
}

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

// Describes an interface VPC endpoint (interface endpoint) that lets you create
// a private connection between the virtual private cloud (VPC) that you specify
// and AppStream 2.0. When you specify an interface endpoint for a stack, users
// of the stack can connect to AppStream 2.0 only through that endpoint. When
// you specify an interface endpoint for an image builder, administrators can
// connect to the image builder only through that endpoint.
type AccessEndpoint struct {
	_ struct{} `type:"structure"`

	// The type of interface endpoint.
	//
	// EndpointType is a required field
	EndpointType *string `type:"string" required:"true" enum:"AccessEndpointType"`

	// The identifier (ID) of the VPC in which the interface endpoint is used.
	VpceId *string `min:"1" type:"string"`
}

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

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

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

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

// SetEndpointType sets the EndpointType field's value.
func (s *AccessEndpoint) SetEndpointType(v string) *AccessEndpoint {
	s.EndpointType = &v
	return s
}

// SetVpceId sets the VpceId field's value.
func (s *AccessEndpoint) SetVpceId(v string) *AccessEndpoint {
	s.VpceId = &v
	return s
}

// Describes an app block.
//
// App blocks are an Amazon AppStream 2.0 resource that stores the details about
// the virtual hard disk in an S3 bucket. It also stores the setup script with
// details about how to mount the virtual hard disk. The virtual hard disk includes
// the application binaries and other files necessary to launch your applications.
// Multiple applications can be assigned to a single app block.
//
// This is only supported for Elastic fleets.
type AppBlock struct {
	_ struct{} `type:"structure"`

	// The errors of the app block.
	AppBlockErrors []*ErrorDetails `type:"list"`

	// The ARN of the app block.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The created time of the app block.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the app block.
	Description *string `min:"1" type:"string"`

	// The display name of the app block.
	DisplayName *string `min:"1" type:"string"`

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

	// The packaging type of the app block.
	PackagingType *string `type:"string" enum:"PackagingType"`

	// The post setup script details of the app block.
	//
	// This only applies to app blocks with PackagingType APPSTREAM2.
	PostSetupScriptDetails *ScriptDetails `type:"structure"`

	// The setup script details of the app block.
	//
	// This only applies to app blocks with PackagingType CUSTOM.
	SetupScriptDetails *ScriptDetails `type:"structure"`

	// The source S3 location of the app block.
	SourceS3Location *S3Location `type:"structure"`

	// The state of the app block.
	//
	// An app block with AppStream 2.0 packaging will be in the INACTIVE state if
	// no application package (VHD) is assigned to it. After an application package
	// (VHD) is created by an app block builder for an app block, it becomes ACTIVE.
	//
	// Custom app blocks are always in the ACTIVE state and no action is required
	// to use them.
	State *string `type:"string" enum:"AppBlockState"`
}

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

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

// SetAppBlockErrors sets the AppBlockErrors field's value.
func (s *AppBlock) SetAppBlockErrors(v []*ErrorDetails) *AppBlock {
	s.AppBlockErrors = v
	return s
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *AppBlock) SetCreatedTime(v time.Time) *AppBlock {
	s.CreatedTime = &v
	return s
}

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

// SetDisplayName sets the DisplayName field's value.
func (s *AppBlock) SetDisplayName(v string) *AppBlock {
	s.DisplayName = &v
	return s
}

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

// SetPackagingType sets the PackagingType field's value.
func (s *AppBlock) SetPackagingType(v string) *AppBlock {
	s.PackagingType = &v
	return s
}

// SetPostSetupScriptDetails sets the PostSetupScriptDetails field's value.
func (s *AppBlock) SetPostSetupScriptDetails(v *ScriptDetails) *AppBlock {
	s.PostSetupScriptDetails = v
	return s
}

// SetSetupScriptDetails sets the SetupScriptDetails field's value.
func (s *AppBlock) SetSetupScriptDetails(v *ScriptDetails) *AppBlock {
	s.SetupScriptDetails = v
	return s
}

// SetSourceS3Location sets the SourceS3Location field's value.
func (s *AppBlock) SetSourceS3Location(v *S3Location) *AppBlock {
	s.SourceS3Location = v
	return s
}

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

// Describes an app block builder.
type AppBlockBuilder struct {
	_ struct{} `type:"structure"`

	// The list of interface VPC endpoint (interface endpoint) objects. Administrators
	// can connect to the app block builder only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The app block builder errors.
	AppBlockBuilderErrors []*ResourceError `type:"list"`

	// The ARN of the app block builder.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The creation time of the app block builder.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the app block builder.
	Description *string `min:"1" type:"string"`

	// The display name of the app block builder.
	DisplayName *string `min:"1" type:"string"`

	// Indicates whether default internet access is enabled for the app block builder.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The ARN of the IAM role that is applied to the app block builder.
	IamRoleArn *string `type:"string"`

	// The instance type of the app block builder.
	//
	// InstanceType is a required field
	InstanceType *string `min:"1" type:"string" required:"true"`

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

	// The platform of the app block builder.
	//
	// WINDOWS_SERVER_2019 is the only valid value.
	//
	// Platform is a required field
	Platform *string `type:"string" required:"true" enum:"AppBlockBuilderPlatformType"`

	// The state of the app block builder.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"AppBlockBuilderState"`

	// The state change reason.
	StateChangeReason *AppBlockBuilderStateChangeReason `type:"structure"`

	// The VPC configuration for the app block builder.
	//
	// VpcConfig is a required field
	VpcConfig *VpcConfig `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 AppBlockBuilder) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *AppBlockBuilder) SetAccessEndpoints(v []*AccessEndpoint) *AppBlockBuilder {
	s.AccessEndpoints = v
	return s
}

// SetAppBlockBuilderErrors sets the AppBlockBuilderErrors field's value.
func (s *AppBlockBuilder) SetAppBlockBuilderErrors(v []*ResourceError) *AppBlockBuilder {
	s.AppBlockBuilderErrors = v
	return s
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *AppBlockBuilder) SetCreatedTime(v time.Time) *AppBlockBuilder {
	s.CreatedTime = &v
	return s
}

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

// SetDisplayName sets the DisplayName field's value.
func (s *AppBlockBuilder) SetDisplayName(v string) *AppBlockBuilder {
	s.DisplayName = &v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *AppBlockBuilder) SetEnableDefaultInternetAccess(v bool) *AppBlockBuilder {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *AppBlockBuilder) SetIamRoleArn(v string) *AppBlockBuilder {
	s.IamRoleArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AppBlockBuilder) SetInstanceType(v string) *AppBlockBuilder {
	s.InstanceType = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *AppBlockBuilder) SetPlatform(v string) *AppBlockBuilder {
	s.Platform = &v
	return s
}

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

// SetStateChangeReason sets the StateChangeReason field's value.
func (s *AppBlockBuilder) SetStateChangeReason(v *AppBlockBuilderStateChangeReason) *AppBlockBuilder {
	s.StateChangeReason = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *AppBlockBuilder) SetVpcConfig(v *VpcConfig) *AppBlockBuilder {
	s.VpcConfig = v
	return s
}

// Describes an association between an app block builder and app block.
type AppBlockBuilderAppBlockAssociation struct {
	_ struct{} `type:"structure"`

	// The ARN of the app block.
	//
	// AppBlockArn is a required field
	AppBlockArn *string `type:"string" required:"true"`

	// The name of the app block builder.
	//
	// AppBlockBuilderName is a required field
	AppBlockBuilderName *string `type:"string" required:"true"`
}

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

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

// SetAppBlockArn sets the AppBlockArn field's value.
func (s *AppBlockBuilderAppBlockAssociation) SetAppBlockArn(v string) *AppBlockBuilderAppBlockAssociation {
	s.AppBlockArn = &v
	return s
}

// SetAppBlockBuilderName sets the AppBlockBuilderName field's value.
func (s *AppBlockBuilderAppBlockAssociation) SetAppBlockBuilderName(v string) *AppBlockBuilderAppBlockAssociation {
	s.AppBlockBuilderName = &v
	return s
}

// Describes the reason why the last app block builder state change occurred.
type AppBlockBuilderStateChangeReason struct {
	_ struct{} `type:"structure"`

	// The state change reason code.
	Code *string `type:"string" enum:"AppBlockBuilderStateChangeReasonCode"`

	// The state change reason message.
	Message *string `min:"1" type:"string"`
}

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

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

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

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

// Describes an application in the application catalog.
type Application struct {
	_ struct{} `type:"structure"`

	// The app block ARN of the application.
	AppBlockArn *string `type:"string"`

	// The ARN of the application.
	Arn *string `type:"string"`

	// The time at which the application was created within the app block.
	CreatedTime *time.Time `type:"timestamp"`

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

	// The application name to display.
	DisplayName *string `min:"1" type:"string"`

	// If there is a problem, the application can be disabled after image creation.
	Enabled *bool `type:"boolean"`

	// The S3 location of the application icon.
	IconS3Location *S3Location `type:"structure"`

	// The URL for the application icon. This URL might be time-limited.
	IconURL *string `min:"1" type:"string"`

	// The instance families for the application.
	InstanceFamilies []*string `type:"list"`

	// The arguments that are passed to the application at launch.
	LaunchParameters *string `min:"1" type:"string"`

	// The path to the application executable in the instance.
	LaunchPath *string `min:"1" type:"string"`

	// Additional attributes that describe the application.
	Metadata map[string]*string `type:"map"`

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

	// The platforms on which the application can run.
	Platforms []*string `type:"list" enum:"PlatformType"`

	// The working directory for the application.
	WorkingDirectory *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

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

// SetIconS3Location sets the IconS3Location field's value.
func (s *Application) SetIconS3Location(v *S3Location) *Application {
	s.IconS3Location = v
	return s
}

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

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

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

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

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

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

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

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

// Describes the application fleet association.
type ApplicationFleetAssociation struct {
	_ struct{} `type:"structure"`

	// The ARN of the application associated with the fleet.
	//
	// ApplicationArn is a required field
	ApplicationArn *string `type:"string" required:"true"`

	// The name of the fleet associated with the application.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`
}

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

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

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

// SetFleetName sets the FleetName field's value.
func (s *ApplicationFleetAssociation) SetFleetName(v string) *ApplicationFleetAssociation {
	s.FleetName = &v
	return s
}

// The persistent application settings for users of a stack.
type ApplicationSettings struct {
	_ struct{} `type:"structure"`

	// Enables or disables persistent application settings for users during their
	// streaming sessions.
	//
	// Enabled is a required field
	Enabled *bool `type:"boolean" required:"true"`

	// The path prefix for the S3 bucket where users’ persistent application settings
	// are stored. You can allow the same persistent application settings to be
	// used across multiple stacks by specifying the same settings group for each
	// stack.
	SettingsGroup *string `type:"string"`
}

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

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

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

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

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

// SetSettingsGroup sets the SettingsGroup field's value.
func (s *ApplicationSettings) SetSettingsGroup(v string) *ApplicationSettings {
	s.SettingsGroup = &v
	return s
}

// Describes the persistent application settings for users of a stack.
type ApplicationSettingsResponse struct {
	_ struct{} `type:"structure"`

	// Specifies whether persistent application settings are enabled for users during
	// their streaming sessions.
	Enabled *bool `type:"boolean"`

	// The S3 bucket where users’ persistent application settings are stored.
	// When persistent application settings are enabled for the first time for an
	// account in an AWS Region, an S3 bucket is created. The bucket is unique to
	// the AWS account and the Region.
	S3BucketName *string `min:"1" type:"string"`

	// The path prefix for the S3 bucket where users’ persistent application settings
	// are stored.
	SettingsGroup *string `type:"string"`
}

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

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

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

// SetS3BucketName sets the S3BucketName field's value.
func (s *ApplicationSettingsResponse) SetS3BucketName(v string) *ApplicationSettingsResponse {
	s.S3BucketName = &v
	return s
}

// SetSettingsGroup sets the SettingsGroup field's value.
func (s *ApplicationSettingsResponse) SetSettingsGroup(v string) *ApplicationSettingsResponse {
	s.SettingsGroup = &v
	return s
}

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

	// The ARN of the app block.
	//
	// AppBlockArn is a required field
	AppBlockArn *string `type:"string" required:"true"`

	// The name of the app block builder.
	//
	// AppBlockBuilderName is a required field
	AppBlockBuilderName *string `type:"string" required:"true"`
}

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

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

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

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

// SetAppBlockArn sets the AppBlockArn field's value.
func (s *AssociateAppBlockBuilderAppBlockInput) SetAppBlockArn(v string) *AssociateAppBlockBuilderAppBlockInput {
	s.AppBlockArn = &v
	return s
}

// SetAppBlockBuilderName sets the AppBlockBuilderName field's value.
func (s *AssociateAppBlockBuilderAppBlockInput) SetAppBlockBuilderName(v string) *AssociateAppBlockBuilderAppBlockInput {
	s.AppBlockBuilderName = &v
	return s
}

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

	// The list of app block builders associated with app blocks.
	AppBlockBuilderAppBlockAssociation *AppBlockBuilderAppBlockAssociation `type:"structure"`
}

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

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

// SetAppBlockBuilderAppBlockAssociation sets the AppBlockBuilderAppBlockAssociation field's value.
func (s *AssociateAppBlockBuilderAppBlockOutput) SetAppBlockBuilderAppBlockAssociation(v *AppBlockBuilderAppBlockAssociation) *AssociateAppBlockBuilderAppBlockOutput {
	s.AppBlockBuilderAppBlockAssociation = v
	return s
}

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

	// The ARN of the application.
	//
	// ApplicationArn is a required field
	ApplicationArn *string `type:"string" required:"true"`

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `type:"string" required:"true"`
}

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

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

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

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

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

// SetFleetName sets the FleetName field's value.
func (s *AssociateApplicationFleetInput) SetFleetName(v string) *AssociateApplicationFleetInput {
	s.FleetName = &v
	return s
}

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

	// If fleet name is specified, this returns the list of applications that are
	// associated to it. If application ARN is specified, this returns the list
	// of fleets to which it is associated.
	ApplicationFleetAssociation *ApplicationFleetAssociation `type:"structure"`
}

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

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

// SetApplicationFleetAssociation sets the ApplicationFleetAssociation field's value.
func (s *AssociateApplicationFleetOutput) SetApplicationFleetAssociation(v *ApplicationFleetAssociation) *AssociateApplicationFleetOutput {
	s.ApplicationFleetAssociation = v
	return s
}

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

	// The identifier of the application.
	//
	// ApplicationIdentifier is a required field
	ApplicationIdentifier *string `min:"1" type:"string" required:"true"`

	// The name of the entitlement.
	//
	// EntitlementName is a required field
	EntitlementName *string `type:"string" required:"true"`

	// The name of the stack.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

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

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

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

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

// SetApplicationIdentifier sets the ApplicationIdentifier field's value.
func (s *AssociateApplicationToEntitlementInput) SetApplicationIdentifier(v string) *AssociateApplicationToEntitlementInput {
	s.ApplicationIdentifier = &v
	return s
}

// SetEntitlementName sets the EntitlementName field's value.
func (s *AssociateApplicationToEntitlementInput) SetEntitlementName(v string) *AssociateApplicationToEntitlementInput {
	s.EntitlementName = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *AssociateApplicationToEntitlementInput) SetStackName(v string) *AssociateApplicationToEntitlementInput {
	s.StackName = &v
	return s
}

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

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

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

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`

	// The name of the stack.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetFleetName sets the FleetName field's value.
func (s *AssociateFleetInput) SetFleetName(v string) *AssociateFleetInput {
	s.FleetName = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *AssociateFleetInput) SetStackName(v string) *AssociateFleetInput {
	s.StackName = &v
	return s
}

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

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

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

	// The list of UserStackAssociation objects.
	//
	// UserStackAssociations is a required field
	UserStackAssociations []*UserStackAssociation `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 BatchAssociateUserStackInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetUserStackAssociations sets the UserStackAssociations field's value.
func (s *BatchAssociateUserStackInput) SetUserStackAssociations(v []*UserStackAssociation) *BatchAssociateUserStackInput {
	s.UserStackAssociations = v
	return s
}

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

	// The list of UserStackAssociationError objects.
	Errors []*UserStackAssociationError `locationName:"errors" 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 BatchAssociateUserStackOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

	// The list of UserStackAssociation objects.
	//
	// UserStackAssociations is a required field
	UserStackAssociations []*UserStackAssociation `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 BatchDisassociateUserStackInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetUserStackAssociations sets the UserStackAssociations field's value.
func (s *BatchDisassociateUserStackInput) SetUserStackAssociations(v []*UserStackAssociation) *BatchDisassociateUserStackInput {
	s.UserStackAssociations = v
	return s
}

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

	// The list of UserStackAssociationError objects.
	Errors []*UserStackAssociationError `locationName:"errors" 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 BatchDisassociateUserStackOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// The certificate-based authentication properties used to authenticate SAML
// 2.0 Identity Provider (IdP) user identities to Active Directory domain-joined
// streaming instances. Fallback is turned on by default when certificate-based
// authentication is Enabled . Fallback allows users to log in using their AD
// domain password if certificate-based authentication is unsuccessful, or to
// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
// certificate-based authentication, but does not allow users to log in using
// their AD domain password. Users will be disconnected to re-authenticate using
// certificates.
type CertificateBasedAuthProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the AWS Certificate Manager Private CA resource.
	CertificateAuthorityArn *string `type:"string"`

	// The status of the certificate-based authentication properties.
	Status *string `type:"string" enum:"CertificateBasedAuthStatus"`
}

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

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

// SetCertificateAuthorityArn sets the CertificateAuthorityArn field's value.
func (s *CertificateBasedAuthProperties) SetCertificateAuthorityArn(v string) *CertificateBasedAuthProperties {
	s.CertificateAuthorityArn = &v
	return s
}

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

// Describes the capacity for a fleet.
type ComputeCapacity struct {
	_ struct{} `type:"structure"`

	// The desired number of streaming instances.
	DesiredInstances *int64 `type:"integer"`

	// The desired number of user sessions for a multi-session fleet. This is not
	// allowed for single-session fleets.
	//
	// When you create a fleet, you must set either the DesiredSessions or DesiredInstances
	// attribute, based on the type of fleet you create. You can’t define both
	// attributes or leave both attributes blank.
	DesiredSessions *int64 `type:"integer"`
}

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

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

// SetDesiredInstances sets the DesiredInstances field's value.
func (s *ComputeCapacity) SetDesiredInstances(v int64) *ComputeCapacity {
	s.DesiredInstances = &v
	return s
}

// SetDesiredSessions sets the DesiredSessions field's value.
func (s *ComputeCapacity) SetDesiredSessions(v int64) *ComputeCapacity {
	s.DesiredSessions = &v
	return s
}

// Describes the capacity status for a fleet.
type ComputeCapacityStatus struct {
	_ struct{} `type:"structure"`

	// The number of user sessions currently being used for streaming sessions.
	// This only applies to multi-session fleets.
	ActiveUserSessions *int64 `type:"integer"`

	// The total number of session slots that are available for streaming or are
	// currently streaming.
	//
	// ActualUserSessionCapacity = AvailableUserSessionCapacity + ActiveUserSessions
	//
	// This only applies to multi-session fleets.
	ActualUserSessions *int64 `type:"integer"`

	// The number of currently available instances that can be used to stream sessions.
	Available *int64 `type:"integer"`

	// The number of idle session slots currently available for user sessions.
	//
	// AvailableUserSessionCapacity = ActualUserSessionCapacity - ActiveUserSessions
	//
	// This only applies to multi-session fleets.
	AvailableUserSessions *int64 `type:"integer"`

	// The desired number of streaming instances.
	//
	// Desired is a required field
	Desired *int64 `type:"integer" required:"true"`

	// The total number of sessions slots that are either running or pending. This
	// represents the total number of concurrent streaming sessions your fleet can
	// support in a steady state.
	//
	// DesiredUserSessionCapacity = ActualUserSessionCapacity + PendingUserSessionCapacity
	//
	// This only applies to multi-session fleets.
	DesiredUserSessions *int64 `type:"integer"`

	// The number of instances in use for streaming.
	InUse *int64 `type:"integer"`

	// The total number of simultaneous streaming instances that are running.
	Running *int64 `type:"integer"`
}

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

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

// SetActiveUserSessions sets the ActiveUserSessions field's value.
func (s *ComputeCapacityStatus) SetActiveUserSessions(v int64) *ComputeCapacityStatus {
	s.ActiveUserSessions = &v
	return s
}

// SetActualUserSessions sets the ActualUserSessions field's value.
func (s *ComputeCapacityStatus) SetActualUserSessions(v int64) *ComputeCapacityStatus {
	s.ActualUserSessions = &v
	return s
}

// SetAvailable sets the Available field's value.
func (s *ComputeCapacityStatus) SetAvailable(v int64) *ComputeCapacityStatus {
	s.Available = &v
	return s
}

// SetAvailableUserSessions sets the AvailableUserSessions field's value.
func (s *ComputeCapacityStatus) SetAvailableUserSessions(v int64) *ComputeCapacityStatus {
	s.AvailableUserSessions = &v
	return s
}

// SetDesired sets the Desired field's value.
func (s *ComputeCapacityStatus) SetDesired(v int64) *ComputeCapacityStatus {
	s.Desired = &v
	return s
}

// SetDesiredUserSessions sets the DesiredUserSessions field's value.
func (s *ComputeCapacityStatus) SetDesiredUserSessions(v int64) *ComputeCapacityStatus {
	s.DesiredUserSessions = &v
	return s
}

// SetInUse sets the InUse field's value.
func (s *ComputeCapacityStatus) SetInUse(v int64) *ComputeCapacityStatus {
	s.InUse = &v
	return s
}

// SetRunning sets the Running field's value.
func (s *ComputeCapacityStatus) SetRunning(v int64) *ComputeCapacityStatus {
	s.Running = &v
	return s
}

// An API error occurred. Wait a few minutes and try again.
type ConcurrentModificationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	Message_ *string `locationName:"Message" type:"string"`
}

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

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

func newErrorConcurrentModificationException(v protocol.ResponseMetadata) error {
	return &ConcurrentModificationException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// The description that the image will have when it is copied to the destination.
	DestinationImageDescription *string `type:"string"`

	// The name that the image will have when it is copied to the destination.
	//
	// DestinationImageName is a required field
	DestinationImageName *string `type:"string" required:"true"`

	// The destination region to which the image will be copied. This parameter
	// is required, even if you are copying an image within the same region.
	//
	// DestinationRegion is a required field
	DestinationRegion *string `min:"1" type:"string" required:"true"`

	// The name of the image to copy.
	//
	// SourceImageName is a required field
	SourceImageName *string `type:"string" required:"true"`
}

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

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

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

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

// SetDestinationImageDescription sets the DestinationImageDescription field's value.
func (s *CopyImageInput) SetDestinationImageDescription(v string) *CopyImageInput {
	s.DestinationImageDescription = &v
	return s
}

// SetDestinationImageName sets the DestinationImageName field's value.
func (s *CopyImageInput) SetDestinationImageName(v string) *CopyImageInput {
	s.DestinationImageName = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *CopyImageInput) SetDestinationRegion(v string) *CopyImageInput {
	s.DestinationRegion = &v
	return s
}

// SetSourceImageName sets the SourceImageName field's value.
func (s *CopyImageInput) SetSourceImageName(v string) *CopyImageInput {
	s.SourceImageName = &v
	return s
}

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

	// The name of the destination image.
	DestinationImageName *string `type:"string"`
}

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

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

// SetDestinationImageName sets the DestinationImageName field's value.
func (s *CopyImageOutput) SetDestinationImageName(v string) *CopyImageOutput {
	s.DestinationImageName = &v
	return s
}

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

	// The list of interface VPC endpoint (interface endpoint) objects. Administrators
	// can connect to the app block builder only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The description of the app block builder.
	Description *string `type:"string"`

	// The display name of the app block builder.
	DisplayName *string `type:"string"`

	// Enables or disables default internet access for the app block builder.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role to apply to the app block
	// builder. To assume a role, the app block builder calls the AWS Security Token
	// Service (STS) AssumeRole API operation and passes the ARN of the role to
	// use. The operation creates a new session with temporary credentials. AppStream
	// 2.0 retrieves the temporary credentials and creates the appstream_machine_role
	// credential profile on the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The instance type to use when launching the app block builder. The following
	// instance types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	//
	// InstanceType is a required field
	InstanceType *string `min:"1" type:"string" required:"true"`

	// The unique name for the app block builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The platform of the app block builder.
	//
	// WINDOWS_SERVER_2019 is the only valid value.
	//
	// Platform is a required field
	Platform *string `type:"string" required:"true" enum:"AppBlockBuilderPlatformType"`

	// The tags to associate with the app block builder. A tag is a key-value pair,
	// and the value is optional. For example, Environment=Test. If you do not specify
	// a value, Environment=.
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// For more information, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	Tags map[string]*string `min:"1" type:"map"`

	// The VPC configuration for the app block builder.
	//
	// App block builders require that you specify at least two subnets in different
	// availability zones.
	//
	// VpcConfig is a required field
	VpcConfig *VpcConfig `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 CreateAppBlockBuilderInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *CreateAppBlockBuilderInput) SetAccessEndpoints(v []*AccessEndpoint) *CreateAppBlockBuilderInput {
	s.AccessEndpoints = v
	return s
}

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

// SetDisplayName sets the DisplayName field's value.
func (s *CreateAppBlockBuilderInput) SetDisplayName(v string) *CreateAppBlockBuilderInput {
	s.DisplayName = &v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *CreateAppBlockBuilderInput) SetEnableDefaultInternetAccess(v bool) *CreateAppBlockBuilderInput {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *CreateAppBlockBuilderInput) SetIamRoleArn(v string) *CreateAppBlockBuilderInput {
	s.IamRoleArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *CreateAppBlockBuilderInput) SetInstanceType(v string) *CreateAppBlockBuilderInput {
	s.InstanceType = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *CreateAppBlockBuilderInput) SetPlatform(v string) *CreateAppBlockBuilderInput {
	s.Platform = &v
	return s
}

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

// SetVpcConfig sets the VpcConfig field's value.
func (s *CreateAppBlockBuilderInput) SetVpcConfig(v *VpcConfig) *CreateAppBlockBuilderInput {
	s.VpcConfig = v
	return s
}

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

	// Describes an app block builder.
	AppBlockBuilder *AppBlockBuilder `type:"structure"`
}

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

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

// SetAppBlockBuilder sets the AppBlockBuilder field's value.
func (s *CreateAppBlockBuilderOutput) SetAppBlockBuilder(v *AppBlockBuilder) *CreateAppBlockBuilderOutput {
	s.AppBlockBuilder = v
	return s
}

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

	// The name of the app block builder.
	//
	// AppBlockBuilderName is a required field
	AppBlockBuilderName *string `type:"string" required:"true"`

	// The time that the streaming URL will be valid, in seconds. Specify a value
	// between 1 and 604800 seconds. The default is 3600 seconds.
	Validity *int64 `type:"long"`
}

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

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

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

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

// SetAppBlockBuilderName sets the AppBlockBuilderName field's value.
func (s *CreateAppBlockBuilderStreamingURLInput) SetAppBlockBuilderName(v string) *CreateAppBlockBuilderStreamingURLInput {
	s.AppBlockBuilderName = &v
	return s
}

// SetValidity sets the Validity field's value.
func (s *CreateAppBlockBuilderStreamingURLInput) SetValidity(v int64) *CreateAppBlockBuilderStreamingURLInput {
	s.Validity = &v
	return s
}

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

	// The elapsed time, in seconds after the Unix epoch, when this URL expires.
	Expires *time.Time `type:"timestamp"`

	// The URL to start the streaming session.
	StreamingURL *string `min:"1" type:"string"`
}

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

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

// SetExpires sets the Expires field's value.
func (s *CreateAppBlockBuilderStreamingURLOutput) SetExpires(v time.Time) *CreateAppBlockBuilderStreamingURLOutput {
	s.Expires = &v
	return s
}

// SetStreamingURL sets the StreamingURL field's value.
func (s *CreateAppBlockBuilderStreamingURLOutput) SetStreamingURL(v string) *CreateAppBlockBuilderStreamingURLOutput {
	s.StreamingURL = &v
	return s
}

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

	// The description of the app block.
	Description *string `type:"string"`

	// The display name of the app block. This is not displayed to the user.
	DisplayName *string `type:"string"`

	// The name of the app block.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The packaging type of the app block.
	PackagingType *string `type:"string" enum:"PackagingType"`

	// The post setup script details of the app block. This can only be provided
	// for the APPSTREAM2 PackagingType.
	PostSetupScriptDetails *ScriptDetails `type:"structure"`

	// The setup script details of the app block. This must be provided for the
	// CUSTOM PackagingType.
	SetupScriptDetails *ScriptDetails `type:"structure"`

	// The source S3 location of the app block.
	//
	// SourceS3Location is a required field
	SourceS3Location *S3Location `type:"structure" required:"true"`

	// The tags assigned to the app block.
	Tags map[string]*string `min:"1" 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 CreateAppBlockInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDisplayName sets the DisplayName field's value.
func (s *CreateAppBlockInput) SetDisplayName(v string) *CreateAppBlockInput {
	s.DisplayName = &v
	return s
}

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

// SetPackagingType sets the PackagingType field's value.
func (s *CreateAppBlockInput) SetPackagingType(v string) *CreateAppBlockInput {
	s.PackagingType = &v
	return s
}

// SetPostSetupScriptDetails sets the PostSetupScriptDetails field's value.
func (s *CreateAppBlockInput) SetPostSetupScriptDetails(v *ScriptDetails) *CreateAppBlockInput {
	s.PostSetupScriptDetails = v
	return s
}

// SetSetupScriptDetails sets the SetupScriptDetails field's value.
func (s *CreateAppBlockInput) SetSetupScriptDetails(v *ScriptDetails) *CreateAppBlockInput {
	s.SetupScriptDetails = v
	return s
}

// SetSourceS3Location sets the SourceS3Location field's value.
func (s *CreateAppBlockInput) SetSourceS3Location(v *S3Location) *CreateAppBlockInput {
	s.SourceS3Location = v
	return s
}

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

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

	// The app block.
	AppBlock *AppBlock `type:"structure"`
}

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

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

// SetAppBlock sets the AppBlock field's value.
func (s *CreateAppBlockOutput) SetAppBlock(v *AppBlock) *CreateAppBlockOutput {
	s.AppBlock = v
	return s
}

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

	// The app block ARN to which the application should be associated
	//
	// AppBlockArn is a required field
	AppBlockArn *string `type:"string" required:"true"`

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

	// The display name of the application. This name is visible to users in the
	// application catalog.
	DisplayName *string `type:"string"`

	// The location in S3 of the application icon.
	//
	// IconS3Location is a required field
	IconS3Location *S3Location `type:"structure" required:"true"`

	// The instance families the application supports. Valid values are GENERAL_PURPOSE
	// and GRAPHICS_G4.
	//
	// InstanceFamilies is a required field
	InstanceFamilies []*string `type:"list" required:"true"`

	// The launch parameters of the application.
	LaunchParameters *string `min:"1" type:"string"`

	// The launch path of the application.
	//
	// LaunchPath is a required field
	LaunchPath *string `min:"1" type:"string" required:"true"`

	// The name of the application. This name is visible to users when display name
	// is not specified.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The platforms the application supports. WINDOWS_SERVER_2019 and AMAZON_LINUX2
	// are supported for Elastic fleets.
	//
	// Platforms is a required field
	Platforms []*string `type:"list" required:"true" enum:"PlatformType"`

	// The tags assigned to the application.
	Tags map[string]*string `min:"1" type:"map"`

	// The working directory of the application.
	WorkingDirectory *string `min:"1" type:"string"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateApplicationInput"}
	if s.AppBlockArn == nil {
		invalidParams.Add(request.NewErrParamRequired("AppBlockArn"))
	}
	if s.IconS3Location == nil {
		invalidParams.Add(request.NewErrParamRequired("IconS3Location"))
	}
	if s.InstanceFamilies == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceFamilies"))
	}
	if s.LaunchParameters != nil && len(*s.LaunchParameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LaunchParameters", 1))
	}
	if s.LaunchPath == nil {
		invalidParams.Add(request.NewErrParamRequired("LaunchPath"))
	}
	if s.LaunchPath != nil && len(*s.LaunchPath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LaunchPath", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Platforms == nil {
		invalidParams.Add(request.NewErrParamRequired("Platforms"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.WorkingDirectory != nil && len(*s.WorkingDirectory) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkingDirectory", 1))
	}
	if s.IconS3Location != nil {
		if err := s.IconS3Location.Validate(); err != nil {
			invalidParams.AddNested("IconS3Location", err.(request.ErrInvalidParams))
		}
	}

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

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

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

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

// SetIconS3Location sets the IconS3Location field's value.
func (s *CreateApplicationInput) SetIconS3Location(v *S3Location) *CreateApplicationInput {
	s.IconS3Location = v
	return s
}

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

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

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

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

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

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

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

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

	// Describes an application in the application catalog.
	Application *Application `type:"structure"`
}

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

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

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

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

	// The certificate-based authentication properties used to authenticate SAML
	// 2.0 Identity Provider (IdP) user identities to Active Directory domain-joined
	// streaming instances. Fallback is turned on by default when certificate-based
	// authentication is Enabled . Fallback allows users to log in using their AD
	// domain password if certificate-based authentication is unsuccessful, or to
	// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
	// certificate-based authentication, but does not allow users to log in using
	// their AD domain password. Users will be disconnected to re-authenticate using
	// certificates.
	CertificateBasedAuthProperties *CertificateBasedAuthProperties `type:"structure"`

	// The fully qualified name of the directory (for example, corp.example.com).
	//
	// DirectoryName is a required field
	DirectoryName *string `type:"string" required:"true"`

	// The distinguished names of the organizational units for computer accounts.
	//
	// OrganizationalUnitDistinguishedNames is a required field
	OrganizationalUnitDistinguishedNames []*string `type:"list" required:"true"`

	// The credentials for the service account used by the fleet or image builder
	// to connect to the directory.
	ServiceAccountCredentials *ServiceAccountCredentials `type:"structure"`
}

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

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

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

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

// SetCertificateBasedAuthProperties sets the CertificateBasedAuthProperties field's value.
func (s *CreateDirectoryConfigInput) SetCertificateBasedAuthProperties(v *CertificateBasedAuthProperties) *CreateDirectoryConfigInput {
	s.CertificateBasedAuthProperties = v
	return s
}

// SetDirectoryName sets the DirectoryName field's value.
func (s *CreateDirectoryConfigInput) SetDirectoryName(v string) *CreateDirectoryConfigInput {
	s.DirectoryName = &v
	return s
}

// SetOrganizationalUnitDistinguishedNames sets the OrganizationalUnitDistinguishedNames field's value.
func (s *CreateDirectoryConfigInput) SetOrganizationalUnitDistinguishedNames(v []*string) *CreateDirectoryConfigInput {
	s.OrganizationalUnitDistinguishedNames = v
	return s
}

// SetServiceAccountCredentials sets the ServiceAccountCredentials field's value.
func (s *CreateDirectoryConfigInput) SetServiceAccountCredentials(v *ServiceAccountCredentials) *CreateDirectoryConfigInput {
	s.ServiceAccountCredentials = v
	return s
}

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

	// Information about the directory configuration.
	DirectoryConfig *DirectoryConfig `type:"structure"`
}

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

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

// SetDirectoryConfig sets the DirectoryConfig field's value.
func (s *CreateDirectoryConfigOutput) SetDirectoryConfig(v *DirectoryConfig) *CreateDirectoryConfigOutput {
	s.DirectoryConfig = v
	return s
}

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

	// Specifies whether all or selected apps are entitled.
	//
	// AppVisibility is a required field
	AppVisibility *string `type:"string" required:"true" enum:"AppVisibility"`

	// The attributes of the entitlement.
	//
	// Attributes is a required field
	Attributes []*EntitlementAttribute `min:"1" type:"list" required:"true"`

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

	// The name of the entitlement.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

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

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

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

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

// SetAppVisibility sets the AppVisibility field's value.
func (s *CreateEntitlementInput) SetAppVisibility(v string) *CreateEntitlementInput {
	s.AppVisibility = &v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *CreateEntitlementInput) SetAttributes(v []*EntitlementAttribute) *CreateEntitlementInput {
	s.Attributes = v
	return s
}

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

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

// SetStackName sets the StackName field's value.
func (s *CreateEntitlementInput) SetStackName(v string) *CreateEntitlementInput {
	s.StackName = &v
	return s
}

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

	// The entitlement.
	Entitlement *Entitlement `type:"structure"`
}

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

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

// SetEntitlement sets the Entitlement field's value.
func (s *CreateEntitlementOutput) SetEntitlement(v *Entitlement) *CreateEntitlementOutput {
	s.Entitlement = v
	return s
}

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

	// The desired capacity for the fleet. This is not allowed for Elastic fleets.
	// For Elastic fleets, specify MaxConcurrentSessions instead.
	ComputeCapacity *ComputeCapacity `type:"structure"`

	// The description to display.
	Description *string `type:"string"`

	// The amount of time that a streaming session remains active after users disconnect.
	// If users try to reconnect to the streaming session after a disconnection
	// or network interruption within this time interval, they are connected to
	// their previous session. Otherwise, they are connected to a new session with
	// a new streaming instance.
	//
	// Specify a value between 60 and 360000.
	DisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The fleet name to display.
	DisplayName *string `type:"string"`

	// The name of the directory and organizational unit (OU) to use to join the
	// fleet to a Microsoft Active Directory domain. This is not allowed for Elastic
	// fleets.
	DomainJoinInfo *DomainJoinInfo `type:"structure"`

	// Enables or disables default internet access for the fleet.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The fleet type.
	//
	// ALWAYS_ON
	//
	// Provides users with instant-on access to their apps. You are charged for
	// all running instances in your fleet, even if no users are streaming apps.
	//
	// ON_DEMAND
	//
	// Provide users with access to applications after they connect, which takes
	// one to two minutes. You are charged for instance streaming when users are
	// connected and a small hourly fee for instances that are not streaming apps.
	FleetType *string `type:"string" enum:"FleetType"`

	// The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To
	// assume a role, a fleet instance calls the AWS Security Token Service (STS)
	// AssumeRole API operation and passes the ARN of the role to use. The operation
	// creates a new session with temporary credentials. AppStream 2.0 retrieves
	// the temporary credentials and creates the appstream_machine_role credential
	// profile on the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The amount of time that users can be idle (inactive) before they are disconnected
	// from their streaming session and the DisconnectTimeoutInSeconds time interval
	// begins. Users are notified before they are disconnected due to inactivity.
	// If they try to reconnect to the streaming session before the time interval
	// specified in DisconnectTimeoutInSeconds elapses, they are connected to their
	// previous session. Users are considered idle when they stop providing keyboard
	// or mouse input during their streaming session. File uploads and downloads,
	// audio in, audio out, and pixels changing do not qualify as user activity.
	// If users continue to be idle after the time interval in IdleDisconnectTimeoutInSeconds
	// elapses, they are disconnected.
	//
	// To prevent users from being disconnected due to inactivity, specify a value
	// of 0. Otherwise, specify a value between 60 and 3600. The default value is
	// 0.
	//
	// If you enable this feature, we recommend that you specify a value that corresponds
	// exactly to a whole number of minutes (for example, 60, 120, and 180). If
	// you don't do this, the value is rounded to the nearest minute. For example,
	// if you specify a value of 70, users are disconnected after 1 minute of inactivity.
	// If you specify a value that is at the midpoint between two different minutes,
	// the value is rounded up. For example, if you specify a value of 90, users
	// are disconnected after 2 minutes of inactivity.
	IdleDisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The ARN of the public, private, or shared image to use.
	ImageArn *string `type:"string"`

	// The name of the image used to create the fleet.
	ImageName *string `type:"string"`

	// The instance type to use when launching fleet instances. The following instance
	// types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	//
	//    * stream.compute.large
	//
	//    * stream.compute.xlarge
	//
	//    * stream.compute.2xlarge
	//
	//    * stream.compute.4xlarge
	//
	//    * stream.compute.8xlarge
	//
	//    * stream.memory.large
	//
	//    * stream.memory.xlarge
	//
	//    * stream.memory.2xlarge
	//
	//    * stream.memory.4xlarge
	//
	//    * stream.memory.8xlarge
	//
	//    * stream.memory.z1d.large
	//
	//    * stream.memory.z1d.xlarge
	//
	//    * stream.memory.z1d.2xlarge
	//
	//    * stream.memory.z1d.3xlarge
	//
	//    * stream.memory.z1d.6xlarge
	//
	//    * stream.memory.z1d.12xlarge
	//
	//    * stream.graphics-design.large
	//
	//    * stream.graphics-design.xlarge
	//
	//    * stream.graphics-design.2xlarge
	//
	//    * stream.graphics-design.4xlarge
	//
	//    * stream.graphics-desktop.2xlarge
	//
	//    * stream.graphics.g4dn.xlarge
	//
	//    * stream.graphics.g4dn.2xlarge
	//
	//    * stream.graphics.g4dn.4xlarge
	//
	//    * stream.graphics.g4dn.8xlarge
	//
	//    * stream.graphics.g4dn.12xlarge
	//
	//    * stream.graphics.g4dn.16xlarge
	//
	//    * stream.graphics-pro.4xlarge
	//
	//    * stream.graphics-pro.8xlarge
	//
	//    * stream.graphics-pro.16xlarge
	//
	// The following instance types are available for Elastic fleets:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	//
	// InstanceType is a required field
	InstanceType *string `min:"1" type:"string" required:"true"`

	// The maximum concurrent sessions of the Elastic fleet. This is required for
	// Elastic fleets, and not allowed for other fleet types.
	MaxConcurrentSessions *int64 `type:"integer"`

	// The maximum number of user sessions on an instance. This only applies to
	// multi-session fleets.
	MaxSessionsPerInstance *int64 `type:"integer"`

	// The maximum amount of time that a streaming session can remain active, in
	// seconds. If users are still connected to a streaming instance five minutes
	// before this limit is reached, they are prompted to save any open documents
	// before being disconnected. After this time elapses, the instance is terminated
	// and replaced by a new instance.
	//
	// Specify a value between 600 and 432000.
	MaxUserDurationInSeconds *int64 `type:"integer"`

	// A unique name for the fleet.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for
	// Elastic fleets.
	Platform *string `type:"string" enum:"PlatformType"`

	// The S3 location of the session scripts configuration zip file. This only
	// applies to Elastic fleets.
	SessionScriptS3Location *S3Location `type:"structure"`

	// The AppStream 2.0 view that is displayed to your users when they stream from
	// the fleet. When APP is specified, only the windows of applications opened
	// by users display. When DESKTOP is specified, the standard desktop that is
	// provided by the operating system displays.
	//
	// The default value is APP.
	StreamView *string `type:"string" enum:"StreamView"`

	// The tags to associate with the fleet. A tag is a key-value pair, and the
	// value is optional. For example, Environment=Test. If you do not specify a
	// value, Environment=.
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// For more information, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	Tags map[string]*string `min:"1" type:"map"`

	// The USB device filter strings that specify which USB devices a user can redirect
	// to the fleet streaming session, when using the Windows native client. This
	// is allowed but not required for Elastic fleets.
	UsbDeviceFilterStrings []*string `type:"list"`

	// The VPC configuration for the fleet. This is required for Elastic fleets,
	// but not required for other fleet types. Elastic fleets require that you specify
	// at least two subnets in different availability zones.
	VpcConfig *VpcConfig `type:"structure"`
}

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

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

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

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

// SetComputeCapacity sets the ComputeCapacity field's value.
func (s *CreateFleetInput) SetComputeCapacity(v *ComputeCapacity) *CreateFleetInput {
	s.ComputeCapacity = v
	return s
}

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

// SetDisconnectTimeoutInSeconds sets the DisconnectTimeoutInSeconds field's value.
func (s *CreateFleetInput) SetDisconnectTimeoutInSeconds(v int64) *CreateFleetInput {
	s.DisconnectTimeoutInSeconds = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *CreateFleetInput) SetDisplayName(v string) *CreateFleetInput {
	s.DisplayName = &v
	return s
}

// SetDomainJoinInfo sets the DomainJoinInfo field's value.
func (s *CreateFleetInput) SetDomainJoinInfo(v *DomainJoinInfo) *CreateFleetInput {
	s.DomainJoinInfo = v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *CreateFleetInput) SetEnableDefaultInternetAccess(v bool) *CreateFleetInput {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetFleetType sets the FleetType field's value.
func (s *CreateFleetInput) SetFleetType(v string) *CreateFleetInput {
	s.FleetType = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *CreateFleetInput) SetIamRoleArn(v string) *CreateFleetInput {
	s.IamRoleArn = &v
	return s
}

// SetIdleDisconnectTimeoutInSeconds sets the IdleDisconnectTimeoutInSeconds field's value.
func (s *CreateFleetInput) SetIdleDisconnectTimeoutInSeconds(v int64) *CreateFleetInput {
	s.IdleDisconnectTimeoutInSeconds = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *CreateFleetInput) SetImageArn(v string) *CreateFleetInput {
	s.ImageArn = &v
	return s
}

// SetImageName sets the ImageName field's value.
func (s *CreateFleetInput) SetImageName(v string) *CreateFleetInput {
	s.ImageName = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *CreateFleetInput) SetInstanceType(v string) *CreateFleetInput {
	s.InstanceType = &v
	return s
}

// SetMaxConcurrentSessions sets the MaxConcurrentSessions field's value.
func (s *CreateFleetInput) SetMaxConcurrentSessions(v int64) *CreateFleetInput {
	s.MaxConcurrentSessions = &v
	return s
}

// SetMaxSessionsPerInstance sets the MaxSessionsPerInstance field's value.
func (s *CreateFleetInput) SetMaxSessionsPerInstance(v int64) *CreateFleetInput {
	s.MaxSessionsPerInstance = &v
	return s
}

// SetMaxUserDurationInSeconds sets the MaxUserDurationInSeconds field's value.
func (s *CreateFleetInput) SetMaxUserDurationInSeconds(v int64) *CreateFleetInput {
	s.MaxUserDurationInSeconds = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *CreateFleetInput) SetPlatform(v string) *CreateFleetInput {
	s.Platform = &v
	return s
}

// SetSessionScriptS3Location sets the SessionScriptS3Location field's value.
func (s *CreateFleetInput) SetSessionScriptS3Location(v *S3Location) *CreateFleetInput {
	s.SessionScriptS3Location = v
	return s
}

// SetStreamView sets the StreamView field's value.
func (s *CreateFleetInput) SetStreamView(v string) *CreateFleetInput {
	s.StreamView = &v
	return s
}

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

// SetUsbDeviceFilterStrings sets the UsbDeviceFilterStrings field's value.
func (s *CreateFleetInput) SetUsbDeviceFilterStrings(v []*string) *CreateFleetInput {
	s.UsbDeviceFilterStrings = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *CreateFleetInput) SetVpcConfig(v *VpcConfig) *CreateFleetInput {
	s.VpcConfig = v
	return s
}

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

	// Information about the fleet.
	Fleet *Fleet `type:"structure"`
}

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

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

// SetFleet sets the Fleet field's value.
func (s *CreateFleetOutput) SetFleet(v *Fleet) *CreateFleetOutput {
	s.Fleet = v
	return s
}

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

	// The list of interface VPC endpoint (interface endpoint) objects. Administrators
	// can connect to the image builder only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The version of the AppStream 2.0 agent to use for this image builder. To
	// use the latest version of the AppStream 2.0 agent, specify [LATEST].
	AppstreamAgentVersion *string `min:"1" type:"string"`

	// The description to display.
	Description *string `type:"string"`

	// The image builder name to display.
	DisplayName *string `type:"string"`

	// The name of the directory and organizational unit (OU) to use to join the
	// image builder to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo `type:"structure"`

	// Enables or disables default internet access for the image builder.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role to apply to the image builder.
	// To assume a role, the image builder calls the AWS Security Token Service
	// (STS) AssumeRole API operation and passes the ARN of the role to use. The
	// operation creates a new session with temporary credentials. AppStream 2.0
	// retrieves the temporary credentials and creates the appstream_machine_role
	// credential profile on the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The ARN of the public, private, or shared image to use.
	ImageArn *string `type:"string"`

	// The name of the image used to create the image builder.
	ImageName *string `min:"1" type:"string"`

	// The instance type to use when launching the image builder. The following
	// instance types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.compute.large
	//
	//    * stream.compute.xlarge
	//
	//    * stream.compute.2xlarge
	//
	//    * stream.compute.4xlarge
	//
	//    * stream.compute.8xlarge
	//
	//    * stream.memory.large
	//
	//    * stream.memory.xlarge
	//
	//    * stream.memory.2xlarge
	//
	//    * stream.memory.4xlarge
	//
	//    * stream.memory.8xlarge
	//
	//    * stream.memory.z1d.large
	//
	//    * stream.memory.z1d.xlarge
	//
	//    * stream.memory.z1d.2xlarge
	//
	//    * stream.memory.z1d.3xlarge
	//
	//    * stream.memory.z1d.6xlarge
	//
	//    * stream.memory.z1d.12xlarge
	//
	//    * stream.graphics-design.large
	//
	//    * stream.graphics-design.xlarge
	//
	//    * stream.graphics-design.2xlarge
	//
	//    * stream.graphics-design.4xlarge
	//
	//    * stream.graphics-desktop.2xlarge
	//
	//    * stream.graphics.g4dn.xlarge
	//
	//    * stream.graphics.g4dn.2xlarge
	//
	//    * stream.graphics.g4dn.4xlarge
	//
	//    * stream.graphics.g4dn.8xlarge
	//
	//    * stream.graphics.g4dn.12xlarge
	//
	//    * stream.graphics.g4dn.16xlarge
	//
	//    * stream.graphics-pro.4xlarge
	//
	//    * stream.graphics-pro.8xlarge
	//
	//    * stream.graphics-pro.16xlarge
	//
	// InstanceType is a required field
	InstanceType *string `min:"1" type:"string" required:"true"`

	// A unique name for the image builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The tags to associate with the image builder. A tag is a key-value pair,
	// and the value is optional. For example, Environment=Test. If you do not specify
	// a value, Environment=.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	Tags map[string]*string `min:"1" type:"map"`

	// The VPC configuration for the image builder. You can specify only one subnet.
	VpcConfig *VpcConfig `type:"structure"`
}

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

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

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

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

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *CreateImageBuilderInput) SetAccessEndpoints(v []*AccessEndpoint) *CreateImageBuilderInput {
	s.AccessEndpoints = v
	return s
}

// SetAppstreamAgentVersion sets the AppstreamAgentVersion field's value.
func (s *CreateImageBuilderInput) SetAppstreamAgentVersion(v string) *CreateImageBuilderInput {
	s.AppstreamAgentVersion = &v
	return s
}

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

// SetDisplayName sets the DisplayName field's value.
func (s *CreateImageBuilderInput) SetDisplayName(v string) *CreateImageBuilderInput {
	s.DisplayName = &v
	return s
}

// SetDomainJoinInfo sets the DomainJoinInfo field's value.
func (s *CreateImageBuilderInput) SetDomainJoinInfo(v *DomainJoinInfo) *CreateImageBuilderInput {
	s.DomainJoinInfo = v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *CreateImageBuilderInput) SetEnableDefaultInternetAccess(v bool) *CreateImageBuilderInput {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *CreateImageBuilderInput) SetIamRoleArn(v string) *CreateImageBuilderInput {
	s.IamRoleArn = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *CreateImageBuilderInput) SetImageArn(v string) *CreateImageBuilderInput {
	s.ImageArn = &v
	return s
}

// SetImageName sets the ImageName field's value.
func (s *CreateImageBuilderInput) SetImageName(v string) *CreateImageBuilderInput {
	s.ImageName = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *CreateImageBuilderInput) SetInstanceType(v string) *CreateImageBuilderInput {
	s.InstanceType = &v
	return s
}

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

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

// SetVpcConfig sets the VpcConfig field's value.
func (s *CreateImageBuilderInput) SetVpcConfig(v *VpcConfig) *CreateImageBuilderInput {
	s.VpcConfig = v
	return s
}

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

	// Information about the image builder.
	ImageBuilder *ImageBuilder `type:"structure"`
}

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

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

// SetImageBuilder sets the ImageBuilder field's value.
func (s *CreateImageBuilderOutput) SetImageBuilder(v *ImageBuilder) *CreateImageBuilderOutput {
	s.ImageBuilder = v
	return s
}

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

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

	// The time that the streaming URL will be valid, in seconds. Specify a value
	// between 1 and 604800 seconds. The default is 3600 seconds.
	Validity *int64 `type:"long"`
}

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

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

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

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

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

// SetValidity sets the Validity field's value.
func (s *CreateImageBuilderStreamingURLInput) SetValidity(v int64) *CreateImageBuilderStreamingURLInput {
	s.Validity = &v
	return s
}

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

	// The elapsed time, in seconds after the Unix epoch, when this URL expires.
	Expires *time.Time `type:"timestamp"`

	// The URL to start the AppStream 2.0 streaming session.
	StreamingURL *string `min:"1" type:"string"`
}

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

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

// SetExpires sets the Expires field's value.
func (s *CreateImageBuilderStreamingURLOutput) SetExpires(v time.Time) *CreateImageBuilderStreamingURLOutput {
	s.Expires = &v
	return s
}

// SetStreamingURL sets the StreamingURL field's value.
func (s *CreateImageBuilderStreamingURLOutput) SetStreamingURL(v string) *CreateImageBuilderStreamingURLOutput {
	s.StreamingURL = &v
	return s
}

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

	// The list of interface VPC endpoint (interface endpoint) objects. Users of
	// the stack can connect to AppStream 2.0 only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The persistent application settings for users of a stack. When these settings
	// are enabled, changes that users make to applications and Windows settings
	// are automatically saved after each session and applied to the next session.
	ApplicationSettings *ApplicationSettings `type:"structure"`

	// The description to display.
	Description *string `type:"string"`

	// The stack name to display.
	DisplayName *string `type:"string"`

	// The domains where AppStream 2.0 streaming sessions can be embedded in an
	// iframe. You must approve the domains that you want to host embedded AppStream
	// 2.0 streaming sessions.
	EmbedHostDomains []*string `min:"1" type:"list"`

	// The URL that users are redirected to after they click the Send Feedback link.
	// If no URL is specified, no Send Feedback link is displayed.
	FeedbackURL *string `type:"string"`

	// The name of the stack.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The URL that users are redirected to after their streaming session ends.
	RedirectURL *string `type:"string"`

	// The storage connectors to enable.
	StorageConnectors []*StorageConnector `type:"list"`

	// The streaming protocol you want your stack to prefer. This can be UDP or
	// TCP. Currently, UDP is only supported in the Windows native client.
	StreamingExperienceSettings *StreamingExperienceSettings `type:"structure"`

	// The tags to associate with the stack. A tag is a key-value pair, and the
	// value is optional. For example, Environment=Test. If you do not specify a
	// value, Environment=.
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	Tags map[string]*string `min:"1" type:"map"`

	// The actions that are enabled or disabled for users during their streaming
	// sessions. By default, these actions are enabled.
	UserSettings []*UserSetting `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 CreateStackInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *CreateStackInput) SetAccessEndpoints(v []*AccessEndpoint) *CreateStackInput {
	s.AccessEndpoints = v
	return s
}

// SetApplicationSettings sets the ApplicationSettings field's value.
func (s *CreateStackInput) SetApplicationSettings(v *ApplicationSettings) *CreateStackInput {
	s.ApplicationSettings = v
	return s
}

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

// SetDisplayName sets the DisplayName field's value.
func (s *CreateStackInput) SetDisplayName(v string) *CreateStackInput {
	s.DisplayName = &v
	return s
}

// SetEmbedHostDomains sets the EmbedHostDomains field's value.
func (s *CreateStackInput) SetEmbedHostDomains(v []*string) *CreateStackInput {
	s.EmbedHostDomains = v
	return s
}

// SetFeedbackURL sets the FeedbackURL field's value.
func (s *CreateStackInput) SetFeedbackURL(v string) *CreateStackInput {
	s.FeedbackURL = &v
	return s
}

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

// SetRedirectURL sets the RedirectURL field's value.
func (s *CreateStackInput) SetRedirectURL(v string) *CreateStackInput {
	s.RedirectURL = &v
	return s
}

// SetStorageConnectors sets the StorageConnectors field's value.
func (s *CreateStackInput) SetStorageConnectors(v []*StorageConnector) *CreateStackInput {
	s.StorageConnectors = v
	return s
}

// SetStreamingExperienceSettings sets the StreamingExperienceSettings field's value.
func (s *CreateStackInput) SetStreamingExperienceSettings(v *StreamingExperienceSettings) *CreateStackInput {
	s.StreamingExperienceSettings = v
	return s
}

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

// SetUserSettings sets the UserSettings field's value.
func (s *CreateStackInput) SetUserSettings(v []*UserSetting) *CreateStackInput {
	s.UserSettings = v
	return s
}

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

	// Information about the stack.
	Stack *Stack `type:"structure"`
}

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

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

// SetStack sets the Stack field's value.
func (s *CreateStackOutput) SetStack(v *Stack) *CreateStackOutput {
	s.Stack = v
	return s
}

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

	// The name of the application to launch after the session starts. This is the
	// name that you specified as Name in the Image Assistant. If your fleet is
	// enabled for the Desktop stream view, you can also choose to launch directly
	// to the operating system desktop. To do so, specify Desktop.
	ApplicationId *string `min:"1" type:"string"`

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`

	// The session context. For more information, see Session Context (https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html#managing-stacks-fleets-parameters)
	// in the Amazon AppStream 2.0 Administration Guide.
	SessionContext *string `min:"1" type:"string"`

	// The name of the stack.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`

	// The identifier of the user.
	//
	// UserId is a required field
	UserId *string `min:"2" type:"string" required:"true"`

	// The time that the streaming URL will be valid, in seconds. Specify a value
	// between 1 and 604800 seconds. The default is 60 seconds.
	Validity *int64 `type:"long"`
}

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

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

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateStreamingURLInput) SetApplicationId(v string) *CreateStreamingURLInput {
	s.ApplicationId = &v
	return s
}

// SetFleetName sets the FleetName field's value.
func (s *CreateStreamingURLInput) SetFleetName(v string) *CreateStreamingURLInput {
	s.FleetName = &v
	return s
}

// SetSessionContext sets the SessionContext field's value.
func (s *CreateStreamingURLInput) SetSessionContext(v string) *CreateStreamingURLInput {
	s.SessionContext = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *CreateStreamingURLInput) SetStackName(v string) *CreateStreamingURLInput {
	s.StackName = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *CreateStreamingURLInput) SetUserId(v string) *CreateStreamingURLInput {
	s.UserId = &v
	return s
}

// SetValidity sets the Validity field's value.
func (s *CreateStreamingURLInput) SetValidity(v int64) *CreateStreamingURLInput {
	s.Validity = &v
	return s
}

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

	// The elapsed time, in seconds after the Unix epoch, when this URL expires.
	Expires *time.Time `type:"timestamp"`

	// The URL to start the AppStream 2.0 streaming session.
	StreamingURL *string `min:"1" type:"string"`
}

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

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

// SetExpires sets the Expires field's value.
func (s *CreateStreamingURLOutput) SetExpires(v time.Time) *CreateStreamingURLOutput {
	s.Expires = &v
	return s
}

// SetStreamingURL sets the StreamingURL field's value.
func (s *CreateStreamingURLOutput) SetStreamingURL(v string) *CreateStreamingURLOutput {
	s.StreamingURL = &v
	return s
}

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

	// Indicates whether to display the status of image update availability before
	// AppStream 2.0 initiates the process of creating a new updated image. If this
	// value is set to true, AppStream 2.0 displays whether image updates are available.
	// If this value is set to false, AppStream 2.0 initiates the process of creating
	// a new updated image without displaying whether image updates are available.
	DryRun *bool `locationName:"dryRun" type:"boolean"`

	// The name of the image to update.
	//
	// ExistingImageName is a required field
	ExistingImageName *string `locationName:"existingImageName" type:"string" required:"true"`

	// The description to display for the new image.
	NewImageDescription *string `locationName:"newImageDescription" type:"string"`

	// The name to display for the new image.
	NewImageDisplayName *string `locationName:"newImageDisplayName" type:"string"`

	// The name of the new image. The name must be unique within the AWS account
	// and Region.
	//
	// NewImageName is a required field
	NewImageName *string `locationName:"newImageName" type:"string" required:"true"`

	// The tags to associate with the new image. A tag is a key-value pair, and
	// the value is optional. For example, Environment=Test. If you do not specify
	// a value, Environment=.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	NewImageTags map[string]*string `locationName:"newImageTags" min:"1" 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 CreateUpdatedImageInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDryRun sets the DryRun field's value.
func (s *CreateUpdatedImageInput) SetDryRun(v bool) *CreateUpdatedImageInput {
	s.DryRun = &v
	return s
}

// SetExistingImageName sets the ExistingImageName field's value.
func (s *CreateUpdatedImageInput) SetExistingImageName(v string) *CreateUpdatedImageInput {
	s.ExistingImageName = &v
	return s
}

// SetNewImageDescription sets the NewImageDescription field's value.
func (s *CreateUpdatedImageInput) SetNewImageDescription(v string) *CreateUpdatedImageInput {
	s.NewImageDescription = &v
	return s
}

// SetNewImageDisplayName sets the NewImageDisplayName field's value.
func (s *CreateUpdatedImageInput) SetNewImageDisplayName(v string) *CreateUpdatedImageInput {
	s.NewImageDisplayName = &v
	return s
}

// SetNewImageName sets the NewImageName field's value.
func (s *CreateUpdatedImageInput) SetNewImageName(v string) *CreateUpdatedImageInput {
	s.NewImageName = &v
	return s
}

// SetNewImageTags sets the NewImageTags field's value.
func (s *CreateUpdatedImageInput) SetNewImageTags(v map[string]*string) *CreateUpdatedImageInput {
	s.NewImageTags = v
	return s
}

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

	// Indicates whether a new image can be created.
	CanUpdateImage *bool `locationName:"canUpdateImage" type:"boolean"`

	// Describes an image.
	Image *Image `locationName:"image" type:"structure"`
}

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

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

// SetCanUpdateImage sets the CanUpdateImage field's value.
func (s *CreateUpdatedImageOutput) SetCanUpdateImage(v bool) *CreateUpdatedImageOutput {
	s.CanUpdateImage = &v
	return s
}

// SetImage sets the Image field's value.
func (s *CreateUpdatedImageOutput) SetImage(v *Image) *CreateUpdatedImageOutput {
	s.Image = v
	return s
}

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

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

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

	// The Amazon S3 bucket where generated reports are stored.
	//
	// If you enabled on-instance session scripts and Amazon S3 logging for your
	// session script configuration, AppStream 2.0 created an S3 bucket to store
	// the script output. The bucket is unique to your account and Region. When
	// you enable usage reporting in this case, AppStream 2.0 uses the same bucket
	// to store your usage reports. If you haven't already enabled on-instance session
	// scripts, when you enable usage reports, AppStream 2.0 creates a new S3 bucket.
	S3BucketName *string `min:"1" type:"string"`

	// The schedule for generating usage reports.
	Schedule *string `type:"string" enum:"UsageReportSchedule"`
}

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

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

// SetS3BucketName sets the S3BucketName field's value.
func (s *CreateUsageReportSubscriptionOutput) SetS3BucketName(v string) *CreateUsageReportSubscriptionOutput {
	s.S3BucketName = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateUsageReportSubscriptionOutput) SetSchedule(v string) *CreateUsageReportSubscriptionOutput {
	s.Schedule = &v
	return s
}

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

	// The authentication type for the user. You must specify USERPOOL.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The first name, or given name, of the user.
	//
	// FirstName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateUserInput's
	// String and GoString methods.
	FirstName *string `type:"string" sensitive:"true"`

	// The last name, or surname, of the user.
	//
	// LastName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateUserInput's
	// String and GoString methods.
	LastName *string `type:"string" sensitive:"true"`

	// The action to take for the welcome email that is sent to a user after the
	// user is created in the user pool. If you specify SUPPRESS, no email is sent.
	// If you specify RESEND, do not specify the first name or last name of the
	// user. If the value is null, the email is sent.
	//
	// The temporary password in the welcome email is valid for only 7 days. If
	// users don’t set their passwords within 7 days, you must send them a new
	// welcome email.
	MessageAction *string `type:"string" enum:"MessageAction"`

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive. During login, if they specify
	// an email address that doesn't use the same capitalization as the email address
	// specified when their user pool account was created, a "user does not exist"
	// error message displays.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateUserInput's
	// String and GoString methods.
	//
	// UserName is a required field
	UserName *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *CreateUserInput) SetAuthenticationType(v string) *CreateUserInput {
	s.AuthenticationType = &v
	return s
}

// SetFirstName sets the FirstName field's value.
func (s *CreateUserInput) SetFirstName(v string) *CreateUserInput {
	s.FirstName = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *CreateUserInput) SetLastName(v string) *CreateUserInput {
	s.LastName = &v
	return s
}

// SetMessageAction sets the MessageAction field's value.
func (s *CreateUserInput) SetMessageAction(v string) *CreateUserInput {
	s.MessageAction = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *CreateUserInput) SetUserName(v string) *CreateUserInput {
	s.UserName = &v
	return s
}

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

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

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

	// The name of the app block builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

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

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

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

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

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

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

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

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

	// The name of the app block.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

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

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

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

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

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

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

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

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

	// The name of the application.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

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

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

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

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

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

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

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

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

	// The name of the directory configuration.
	//
	// DirectoryName is a required field
	DirectoryName *string `type:"string" required:"true"`
}

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

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

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

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

// SetDirectoryName sets the DirectoryName field's value.
func (s *DeleteDirectoryConfigInput) SetDirectoryName(v string) *DeleteDirectoryConfigInput {
	s.DirectoryName = &v
	return s
}

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

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

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

	// The name of the entitlement.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

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

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

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

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

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

// SetStackName sets the StackName field's value.
func (s *DeleteEntitlementInput) SetStackName(v string) *DeleteEntitlementInput {
	s.StackName = &v
	return s
}

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

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

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

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

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

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

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

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

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

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

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

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

	// The name of the image builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

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

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

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

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

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

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

	// Information about the image builder.
	ImageBuilder *ImageBuilder `type:"structure"`
}

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

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

// SetImageBuilder sets the ImageBuilder field's value.
func (s *DeleteImageBuilderOutput) SetImageBuilder(v *ImageBuilder) *DeleteImageBuilderOutput {
	s.ImageBuilder = v
	return s
}

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

	// The name of the image.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

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

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

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

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

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

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

	// Information about the image.
	Image *Image `type:"structure"`
}

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

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

// SetImage sets the Image field's value.
func (s *DeleteImageOutput) SetImage(v *Image) *DeleteImageOutput {
	s.Image = v
	return s
}

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

	// The name of the private image.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The 12-digit identifier of the AWS account for which to delete image permissions.
	//
	// SharedAccountId is a required field
	SharedAccountId *string `type:"string" required:"true"`
}

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

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

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

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

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

// SetSharedAccountId sets the SharedAccountId field's value.
func (s *DeleteImagePermissionsInput) SetSharedAccountId(v string) *DeleteImagePermissionsInput {
	s.SharedAccountId = &v
	return s
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// The authentication type for the user. You must specify USERPOOL.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DeleteUserInput's
	// String and GoString methods.
	//
	// UserName is a required field
	UserName *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *DeleteUserInput) SetAuthenticationType(v string) *DeleteUserInput {
	s.AuthenticationType = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DeleteUserInput) SetUserName(v string) *DeleteUserInput {
	s.UserName = &v
	return s
}

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

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

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

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

	// The ARN of the app block.
	AppBlockArn *string `type:"string"`

	// The name of the app block builder.
	AppBlockBuilderName *string `type:"string"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetAppBlockArn sets the AppBlockArn field's value.
func (s *DescribeAppBlockBuilderAppBlockAssociationsInput) SetAppBlockArn(v string) *DescribeAppBlockBuilderAppBlockAssociationsInput {
	s.AppBlockArn = &v
	return s
}

// SetAppBlockBuilderName sets the AppBlockBuilderName field's value.
func (s *DescribeAppBlockBuilderAppBlockAssociationsInput) SetAppBlockBuilderName(v string) *DescribeAppBlockBuilderAppBlockAssociationsInput {
	s.AppBlockBuilderName = &v
	return s
}

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

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

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

	// This list of app block builders associated with app blocks.
	AppBlockBuilderAppBlockAssociations []*AppBlockBuilderAppBlockAssociation `min:"1" type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetAppBlockBuilderAppBlockAssociations sets the AppBlockBuilderAppBlockAssociations field's value.
func (s *DescribeAppBlockBuilderAppBlockAssociationsOutput) SetAppBlockBuilderAppBlockAssociations(v []*AppBlockBuilderAppBlockAssociation) *DescribeAppBlockBuilderAppBlockAssociationsOutput {
	s.AppBlockBuilderAppBlockAssociations = v
	return s
}

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

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

	// The maximum size of each page of results. The maximum value is 25.
	MaxResults *int64 `type:"integer"`

	// The names of the app block builders.
	Names []*string `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

// SetNames sets the Names field's value.
func (s *DescribeAppBlockBuildersInput) SetNames(v []*string) *DescribeAppBlockBuildersInput {
	s.Names = v
	return s
}

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

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

	// The list that describes one or more app block builders.
	AppBlockBuilders []*AppBlockBuilder `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetAppBlockBuilders sets the AppBlockBuilders field's value.
func (s *DescribeAppBlockBuildersOutput) SetAppBlockBuilders(v []*AppBlockBuilder) *DescribeAppBlockBuildersOutput {
	s.AppBlockBuilders = v
	return s
}

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

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

	// The ARNs of the app blocks.
	Arns []*string `type:"list"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetArns sets the Arns field's value.
func (s *DescribeAppBlocksInput) SetArns(v []*string) *DescribeAppBlocksInput {
	s.Arns = v
	return s
}

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

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

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

	// The app blocks in the list.
	AppBlocks []*AppBlock `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetAppBlocks sets the AppBlocks field's value.
func (s *DescribeAppBlocksOutput) SetAppBlocks(v []*AppBlock) *DescribeAppBlocksOutput {
	s.AppBlocks = v
	return s
}

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

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

	// The ARN of the application.
	ApplicationArn *string `type:"string"`

	// The name of the fleet.
	FleetName *string `type:"string"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

// SetFleetName sets the FleetName field's value.
func (s *DescribeApplicationFleetAssociationsInput) SetFleetName(v string) *DescribeApplicationFleetAssociationsInput {
	s.FleetName = &v
	return s
}

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

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

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

	// The application fleet associations in the list.
	ApplicationFleetAssociations []*ApplicationFleetAssociation `min:"1" type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetApplicationFleetAssociations sets the ApplicationFleetAssociations field's value.
func (s *DescribeApplicationFleetAssociationsOutput) SetApplicationFleetAssociations(v []*ApplicationFleetAssociation) *DescribeApplicationFleetAssociationsOutput {
	s.ApplicationFleetAssociations = v
	return s
}

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

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

	// The ARNs for the applications.
	Arns []*string `type:"list"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetArns sets the Arns field's value.
func (s *DescribeApplicationsInput) SetArns(v []*string) *DescribeApplicationsInput {
	s.Arns = v
	return s
}

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

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

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

	// The applications in the list.
	Applications []*Application `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

	// The directory names.
	DirectoryNames []*string `type:"list"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetDirectoryNames sets the DirectoryNames field's value.
func (s *DescribeDirectoryConfigsInput) SetDirectoryNames(v []*string) *DescribeDirectoryConfigsInput {
	s.DirectoryNames = v
	return s
}

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

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

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

	// Information about the directory configurations. Note that although the response
	// syntax in this topic includes the account password, this password is not
	// returned in the actual response.
	DirectoryConfigs []*DirectoryConfig `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetDirectoryConfigs sets the DirectoryConfigs field's value.
func (s *DescribeDirectoryConfigsOutput) SetDirectoryConfigs(v []*DirectoryConfig) *DescribeDirectoryConfigsOutput {
	s.DirectoryConfigs = v
	return s
}

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

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

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The name of the entitlement.
	Name *string `type:"string"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

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

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

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

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

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

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

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

// SetStackName sets the StackName field's value.
func (s *DescribeEntitlementsInput) SetStackName(v string) *DescribeEntitlementsInput {
	s.StackName = &v
	return s
}

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

	// The entitlements.
	Entitlements []*Entitlement `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetEntitlements sets the Entitlements field's value.
func (s *DescribeEntitlementsOutput) SetEntitlements(v []*Entitlement) *DescribeEntitlementsOutput {
	s.Entitlements = v
	return s
}

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

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

	// The names of the fleets to describe.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetNames sets the Names field's value.
func (s *DescribeFleetsInput) SetNames(v []*string) *DescribeFleetsInput {
	s.Names = v
	return s
}

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

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

	// Information about the fleets.
	Fleets []*Fleet `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetFleets sets the Fleets field's value.
func (s *DescribeFleetsOutput) SetFleets(v []*Fleet) *DescribeFleetsOutput {
	s.Fleets = v
	return s
}

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

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

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The names of the image builders to describe.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

// SetNames sets the Names field's value.
func (s *DescribeImageBuildersInput) SetNames(v []*string) *DescribeImageBuildersInput {
	s.Names = v
	return s
}

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

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

	// Information about the image builders.
	ImageBuilders []*ImageBuilder `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetImageBuilders sets the ImageBuilders field's value.
func (s *DescribeImageBuildersOutput) SetImageBuilders(v []*ImageBuilder) *DescribeImageBuildersOutput {
	s.ImageBuilders = v
	return s
}

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

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

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The name of the private image for which to describe permissions. The image
	// must be one that you own.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`

	// The 12-digit identifier of one or more AWS accounts with which the image
	// is shared.
	SharedAwsAccountIds []*string `min:"1" type:"list"`
}

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

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

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

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

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

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

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

// SetSharedAwsAccountIds sets the SharedAwsAccountIds field's value.
func (s *DescribeImagePermissionsInput) SetSharedAwsAccountIds(v []*string) *DescribeImagePermissionsInput {
	s.SharedAwsAccountIds = v
	return s
}

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

	// The name of the private image.
	Name *string `type:"string"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// The permissions for a private image that you own.
	SharedImagePermissionsList []*SharedImagePermissions `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 DescribeImagePermissionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSharedImagePermissionsList sets the SharedImagePermissionsList field's value.
func (s *DescribeImagePermissionsOutput) SetSharedImagePermissionsList(v []*SharedImagePermissions) *DescribeImagePermissionsOutput {
	s.SharedImagePermissionsList = v
	return s
}

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

	// The ARNs of the public, private, and shared images to describe.
	Arns []*string `type:"list"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The names of the public or private images to describe.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`

	// The type of image (public, private, or shared) to describe.
	Type *string `type:"string" enum:"VisibilityType"`
}

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

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

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

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

// SetArns sets the Arns field's value.
func (s *DescribeImagesInput) SetArns(v []*string) *DescribeImagesInput {
	s.Arns = v
	return s
}

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

// SetNames sets the Names field's value.
func (s *DescribeImagesInput) SetNames(v []*string) *DescribeImagesInput {
	s.Names = v
	return s
}

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

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

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

	// Information about the images.
	Images []*Image `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetImages sets the Images field's value.
func (s *DescribeImagesOutput) SetImages(v []*Image) *DescribeImagesOutput {
	s.Images = v
	return s
}

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

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

	// The authentication method. Specify API for a user authenticated using a streaming
	// URL or SAML for a SAML federated user. The default is to authenticate users
	// using a streaming URL.
	AuthenticationType *string `type:"string" enum:"AuthenticationType"`

	// The name of the fleet. This value is case-sensitive.
	//
	// FleetName is a required field
	FleetName *string `type:"string" required:"true"`

	// The identifier for the instance hosting the session.
	InstanceId *string `min:"1" type:"string"`

	// The size of each page of results. The default value is 20 and the maximum
	// value is 50.
	Limit *int64 `type:"integer"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`

	// The name of the stack. This value is case-sensitive.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`

	// The user identifier (ID). If you specify a user ID, you must also specify
	// the authentication type.
	UserId *string `min:"2" type:"string"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *DescribeSessionsInput) SetAuthenticationType(v string) *DescribeSessionsInput {
	s.AuthenticationType = &v
	return s
}

// SetFleetName sets the FleetName field's value.
func (s *DescribeSessionsInput) SetFleetName(v string) *DescribeSessionsInput {
	s.FleetName = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeSessionsInput) SetInstanceId(v string) *DescribeSessionsInput {
	s.InstanceId = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *DescribeSessionsInput) SetLimit(v int64) *DescribeSessionsInput {
	s.Limit = &v
	return s
}

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

// SetStackName sets the StackName field's value.
func (s *DescribeSessionsInput) SetStackName(v string) *DescribeSessionsInput {
	s.StackName = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DescribeSessionsInput) SetUserId(v string) *DescribeSessionsInput {
	s.UserId = &v
	return s
}

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

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// Information about the streaming sessions.
	Sessions []*Session `type:"list"`
}

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

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

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

// SetSessions sets the Sessions field's value.
func (s *DescribeSessionsOutput) SetSessions(v []*Session) *DescribeSessionsOutput {
	s.Sessions = v
	return s
}

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

	// The names of the stacks to describe.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetNames sets the Names field's value.
func (s *DescribeStacksInput) SetNames(v []*string) *DescribeStacksInput {
	s.Names = v
	return s
}

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

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

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// Information about the stacks.
	Stacks []*Stack `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 DescribeStacksOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetStacks sets the Stacks field's value.
func (s *DescribeStacksOutput) SetStacks(v []*Stack) *DescribeStacksOutput {
	s.Stacks = v
	return s
}

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

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// Information about the usage report subscription.
	UsageReportSubscriptions []*UsageReportSubscription `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 DescribeUsageReportSubscriptionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUsageReportSubscriptions sets the UsageReportSubscriptions field's value.
func (s *DescribeUsageReportSubscriptionsOutput) SetUsageReportSubscriptions(v []*UsageReportSubscription) *DescribeUsageReportSubscriptionsOutput {
	s.UsageReportSubscriptions = v
	return s
}

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

	// The authentication type for the user who is associated with the stack. You
	// must specify USERPOOL.
	AuthenticationType *string `type:"string" enum:"AuthenticationType"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`

	// The name of the stack that is associated with the user.
	StackName *string `min:"1" type:"string"`

	// The email address of the user who is associated with the stack.
	//
	// Users' email addresses are case-sensitive.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DescribeUserStackAssociationsInput's
	// String and GoString methods.
	UserName *string `min:"1" type:"string" sensitive:"true"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *DescribeUserStackAssociationsInput) SetAuthenticationType(v string) *DescribeUserStackAssociationsInput {
	s.AuthenticationType = &v
	return s
}

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

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

// SetStackName sets the StackName field's value.
func (s *DescribeUserStackAssociationsInput) SetStackName(v string) *DescribeUserStackAssociationsInput {
	s.StackName = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DescribeUserStackAssociationsInput) SetUserName(v string) *DescribeUserStackAssociationsInput {
	s.UserName = &v
	return s
}

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

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// The UserStackAssociation objects.
	UserStackAssociations []*UserStackAssociation `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 DescribeUserStackAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUserStackAssociations sets the UserStackAssociations field's value.
func (s *DescribeUserStackAssociationsOutput) SetUserStackAssociations(v []*UserStackAssociation) *DescribeUserStackAssociationsOutput {
	s.UserStackAssociations = v
	return s
}

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

	// The authentication type for the users in the user pool to describe. You must
	// specify USERPOOL.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *DescribeUsersInput) SetAuthenticationType(v string) *DescribeUsersInput {
	s.AuthenticationType = &v
	return s
}

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

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

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

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`

	// Information about users in the user pool.
	Users []*User `type:"list"`
}

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

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

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

// SetUsers sets the Users field's value.
func (s *DescribeUsersOutput) SetUsers(v []*User) *DescribeUsersOutput {
	s.Users = v
	return s
}

// Describes the configuration information required to join fleets and image
// builders to Microsoft Active Directory domains.
type DirectoryConfig struct {
	_ struct{} `type:"structure"`

	// The certificate-based authentication properties used to authenticate SAML
	// 2.0 Identity Provider (IdP) user identities to Active Directory domain-joined
	// streaming instances. Fallback is turned on by default when certificate-based
	// authentication is Enabled . Fallback allows users to log in using their AD
	// domain password if certificate-based authentication is unsuccessful, or to
	// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
	// certificate-based authentication, but does not allow users to log in using
	// their AD domain password. Users will be disconnected to re-authenticate using
	// certificates.
	CertificateBasedAuthProperties *CertificateBasedAuthProperties `type:"structure"`

	// The time the directory configuration was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The fully qualified name of the directory (for example, corp.example.com).
	//
	// DirectoryName is a required field
	DirectoryName *string `type:"string" required:"true"`

	// The distinguished names of the organizational units for computer accounts.
	OrganizationalUnitDistinguishedNames []*string `type:"list"`

	// The credentials for the service account used by the fleet or image builder
	// to connect to the directory.
	ServiceAccountCredentials *ServiceAccountCredentials `type:"structure"`
}

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

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

// SetCertificateBasedAuthProperties sets the CertificateBasedAuthProperties field's value.
func (s *DirectoryConfig) SetCertificateBasedAuthProperties(v *CertificateBasedAuthProperties) *DirectoryConfig {
	s.CertificateBasedAuthProperties = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DirectoryConfig) SetCreatedTime(v time.Time) *DirectoryConfig {
	s.CreatedTime = &v
	return s
}

// SetDirectoryName sets the DirectoryName field's value.
func (s *DirectoryConfig) SetDirectoryName(v string) *DirectoryConfig {
	s.DirectoryName = &v
	return s
}

// SetOrganizationalUnitDistinguishedNames sets the OrganizationalUnitDistinguishedNames field's value.
func (s *DirectoryConfig) SetOrganizationalUnitDistinguishedNames(v []*string) *DirectoryConfig {
	s.OrganizationalUnitDistinguishedNames = v
	return s
}

// SetServiceAccountCredentials sets the ServiceAccountCredentials field's value.
func (s *DirectoryConfig) SetServiceAccountCredentials(v *ServiceAccountCredentials) *DirectoryConfig {
	s.ServiceAccountCredentials = v
	return s
}

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

	// The authentication type for the user. You must specify USERPOOL.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DisableUserInput's
	// String and GoString methods.
	//
	// UserName is a required field
	UserName *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

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

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

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

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *DisableUserInput) SetAuthenticationType(v string) *DisableUserInput {
	s.AuthenticationType = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DisableUserInput) SetUserName(v string) *DisableUserInput {
	s.UserName = &v
	return s
}

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

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

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

	// The ARN of the app block.
	//
	// AppBlockArn is a required field
	AppBlockArn *string `type:"string" required:"true"`

	// The name of the app block builder.
	//
	// AppBlockBuilderName is a required field
	AppBlockBuilderName *string `type:"string" required:"true"`
}

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

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

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

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

// SetAppBlockArn sets the AppBlockArn field's value.
func (s *DisassociateAppBlockBuilderAppBlockInput) SetAppBlockArn(v string) *DisassociateAppBlockBuilderAppBlockInput {
	s.AppBlockArn = &v
	return s
}

// SetAppBlockBuilderName sets the AppBlockBuilderName field's value.
func (s *DisassociateAppBlockBuilderAppBlockInput) SetAppBlockBuilderName(v string) *DisassociateAppBlockBuilderAppBlockInput {
	s.AppBlockBuilderName = &v
	return s
}

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

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

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

	// The ARN of the application.
	//
	// ApplicationArn is a required field
	ApplicationArn *string `type:"string" required:"true"`

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `type:"string" required:"true"`
}

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

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

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

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

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

// SetFleetName sets the FleetName field's value.
func (s *DisassociateApplicationFleetInput) SetFleetName(v string) *DisassociateApplicationFleetInput {
	s.FleetName = &v
	return s
}

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

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

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

	// The identifier of the application to remove from the entitlement.
	//
	// ApplicationIdentifier is a required field
	ApplicationIdentifier *string `min:"1" type:"string" required:"true"`

	// The name of the entitlement.
	//
	// EntitlementName is a required field
	EntitlementName *string `type:"string" required:"true"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

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

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

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

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

// SetApplicationIdentifier sets the ApplicationIdentifier field's value.
func (s *DisassociateApplicationFromEntitlementInput) SetApplicationIdentifier(v string) *DisassociateApplicationFromEntitlementInput {
	s.ApplicationIdentifier = &v
	return s
}

// SetEntitlementName sets the EntitlementName field's value.
func (s *DisassociateApplicationFromEntitlementInput) SetEntitlementName(v string) *DisassociateApplicationFromEntitlementInput {
	s.EntitlementName = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *DisassociateApplicationFromEntitlementInput) SetStackName(v string) *DisassociateApplicationFromEntitlementInput {
	s.StackName = &v
	return s
}

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

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

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

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`

	// The name of the stack.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`
}

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

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

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

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFleetName sets the FleetName field's value.
func (s *DisassociateFleetInput) SetFleetName(v string) *DisassociateFleetInput {
	s.FleetName = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *DisassociateFleetInput) SetStackName(v string) *DisassociateFleetInput {
	s.StackName = &v
	return s
}

type DisassociateFleetOutput 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 DisassociateFleetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFleetOutput) GoString() string {
	return s.String()
}

// Describes the configuration information required to join fleets and image
// builders to Microsoft Active Directory domains.
type DomainJoinInfo struct {
	_ struct{} `type:"structure"`

	// The fully qualified name of the directory (for example, corp.example.com).
	DirectoryName *string `type:"string"`

	// The distinguished name of the organizational unit for computer accounts.
	OrganizationalUnitDistinguishedName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainJoinInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainJoinInfo) GoString() string {
	return s.String()
}

// SetDirectoryName sets the DirectoryName field's value.
func (s *DomainJoinInfo) SetDirectoryName(v string) *DomainJoinInfo {
	s.DirectoryName = &v
	return s
}

// SetOrganizationalUnitDistinguishedName sets the OrganizationalUnitDistinguishedName field's value.
func (s *DomainJoinInfo) SetOrganizationalUnitDistinguishedName(v string) *DomainJoinInfo {
	s.OrganizationalUnitDistinguishedName = &v
	return s
}

type EnableUserInput struct {
	_ struct{} `type:"structure"`

	// The authentication type for the user. You must specify USERPOOL.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive. During login, if they specify
	// an email address that doesn't use the same capitalization as the email address
	// specified when their user pool account was created, a "user does not exist"
	// error message displays.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnableUserInput's
	// String and GoString methods.
	//
	// UserName is a required field
	UserName *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableUserInput"}
	if s.AuthenticationType == nil {
		invalidParams.Add(request.NewErrParamRequired("AuthenticationType"))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *EnableUserInput) SetAuthenticationType(v string) *EnableUserInput {
	s.AuthenticationType = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *EnableUserInput) SetUserName(v string) *EnableUserInput {
	s.UserName = &v
	return s
}

type EnableUserOutput 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 EnableUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableUserOutput) GoString() string {
	return s.String()
}

// The application associated to an entitlement. Access is controlled based
// on user attributes.
type EntitledApplication struct {
	_ struct{} `type:"structure"`

	// The identifier of the application.
	//
	// ApplicationIdentifier is a required field
	ApplicationIdentifier *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitledApplication) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitledApplication) GoString() string {
	return s.String()
}

// SetApplicationIdentifier sets the ApplicationIdentifier field's value.
func (s *EntitledApplication) SetApplicationIdentifier(v string) *EntitledApplication {
	s.ApplicationIdentifier = &v
	return s
}

// Specifies an entitlement. Entitlements control access to specific applications
// within a stack, based on user attributes. Entitlements apply to SAML 2.0
// federated user identities. Amazon AppStream 2.0 user pool and streaming URL
// users are entitled to all applications in a stack. Entitlements don't apply
// to the desktop stream view application, or to applications managed by a dynamic
// app provider using the Dynamic Application Framework.
type Entitlement struct {
	_ struct{} `type:"structure"`

	// Specifies whether all or selected apps are entitled.
	//
	// AppVisibility is a required field
	AppVisibility *string `type:"string" required:"true" enum:"AppVisibility"`

	// The attributes of the entitlement.
	//
	// Attributes is a required field
	Attributes []*EntitlementAttribute `min:"1" type:"list" required:"true"`

	// The time when the entitlement was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the entitlement.
	Description *string `type:"string"`

	// The time when the entitlement was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the entitlement.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Entitlement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Entitlement) GoString() string {
	return s.String()
}

// SetAppVisibility sets the AppVisibility field's value.
func (s *Entitlement) SetAppVisibility(v string) *Entitlement {
	s.AppVisibility = &v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *Entitlement) SetAttributes(v []*EntitlementAttribute) *Entitlement {
	s.Attributes = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Entitlement) SetCreatedTime(v time.Time) *Entitlement {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Entitlement) SetDescription(v string) *Entitlement {
	s.Description = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Entitlement) SetLastModifiedTime(v time.Time) *Entitlement {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Entitlement) SetName(v string) *Entitlement {
	s.Name = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *Entitlement) SetStackName(v string) *Entitlement {
	s.StackName = &v
	return s
}

// The entitlement already exists.
type EntitlementAlreadyExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 EntitlementAlreadyExistsException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitlementAlreadyExistsException) GoString() string {
	return s.String()
}

func newErrorEntitlementAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &EntitlementAlreadyExistsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *EntitlementAlreadyExistsException) Code() string {
	return "EntitlementAlreadyExistsException"
}

// Message returns the exception's message.
func (s *EntitlementAlreadyExistsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *EntitlementAlreadyExistsException) OrigErr() error {
	return nil
}

func (s *EntitlementAlreadyExistsException) 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 *EntitlementAlreadyExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *EntitlementAlreadyExistsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// An attribute associated with an entitlement. Application entitlements work
// by matching a supported SAML 2.0 attribute name to a value when a user identity
// federates to an Amazon AppStream 2.0 SAML application.
type EntitlementAttribute struct {
	_ struct{} `type:"structure"`

	// A supported AWS IAM SAML PrincipalTag attribute that is matched to the associated
	// value when a user identity federates into an Amazon AppStream 2.0 SAML application.
	//
	// The following are valid values:
	//
	//    * roles
	//
	//    * department
	//
	//    * organization
	//
	//    * groups
	//
	//    * title
	//
	//    * costCenter
	//
	//    * userType
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A value that is matched to a supported SAML attribute name when a user identity
	// federates into an Amazon AppStream 2.0 SAML application.
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitlementAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitlementAttribute) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EntitlementAttribute) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EntitlementAttribute"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *EntitlementAttribute) SetName(v string) *EntitlementAttribute {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EntitlementAttribute) SetValue(v string) *EntitlementAttribute {
	s.Value = &v
	return s
}

// The entitlement can't be found.
type EntitlementNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 EntitlementNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntitlementNotFoundException) GoString() string {
	return s.String()
}

func newErrorEntitlementNotFoundException(v protocol.ResponseMetadata) error {
	return &EntitlementNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *EntitlementNotFoundException) Code() string {
	return "EntitlementNotFoundException"
}

// Message returns the exception's message.
func (s *EntitlementNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *EntitlementNotFoundException) OrigErr() error {
	return nil
}

func (s *EntitlementNotFoundException) 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 *EntitlementNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *EntitlementNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The error details.
type ErrorDetails struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `min:"1" type:"string"`

	// The error message.
	ErrorMessage *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorDetails) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ErrorDetails) SetErrorCode(v string) *ErrorDetails {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ErrorDetails) SetErrorMessage(v string) *ErrorDetails {
	s.ErrorMessage = &v
	return s
}

type ExpireSessionInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the streaming session.
	//
	// SessionId is a required field
	SessionId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExpireSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExpireSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExpireSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExpireSessionInput"}
	if s.SessionId == nil {
		invalidParams.Add(request.NewErrParamRequired("SessionId"))
	}
	if s.SessionId != nil && len(*s.SessionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SessionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSessionId sets the SessionId field's value.
func (s *ExpireSessionInput) SetSessionId(v string) *ExpireSessionInput {
	s.SessionId = &v
	return s
}

type ExpireSessionOutput 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 ExpireSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExpireSessionOutput) GoString() string {
	return s.String()
}

// Describes a fleet.
type Fleet struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the fleet.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The capacity status for the fleet.
	//
	// ComputeCapacityStatus is a required field
	ComputeCapacityStatus *ComputeCapacityStatus `type:"structure" required:"true"`

	// The time the fleet was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description to display.
	Description *string `min:"1" type:"string"`

	// The amount of time that a streaming session remains active after users disconnect.
	// If they try to reconnect to the streaming session after a disconnection or
	// network interruption within this time interval, they are connected to their
	// previous session. Otherwise, they are connected to a new session with a new
	// streaming instance.
	//
	// Specify a value between 60 and 360000.
	DisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The fleet name to display.
	DisplayName *string `min:"1" type:"string"`

	// The name of the directory and organizational unit (OU) to use to join the
	// fleet to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo `type:"structure"`

	// Indicates whether default internet access is enabled for the fleet.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The fleet errors.
	FleetErrors []*FleetError `type:"list"`

	// The fleet type.
	//
	// ALWAYS_ON
	//
	// Provides users with instant-on access to their apps. You are charged for
	// all running instances in your fleet, even if no users are streaming apps.
	//
	// ON_DEMAND
	//
	// Provide users with access to applications after they connect, which takes
	// one to two minutes. You are charged for instance streaming when users are
	// connected and a small hourly fee for instances that are not streaming apps.
	FleetType *string `type:"string" enum:"FleetType"`

	// The ARN of the IAM role that is applied to the fleet. To assume a role, the
	// fleet instance calls the AWS Security Token Service (STS) AssumeRole API
	// operation and passes the ARN of the role to use. The operation creates a
	// new session with temporary credentials. AppStream 2.0 retrieves the temporary
	// credentials and creates the appstream_machine_role credential profile on
	// the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The amount of time that users can be idle (inactive) before they are disconnected
	// from their streaming session and the DisconnectTimeoutInSeconds time interval
	// begins. Users are notified before they are disconnected due to inactivity.
	// If users try to reconnect to the streaming session before the time interval
	// specified in DisconnectTimeoutInSeconds elapses, they are connected to their
	// previous session. Users are considered idle when they stop providing keyboard
	// or mouse input during their streaming session. File uploads and downloads,
	// audio in, audio out, and pixels changing do not qualify as user activity.
	// If users continue to be idle after the time interval in IdleDisconnectTimeoutInSeconds
	// elapses, they are disconnected.
	//
	// To prevent users from being disconnected due to inactivity, specify a value
	// of 0. Otherwise, specify a value between 60 and 3600. The default value is
	// 0.
	//
	// If you enable this feature, we recommend that you specify a value that corresponds
	// exactly to a whole number of minutes (for example, 60, 120, and 180). If
	// you don't do this, the value is rounded to the nearest minute. For example,
	// if you specify a value of 70, users are disconnected after 1 minute of inactivity.
	// If you specify a value that is at the midpoint between two different minutes,
	// the value is rounded up. For example, if you specify a value of 90, users
	// are disconnected after 2 minutes of inactivity.
	IdleDisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The ARN for the public, private, or shared image.
	ImageArn *string `type:"string"`

	// The name of the image used to create the fleet.
	ImageName *string `min:"1" type:"string"`

	// The instance type to use when launching fleet instances. The following instance
	// types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.compute.large
	//
	//    * stream.compute.xlarge
	//
	//    * stream.compute.2xlarge
	//
	//    * stream.compute.4xlarge
	//
	//    * stream.compute.8xlarge
	//
	//    * stream.memory.large
	//
	//    * stream.memory.xlarge
	//
	//    * stream.memory.2xlarge
	//
	//    * stream.memory.4xlarge
	//
	//    * stream.memory.8xlarge
	//
	//    * stream.memory.z1d.large
	//
	//    * stream.memory.z1d.xlarge
	//
	//    * stream.memory.z1d.2xlarge
	//
	//    * stream.memory.z1d.3xlarge
	//
	//    * stream.memory.z1d.6xlarge
	//
	//    * stream.memory.z1d.12xlarge
	//
	//    * stream.graphics-design.large
	//
	//    * stream.graphics-design.xlarge
	//
	//    * stream.graphics-design.2xlarge
	//
	//    * stream.graphics-design.4xlarge
	//
	//    * stream.graphics-desktop.2xlarge
	//
	//    * stream.graphics.g4dn.xlarge
	//
	//    * stream.graphics.g4dn.2xlarge
	//
	//    * stream.graphics.g4dn.4xlarge
	//
	//    * stream.graphics.g4dn.8xlarge
	//
	//    * stream.graphics.g4dn.12xlarge
	//
	//    * stream.graphics.g4dn.16xlarge
	//
	//    * stream.graphics-pro.4xlarge
	//
	//    * stream.graphics-pro.8xlarge
	//
	//    * stream.graphics-pro.16xlarge
	//
	// InstanceType is a required field
	InstanceType *string `min:"1" type:"string" required:"true"`

	// The maximum number of concurrent sessions for the fleet.
	MaxConcurrentSessions *int64 `type:"integer"`

	// The maximum number of user sessions on an instance. This only applies to
	// multi-session fleets.
	MaxSessionsPerInstance *int64 `type:"integer"`

	// The maximum amount of time that a streaming session can remain active, in
	// seconds. If users are still connected to a streaming instance five minutes
	// before this limit is reached, they are prompted to save any open documents
	// before being disconnected. After this time elapses, the instance is terminated
	// and replaced by a new instance.
	//
	// Specify a value between 600 and 360000.
	MaxUserDurationInSeconds *int64 `type:"integer"`

	// The name of the fleet.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The platform of the fleet.
	Platform *string `type:"string" enum:"PlatformType"`

	// The S3 location of the session scripts configuration zip file. This only
	// applies to Elastic fleets.
	SessionScriptS3Location *S3Location `type:"structure"`

	// The current state for the fleet.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"FleetState"`

	// The AppStream 2.0 view that is displayed to your users when they stream from
	// the fleet. When APP is specified, only the windows of applications opened
	// by users display. When DESKTOP is specified, the standard desktop that is
	// provided by the operating system displays.
	//
	// The default value is APP.
	StreamView *string `type:"string" enum:"StreamView"`

	// The USB device filter strings associated with the fleet.
	UsbDeviceFilterStrings []*string `type:"list"`

	// The VPC configuration for the fleet.
	VpcConfig *VpcConfig `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Fleet) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Fleet) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Fleet) SetArn(v string) *Fleet {
	s.Arn = &v
	return s
}

// SetComputeCapacityStatus sets the ComputeCapacityStatus field's value.
func (s *Fleet) SetComputeCapacityStatus(v *ComputeCapacityStatus) *Fleet {
	s.ComputeCapacityStatus = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Fleet) SetCreatedTime(v time.Time) *Fleet {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Fleet) SetDescription(v string) *Fleet {
	s.Description = &v
	return s
}

// SetDisconnectTimeoutInSeconds sets the DisconnectTimeoutInSeconds field's value.
func (s *Fleet) SetDisconnectTimeoutInSeconds(v int64) *Fleet {
	s.DisconnectTimeoutInSeconds = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *Fleet) SetDisplayName(v string) *Fleet {
	s.DisplayName = &v
	return s
}

// SetDomainJoinInfo sets the DomainJoinInfo field's value.
func (s *Fleet) SetDomainJoinInfo(v *DomainJoinInfo) *Fleet {
	s.DomainJoinInfo = v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *Fleet) SetEnableDefaultInternetAccess(v bool) *Fleet {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetFleetErrors sets the FleetErrors field's value.
func (s *Fleet) SetFleetErrors(v []*FleetError) *Fleet {
	s.FleetErrors = v
	return s
}

// SetFleetType sets the FleetType field's value.
func (s *Fleet) SetFleetType(v string) *Fleet {
	s.FleetType = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *Fleet) SetIamRoleArn(v string) *Fleet {
	s.IamRoleArn = &v
	return s
}

// SetIdleDisconnectTimeoutInSeconds sets the IdleDisconnectTimeoutInSeconds field's value.
func (s *Fleet) SetIdleDisconnectTimeoutInSeconds(v int64) *Fleet {
	s.IdleDisconnectTimeoutInSeconds = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *Fleet) SetImageArn(v string) *Fleet {
	s.ImageArn = &v
	return s
}

// SetImageName sets the ImageName field's value.
func (s *Fleet) SetImageName(v string) *Fleet {
	s.ImageName = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *Fleet) SetInstanceType(v string) *Fleet {
	s.InstanceType = &v
	return s
}

// SetMaxConcurrentSessions sets the MaxConcurrentSessions field's value.
func (s *Fleet) SetMaxConcurrentSessions(v int64) *Fleet {
	s.MaxConcurrentSessions = &v
	return s
}

// SetMaxSessionsPerInstance sets the MaxSessionsPerInstance field's value.
func (s *Fleet) SetMaxSessionsPerInstance(v int64) *Fleet {
	s.MaxSessionsPerInstance = &v
	return s
}

// SetMaxUserDurationInSeconds sets the MaxUserDurationInSeconds field's value.
func (s *Fleet) SetMaxUserDurationInSeconds(v int64) *Fleet {
	s.MaxUserDurationInSeconds = &v
	return s
}

// SetName sets the Name field's value.
func (s *Fleet) SetName(v string) *Fleet {
	s.Name = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *Fleet) SetPlatform(v string) *Fleet {
	s.Platform = &v
	return s
}

// SetSessionScriptS3Location sets the SessionScriptS3Location field's value.
func (s *Fleet) SetSessionScriptS3Location(v *S3Location) *Fleet {
	s.SessionScriptS3Location = v
	return s
}

// SetState sets the State field's value.
func (s *Fleet) SetState(v string) *Fleet {
	s.State = &v
	return s
}

// SetStreamView sets the StreamView field's value.
func (s *Fleet) SetStreamView(v string) *Fleet {
	s.StreamView = &v
	return s
}

// SetUsbDeviceFilterStrings sets the UsbDeviceFilterStrings field's value.
func (s *Fleet) SetUsbDeviceFilterStrings(v []*string) *Fleet {
	s.UsbDeviceFilterStrings = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *Fleet) SetVpcConfig(v *VpcConfig) *Fleet {
	s.VpcConfig = v
	return s
}

// Describes a fleet error.
type FleetError struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `type:"string" enum:"FleetErrorCode"`

	// The error message.
	ErrorMessage *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FleetError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FleetError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *FleetError) SetErrorCode(v string) *FleetError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *FleetError) SetErrorMessage(v string) *FleetError {
	s.ErrorMessage = &v
	return s
}

// Describes an image.
type Image struct {
	_ struct{} `type:"structure"`

	// The applications associated with the image.
	Applications []*Application `type:"list"`

	// The version of the AppStream 2.0 agent to use for instances that are launched
	// from this image.
	AppstreamAgentVersion *string `min:"1" type:"string"`

	// The ARN of the image.
	Arn *string `type:"string"`

	// The ARN of the image from which this image was created.
	BaseImageArn *string `type:"string"`

	// The time the image was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description to display.
	Description *string `min:"1" type:"string"`

	// The image name to display.
	DisplayName *string `min:"1" type:"string"`

	// The name of the image builder that was used to create the private image.
	// If the image is shared, this value is null.
	ImageBuilderName *string `min:"1" type:"string"`

	// Indicates whether an image builder can be launched from this image.
	ImageBuilderSupported *bool `type:"boolean"`

	// Describes the errors that are returned when a new image can't be created.
	ImageErrors []*ResourceError `type:"list"`

	// The permissions to provide to the destination AWS account for the specified
	// image.
	ImagePermissions *ImagePermissions `type:"structure"`

	// The name of the image.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The operating system platform of the image.
	Platform *string `type:"string" enum:"PlatformType"`

	// The release date of the public base image. For private images, this date
	// is the release date of the base image from which the image was created.
	PublicBaseImageReleasedDate *time.Time `type:"timestamp"`

	// The image starts in the PENDING state. If image creation succeeds, the state
	// is AVAILABLE. If image creation fails, the state is FAILED.
	State *string `type:"string" enum:"ImageState"`

	// The reason why the last state change occurred.
	StateChangeReason *ImageStateChangeReason `type:"structure"`

	// Indicates whether the image is public or private.
	Visibility *string `type:"string" enum:"VisibilityType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Image) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Image) GoString() string {
	return s.String()
}

// SetApplications sets the Applications field's value.
func (s *Image) SetApplications(v []*Application) *Image {
	s.Applications = v
	return s
}

// SetAppstreamAgentVersion sets the AppstreamAgentVersion field's value.
func (s *Image) SetAppstreamAgentVersion(v string) *Image {
	s.AppstreamAgentVersion = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *Image) SetArn(v string) *Image {
	s.Arn = &v
	return s
}

// SetBaseImageArn sets the BaseImageArn field's value.
func (s *Image) SetBaseImageArn(v string) *Image {
	s.BaseImageArn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Image) SetCreatedTime(v time.Time) *Image {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Image) SetDescription(v string) *Image {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *Image) SetDisplayName(v string) *Image {
	s.DisplayName = &v
	return s
}

// SetImageBuilderName sets the ImageBuilderName field's value.
func (s *Image) SetImageBuilderName(v string) *Image {
	s.ImageBuilderName = &v
	return s
}

// SetImageBuilderSupported sets the ImageBuilderSupported field's value.
func (s *Image) SetImageBuilderSupported(v bool) *Image {
	s.ImageBuilderSupported = &v
	return s
}

// SetImageErrors sets the ImageErrors field's value.
func (s *Image) SetImageErrors(v []*ResourceError) *Image {
	s.ImageErrors = v
	return s
}

// SetImagePermissions sets the ImagePermissions field's value.
func (s *Image) SetImagePermissions(v *ImagePermissions) *Image {
	s.ImagePermissions = v
	return s
}

// SetName sets the Name field's value.
func (s *Image) SetName(v string) *Image {
	s.Name = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *Image) SetPlatform(v string) *Image {
	s.Platform = &v
	return s
}

// SetPublicBaseImageReleasedDate sets the PublicBaseImageReleasedDate field's value.
func (s *Image) SetPublicBaseImageReleasedDate(v time.Time) *Image {
	s.PublicBaseImageReleasedDate = &v
	return s
}

// SetState sets the State field's value.
func (s *Image) SetState(v string) *Image {
	s.State = &v
	return s
}

// SetStateChangeReason sets the StateChangeReason field's value.
func (s *Image) SetStateChangeReason(v *ImageStateChangeReason) *Image {
	s.StateChangeReason = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *Image) SetVisibility(v string) *Image {
	s.Visibility = &v
	return s
}

// Describes a virtual machine that is used to create an image.
type ImageBuilder struct {
	_ struct{} `type:"structure"`

	// The list of virtual private cloud (VPC) interface endpoint objects. Administrators
	// can connect to the image builder only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The version of the AppStream 2.0 agent that is currently being used by the
	// image builder.
	AppstreamAgentVersion *string `min:"1" type:"string"`

	// The ARN for the image builder.
	Arn *string `type:"string"`

	// The time stamp when the image builder was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description to display.
	Description *string `min:"1" type:"string"`

	// The image builder name to display.
	DisplayName *string `min:"1" type:"string"`

	// The name of the directory and organizational unit (OU) to use to join the
	// image builder to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo `type:"structure"`

	// Enables or disables default internet access for the image builder.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The ARN of the IAM role that is applied to the image builder. To assume a
	// role, the image builder calls the AWS Security Token Service (STS) AssumeRole
	// API operation and passes the ARN of the role to use. The operation creates
	// a new session with temporary credentials. AppStream 2.0 retrieves the temporary
	// credentials and creates the appstream_machine_role credential profile on
	// the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The ARN of the image from which this builder was created.
	ImageArn *string `type:"string"`

	// The image builder errors.
	ImageBuilderErrors []*ResourceError `type:"list"`

	// The instance type for the image builder. The following instance types are
	// available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.compute.large
	//
	//    * stream.compute.xlarge
	//
	//    * stream.compute.2xlarge
	//
	//    * stream.compute.4xlarge
	//
	//    * stream.compute.8xlarge
	//
	//    * stream.memory.large
	//
	//    * stream.memory.xlarge
	//
	//    * stream.memory.2xlarge
	//
	//    * stream.memory.4xlarge
	//
	//    * stream.memory.8xlarge
	//
	//    * stream.memory.z1d.large
	//
	//    * stream.memory.z1d.xlarge
	//
	//    * stream.memory.z1d.2xlarge
	//
	//    * stream.memory.z1d.3xlarge
	//
	//    * stream.memory.z1d.6xlarge
	//
	//    * stream.memory.z1d.12xlarge
	//
	//    * stream.graphics-design.large
	//
	//    * stream.graphics-design.xlarge
	//
	//    * stream.graphics-design.2xlarge
	//
	//    * stream.graphics-design.4xlarge
	//
	//    * stream.graphics-desktop.2xlarge
	//
	//    * stream.graphics.g4dn.xlarge
	//
	//    * stream.graphics.g4dn.2xlarge
	//
	//    * stream.graphics.g4dn.4xlarge
	//
	//    * stream.graphics.g4dn.8xlarge
	//
	//    * stream.graphics.g4dn.12xlarge
	//
	//    * stream.graphics.g4dn.16xlarge
	//
	//    * stream.graphics-pro.4xlarge
	//
	//    * stream.graphics-pro.8xlarge
	//
	//    * stream.graphics-pro.16xlarge
	InstanceType *string `min:"1" type:"string"`

	// The name of the image builder.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Describes the network details of the fleet or image builder instance.
	NetworkAccessConfiguration *NetworkAccessConfiguration `type:"structure"`

	// The operating system platform of the image builder.
	Platform *string `type:"string" enum:"PlatformType"`

	// The state of the image builder.
	State *string `type:"string" enum:"ImageBuilderState"`

	// The reason why the last state change occurred.
	StateChangeReason *ImageBuilderStateChangeReason `type:"structure"`

	// The VPC configuration of the image builder.
	VpcConfig *VpcConfig `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageBuilder) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageBuilder) GoString() string {
	return s.String()
}

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *ImageBuilder) SetAccessEndpoints(v []*AccessEndpoint) *ImageBuilder {
	s.AccessEndpoints = v
	return s
}

// SetAppstreamAgentVersion sets the AppstreamAgentVersion field's value.
func (s *ImageBuilder) SetAppstreamAgentVersion(v string) *ImageBuilder {
	s.AppstreamAgentVersion = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *ImageBuilder) SetArn(v string) *ImageBuilder {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *ImageBuilder) SetCreatedTime(v time.Time) *ImageBuilder {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ImageBuilder) SetDescription(v string) *ImageBuilder {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *ImageBuilder) SetDisplayName(v string) *ImageBuilder {
	s.DisplayName = &v
	return s
}

// SetDomainJoinInfo sets the DomainJoinInfo field's value.
func (s *ImageBuilder) SetDomainJoinInfo(v *DomainJoinInfo) *ImageBuilder {
	s.DomainJoinInfo = v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *ImageBuilder) SetEnableDefaultInternetAccess(v bool) *ImageBuilder {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *ImageBuilder) SetIamRoleArn(v string) *ImageBuilder {
	s.IamRoleArn = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *ImageBuilder) SetImageArn(v string) *ImageBuilder {
	s.ImageArn = &v
	return s
}

// SetImageBuilderErrors sets the ImageBuilderErrors field's value.
func (s *ImageBuilder) SetImageBuilderErrors(v []*ResourceError) *ImageBuilder {
	s.ImageBuilderErrors = v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *ImageBuilder) SetInstanceType(v string) *ImageBuilder {
	s.InstanceType = &v
	return s
}

// SetName sets the Name field's value.
func (s *ImageBuilder) SetName(v string) *ImageBuilder {
	s.Name = &v
	return s
}

// SetNetworkAccessConfiguration sets the NetworkAccessConfiguration field's value.
func (s *ImageBuilder) SetNetworkAccessConfiguration(v *NetworkAccessConfiguration) *ImageBuilder {
	s.NetworkAccessConfiguration = v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImageBuilder) SetPlatform(v string) *ImageBuilder {
	s.Platform = &v
	return s
}

// SetState sets the State field's value.
func (s *ImageBuilder) SetState(v string) *ImageBuilder {
	s.State = &v
	return s
}

// SetStateChangeReason sets the StateChangeReason field's value.
func (s *ImageBuilder) SetStateChangeReason(v *ImageBuilderStateChangeReason) *ImageBuilder {
	s.StateChangeReason = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *ImageBuilder) SetVpcConfig(v *VpcConfig) *ImageBuilder {
	s.VpcConfig = v
	return s
}

// Describes the reason why the last image builder state change occurred.
type ImageBuilderStateChangeReason struct {
	_ struct{} `type:"structure"`

	// The state change reason code.
	Code *string `type:"string" enum:"ImageBuilderStateChangeReasonCode"`

	// The state change reason message.
	Message *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageBuilderStateChangeReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageBuilderStateChangeReason) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *ImageBuilderStateChangeReason) SetCode(v string) *ImageBuilderStateChangeReason {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *ImageBuilderStateChangeReason) SetMessage(v string) *ImageBuilderStateChangeReason {
	s.Message = &v
	return s
}

// Describes the permissions for an image.
type ImagePermissions struct {
	_ struct{} `type:"structure"`

	// Indicates whether the image can be used for a fleet.
	AllowFleet *bool `locationName:"allowFleet" type:"boolean"`

	// Indicates whether the image can be used for an image builder.
	AllowImageBuilder *bool `locationName:"allowImageBuilder" 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 ImagePermissions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImagePermissions) GoString() string {
	return s.String()
}

// SetAllowFleet sets the AllowFleet field's value.
func (s *ImagePermissions) SetAllowFleet(v bool) *ImagePermissions {
	s.AllowFleet = &v
	return s
}

// SetAllowImageBuilder sets the AllowImageBuilder field's value.
func (s *ImagePermissions) SetAllowImageBuilder(v bool) *ImagePermissions {
	s.AllowImageBuilder = &v
	return s
}

// Describes the reason why the last image state change occurred.
type ImageStateChangeReason struct {
	_ struct{} `type:"structure"`

	// The state change reason code.
	Code *string `type:"string" enum:"ImageStateChangeReasonCode"`

	// The state change reason message.
	Message *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageStateChangeReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageStateChangeReason) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *ImageStateChangeReason) SetCode(v string) *ImageStateChangeReason {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *ImageStateChangeReason) SetMessage(v string) *ImageStateChangeReason {
	s.Message = &v
	return s
}

// The image can't be updated because it's not compatible for updates.
type IncompatibleImageException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 IncompatibleImageException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IncompatibleImageException) GoString() string {
	return s.String()
}

func newErrorIncompatibleImageException(v protocol.ResponseMetadata) error {
	return &IncompatibleImageException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IncompatibleImageException) Code() string {
	return "IncompatibleImageException"
}

// Message returns the exception's message.
func (s *IncompatibleImageException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IncompatibleImageException) OrigErr() error {
	return nil
}

func (s *IncompatibleImageException) 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 *IncompatibleImageException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IncompatibleImageException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The resource cannot be created because your AWS account is suspended. For
// assistance, contact AWS Support.
type InvalidAccountStatusException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 InvalidAccountStatusException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidAccountStatusException) GoString() string {
	return s.String()
}

func newErrorInvalidAccountStatusException(v protocol.ResponseMetadata) error {
	return &InvalidAccountStatusException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidAccountStatusException) Code() string {
	return "InvalidAccountStatusException"
}

// Message returns the exception's message.
func (s *InvalidAccountStatusException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidAccountStatusException) OrigErr() error {
	return nil
}

func (s *InvalidAccountStatusException) 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 *InvalidAccountStatusException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidAccountStatusException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Indicates an incorrect combination of parameters, or a missing parameter.
type InvalidParameterCombinationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 InvalidParameterCombinationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterCombinationException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterCombinationException(v protocol.ResponseMetadata) error {
	return &InvalidParameterCombinationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterCombinationException) Code() string {
	return "InvalidParameterCombinationException"
}

// Message returns the exception's message.
func (s *InvalidParameterCombinationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterCombinationException) OrigErr() error {
	return nil
}

func (s *InvalidParameterCombinationException) 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 *InvalidParameterCombinationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterCombinationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified role is invalid.
type InvalidRoleException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 InvalidRoleException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidRoleException) GoString() string {
	return s.String()
}

func newErrorInvalidRoleException(v protocol.ResponseMetadata) error {
	return &InvalidRoleException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidRoleException) Code() string {
	return "InvalidRoleException"
}

// Message returns the exception's message.
func (s *InvalidRoleException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidRoleException) OrigErr() error {
	return nil
}

func (s *InvalidRoleException) 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 *InvalidRoleException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidRoleException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes the error that is returned when a usage report can't be generated.
type LastReportGenerationExecutionError struct {
	_ struct{} `type:"structure"`

	// The error code for the error that is returned when a usage report can't be
	// generated.
	ErrorCode *string `type:"string" enum:"UsageReportExecutionErrorCode"`

	// The error message for the error that is returned when a usage report can't
	// be generated.
	ErrorMessage *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LastReportGenerationExecutionError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LastReportGenerationExecutionError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *LastReportGenerationExecutionError) SetErrorCode(v string) *LastReportGenerationExecutionError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *LastReportGenerationExecutionError) SetErrorMessage(v string) *LastReportGenerationExecutionError {
	s.ErrorMessage = &v
	return s
}

// The requested limit exceeds the permitted limit for an account.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 LimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListAssociatedFleetsInput struct {
	_ struct{} `type:"structure"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`

	// The name of the stack.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedFleetsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedFleetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssociatedFleetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssociatedFleetsInput"}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.StackName == nil {
		invalidParams.Add(request.NewErrParamRequired("StackName"))
	}
	if s.StackName != nil && len(*s.StackName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StackName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociatedFleetsInput) SetNextToken(v string) *ListAssociatedFleetsInput {
	s.NextToken = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *ListAssociatedFleetsInput) SetStackName(v string) *ListAssociatedFleetsInput {
	s.StackName = &v
	return s
}

type ListAssociatedFleetsOutput struct {
	_ struct{} `type:"structure"`

	// The name of the fleet.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedFleetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedFleetsOutput) GoString() string {
	return s.String()
}

// SetNames sets the Names field's value.
func (s *ListAssociatedFleetsOutput) SetNames(v []*string) *ListAssociatedFleetsOutput {
	s.Names = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociatedFleetsOutput) SetNextToken(v string) *ListAssociatedFleetsOutput {
	s.NextToken = &v
	return s
}

type ListAssociatedStacksInput struct {
	_ struct{} `type:"structure"`

	// The name of the fleet.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If this value is null, it retrieves the first page.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedStacksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedStacksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssociatedStacksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssociatedStacksInput"}
	if s.FleetName == nil {
		invalidParams.Add(request.NewErrParamRequired("FleetName"))
	}
	if s.FleetName != nil && len(*s.FleetName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FleetName", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFleetName sets the FleetName field's value.
func (s *ListAssociatedStacksInput) SetFleetName(v string) *ListAssociatedStacksInput {
	s.FleetName = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociatedStacksInput) SetNextToken(v string) *ListAssociatedStacksInput {
	s.NextToken = &v
	return s
}

type ListAssociatedStacksOutput struct {
	_ struct{} `type:"structure"`

	// The name of the stack.
	Names []*string `type:"list"`

	// The pagination token to use to retrieve the next page of results for this
	// operation. If there are no more pages, this value is null.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedStacksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssociatedStacksOutput) GoString() string {
	return s.String()
}

// SetNames sets the Names field's value.
func (s *ListAssociatedStacksOutput) SetNames(v []*string) *ListAssociatedStacksOutput {
	s.Names = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociatedStacksOutput) SetNextToken(v string) *ListAssociatedStacksOutput {
	s.NextToken = &v
	return s
}

type ListEntitledApplicationsInput struct {
	_ struct{} `type:"structure"`

	// The name of the entitlement.
	//
	// EntitlementName is a required field
	EntitlementName *string `type:"string" required:"true"`

	// The maximum size of each page of results.
	MaxResults *int64 `type:"integer"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEntitledApplicationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEntitledApplicationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEntitledApplicationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEntitledApplicationsInput"}
	if s.EntitlementName == nil {
		invalidParams.Add(request.NewErrParamRequired("EntitlementName"))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.StackName == nil {
		invalidParams.Add(request.NewErrParamRequired("StackName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEntitlementName sets the EntitlementName field's value.
func (s *ListEntitledApplicationsInput) SetEntitlementName(v string) *ListEntitledApplicationsInput {
	s.EntitlementName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEntitledApplicationsInput) SetMaxResults(v int64) *ListEntitledApplicationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEntitledApplicationsInput) SetNextToken(v string) *ListEntitledApplicationsInput {
	s.NextToken = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *ListEntitledApplicationsInput) SetStackName(v string) *ListEntitledApplicationsInput {
	s.StackName = &v
	return s
}

type ListEntitledApplicationsOutput struct {
	_ struct{} `type:"structure"`

	// The entitled applications.
	EntitledApplications []*EntitledApplication `type:"list"`

	// The pagination token used to retrieve the next page of results for this operation.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEntitledApplicationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEntitledApplicationsOutput) GoString() string {
	return s.String()
}

// SetEntitledApplications sets the EntitledApplications field's value.
func (s *ListEntitledApplicationsOutput) SetEntitledApplications(v []*EntitledApplication) *ListEntitledApplicationsOutput {
	s.EntitledApplications = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEntitledApplicationsOutput) SetNextToken(v string) *ListEntitledApplicationsOutput {
	s.NextToken = &v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// The information about the tags.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

// Describes the network details of the fleet or image builder instance.
type NetworkAccessConfiguration struct {
	_ struct{} `type:"structure"`

	// The resource identifier of the elastic network interface that is attached
	// to instances in your VPC. All network interfaces have the eni-xxxxxxxx resource
	// identifier.
	EniId *string `min:"1" type:"string"`

	// The private IP address of the elastic network interface that is attached
	// to instances in your VPC.
	EniPrivateIpAddress *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkAccessConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkAccessConfiguration) GoString() string {
	return s.String()
}

// SetEniId sets the EniId field's value.
func (s *NetworkAccessConfiguration) SetEniId(v string) *NetworkAccessConfiguration {
	s.EniId = &v
	return s
}

// SetEniPrivateIpAddress sets the EniPrivateIpAddress field's value.
func (s *NetworkAccessConfiguration) SetEniPrivateIpAddress(v string) *NetworkAccessConfiguration {
	s.EniPrivateIpAddress = &v
	return s
}

// The attempted operation is not permitted.
type OperationNotPermittedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 OperationNotPermittedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationNotPermittedException) GoString() string {
	return s.String()
}

func newErrorOperationNotPermittedException(v protocol.ResponseMetadata) error {
	return &OperationNotPermittedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OperationNotPermittedException) Code() string {
	return "OperationNotPermittedException"
}

// Message returns the exception's message.
func (s *OperationNotPermittedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OperationNotPermittedException) OrigErr() error {
	return nil
}

func (s *OperationNotPermittedException) 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 *OperationNotPermittedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OperationNotPermittedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// AppStream 2.0 can’t process the request right now because the Describe
// calls from your AWS account are being throttled by Amazon EC2. Try again
// later.
type RequestLimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 RequestLimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RequestLimitExceededException) GoString() string {
	return s.String()
}

func newErrorRequestLimitExceededException(v protocol.ResponseMetadata) error {
	return &RequestLimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *RequestLimitExceededException) Code() string {
	return "RequestLimitExceededException"
}

// Message returns the exception's message.
func (s *RequestLimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *RequestLimitExceededException) OrigErr() error {
	return nil
}

func (s *RequestLimitExceededException) 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 *RequestLimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *RequestLimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified resource already exists.
type ResourceAlreadyExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 ResourceAlreadyExistsException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceAlreadyExistsException) GoString() string {
	return s.String()
}

func newErrorResourceAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &ResourceAlreadyExistsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceAlreadyExistsException) Code() string {
	return "ResourceAlreadyExistsException"
}

// Message returns the exception's message.
func (s *ResourceAlreadyExistsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceAlreadyExistsException) OrigErr() error {
	return nil
}

func (s *ResourceAlreadyExistsException) 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 *ResourceAlreadyExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceAlreadyExistsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes a resource error.
type ResourceError struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `type:"string" enum:"FleetErrorCode"`

	// The error message.
	ErrorMessage *string `min:"1" type:"string"`

	// The time the error occurred.
	ErrorTimestamp *time.Time `type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ResourceError) SetErrorCode(v string) *ResourceError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ResourceError) SetErrorMessage(v string) *ResourceError {
	s.ErrorMessage = &v
	return s
}

// SetErrorTimestamp sets the ErrorTimestamp field's value.
func (s *ResourceError) SetErrorTimestamp(v time.Time) *ResourceError {
	s.ErrorTimestamp = &v
	return s
}

// The specified resource is in use.
type ResourceInUseException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 ResourceInUseException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) GoString() string {
	return s.String()
}

func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
	return &ResourceInUseException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceInUseException) Code() string {
	return "ResourceInUseException"
}

// Message returns the exception's message.
func (s *ResourceInUseException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceInUseException) OrigErr() error {
	return nil
}

func (s *ResourceInUseException) 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 *ResourceInUseException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceInUseException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified resource exists and is not in use, but isn't available.
type ResourceNotAvailableException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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 ResourceNotAvailableException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotAvailableException) GoString() string {
	return s.String()
}

func newErrorResourceNotAvailableException(v protocol.ResponseMetadata) error {
	return &ResourceNotAvailableException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotAvailableException) Code() string {
	return "ResourceNotAvailableException"
}

// Message returns the exception's message.
func (s *ResourceNotAvailableException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotAvailableException) OrigErr() error {
	return nil
}

func (s *ResourceNotAvailableException) 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 *ResourceNotAvailableException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotAvailableException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified resource was not found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message in the exception.
	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
}

// Describes the S3 location.
type S3Location struct {
	_ struct{} `type:"structure"`

	// The S3 bucket of the S3 object.
	//
	// S3Bucket is a required field
	S3Bucket *string `min:"3" type:"string" required:"true"`

	// The S3 key of the S3 object.
	//
	// This is required when used for the following:
	//
	//    * IconS3Location (Actions: CreateApplication and UpdateApplication)
	//
	//    * SessionScriptS3Location (Actions: CreateFleet and UpdateFleet)
	//
	//    * ScriptDetails (Actions: CreateAppBlock)
	//
	//    * SourceS3Location when creating an app block with CUSTOM PackagingType
	//    (Actions: CreateAppBlock)
	//
	//    * SourceS3Location when creating an app block with APPSTREAM2 PackagingType,
	//    and using an existing application package (VHD file). In this case, S3Key
	//    refers to the VHD file. If a new application package is required, then
	//    S3Key is not required. (Actions: CreateAppBlock)
	S3Key *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Location) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Location) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Location) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Location"}
	if s.S3Bucket == nil {
		invalidParams.Add(request.NewErrParamRequired("S3Bucket"))
	}
	if s.S3Bucket != nil && len(*s.S3Bucket) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("S3Bucket", 3))
	}
	if s.S3Key != nil && len(*s.S3Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *S3Location) SetS3Bucket(v string) *S3Location {
	s.S3Bucket = &v
	return s
}

// SetS3Key sets the S3Key field's value.
func (s *S3Location) SetS3Key(v string) *S3Location {
	s.S3Key = &v
	return s
}

// Describes the details of the script.
type ScriptDetails struct {
	_ struct{} `type:"structure"`

	// The runtime parameters passed to the run path for the script.
	ExecutableParameters *string `min:"1" type:"string"`

	// The run path for the script.
	//
	// ExecutablePath is a required field
	ExecutablePath *string `min:"1" type:"string" required:"true"`

	// The S3 object location for the script.
	//
	// ScriptS3Location is a required field
	ScriptS3Location *S3Location `type:"structure" required:"true"`

	// The run timeout, in seconds, for the script.
	//
	// TimeoutInSeconds is a required field
	TimeoutInSeconds *int64 `type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScriptDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScriptDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScriptDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScriptDetails"}
	if s.ExecutableParameters != nil && len(*s.ExecutableParameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutableParameters", 1))
	}
	if s.ExecutablePath == nil {
		invalidParams.Add(request.NewErrParamRequired("ExecutablePath"))
	}
	if s.ExecutablePath != nil && len(*s.ExecutablePath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutablePath", 1))
	}
	if s.ScriptS3Location == nil {
		invalidParams.Add(request.NewErrParamRequired("ScriptS3Location"))
	}
	if s.TimeoutInSeconds == nil {
		invalidParams.Add(request.NewErrParamRequired("TimeoutInSeconds"))
	}
	if s.ScriptS3Location != nil {
		if err := s.ScriptS3Location.Validate(); err != nil {
			invalidParams.AddNested("ScriptS3Location", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExecutableParameters sets the ExecutableParameters field's value.
func (s *ScriptDetails) SetExecutableParameters(v string) *ScriptDetails {
	s.ExecutableParameters = &v
	return s
}

// SetExecutablePath sets the ExecutablePath field's value.
func (s *ScriptDetails) SetExecutablePath(v string) *ScriptDetails {
	s.ExecutablePath = &v
	return s
}

// SetScriptS3Location sets the ScriptS3Location field's value.
func (s *ScriptDetails) SetScriptS3Location(v *S3Location) *ScriptDetails {
	s.ScriptS3Location = v
	return s
}

// SetTimeoutInSeconds sets the TimeoutInSeconds field's value.
func (s *ScriptDetails) SetTimeoutInSeconds(v int64) *ScriptDetails {
	s.TimeoutInSeconds = &v
	return s
}

// Describes the credentials for the service account used by the fleet or image
// builder to connect to the directory.
type ServiceAccountCredentials struct {
	_ struct{} `type:"structure"`

	// The user name of the account. This account must have the following privileges:
	// create computer objects, join computers to the domain, and change/reset the
	// password on descendant computer objects for the organizational units specified.
	//
	// AccountName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ServiceAccountCredentials's
	// String and GoString methods.
	//
	// AccountName is a required field
	AccountName *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// The password for the account.
	//
	// AccountPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ServiceAccountCredentials's
	// String and GoString methods.
	//
	// AccountPassword is a required field
	AccountPassword *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceAccountCredentials) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceAccountCredentials) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ServiceAccountCredentials) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ServiceAccountCredentials"}
	if s.AccountName == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountName"))
	}
	if s.AccountName != nil && len(*s.AccountName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountName", 1))
	}
	if s.AccountPassword == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountPassword"))
	}
	if s.AccountPassword != nil && len(*s.AccountPassword) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountPassword", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountName sets the AccountName field's value.
func (s *ServiceAccountCredentials) SetAccountName(v string) *ServiceAccountCredentials {
	s.AccountName = &v
	return s
}

// SetAccountPassword sets the AccountPassword field's value.
func (s *ServiceAccountCredentials) SetAccountPassword(v string) *ServiceAccountCredentials {
	s.AccountPassword = &v
	return s
}

// Describes a streaming session.
type Session struct {
	_ struct{} `type:"structure"`

	// The authentication method. The user is authenticated using a streaming URL
	// (API) or SAML 2.0 federation (SAML).
	AuthenticationType *string `type:"string" enum:"AuthenticationType"`

	// Specifies whether a user is connected to the streaming session.
	ConnectionState *string `type:"string" enum:"SessionConnectionState"`

	// The name of the fleet for the streaming session.
	//
	// FleetName is a required field
	FleetName *string `min:"1" type:"string" required:"true"`

	// The identifier of the streaming session.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The identifier for the instance hosting the session.
	InstanceId *string `min:"1" type:"string"`

	// The time when the streaming session is set to expire. This time is based
	// on the MaxUserDurationinSeconds value, which determines the maximum length
	// of time that a streaming session can run. A streaming session might end earlier
	// than the time specified in SessionMaxExpirationTime, when the DisconnectTimeOutInSeconds
	// elapses or the user chooses to end his or her session. If the DisconnectTimeOutInSeconds
	// elapses, or the user chooses to end his or her session, the streaming instance
	// is terminated and the streaming session ends.
	MaxExpirationTime *time.Time `type:"timestamp"`

	// The network details for the streaming session.
	NetworkAccessConfiguration *NetworkAccessConfiguration `type:"structure"`

	// The name of the stack for the streaming session.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`

	// The time when a streaming instance is dedicated for the user.
	StartTime *time.Time `type:"timestamp"`

	// The current state of the streaming session.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"SessionState"`

	// The identifier of the user for whom the session was created.
	//
	// UserId is a required field
	UserId *string `min:"2" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Session) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Session) GoString() string {
	return s.String()
}

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *Session) SetAuthenticationType(v string) *Session {
	s.AuthenticationType = &v
	return s
}

// SetConnectionState sets the ConnectionState field's value.
func (s *Session) SetConnectionState(v string) *Session {
	s.ConnectionState = &v
	return s
}

// SetFleetName sets the FleetName field's value.
func (s *Session) SetFleetName(v string) *Session {
	s.FleetName = &v
	return s
}

// SetId sets the Id field's value.
func (s *Session) SetId(v string) *Session {
	s.Id = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *Session) SetInstanceId(v string) *Session {
	s.InstanceId = &v
	return s
}

// SetMaxExpirationTime sets the MaxExpirationTime field's value.
func (s *Session) SetMaxExpirationTime(v time.Time) *Session {
	s.MaxExpirationTime = &v
	return s
}

// SetNetworkAccessConfiguration sets the NetworkAccessConfiguration field's value.
func (s *Session) SetNetworkAccessConfiguration(v *NetworkAccessConfiguration) *Session {
	s.NetworkAccessConfiguration = v
	return s
}

// SetStackName sets the StackName field's value.
func (s *Session) SetStackName(v string) *Session {
	s.StackName = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *Session) SetStartTime(v time.Time) *Session {
	s.StartTime = &v
	return s
}

// SetState sets the State field's value.
func (s *Session) SetState(v string) *Session {
	s.State = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *Session) SetUserId(v string) *Session {
	s.UserId = &v
	return s
}

// Describes the permissions that are available to the specified AWS account
// for a shared image.
type SharedImagePermissions struct {
	_ struct{} `type:"structure"`

	// Describes the permissions for a shared image.
	//
	// ImagePermissions is a required field
	ImagePermissions *ImagePermissions `locationName:"imagePermissions" type:"structure" required:"true"`

	// The 12-digit identifier of the AWS account with which the image is shared.
	//
	// SharedAccountId is a required field
	SharedAccountId *string `locationName:"sharedAccountId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SharedImagePermissions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SharedImagePermissions) GoString() string {
	return s.String()
}

// SetImagePermissions sets the ImagePermissions field's value.
func (s *SharedImagePermissions) SetImagePermissions(v *ImagePermissions) *SharedImagePermissions {
	s.ImagePermissions = v
	return s
}

// SetSharedAccountId sets the SharedAccountId field's value.
func (s *SharedImagePermissions) SetSharedAccountId(v string) *SharedImagePermissions {
	s.SharedAccountId = &v
	return s
}

// Describes a stack.
type Stack struct {
	_ struct{} `type:"structure"`

	// The list of virtual private cloud (VPC) interface endpoint objects. Users
	// of the stack can connect to AppStream 2.0 only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The persistent application settings for users of the stack.
	ApplicationSettings *ApplicationSettingsResponse `type:"structure"`

	// The ARN of the stack.
	Arn *string `type:"string"`

	// The time the stack was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description to display.
	Description *string `min:"1" type:"string"`

	// The stack name to display.
	DisplayName *string `min:"1" type:"string"`

	// The domains where AppStream 2.0 streaming sessions can be embedded in an
	// iframe. You must approve the domains that you want to host embedded AppStream
	// 2.0 streaming sessions.
	EmbedHostDomains []*string `min:"1" type:"list"`

	// The URL that users are redirected to after they click the Send Feedback link.
	// If no URL is specified, no Send Feedback link is displayed.
	FeedbackURL *string `type:"string"`

	// The name of the stack.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The URL that users are redirected to after their streaming session ends.
	RedirectURL *string `type:"string"`

	// The errors for the stack.
	StackErrors []*StackError `type:"list"`

	// The storage connectors to enable.
	StorageConnectors []*StorageConnector `type:"list"`

	// The streaming protocol you want your stack to prefer. This can be UDP or
	// TCP. Currently, UDP is only supported in the Windows native client.
	StreamingExperienceSettings *StreamingExperienceSettings `type:"structure"`

	// The actions that are enabled or disabled for users during their streaming
	// sessions. By default these actions are enabled.
	UserSettings []*UserSetting `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 Stack) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Stack) GoString() string {
	return s.String()
}

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *Stack) SetAccessEndpoints(v []*AccessEndpoint) *Stack {
	s.AccessEndpoints = v
	return s
}

// SetApplicationSettings sets the ApplicationSettings field's value.
func (s *Stack) SetApplicationSettings(v *ApplicationSettingsResponse) *Stack {
	s.ApplicationSettings = v
	return s
}

// SetArn sets the Arn field's value.
func (s *Stack) SetArn(v string) *Stack {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Stack) SetCreatedTime(v time.Time) *Stack {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Stack) SetDescription(v string) *Stack {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *Stack) SetDisplayName(v string) *Stack {
	s.DisplayName = &v
	return s
}

// SetEmbedHostDomains sets the EmbedHostDomains field's value.
func (s *Stack) SetEmbedHostDomains(v []*string) *Stack {
	s.EmbedHostDomains = v
	return s
}

// SetFeedbackURL sets the FeedbackURL field's value.
func (s *Stack) SetFeedbackURL(v string) *Stack {
	s.FeedbackURL = &v
	return s
}

// SetName sets the Name field's value.
func (s *Stack) SetName(v string) *Stack {
	s.Name = &v
	return s
}

// SetRedirectURL sets the RedirectURL field's value.
func (s *Stack) SetRedirectURL(v string) *Stack {
	s.RedirectURL = &v
	return s
}

// SetStackErrors sets the StackErrors field's value.
func (s *Stack) SetStackErrors(v []*StackError) *Stack {
	s.StackErrors = v
	return s
}

// SetStorageConnectors sets the StorageConnectors field's value.
func (s *Stack) SetStorageConnectors(v []*StorageConnector) *Stack {
	s.StorageConnectors = v
	return s
}

// SetStreamingExperienceSettings sets the StreamingExperienceSettings field's value.
func (s *Stack) SetStreamingExperienceSettings(v *StreamingExperienceSettings) *Stack {
	s.StreamingExperienceSettings = v
	return s
}

// SetUserSettings sets the UserSettings field's value.
func (s *Stack) SetUserSettings(v []*UserSetting) *Stack {
	s.UserSettings = v
	return s
}

// Describes a stack error.
type StackError struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `type:"string" enum:"StackErrorCode"`

	// The error message.
	ErrorMessage *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StackError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StackError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *StackError) SetErrorCode(v string) *StackError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *StackError) SetErrorMessage(v string) *StackError {
	s.ErrorMessage = &v
	return s
}

type StartAppBlockBuilderInput struct {
	_ struct{} `type:"structure"`

	// The name of the app block builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAppBlockBuilderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAppBlockBuilderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartAppBlockBuilderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartAppBlockBuilderInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StartAppBlockBuilderInput) SetName(v string) *StartAppBlockBuilderInput {
	s.Name = &v
	return s
}

type StartAppBlockBuilderOutput struct {
	_ struct{} `type:"structure"`

	// Describes an app block builder.
	AppBlockBuilder *AppBlockBuilder `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAppBlockBuilderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAppBlockBuilderOutput) GoString() string {
	return s.String()
}

// SetAppBlockBuilder sets the AppBlockBuilder field's value.
func (s *StartAppBlockBuilderOutput) SetAppBlockBuilder(v *AppBlockBuilder) *StartAppBlockBuilderOutput {
	s.AppBlockBuilder = v
	return s
}

type StartFleetInput struct {
	_ struct{} `type:"structure"`

	// The name of the fleet.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartFleetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartFleetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartFleetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartFleetInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StartFleetInput) SetName(v string) *StartFleetInput {
	s.Name = &v
	return s
}

type StartFleetOutput 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 StartFleetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartFleetOutput) GoString() string {
	return s.String()
}

type StartImageBuilderInput struct {
	_ struct{} `type:"structure"`

	// The version of the AppStream 2.0 agent to use for this image builder. To
	// use the latest version of the AppStream 2.0 agent, specify [LATEST].
	AppstreamAgentVersion *string `min:"1" type:"string"`

	// The name of the image builder.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImageBuilderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImageBuilderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartImageBuilderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartImageBuilderInput"}
	if s.AppstreamAgentVersion != nil && len(*s.AppstreamAgentVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AppstreamAgentVersion", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAppstreamAgentVersion sets the AppstreamAgentVersion field's value.
func (s *StartImageBuilderInput) SetAppstreamAgentVersion(v string) *StartImageBuilderInput {
	s.AppstreamAgentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *StartImageBuilderInput) SetName(v string) *StartImageBuilderInput {
	s.Name = &v
	return s
}

type StartImageBuilderOutput struct {
	_ struct{} `type:"structure"`

	// Information about the image builder.
	ImageBuilder *ImageBuilder `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImageBuilderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImageBuilderOutput) GoString() string {
	return s.String()
}

// SetImageBuilder sets the ImageBuilder field's value.
func (s *StartImageBuilderOutput) SetImageBuilder(v *ImageBuilder) *StartImageBuilderOutput {
	s.ImageBuilder = v
	return s
}

type StopAppBlockBuilderInput struct {
	_ struct{} `type:"structure"`

	// The name of the app block builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopAppBlockBuilderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopAppBlockBuilderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopAppBlockBuilderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopAppBlockBuilderInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopAppBlockBuilderInput) SetName(v string) *StopAppBlockBuilderInput {
	s.Name = &v
	return s
}

type StopAppBlockBuilderOutput struct {
	_ struct{} `type:"structure"`

	// Describes an app block builder.
	AppBlockBuilder *AppBlockBuilder `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopAppBlockBuilderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopAppBlockBuilderOutput) GoString() string {
	return s.String()
}

// SetAppBlockBuilder sets the AppBlockBuilder field's value.
func (s *StopAppBlockBuilderOutput) SetAppBlockBuilder(v *AppBlockBuilder) *StopAppBlockBuilderOutput {
	s.AppBlockBuilder = v
	return s
}

type StopFleetInput struct {
	_ struct{} `type:"structure"`

	// The name of the fleet.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopFleetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopFleetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopFleetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopFleetInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopFleetInput) SetName(v string) *StopFleetInput {
	s.Name = &v
	return s
}

type StopFleetOutput 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 StopFleetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopFleetOutput) GoString() string {
	return s.String()
}

type StopImageBuilderInput struct {
	_ struct{} `type:"structure"`

	// The name of the image builder.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopImageBuilderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopImageBuilderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopImageBuilderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopImageBuilderInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopImageBuilderInput) SetName(v string) *StopImageBuilderInput {
	s.Name = &v
	return s
}

type StopImageBuilderOutput struct {
	_ struct{} `type:"structure"`

	// Information about the image builder.
	ImageBuilder *ImageBuilder `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopImageBuilderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopImageBuilderOutput) GoString() string {
	return s.String()
}

// SetImageBuilder sets the ImageBuilder field's value.
func (s *StopImageBuilderOutput) SetImageBuilder(v *ImageBuilder) *StopImageBuilderOutput {
	s.ImageBuilder = v
	return s
}

// Describes a connector that enables persistent storage for users.
type StorageConnector struct {
	_ struct{} `type:"structure"`

	// The type of storage connector.
	//
	// ConnectorType is a required field
	ConnectorType *string `type:"string" required:"true" enum:"StorageConnectorType"`

	// The names of the domains for the account.
	Domains []*string `type:"list"`

	// The ARN of the storage connector.
	ResourceIdentifier *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StorageConnector) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StorageConnector) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StorageConnector) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StorageConnector"}
	if s.ConnectorType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorType"))
	}
	if s.ResourceIdentifier != nil && len(*s.ResourceIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectorType sets the ConnectorType field's value.
func (s *StorageConnector) SetConnectorType(v string) *StorageConnector {
	s.ConnectorType = &v
	return s
}

// SetDomains sets the Domains field's value.
func (s *StorageConnector) SetDomains(v []*string) *StorageConnector {
	s.Domains = v
	return s
}

// SetResourceIdentifier sets the ResourceIdentifier field's value.
func (s *StorageConnector) SetResourceIdentifier(v string) *StorageConnector {
	s.ResourceIdentifier = &v
	return s
}

// The streaming protocol you want your stack to prefer. This can be UDP or
// TCP. Currently, UDP is only supported in the Windows native client.
type StreamingExperienceSettings struct {
	_ struct{} `type:"structure"`

	// The preferred protocol that you want to use while streaming your application.
	PreferredProtocol *string `type:"string" enum:"PreferredProtocol"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StreamingExperienceSettings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StreamingExperienceSettings) GoString() string {
	return s.String()
}

// SetPreferredProtocol sets the PreferredProtocol field's value.
func (s *StreamingExperienceSettings) SetPreferredProtocol(v string) *StreamingExperienceSettings {
	s.PreferredProtocol = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`

	// The tags to associate. A tag is a key-value pair, and the value is optional.
	// For example, Environment=Test. If you do not specify a value, Environment=.
	//
	// If you do not specify a value, the value is set to an empty string.
	//
	// Generally allowed characters are: letters, numbers, and spaces representable
	// in UTF-8, and the following special characters:
	//
	// _ . : / = + \ - @
	//
	// Tags is a required field
	Tags map[string]*string `min:"1" 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.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// 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()
}

type UntagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`

	// The tag keys for the tags to disassociate.
	//
	// TagKeys is a required field
	TagKeys []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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 UpdateAppBlockBuilderInput struct {
	_ struct{} `type:"structure"`

	// The list of interface VPC endpoint (interface endpoint) objects. Administrators
	// can connect to the app block builder only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The attributes to delete from the app block builder.
	AttributesToDelete []*string `type:"list" enum:"AppBlockBuilderAttribute"`

	// The description of the app block builder.
	Description *string `type:"string"`

	// The display name of the app block builder.
	DisplayName *string `type:"string"`

	// Enables or disables default internet access for the app block builder.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role to apply to the app block
	// builder. To assume a role, the app block builder calls the AWS Security Token
	// Service (STS) AssumeRole API operation and passes the ARN of the role to
	// use. The operation creates a new session with temporary credentials. AppStream
	// 2.0 retrieves the temporary credentials and creates the appstream_machine_role
	// credential profile on the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The instance type to use when launching the app block builder. The following
	// instance types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	InstanceType *string `min:"1" type:"string"`

	// The unique name for the app block builder.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The platform of the app block builder.
	//
	// WINDOWS_SERVER_2019 is the only valid value.
	Platform *string `type:"string" enum:"PlatformType"`

	// The VPC configuration for the app block builder.
	//
	// App block builders require that you specify at least two subnets in different
	// availability zones.
	VpcConfig *VpcConfig `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAppBlockBuilderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAppBlockBuilderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAppBlockBuilderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAppBlockBuilderInput"}
	if s.AccessEndpoints != nil && len(s.AccessEndpoints) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccessEndpoints", 1))
	}
	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.AccessEndpoints != nil {
		for i, v := range s.AccessEndpoints {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessEndpoints", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *UpdateAppBlockBuilderInput) SetAccessEndpoints(v []*AccessEndpoint) *UpdateAppBlockBuilderInput {
	s.AccessEndpoints = v
	return s
}

// SetAttributesToDelete sets the AttributesToDelete field's value.
func (s *UpdateAppBlockBuilderInput) SetAttributesToDelete(v []*string) *UpdateAppBlockBuilderInput {
	s.AttributesToDelete = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAppBlockBuilderInput) SetDescription(v string) *UpdateAppBlockBuilderInput {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *UpdateAppBlockBuilderInput) SetDisplayName(v string) *UpdateAppBlockBuilderInput {
	s.DisplayName = &v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *UpdateAppBlockBuilderInput) SetEnableDefaultInternetAccess(v bool) *UpdateAppBlockBuilderInput {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *UpdateAppBlockBuilderInput) SetIamRoleArn(v string) *UpdateAppBlockBuilderInput {
	s.IamRoleArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *UpdateAppBlockBuilderInput) SetInstanceType(v string) *UpdateAppBlockBuilderInput {
	s.InstanceType = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAppBlockBuilderInput) SetName(v string) *UpdateAppBlockBuilderInput {
	s.Name = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *UpdateAppBlockBuilderInput) SetPlatform(v string) *UpdateAppBlockBuilderInput {
	s.Platform = &v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *UpdateAppBlockBuilderInput) SetVpcConfig(v *VpcConfig) *UpdateAppBlockBuilderInput {
	s.VpcConfig = v
	return s
}

type UpdateAppBlockBuilderOutput struct {
	_ struct{} `type:"structure"`

	// Describes an app block builder.
	AppBlockBuilder *AppBlockBuilder `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAppBlockBuilderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAppBlockBuilderOutput) GoString() string {
	return s.String()
}

// SetAppBlockBuilder sets the AppBlockBuilder field's value.
func (s *UpdateAppBlockBuilderOutput) SetAppBlockBuilder(v *AppBlockBuilder) *UpdateAppBlockBuilderOutput {
	s.AppBlockBuilder = v
	return s
}

type UpdateApplicationInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the app block.
	AppBlockArn *string `type:"string"`

	// The attributes to delete for an application.
	AttributesToDelete []*string `type:"list" enum:"ApplicationAttribute"`

	// The description of the application.
	Description *string `type:"string"`

	// The display name of the application. This name is visible to users in the
	// application catalog.
	DisplayName *string `type:"string"`

	// The icon S3 location of the application.
	IconS3Location *S3Location `type:"structure"`

	// The launch parameters of the application.
	LaunchParameters *string `min:"1" type:"string"`

	// The launch path of the application.
	LaunchPath *string `min:"1" type:"string"`

	// The name of the application. This name is visible to users when display name
	// is not specified.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The working directory of the application.
	WorkingDirectory *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateApplicationInput"}
	if s.LaunchParameters != nil && len(*s.LaunchParameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LaunchParameters", 1))
	}
	if s.LaunchPath != nil && len(*s.LaunchPath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LaunchPath", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.WorkingDirectory != nil && len(*s.WorkingDirectory) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkingDirectory", 1))
	}
	if s.IconS3Location != nil {
		if err := s.IconS3Location.Validate(); err != nil {
			invalidParams.AddNested("IconS3Location", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAppBlockArn sets the AppBlockArn field's value.
func (s *UpdateApplicationInput) SetAppBlockArn(v string) *UpdateApplicationInput {
	s.AppBlockArn = &v
	return s
}

// SetAttributesToDelete sets the AttributesToDelete field's value.
func (s *UpdateApplicationInput) SetAttributesToDelete(v []*string) *UpdateApplicationInput {
	s.AttributesToDelete = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateApplicationInput) SetDescription(v string) *UpdateApplicationInput {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *UpdateApplicationInput) SetDisplayName(v string) *UpdateApplicationInput {
	s.DisplayName = &v
	return s
}

// SetIconS3Location sets the IconS3Location field's value.
func (s *UpdateApplicationInput) SetIconS3Location(v *S3Location) *UpdateApplicationInput {
	s.IconS3Location = v
	return s
}

// SetLaunchParameters sets the LaunchParameters field's value.
func (s *UpdateApplicationInput) SetLaunchParameters(v string) *UpdateApplicationInput {
	s.LaunchParameters = &v
	return s
}

// SetLaunchPath sets the LaunchPath field's value.
func (s *UpdateApplicationInput) SetLaunchPath(v string) *UpdateApplicationInput {
	s.LaunchPath = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateApplicationInput) SetName(v string) *UpdateApplicationInput {
	s.Name = &v
	return s
}

// SetWorkingDirectory sets the WorkingDirectory field's value.
func (s *UpdateApplicationInput) SetWorkingDirectory(v string) *UpdateApplicationInput {
	s.WorkingDirectory = &v
	return s
}

type UpdateApplicationOutput struct {
	_ struct{} `type:"structure"`

	// Describes an application in the application catalog.
	Application *Application `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationOutput) GoString() string {
	return s.String()
}

// SetApplication sets the Application field's value.
func (s *UpdateApplicationOutput) SetApplication(v *Application) *UpdateApplicationOutput {
	s.Application = v
	return s
}

type UpdateDirectoryConfigInput struct {
	_ struct{} `type:"structure"`

	// The certificate-based authentication properties used to authenticate SAML
	// 2.0 Identity Provider (IdP) user identities to Active Directory domain-joined
	// streaming instances. Fallback is turned on by default when certificate-based
	// authentication is Enabled . Fallback allows users to log in using their AD
	// domain password if certificate-based authentication is unsuccessful, or to
	// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
	// certificate-based authentication, but does not allow users to log in using
	// their AD domain password. Users will be disconnected to re-authenticate using
	// certificates.
	CertificateBasedAuthProperties *CertificateBasedAuthProperties `type:"structure"`

	// The name of the Directory Config object.
	//
	// DirectoryName is a required field
	DirectoryName *string `type:"string" required:"true"`

	// The distinguished names of the organizational units for computer accounts.
	OrganizationalUnitDistinguishedNames []*string `type:"list"`

	// The credentials for the service account used by the fleet or image builder
	// to connect to the directory.
	ServiceAccountCredentials *ServiceAccountCredentials `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDirectoryConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDirectoryConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDirectoryConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDirectoryConfigInput"}
	if s.DirectoryName == nil {
		invalidParams.Add(request.NewErrParamRequired("DirectoryName"))
	}
	if s.ServiceAccountCredentials != nil {
		if err := s.ServiceAccountCredentials.Validate(); err != nil {
			invalidParams.AddNested("ServiceAccountCredentials", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateBasedAuthProperties sets the CertificateBasedAuthProperties field's value.
func (s *UpdateDirectoryConfigInput) SetCertificateBasedAuthProperties(v *CertificateBasedAuthProperties) *UpdateDirectoryConfigInput {
	s.CertificateBasedAuthProperties = v
	return s
}

// SetDirectoryName sets the DirectoryName field's value.
func (s *UpdateDirectoryConfigInput) SetDirectoryName(v string) *UpdateDirectoryConfigInput {
	s.DirectoryName = &v
	return s
}

// SetOrganizationalUnitDistinguishedNames sets the OrganizationalUnitDistinguishedNames field's value.
func (s *UpdateDirectoryConfigInput) SetOrganizationalUnitDistinguishedNames(v []*string) *UpdateDirectoryConfigInput {
	s.OrganizationalUnitDistinguishedNames = v
	return s
}

// SetServiceAccountCredentials sets the ServiceAccountCredentials field's value.
func (s *UpdateDirectoryConfigInput) SetServiceAccountCredentials(v *ServiceAccountCredentials) *UpdateDirectoryConfigInput {
	s.ServiceAccountCredentials = v
	return s
}

type UpdateDirectoryConfigOutput struct {
	_ struct{} `type:"structure"`

	// Information about the Directory Config object.
	DirectoryConfig *DirectoryConfig `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDirectoryConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDirectoryConfigOutput) GoString() string {
	return s.String()
}

// SetDirectoryConfig sets the DirectoryConfig field's value.
func (s *UpdateDirectoryConfigOutput) SetDirectoryConfig(v *DirectoryConfig) *UpdateDirectoryConfigOutput {
	s.DirectoryConfig = v
	return s
}

type UpdateEntitlementInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether all or only selected apps are entitled.
	AppVisibility *string `type:"string" enum:"AppVisibility"`

	// The attributes of the entitlement.
	Attributes []*EntitlementAttribute `min:"1" type:"list"`

	// The description of the entitlement.
	Description *string `type:"string"`

	// The name of the entitlement.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the stack with which the entitlement is associated.
	//
	// StackName is a required field
	StackName *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEntitlementInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEntitlementInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEntitlementInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEntitlementInput"}
	if s.Attributes != nil && len(s.Attributes) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Attributes", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.StackName == nil {
		invalidParams.Add(request.NewErrParamRequired("StackName"))
	}
	if s.Attributes != nil {
		for i, v := range s.Attributes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAppVisibility sets the AppVisibility field's value.
func (s *UpdateEntitlementInput) SetAppVisibility(v string) *UpdateEntitlementInput {
	s.AppVisibility = &v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *UpdateEntitlementInput) SetAttributes(v []*EntitlementAttribute) *UpdateEntitlementInput {
	s.Attributes = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateEntitlementInput) SetDescription(v string) *UpdateEntitlementInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateEntitlementInput) SetName(v string) *UpdateEntitlementInput {
	s.Name = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *UpdateEntitlementInput) SetStackName(v string) *UpdateEntitlementInput {
	s.StackName = &v
	return s
}

type UpdateEntitlementOutput struct {
	_ struct{} `type:"structure"`

	// The entitlement.
	Entitlement *Entitlement `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEntitlementOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEntitlementOutput) GoString() string {
	return s.String()
}

// SetEntitlement sets the Entitlement field's value.
func (s *UpdateEntitlementOutput) SetEntitlement(v *Entitlement) *UpdateEntitlementOutput {
	s.Entitlement = v
	return s
}

type UpdateFleetInput struct {
	_ struct{} `type:"structure"`

	// The fleet attributes to delete.
	AttributesToDelete []*string `type:"list" enum:"FleetAttribute"`

	// The desired capacity for the fleet. This is not allowed for Elastic fleets.
	ComputeCapacity *ComputeCapacity `type:"structure"`

	// Deletes the VPC association for the specified fleet.
	//
	// Deprecated: DeleteVpcConfig has been deprecated
	DeleteVpcConfig *bool `deprecated:"true" type:"boolean"`

	// The description to display.
	Description *string `type:"string"`

	// The amount of time that a streaming session remains active after users disconnect.
	// If users try to reconnect to the streaming session after a disconnection
	// or network interruption within this time interval, they are connected to
	// their previous session. Otherwise, they are connected to a new session with
	// a new streaming instance.
	//
	// Specify a value between 60 and 360000.
	DisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The fleet name to display.
	DisplayName *string `type:"string"`

	// The name of the directory and organizational unit (OU) to use to join the
	// fleet to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo `type:"structure"`

	// Enables or disables default internet access for the fleet.
	EnableDefaultInternetAccess *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To
	// assume a role, a fleet instance calls the AWS Security Token Service (STS)
	// AssumeRole API operation and passes the ARN of the role to use. The operation
	// creates a new session with temporary credentials. AppStream 2.0 retrieves
	// the temporary credentials and creates the appstream_machine_role credential
	// profile on the instance.
	//
	// For more information, see Using an IAM Role to Grant Permissions to Applications
	// and Scripts Running on AppStream 2.0 Streaming Instances (https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
	// in the Amazon AppStream 2.0 Administration Guide.
	IamRoleArn *string `type:"string"`

	// The amount of time that users can be idle (inactive) before they are disconnected
	// from their streaming session and the DisconnectTimeoutInSeconds time interval
	// begins. Users are notified before they are disconnected due to inactivity.
	// If users try to reconnect to the streaming session before the time interval
	// specified in DisconnectTimeoutInSeconds elapses, they are connected to their
	// previous session. Users are considered idle when they stop providing keyboard
	// or mouse input during their streaming session. File uploads and downloads,
	// audio in, audio out, and pixels changing do not qualify as user activity.
	// If users continue to be idle after the time interval in IdleDisconnectTimeoutInSeconds
	// elapses, they are disconnected.
	//
	// To prevent users from being disconnected due to inactivity, specify a value
	// of 0. Otherwise, specify a value between 60 and 3600. The default value is
	// 0.
	//
	// If you enable this feature, we recommend that you specify a value that corresponds
	// exactly to a whole number of minutes (for example, 60, 120, and 180). If
	// you don't do this, the value is rounded to the nearest minute. For example,
	// if you specify a value of 70, users are disconnected after 1 minute of inactivity.
	// If you specify a value that is at the midpoint between two different minutes,
	// the value is rounded up. For example, if you specify a value of 90, users
	// are disconnected after 2 minutes of inactivity.
	IdleDisconnectTimeoutInSeconds *int64 `type:"integer"`

	// The ARN of the public, private, or shared image to use.
	ImageArn *string `type:"string"`

	// The name of the image used to create the fleet.
	ImageName *string `min:"1" type:"string"`

	// The instance type to use when launching fleet instances. The following instance
	// types are available:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	//
	//    * stream.compute.large
	//
	//    * stream.compute.xlarge
	//
	//    * stream.compute.2xlarge
	//
	//    * stream.compute.4xlarge
	//
	//    * stream.compute.8xlarge
	//
	//    * stream.memory.large
	//
	//    * stream.memory.xlarge
	//
	//    * stream.memory.2xlarge
	//
	//    * stream.memory.4xlarge
	//
	//    * stream.memory.8xlarge
	//
	//    * stream.memory.z1d.large
	//
	//    * stream.memory.z1d.xlarge
	//
	//    * stream.memory.z1d.2xlarge
	//
	//    * stream.memory.z1d.3xlarge
	//
	//    * stream.memory.z1d.6xlarge
	//
	//    * stream.memory.z1d.12xlarge
	//
	//    * stream.graphics-design.large
	//
	//    * stream.graphics-design.xlarge
	//
	//    * stream.graphics-design.2xlarge
	//
	//    * stream.graphics-design.4xlarge
	//
	//    * stream.graphics-desktop.2xlarge
	//
	//    * stream.graphics.g4dn.xlarge
	//
	//    * stream.graphics.g4dn.2xlarge
	//
	//    * stream.graphics.g4dn.4xlarge
	//
	//    * stream.graphics.g4dn.8xlarge
	//
	//    * stream.graphics.g4dn.12xlarge
	//
	//    * stream.graphics.g4dn.16xlarge
	//
	//    * stream.graphics-pro.4xlarge
	//
	//    * stream.graphics-pro.8xlarge
	//
	//    * stream.graphics-pro.16xlarge
	//
	// The following instance types are available for Elastic fleets:
	//
	//    * stream.standard.small
	//
	//    * stream.standard.medium
	//
	//    * stream.standard.large
	//
	//    * stream.standard.xlarge
	//
	//    * stream.standard.2xlarge
	InstanceType *string `min:"1" type:"string"`

	// The maximum number of concurrent sessions for a fleet.
	MaxConcurrentSessions *int64 `type:"integer"`

	// The maximum number of user sessions on an instance. This only applies to
	// multi-session fleets.
	MaxSessionsPerInstance *int64 `type:"integer"`

	// The maximum amount of time that a streaming session can remain active, in
	// seconds. If users are still connected to a streaming instance five minutes
	// before this limit is reached, they are prompted to save any open documents
	// before being disconnected. After this time elapses, the instance is terminated
	// and replaced by a new instance.
	//
	// Specify a value between 600 and 432000.
	MaxUserDurationInSeconds *int64 `type:"integer"`

	// A unique name for the fleet.
	Name *string `type:"string"`

	// The platform of the fleet. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported
	// for Elastic fleets.
	Platform *string `type:"string" enum:"PlatformType"`

	// The S3 location of the session scripts configuration zip file. This only
	// applies to Elastic fleets.
	SessionScriptS3Location *S3Location `type:"structure"`

	// The AppStream 2.0 view that is displayed to your users when they stream from
	// the fleet. When APP is specified, only the windows of applications opened
	// by users display. When DESKTOP is specified, the standard desktop that is
	// provided by the operating system displays.
	//
	// The default value is APP.
	StreamView *string `type:"string" enum:"StreamView"`

	// The USB device filter strings that specify which USB devices a user can redirect
	// to the fleet streaming session, when using the Windows native client. This
	// is allowed but not required for Elastic fleets.
	UsbDeviceFilterStrings []*string `type:"list"`

	// The VPC configuration for the fleet. This is required for Elastic fleets,
	// but not required for other fleet types. Elastic fleets require that you specify
	// at least two subnets in different availability zones.
	VpcConfig *VpcConfig `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFleetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFleetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFleetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFleetInput"}
	if s.ImageName != nil && len(*s.ImageName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ImageName", 1))
	}
	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
	}
	if s.SessionScriptS3Location != nil {
		if err := s.SessionScriptS3Location.Validate(); err != nil {
			invalidParams.AddNested("SessionScriptS3Location", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributesToDelete sets the AttributesToDelete field's value.
func (s *UpdateFleetInput) SetAttributesToDelete(v []*string) *UpdateFleetInput {
	s.AttributesToDelete = v
	return s
}

// SetComputeCapacity sets the ComputeCapacity field's value.
func (s *UpdateFleetInput) SetComputeCapacity(v *ComputeCapacity) *UpdateFleetInput {
	s.ComputeCapacity = v
	return s
}

// SetDeleteVpcConfig sets the DeleteVpcConfig field's value.
func (s *UpdateFleetInput) SetDeleteVpcConfig(v bool) *UpdateFleetInput {
	s.DeleteVpcConfig = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateFleetInput) SetDescription(v string) *UpdateFleetInput {
	s.Description = &v
	return s
}

// SetDisconnectTimeoutInSeconds sets the DisconnectTimeoutInSeconds field's value.
func (s *UpdateFleetInput) SetDisconnectTimeoutInSeconds(v int64) *UpdateFleetInput {
	s.DisconnectTimeoutInSeconds = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *UpdateFleetInput) SetDisplayName(v string) *UpdateFleetInput {
	s.DisplayName = &v
	return s
}

// SetDomainJoinInfo sets the DomainJoinInfo field's value.
func (s *UpdateFleetInput) SetDomainJoinInfo(v *DomainJoinInfo) *UpdateFleetInput {
	s.DomainJoinInfo = v
	return s
}

// SetEnableDefaultInternetAccess sets the EnableDefaultInternetAccess field's value.
func (s *UpdateFleetInput) SetEnableDefaultInternetAccess(v bool) *UpdateFleetInput {
	s.EnableDefaultInternetAccess = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *UpdateFleetInput) SetIamRoleArn(v string) *UpdateFleetInput {
	s.IamRoleArn = &v
	return s
}

// SetIdleDisconnectTimeoutInSeconds sets the IdleDisconnectTimeoutInSeconds field's value.
func (s *UpdateFleetInput) SetIdleDisconnectTimeoutInSeconds(v int64) *UpdateFleetInput {
	s.IdleDisconnectTimeoutInSeconds = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *UpdateFleetInput) SetImageArn(v string) *UpdateFleetInput {
	s.ImageArn = &v
	return s
}

// SetImageName sets the ImageName field's value.
func (s *UpdateFleetInput) SetImageName(v string) *UpdateFleetInput {
	s.ImageName = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *UpdateFleetInput) SetInstanceType(v string) *UpdateFleetInput {
	s.InstanceType = &v
	return s
}

// SetMaxConcurrentSessions sets the MaxConcurrentSessions field's value.
func (s *UpdateFleetInput) SetMaxConcurrentSessions(v int64) *UpdateFleetInput {
	s.MaxConcurrentSessions = &v
	return s
}

// SetMaxSessionsPerInstance sets the MaxSessionsPerInstance field's value.
func (s *UpdateFleetInput) SetMaxSessionsPerInstance(v int64) *UpdateFleetInput {
	s.MaxSessionsPerInstance = &v
	return s
}

// SetMaxUserDurationInSeconds sets the MaxUserDurationInSeconds field's value.
func (s *UpdateFleetInput) SetMaxUserDurationInSeconds(v int64) *UpdateFleetInput {
	s.MaxUserDurationInSeconds = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateFleetInput) SetName(v string) *UpdateFleetInput {
	s.Name = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *UpdateFleetInput) SetPlatform(v string) *UpdateFleetInput {
	s.Platform = &v
	return s
}

// SetSessionScriptS3Location sets the SessionScriptS3Location field's value.
func (s *UpdateFleetInput) SetSessionScriptS3Location(v *S3Location) *UpdateFleetInput {
	s.SessionScriptS3Location = v
	return s
}

// SetStreamView sets the StreamView field's value.
func (s *UpdateFleetInput) SetStreamView(v string) *UpdateFleetInput {
	s.StreamView = &v
	return s
}

// SetUsbDeviceFilterStrings sets the UsbDeviceFilterStrings field's value.
func (s *UpdateFleetInput) SetUsbDeviceFilterStrings(v []*string) *UpdateFleetInput {
	s.UsbDeviceFilterStrings = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *UpdateFleetInput) SetVpcConfig(v *VpcConfig) *UpdateFleetInput {
	s.VpcConfig = v
	return s
}

type UpdateFleetOutput struct {
	_ struct{} `type:"structure"`

	// Information about the fleet.
	Fleet *Fleet `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFleetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFleetOutput) GoString() string {
	return s.String()
}

// SetFleet sets the Fleet field's value.
func (s *UpdateFleetOutput) SetFleet(v *Fleet) *UpdateFleetOutput {
	s.Fleet = v
	return s
}

type UpdateImagePermissionsInput struct {
	_ struct{} `type:"structure"`

	// The permissions for the image.
	//
	// ImagePermissions is a required field
	ImagePermissions *ImagePermissions `type:"structure" required:"true"`

	// The name of the private image.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The 12-digit identifier of the AWS account for which you want add or update
	// image permissions.
	//
	// SharedAccountId is a required field
	SharedAccountId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateImagePermissionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateImagePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateImagePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateImagePermissionsInput"}
	if s.ImagePermissions == nil {
		invalidParams.Add(request.NewErrParamRequired("ImagePermissions"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.SharedAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("SharedAccountId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetImagePermissions sets the ImagePermissions field's value.
func (s *UpdateImagePermissionsInput) SetImagePermissions(v *ImagePermissions) *UpdateImagePermissionsInput {
	s.ImagePermissions = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateImagePermissionsInput) SetName(v string) *UpdateImagePermissionsInput {
	s.Name = &v
	return s
}

// SetSharedAccountId sets the SharedAccountId field's value.
func (s *UpdateImagePermissionsInput) SetSharedAccountId(v string) *UpdateImagePermissionsInput {
	s.SharedAccountId = &v
	return s
}

type UpdateImagePermissionsOutput 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 UpdateImagePermissionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateImagePermissionsOutput) GoString() string {
	return s.String()
}

type UpdateStackInput struct {
	_ struct{} `type:"structure"`

	// The list of interface VPC endpoint (interface endpoint) objects. Users of
	// the stack can connect to AppStream 2.0 only through the specified endpoints.
	AccessEndpoints []*AccessEndpoint `min:"1" type:"list"`

	// The persistent application settings for users of a stack. When these settings
	// are enabled, changes that users make to applications and Windows settings
	// are automatically saved after each session and applied to the next session.
	ApplicationSettings *ApplicationSettings `type:"structure"`

	// The stack attributes to delete.
	AttributesToDelete []*string `type:"list" enum:"StackAttribute"`

	// Deletes the storage connectors currently enabled for the stack.
	//
	// Deprecated: DeleteStorageConnectors has been deprecated
	DeleteStorageConnectors *bool `deprecated:"true" type:"boolean"`

	// The description to display.
	Description *string `type:"string"`

	// The stack name to display.
	DisplayName *string `type:"string"`

	// The domains where AppStream 2.0 streaming sessions can be embedded in an
	// iframe. You must approve the domains that you want to host embedded AppStream
	// 2.0 streaming sessions.
	EmbedHostDomains []*string `min:"1" type:"list"`

	// The URL that users are redirected to after they choose the Send Feedback
	// link. If no URL is specified, no Send Feedback link is displayed.
	FeedbackURL *string `type:"string"`

	// The name of the stack.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The URL that users are redirected to after their streaming session ends.
	RedirectURL *string `type:"string"`

	// The storage connectors to enable.
	StorageConnectors []*StorageConnector `type:"list"`

	// The streaming protocol you want your stack to prefer. This can be UDP or
	// TCP. Currently, UDP is only supported in the Windows native client.
	StreamingExperienceSettings *StreamingExperienceSettings `type:"structure"`

	// The actions that are enabled or disabled for users during their streaming
	// sessions. By default, these actions are enabled.
	UserSettings []*UserSetting `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 UpdateStackInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateStackInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateStackInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateStackInput"}
	if s.AccessEndpoints != nil && len(s.AccessEndpoints) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccessEndpoints", 1))
	}
	if s.EmbedHostDomains != nil && len(s.EmbedHostDomains) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EmbedHostDomains", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.UserSettings != nil && len(s.UserSettings) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserSettings", 1))
	}
	if s.AccessEndpoints != nil {
		for i, v := range s.AccessEndpoints {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessEndpoints", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ApplicationSettings != nil {
		if err := s.ApplicationSettings.Validate(); err != nil {
			invalidParams.AddNested("ApplicationSettings", err.(request.ErrInvalidParams))
		}
	}
	if s.StorageConnectors != nil {
		for i, v := range s.StorageConnectors {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StorageConnectors", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.UserSettings != nil {
		for i, v := range s.UserSettings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "UserSettings", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessEndpoints sets the AccessEndpoints field's value.
func (s *UpdateStackInput) SetAccessEndpoints(v []*AccessEndpoint) *UpdateStackInput {
	s.AccessEndpoints = v
	return s
}

// SetApplicationSettings sets the ApplicationSettings field's value.
func (s *UpdateStackInput) SetApplicationSettings(v *ApplicationSettings) *UpdateStackInput {
	s.ApplicationSettings = v
	return s
}

// SetAttributesToDelete sets the AttributesToDelete field's value.
func (s *UpdateStackInput) SetAttributesToDelete(v []*string) *UpdateStackInput {
	s.AttributesToDelete = v
	return s
}

// SetDeleteStorageConnectors sets the DeleteStorageConnectors field's value.
func (s *UpdateStackInput) SetDeleteStorageConnectors(v bool) *UpdateStackInput {
	s.DeleteStorageConnectors = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateStackInput) SetDescription(v string) *UpdateStackInput {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *UpdateStackInput) SetDisplayName(v string) *UpdateStackInput {
	s.DisplayName = &v
	return s
}

// SetEmbedHostDomains sets the EmbedHostDomains field's value.
func (s *UpdateStackInput) SetEmbedHostDomains(v []*string) *UpdateStackInput {
	s.EmbedHostDomains = v
	return s
}

// SetFeedbackURL sets the FeedbackURL field's value.
func (s *UpdateStackInput) SetFeedbackURL(v string) *UpdateStackInput {
	s.FeedbackURL = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateStackInput) SetName(v string) *UpdateStackInput {
	s.Name = &v
	return s
}

// SetRedirectURL sets the RedirectURL field's value.
func (s *UpdateStackInput) SetRedirectURL(v string) *UpdateStackInput {
	s.RedirectURL = &v
	return s
}

// SetStorageConnectors sets the StorageConnectors field's value.
func (s *UpdateStackInput) SetStorageConnectors(v []*StorageConnector) *UpdateStackInput {
	s.StorageConnectors = v
	return s
}

// SetStreamingExperienceSettings sets the StreamingExperienceSettings field's value.
func (s *UpdateStackInput) SetStreamingExperienceSettings(v *StreamingExperienceSettings) *UpdateStackInput {
	s.StreamingExperienceSettings = v
	return s
}

// SetUserSettings sets the UserSettings field's value.
func (s *UpdateStackInput) SetUserSettings(v []*UserSetting) *UpdateStackInput {
	s.UserSettings = v
	return s
}

type UpdateStackOutput struct {
	_ struct{} `type:"structure"`

	// Information about the stack.
	Stack *Stack `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateStackOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateStackOutput) GoString() string {
	return s.String()
}

// SetStack sets the Stack field's value.
func (s *UpdateStackOutput) SetStack(v *Stack) *UpdateStackOutput {
	s.Stack = v
	return s
}

// Describes information about the usage report subscription.
type UsageReportSubscription struct {
	_ struct{} `type:"structure"`

	// The time when the last usage report was generated.
	LastGeneratedReportDate *time.Time `type:"timestamp"`

	// The Amazon S3 bucket where generated reports are stored.
	//
	// If you enabled on-instance session scripts and Amazon S3 logging for your
	// session script configuration, AppStream 2.0 created an S3 bucket to store
	// the script output. The bucket is unique to your account and Region. When
	// you enable usage reporting in this case, AppStream 2.0 uses the same bucket
	// to store your usage reports. If you haven't already enabled on-instance session
	// scripts, when you enable usage reports, AppStream 2.0 creates a new S3 bucket.
	S3BucketName *string `min:"1" type:"string"`

	// The schedule for generating usage reports.
	Schedule *string `type:"string" enum:"UsageReportSchedule"`

	// The errors that were returned if usage reports couldn't be generated.
	SubscriptionErrors []*LastReportGenerationExecutionError `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 UsageReportSubscription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageReportSubscription) GoString() string {
	return s.String()
}

// SetLastGeneratedReportDate sets the LastGeneratedReportDate field's value.
func (s *UsageReportSubscription) SetLastGeneratedReportDate(v time.Time) *UsageReportSubscription {
	s.LastGeneratedReportDate = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *UsageReportSubscription) SetS3BucketName(v string) *UsageReportSubscription {
	s.S3BucketName = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UsageReportSubscription) SetSchedule(v string) *UsageReportSubscription {
	s.Schedule = &v
	return s
}

// SetSubscriptionErrors sets the SubscriptionErrors field's value.
func (s *UsageReportSubscription) SetSubscriptionErrors(v []*LastReportGenerationExecutionError) *UsageReportSubscription {
	s.SubscriptionErrors = v
	return s
}

// Describes a user in the user pool.
type User struct {
	_ struct{} `type:"structure"`

	// The ARN of the user.
	Arn *string `type:"string"`

	// The authentication type for the user.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// The date and time the user was created in the user pool.
	CreatedTime *time.Time `type:"timestamp"`

	// Specifies whether the user in the user pool is enabled.
	Enabled *bool `type:"boolean"`

	// The first name, or given name, of the user.
	//
	// FirstName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by User's
	// String and GoString methods.
	FirstName *string `type:"string" sensitive:"true"`

	// The last name, or surname, of the user.
	//
	// LastName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by User's
	// String and GoString methods.
	LastName *string `type:"string" sensitive:"true"`

	// The status of the user in the user pool. The status can be one of the following:
	//
	//    * UNCONFIRMED – The user is created but not confirmed.
	//
	//    * CONFIRMED – The user is confirmed.
	//
	//    * ARCHIVED – The user is no longer active.
	//
	//    * COMPROMISED – The user is disabled because of a potential security
	//    threat.
	//
	//    * UNKNOWN – The user status is not known.
	Status *string `min:"1" type:"string"`

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by User's
	// String and GoString methods.
	UserName *string `min:"1" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s User) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s User) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *User) SetArn(v string) *User {
	s.Arn = &v
	return s
}

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *User) SetAuthenticationType(v string) *User {
	s.AuthenticationType = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *User) SetCreatedTime(v time.Time) *User {
	s.CreatedTime = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *User) SetEnabled(v bool) *User {
	s.Enabled = &v
	return s
}

// SetFirstName sets the FirstName field's value.
func (s *User) SetFirstName(v string) *User {
	s.FirstName = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *User) SetLastName(v string) *User {
	s.LastName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *User) SetStatus(v string) *User {
	s.Status = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *User) SetUserName(v string) *User {
	s.UserName = &v
	return s
}

// Describes an action and whether the action is enabled or disabled for users
// during their streaming sessions.
type UserSetting struct {
	_ struct{} `type:"structure"`

	// The action that is enabled or disabled.
	//
	// Action is a required field
	Action *string `type:"string" required:"true" enum:"Action"`

	// Specifies the number of characters that can be copied by end users from the
	// local device to the remote session, and to the local device from the remote
	// session.
	//
	// This can be specified only for the CLIPBOARD_COPY_FROM_LOCAL_DEVICE and CLIPBOARD_COPY_TO_LOCAL_DEVICE
	// actions.
	//
	// This defaults to 20,971,520 (20 MB) when unspecified and the permission is
	// ENABLED. This can't be specified when the permission is DISABLED.
	//
	// This can only be specified for AlwaysOn and OnDemand fleets. The attribute
	// is not supported on Elastic fleets.
	//
	// The value can be between 1 and 20,971,520 (20 MB).
	MaximumLength *int64 `type:"integer"`

	// Indicates whether the action is enabled or disabled.
	//
	// Permission is a required field
	Permission *string `type:"string" required:"true" enum:"Permission"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSetting) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSetting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserSetting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserSetting"}
	if s.Action == nil {
		invalidParams.Add(request.NewErrParamRequired("Action"))
	}
	if s.Permission == nil {
		invalidParams.Add(request.NewErrParamRequired("Permission"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAction sets the Action field's value.
func (s *UserSetting) SetAction(v string) *UserSetting {
	s.Action = &v
	return s
}

// SetMaximumLength sets the MaximumLength field's value.
func (s *UserSetting) SetMaximumLength(v int64) *UserSetting {
	s.MaximumLength = &v
	return s
}

// SetPermission sets the Permission field's value.
func (s *UserSetting) SetPermission(v string) *UserSetting {
	s.Permission = &v
	return s
}

// Describes a user in the user pool and the associated stack.
type UserStackAssociation struct {
	_ struct{} `type:"structure"`

	// The authentication type for the user.
	//
	// AuthenticationType is a required field
	AuthenticationType *string `type:"string" required:"true" enum:"AuthenticationType"`

	// Specifies whether a welcome email is sent to a user after the user is created
	// in the user pool.
	SendEmailNotification *bool `type:"boolean"`

	// The name of the stack that is associated with the user.
	//
	// StackName is a required field
	StackName *string `min:"1" type:"string" required:"true"`

	// The email address of the user who is associated with the stack.
	//
	// Users' email addresses are case-sensitive.
	//
	// UserName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserStackAssociation's
	// String and GoString methods.
	//
	// UserName is a required field
	UserName *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserStackAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserStackAssociation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserStackAssociation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserStackAssociation"}
	if s.AuthenticationType == nil {
		invalidParams.Add(request.NewErrParamRequired("AuthenticationType"))
	}
	if s.StackName == nil {
		invalidParams.Add(request.NewErrParamRequired("StackName"))
	}
	if s.StackName != nil && len(*s.StackName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StackName", 1))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *UserStackAssociation) SetAuthenticationType(v string) *UserStackAssociation {
	s.AuthenticationType = &v
	return s
}

// SetSendEmailNotification sets the SendEmailNotification field's value.
func (s *UserStackAssociation) SetSendEmailNotification(v bool) *UserStackAssociation {
	s.SendEmailNotification = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *UserStackAssociation) SetStackName(v string) *UserStackAssociation {
	s.StackName = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UserStackAssociation) SetUserName(v string) *UserStackAssociation {
	s.UserName = &v
	return s
}

// Describes the error that is returned when a user can’t be associated with
// or disassociated from a stack.
type UserStackAssociationError struct {
	_ struct{} `type:"structure"`

	// The error code for the error that is returned when a user can’t be associated
	// with or disassociated from a stack.
	ErrorCode *string `type:"string" enum:"UserStackAssociationErrorCode"`

	// The error message for the error that is returned when a user can’t be associated
	// with or disassociated from a stack.
	ErrorMessage *string `min:"1" type:"string"`

	// Information about the user and associated stack.
	UserStackAssociation *UserStackAssociation `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserStackAssociationError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserStackAssociationError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UserStackAssociationError) SetErrorCode(v string) *UserStackAssociationError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *UserStackAssociationError) SetErrorMessage(v string) *UserStackAssociationError {
	s.ErrorMessage = &v
	return s
}

// SetUserStackAssociation sets the UserStackAssociation field's value.
func (s *UserStackAssociationError) SetUserStackAssociation(v *UserStackAssociation) *UserStackAssociationError {
	s.UserStackAssociation = v
	return s
}

// Describes VPC configuration information for fleets and image builders.
type VpcConfig struct {
	_ struct{} `type:"structure"`

	// The identifiers of the security groups for the fleet or image builder.
	SecurityGroupIds []*string `type:"list"`

	// The identifiers of the subnets to which a network interface is attached from
	// the fleet instance or image builder instance. Fleet instances use one or
	// more subnets. Image builder instances use one subnet.
	SubnetIds []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcConfig) GoString() string {
	return s.String()
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *VpcConfig) SetSecurityGroupIds(v []*string) *VpcConfig {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *VpcConfig) SetSubnetIds(v []*string) *VpcConfig {
	s.SubnetIds = v
	return s
}

const (
	// AccessEndpointTypeStreaming is a AccessEndpointType enum value
	AccessEndpointTypeStreaming = "STREAMING"
)

// AccessEndpointType_Values returns all elements of the AccessEndpointType enum
func AccessEndpointType_Values() []string {
	return []string{
		AccessEndpointTypeStreaming,
	}
}

const (
	// ActionClipboardCopyFromLocalDevice is a Action enum value
	ActionClipboardCopyFromLocalDevice = "CLIPBOARD_COPY_FROM_LOCAL_DEVICE"

	// ActionClipboardCopyToLocalDevice is a Action enum value
	ActionClipboardCopyToLocalDevice = "CLIPBOARD_COPY_TO_LOCAL_DEVICE"

	// ActionFileUpload is a Action enum value
	ActionFileUpload = "FILE_UPLOAD"

	// ActionFileDownload is a Action enum value
	ActionFileDownload = "FILE_DOWNLOAD"

	// ActionPrintingToLocalDevice is a Action enum value
	ActionPrintingToLocalDevice = "PRINTING_TO_LOCAL_DEVICE"

	// ActionDomainPasswordSignin is a Action enum value
	ActionDomainPasswordSignin = "DOMAIN_PASSWORD_SIGNIN"

	// ActionDomainSmartCardSignin is a Action enum value
	ActionDomainSmartCardSignin = "DOMAIN_SMART_CARD_SIGNIN"
)

// Action_Values returns all elements of the Action enum
func Action_Values() []string {
	return []string{
		ActionClipboardCopyFromLocalDevice,
		ActionClipboardCopyToLocalDevice,
		ActionFileUpload,
		ActionFileDownload,
		ActionPrintingToLocalDevice,
		ActionDomainPasswordSignin,
		ActionDomainSmartCardSignin,
	}
}

const (
	// AppBlockBuilderAttributeIamRoleArn is a AppBlockBuilderAttribute enum value
	AppBlockBuilderAttributeIamRoleArn = "IAM_ROLE_ARN"

	// AppBlockBuilderAttributeAccessEndpoints is a AppBlockBuilderAttribute enum value
	AppBlockBuilderAttributeAccessEndpoints = "ACCESS_ENDPOINTS"

	// AppBlockBuilderAttributeVpcConfigurationSecurityGroupIds is a AppBlockBuilderAttribute enum value
	AppBlockBuilderAttributeVpcConfigurationSecurityGroupIds = "VPC_CONFIGURATION_SECURITY_GROUP_IDS"
)

// AppBlockBuilderAttribute_Values returns all elements of the AppBlockBuilderAttribute enum
func AppBlockBuilderAttribute_Values() []string {
	return []string{
		AppBlockBuilderAttributeIamRoleArn,
		AppBlockBuilderAttributeAccessEndpoints,
		AppBlockBuilderAttributeVpcConfigurationSecurityGroupIds,
	}
}

const (
	// AppBlockBuilderPlatformTypeWindowsServer2019 is a AppBlockBuilderPlatformType enum value
	AppBlockBuilderPlatformTypeWindowsServer2019 = "WINDOWS_SERVER_2019"
)

// AppBlockBuilderPlatformType_Values returns all elements of the AppBlockBuilderPlatformType enum
func AppBlockBuilderPlatformType_Values() []string {
	return []string{
		AppBlockBuilderPlatformTypeWindowsServer2019,
	}
}

const (
	// AppBlockBuilderStateStarting is a AppBlockBuilderState enum value
	AppBlockBuilderStateStarting = "STARTING"

	// AppBlockBuilderStateRunning is a AppBlockBuilderState enum value
	AppBlockBuilderStateRunning = "RUNNING"

	// AppBlockBuilderStateStopping is a AppBlockBuilderState enum value
	AppBlockBuilderStateStopping = "STOPPING"

	// AppBlockBuilderStateStopped is a AppBlockBuilderState enum value
	AppBlockBuilderStateStopped = "STOPPED"
)

// AppBlockBuilderState_Values returns all elements of the AppBlockBuilderState enum
func AppBlockBuilderState_Values() []string {
	return []string{
		AppBlockBuilderStateStarting,
		AppBlockBuilderStateRunning,
		AppBlockBuilderStateStopping,
		AppBlockBuilderStateStopped,
	}
}

const (
	// AppBlockBuilderStateChangeReasonCodeInternalError is a AppBlockBuilderStateChangeReasonCode enum value
	AppBlockBuilderStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
)

// AppBlockBuilderStateChangeReasonCode_Values returns all elements of the AppBlockBuilderStateChangeReasonCode enum
func AppBlockBuilderStateChangeReasonCode_Values() []string {
	return []string{
		AppBlockBuilderStateChangeReasonCodeInternalError,
	}
}

const (
	// AppBlockStateInactive is a AppBlockState enum value
	AppBlockStateInactive = "INACTIVE"

	// AppBlockStateActive is a AppBlockState enum value
	AppBlockStateActive = "ACTIVE"
)

// AppBlockState_Values returns all elements of the AppBlockState enum
func AppBlockState_Values() []string {
	return []string{
		AppBlockStateInactive,
		AppBlockStateActive,
	}
}

const (
	// AppVisibilityAll is a AppVisibility enum value
	AppVisibilityAll = "ALL"

	// AppVisibilityAssociated is a AppVisibility enum value
	AppVisibilityAssociated = "ASSOCIATED"
)

// AppVisibility_Values returns all elements of the AppVisibility enum
func AppVisibility_Values() []string {
	return []string{
		AppVisibilityAll,
		AppVisibilityAssociated,
	}
}

const (
	// ApplicationAttributeLaunchParameters is a ApplicationAttribute enum value
	ApplicationAttributeLaunchParameters = "LAUNCH_PARAMETERS"

	// ApplicationAttributeWorkingDirectory is a ApplicationAttribute enum value
	ApplicationAttributeWorkingDirectory = "WORKING_DIRECTORY"
)

// ApplicationAttribute_Values returns all elements of the ApplicationAttribute enum
func ApplicationAttribute_Values() []string {
	return []string{
		ApplicationAttributeLaunchParameters,
		ApplicationAttributeWorkingDirectory,
	}
}

const (
	// AuthenticationTypeApi is a AuthenticationType enum value
	AuthenticationTypeApi = "API"

	// AuthenticationTypeSaml is a AuthenticationType enum value
	AuthenticationTypeSaml = "SAML"

	// AuthenticationTypeUserpool is a AuthenticationType enum value
	AuthenticationTypeUserpool = "USERPOOL"

	// AuthenticationTypeAwsAd is a AuthenticationType enum value
	AuthenticationTypeAwsAd = "AWS_AD"
)

// AuthenticationType_Values returns all elements of the AuthenticationType enum
func AuthenticationType_Values() []string {
	return []string{
		AuthenticationTypeApi,
		AuthenticationTypeSaml,
		AuthenticationTypeUserpool,
		AuthenticationTypeAwsAd,
	}
}

const (
	// CertificateBasedAuthStatusDisabled is a CertificateBasedAuthStatus enum value
	CertificateBasedAuthStatusDisabled = "DISABLED"

	// CertificateBasedAuthStatusEnabled is a CertificateBasedAuthStatus enum value
	CertificateBasedAuthStatusEnabled = "ENABLED"

	// CertificateBasedAuthStatusEnabledNoDirectoryLoginFallback is a CertificateBasedAuthStatus enum value
	CertificateBasedAuthStatusEnabledNoDirectoryLoginFallback = "ENABLED_NO_DIRECTORY_LOGIN_FALLBACK"
)

// CertificateBasedAuthStatus_Values returns all elements of the CertificateBasedAuthStatus enum
func CertificateBasedAuthStatus_Values() []string {
	return []string{
		CertificateBasedAuthStatusDisabled,
		CertificateBasedAuthStatusEnabled,
		CertificateBasedAuthStatusEnabledNoDirectoryLoginFallback,
	}
}

// The fleet attribute.
const (
	// FleetAttributeVpcConfiguration is a FleetAttribute enum value
	FleetAttributeVpcConfiguration = "VPC_CONFIGURATION"

	// FleetAttributeVpcConfigurationSecurityGroupIds is a FleetAttribute enum value
	FleetAttributeVpcConfigurationSecurityGroupIds = "VPC_CONFIGURATION_SECURITY_GROUP_IDS"

	// FleetAttributeDomainJoinInfo is a FleetAttribute enum value
	FleetAttributeDomainJoinInfo = "DOMAIN_JOIN_INFO"

	// FleetAttributeIamRoleArn is a FleetAttribute enum value
	FleetAttributeIamRoleArn = "IAM_ROLE_ARN"

	// FleetAttributeUsbDeviceFilterStrings is a FleetAttribute enum value
	FleetAttributeUsbDeviceFilterStrings = "USB_DEVICE_FILTER_STRINGS"

	// FleetAttributeSessionScriptS3Location is a FleetAttribute enum value
	FleetAttributeSessionScriptS3Location = "SESSION_SCRIPT_S3_LOCATION"

	// FleetAttributeMaxSessionsPerInstance is a FleetAttribute enum value
	FleetAttributeMaxSessionsPerInstance = "MAX_SESSIONS_PER_INSTANCE"
)

// FleetAttribute_Values returns all elements of the FleetAttribute enum
func FleetAttribute_Values() []string {
	return []string{
		FleetAttributeVpcConfiguration,
		FleetAttributeVpcConfigurationSecurityGroupIds,
		FleetAttributeDomainJoinInfo,
		FleetAttributeIamRoleArn,
		FleetAttributeUsbDeviceFilterStrings,
		FleetAttributeSessionScriptS3Location,
		FleetAttributeMaxSessionsPerInstance,
	}
}

const (
	// FleetErrorCodeIamServiceRoleMissingEniDescribeAction is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleMissingEniDescribeAction = "IAM_SERVICE_ROLE_MISSING_ENI_DESCRIBE_ACTION"

	// FleetErrorCodeIamServiceRoleMissingEniCreateAction is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleMissingEniCreateAction = "IAM_SERVICE_ROLE_MISSING_ENI_CREATE_ACTION"

	// FleetErrorCodeIamServiceRoleMissingEniDeleteAction is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleMissingEniDeleteAction = "IAM_SERVICE_ROLE_MISSING_ENI_DELETE_ACTION"

	// FleetErrorCodeNetworkInterfaceLimitExceeded is a FleetErrorCode enum value
	FleetErrorCodeNetworkInterfaceLimitExceeded = "NETWORK_INTERFACE_LIMIT_EXCEEDED"

	// FleetErrorCodeInternalServiceError is a FleetErrorCode enum value
	FleetErrorCodeInternalServiceError = "INTERNAL_SERVICE_ERROR"

	// FleetErrorCodeIamServiceRoleIsMissing is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleIsMissing = "IAM_SERVICE_ROLE_IS_MISSING"

	// FleetErrorCodeMachineRoleIsMissing is a FleetErrorCode enum value
	FleetErrorCodeMachineRoleIsMissing = "MACHINE_ROLE_IS_MISSING"

	// FleetErrorCodeStsDisabledInRegion is a FleetErrorCode enum value
	FleetErrorCodeStsDisabledInRegion = "STS_DISABLED_IN_REGION"

	// FleetErrorCodeSubnetHasInsufficientIpAddresses is a FleetErrorCode enum value
	FleetErrorCodeSubnetHasInsufficientIpAddresses = "SUBNET_HAS_INSUFFICIENT_IP_ADDRESSES"

	// FleetErrorCodeIamServiceRoleMissingDescribeSubnetAction is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleMissingDescribeSubnetAction = "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SUBNET_ACTION"

	// FleetErrorCodeSubnetNotFound is a FleetErrorCode enum value
	FleetErrorCodeSubnetNotFound = "SUBNET_NOT_FOUND"

	// FleetErrorCodeImageNotFound is a FleetErrorCode enum value
	FleetErrorCodeImageNotFound = "IMAGE_NOT_FOUND"

	// FleetErrorCodeInvalidSubnetConfiguration is a FleetErrorCode enum value
	FleetErrorCodeInvalidSubnetConfiguration = "INVALID_SUBNET_CONFIGURATION"

	// FleetErrorCodeSecurityGroupsNotFound is a FleetErrorCode enum value
	FleetErrorCodeSecurityGroupsNotFound = "SECURITY_GROUPS_NOT_FOUND"

	// FleetErrorCodeIgwNotAttached is a FleetErrorCode enum value
	FleetErrorCodeIgwNotAttached = "IGW_NOT_ATTACHED"

	// FleetErrorCodeIamServiceRoleMissingDescribeSecurityGroupsAction is a FleetErrorCode enum value
	FleetErrorCodeIamServiceRoleMissingDescribeSecurityGroupsAction = "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SECURITY_GROUPS_ACTION"

	// FleetErrorCodeFleetStopped is a FleetErrorCode enum value
	FleetErrorCodeFleetStopped = "FLEET_STOPPED"

	// FleetErrorCodeFleetInstanceProvisioningFailure is a FleetErrorCode enum value
	FleetErrorCodeFleetInstanceProvisioningFailure = "FLEET_INSTANCE_PROVISIONING_FAILURE"

	// FleetErrorCodeDomainJoinErrorFileNotFound is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorFileNotFound = "DOMAIN_JOIN_ERROR_FILE_NOT_FOUND"

	// FleetErrorCodeDomainJoinErrorAccessDenied is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorAccessDenied = "DOMAIN_JOIN_ERROR_ACCESS_DENIED"

	// FleetErrorCodeDomainJoinErrorLogonFailure is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorLogonFailure = "DOMAIN_JOIN_ERROR_LOGON_FAILURE"

	// FleetErrorCodeDomainJoinErrorInvalidParameter is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorInvalidParameter = "DOMAIN_JOIN_ERROR_INVALID_PARAMETER"

	// FleetErrorCodeDomainJoinErrorMoreData is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorMoreData = "DOMAIN_JOIN_ERROR_MORE_DATA"

	// FleetErrorCodeDomainJoinErrorNoSuchDomain is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorNoSuchDomain = "DOMAIN_JOIN_ERROR_NO_SUCH_DOMAIN"

	// FleetErrorCodeDomainJoinErrorNotSupported is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorNotSupported = "DOMAIN_JOIN_ERROR_NOT_SUPPORTED"

	// FleetErrorCodeDomainJoinNerrInvalidWorkgroupName is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinNerrInvalidWorkgroupName = "DOMAIN_JOIN_NERR_INVALID_WORKGROUP_NAME"

	// FleetErrorCodeDomainJoinNerrWorkstationNotStarted is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinNerrWorkstationNotStarted = "DOMAIN_JOIN_NERR_WORKSTATION_NOT_STARTED"

	// FleetErrorCodeDomainJoinErrorDsMachineAccountQuotaExceeded is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinErrorDsMachineAccountQuotaExceeded = "DOMAIN_JOIN_ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED"

	// FleetErrorCodeDomainJoinNerrPasswordExpired is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinNerrPasswordExpired = "DOMAIN_JOIN_NERR_PASSWORD_EXPIRED"

	// FleetErrorCodeDomainJoinInternalServiceError is a FleetErrorCode enum value
	FleetErrorCodeDomainJoinInternalServiceError = "DOMAIN_JOIN_INTERNAL_SERVICE_ERROR"
)

// FleetErrorCode_Values returns all elements of the FleetErrorCode enum
func FleetErrorCode_Values() []string {
	return []string{
		FleetErrorCodeIamServiceRoleMissingEniDescribeAction,
		FleetErrorCodeIamServiceRoleMissingEniCreateAction,
		FleetErrorCodeIamServiceRoleMissingEniDeleteAction,
		FleetErrorCodeNetworkInterfaceLimitExceeded,
		FleetErrorCodeInternalServiceError,
		FleetErrorCodeIamServiceRoleIsMissing,
		FleetErrorCodeMachineRoleIsMissing,
		FleetErrorCodeStsDisabledInRegion,
		FleetErrorCodeSubnetHasInsufficientIpAddresses,
		FleetErrorCodeIamServiceRoleMissingDescribeSubnetAction,
		FleetErrorCodeSubnetNotFound,
		FleetErrorCodeImageNotFound,
		FleetErrorCodeInvalidSubnetConfiguration,
		FleetErrorCodeSecurityGroupsNotFound,
		FleetErrorCodeIgwNotAttached,
		FleetErrorCodeIamServiceRoleMissingDescribeSecurityGroupsAction,
		FleetErrorCodeFleetStopped,
		FleetErrorCodeFleetInstanceProvisioningFailure,
		FleetErrorCodeDomainJoinErrorFileNotFound,
		FleetErrorCodeDomainJoinErrorAccessDenied,
		FleetErrorCodeDomainJoinErrorLogonFailure,
		FleetErrorCodeDomainJoinErrorInvalidParameter,
		FleetErrorCodeDomainJoinErrorMoreData,
		FleetErrorCodeDomainJoinErrorNoSuchDomain,
		FleetErrorCodeDomainJoinErrorNotSupported,
		FleetErrorCodeDomainJoinNerrInvalidWorkgroupName,
		FleetErrorCodeDomainJoinNerrWorkstationNotStarted,
		FleetErrorCodeDomainJoinErrorDsMachineAccountQuotaExceeded,
		FleetErrorCodeDomainJoinNerrPasswordExpired,
		FleetErrorCodeDomainJoinInternalServiceError,
	}
}

const (
	// FleetStateStarting is a FleetState enum value
	FleetStateStarting = "STARTING"

	// FleetStateRunning is a FleetState enum value
	FleetStateRunning = "RUNNING"

	// FleetStateStopping is a FleetState enum value
	FleetStateStopping = "STOPPING"

	// FleetStateStopped is a FleetState enum value
	FleetStateStopped = "STOPPED"
)

// FleetState_Values returns all elements of the FleetState enum
func FleetState_Values() []string {
	return []string{
		FleetStateStarting,
		FleetStateRunning,
		FleetStateStopping,
		FleetStateStopped,
	}
}

const (
	// FleetTypeAlwaysOn is a FleetType enum value
	FleetTypeAlwaysOn = "ALWAYS_ON"

	// FleetTypeOnDemand is a FleetType enum value
	FleetTypeOnDemand = "ON_DEMAND"

	// FleetTypeElastic is a FleetType enum value
	FleetTypeElastic = "ELASTIC"
)

// FleetType_Values returns all elements of the FleetType enum
func FleetType_Values() []string {
	return []string{
		FleetTypeAlwaysOn,
		FleetTypeOnDemand,
		FleetTypeElastic,
	}
}

const (
	// ImageBuilderStatePending is a ImageBuilderState enum value
	ImageBuilderStatePending = "PENDING"

	// ImageBuilderStateUpdatingAgent is a ImageBuilderState enum value
	ImageBuilderStateUpdatingAgent = "UPDATING_AGENT"

	// ImageBuilderStateRunning is a ImageBuilderState enum value
	ImageBuilderStateRunning = "RUNNING"

	// ImageBuilderStateStopping is a ImageBuilderState enum value
	ImageBuilderStateStopping = "STOPPING"

	// ImageBuilderStateStopped is a ImageBuilderState enum value
	ImageBuilderStateStopped = "STOPPED"

	// ImageBuilderStateRebooting is a ImageBuilderState enum value
	ImageBuilderStateRebooting = "REBOOTING"

	// ImageBuilderStateSnapshotting is a ImageBuilderState enum value
	ImageBuilderStateSnapshotting = "SNAPSHOTTING"

	// ImageBuilderStateDeleting is a ImageBuilderState enum value
	ImageBuilderStateDeleting = "DELETING"

	// ImageBuilderStateFailed is a ImageBuilderState enum value
	ImageBuilderStateFailed = "FAILED"

	// ImageBuilderStateUpdating is a ImageBuilderState enum value
	ImageBuilderStateUpdating = "UPDATING"

	// ImageBuilderStatePendingQualification is a ImageBuilderState enum value
	ImageBuilderStatePendingQualification = "PENDING_QUALIFICATION"
)

// ImageBuilderState_Values returns all elements of the ImageBuilderState enum
func ImageBuilderState_Values() []string {
	return []string{
		ImageBuilderStatePending,
		ImageBuilderStateUpdatingAgent,
		ImageBuilderStateRunning,
		ImageBuilderStateStopping,
		ImageBuilderStateStopped,
		ImageBuilderStateRebooting,
		ImageBuilderStateSnapshotting,
		ImageBuilderStateDeleting,
		ImageBuilderStateFailed,
		ImageBuilderStateUpdating,
		ImageBuilderStatePendingQualification,
	}
}

const (
	// ImageBuilderStateChangeReasonCodeInternalError is a ImageBuilderStateChangeReasonCode enum value
	ImageBuilderStateChangeReasonCodeInternalError = "INTERNAL_ERROR"

	// ImageBuilderStateChangeReasonCodeImageUnavailable is a ImageBuilderStateChangeReasonCode enum value
	ImageBuilderStateChangeReasonCodeImageUnavailable = "IMAGE_UNAVAILABLE"
)

// ImageBuilderStateChangeReasonCode_Values returns all elements of the ImageBuilderStateChangeReasonCode enum
func ImageBuilderStateChangeReasonCode_Values() []string {
	return []string{
		ImageBuilderStateChangeReasonCodeInternalError,
		ImageBuilderStateChangeReasonCodeImageUnavailable,
	}
}

const (
	// ImageStatePending is a ImageState enum value
	ImageStatePending = "PENDING"

	// ImageStateAvailable is a ImageState enum value
	ImageStateAvailable = "AVAILABLE"

	// ImageStateFailed is a ImageState enum value
	ImageStateFailed = "FAILED"

	// ImageStateCopying is a ImageState enum value
	ImageStateCopying = "COPYING"

	// ImageStateDeleting is a ImageState enum value
	ImageStateDeleting = "DELETING"

	// ImageStateCreating is a ImageState enum value
	ImageStateCreating = "CREATING"

	// ImageStateImporting is a ImageState enum value
	ImageStateImporting = "IMPORTING"
)

// ImageState_Values returns all elements of the ImageState enum
func ImageState_Values() []string {
	return []string{
		ImageStatePending,
		ImageStateAvailable,
		ImageStateFailed,
		ImageStateCopying,
		ImageStateDeleting,
		ImageStateCreating,
		ImageStateImporting,
	}
}

const (
	// ImageStateChangeReasonCodeInternalError is a ImageStateChangeReasonCode enum value
	ImageStateChangeReasonCodeInternalError = "INTERNAL_ERROR"

	// ImageStateChangeReasonCodeImageBuilderNotAvailable is a ImageStateChangeReasonCode enum value
	ImageStateChangeReasonCodeImageBuilderNotAvailable = "IMAGE_BUILDER_NOT_AVAILABLE"

	// ImageStateChangeReasonCodeImageCopyFailure is a ImageStateChangeReasonCode enum value
	ImageStateChangeReasonCodeImageCopyFailure = "IMAGE_COPY_FAILURE"
)

// ImageStateChangeReasonCode_Values returns all elements of the ImageStateChangeReasonCode enum
func ImageStateChangeReasonCode_Values() []string {
	return []string{
		ImageStateChangeReasonCodeInternalError,
		ImageStateChangeReasonCodeImageBuilderNotAvailable,
		ImageStateChangeReasonCodeImageCopyFailure,
	}
}

const (
	// MessageActionSuppress is a MessageAction enum value
	MessageActionSuppress = "SUPPRESS"

	// MessageActionResend is a MessageAction enum value
	MessageActionResend = "RESEND"
)

// MessageAction_Values returns all elements of the MessageAction enum
func MessageAction_Values() []string {
	return []string{
		MessageActionSuppress,
		MessageActionResend,
	}
}

const (
	// PackagingTypeCustom is a PackagingType enum value
	PackagingTypeCustom = "CUSTOM"

	// PackagingTypeAppstream2 is a PackagingType enum value
	PackagingTypeAppstream2 = "APPSTREAM2"
)

// PackagingType_Values returns all elements of the PackagingType enum
func PackagingType_Values() []string {
	return []string{
		PackagingTypeCustom,
		PackagingTypeAppstream2,
	}
}

const (
	// PermissionEnabled is a Permission enum value
	PermissionEnabled = "ENABLED"

	// PermissionDisabled is a Permission enum value
	PermissionDisabled = "DISABLED"
)

// Permission_Values returns all elements of the Permission enum
func Permission_Values() []string {
	return []string{
		PermissionEnabled,
		PermissionDisabled,
	}
}

const (
	// PlatformTypeWindows is a PlatformType enum value
	PlatformTypeWindows = "WINDOWS"

	// PlatformTypeWindowsServer2016 is a PlatformType enum value
	PlatformTypeWindowsServer2016 = "WINDOWS_SERVER_2016"

	// PlatformTypeWindowsServer2019 is a PlatformType enum value
	PlatformTypeWindowsServer2019 = "WINDOWS_SERVER_2019"

	// PlatformTypeWindowsServer2022 is a PlatformType enum value
	PlatformTypeWindowsServer2022 = "WINDOWS_SERVER_2022"

	// PlatformTypeAmazonLinux2 is a PlatformType enum value
	PlatformTypeAmazonLinux2 = "AMAZON_LINUX2"
)

// PlatformType_Values returns all elements of the PlatformType enum
func PlatformType_Values() []string {
	return []string{
		PlatformTypeWindows,
		PlatformTypeWindowsServer2016,
		PlatformTypeWindowsServer2019,
		PlatformTypeWindowsServer2022,
		PlatformTypeAmazonLinux2,
	}
}

const (
	// PreferredProtocolTcp is a PreferredProtocol enum value
	PreferredProtocolTcp = "TCP"

	// PreferredProtocolUdp is a PreferredProtocol enum value
	PreferredProtocolUdp = "UDP"
)

// PreferredProtocol_Values returns all elements of the PreferredProtocol enum
func PreferredProtocol_Values() []string {
	return []string{
		PreferredProtocolTcp,
		PreferredProtocolUdp,
	}
}

const (
	// SessionConnectionStateConnected is a SessionConnectionState enum value
	SessionConnectionStateConnected = "CONNECTED"

	// SessionConnectionStateNotConnected is a SessionConnectionState enum value
	SessionConnectionStateNotConnected = "NOT_CONNECTED"
)

// SessionConnectionState_Values returns all elements of the SessionConnectionState enum
func SessionConnectionState_Values() []string {
	return []string{
		SessionConnectionStateConnected,
		SessionConnectionStateNotConnected,
	}
}

// Possible values for the state of a streaming session.
const (
	// SessionStateActive is a SessionState enum value
	SessionStateActive = "ACTIVE"

	// SessionStatePending is a SessionState enum value
	SessionStatePending = "PENDING"

	// SessionStateExpired is a SessionState enum value
	SessionStateExpired = "EXPIRED"
)

// SessionState_Values returns all elements of the SessionState enum
func SessionState_Values() []string {
	return []string{
		SessionStateActive,
		SessionStatePending,
		SessionStateExpired,
	}
}

const (
	// StackAttributeStorageConnectors is a StackAttribute enum value
	StackAttributeStorageConnectors = "STORAGE_CONNECTORS"

	// StackAttributeStorageConnectorHomefolders is a StackAttribute enum value
	StackAttributeStorageConnectorHomefolders = "STORAGE_CONNECTOR_HOMEFOLDERS"

	// StackAttributeStorageConnectorGoogleDrive is a StackAttribute enum value
	StackAttributeStorageConnectorGoogleDrive = "STORAGE_CONNECTOR_GOOGLE_DRIVE"

	// StackAttributeStorageConnectorOneDrive is a StackAttribute enum value
	StackAttributeStorageConnectorOneDrive = "STORAGE_CONNECTOR_ONE_DRIVE"

	// StackAttributeRedirectUrl is a StackAttribute enum value
	StackAttributeRedirectUrl = "REDIRECT_URL"

	// StackAttributeFeedbackUrl is a StackAttribute enum value
	StackAttributeFeedbackUrl = "FEEDBACK_URL"

	// StackAttributeThemeName is a StackAttribute enum value
	StackAttributeThemeName = "THEME_NAME"

	// StackAttributeUserSettings is a StackAttribute enum value
	StackAttributeUserSettings = "USER_SETTINGS"

	// StackAttributeEmbedHostDomains is a StackAttribute enum value
	StackAttributeEmbedHostDomains = "EMBED_HOST_DOMAINS"

	// StackAttributeIamRoleArn is a StackAttribute enum value
	StackAttributeIamRoleArn = "IAM_ROLE_ARN"

	// StackAttributeAccessEndpoints is a StackAttribute enum value
	StackAttributeAccessEndpoints = "ACCESS_ENDPOINTS"

	// StackAttributeStreamingExperienceSettings is a StackAttribute enum value
	StackAttributeStreamingExperienceSettings = "STREAMING_EXPERIENCE_SETTINGS"
)

// StackAttribute_Values returns all elements of the StackAttribute enum
func StackAttribute_Values() []string {
	return []string{
		StackAttributeStorageConnectors,
		StackAttributeStorageConnectorHomefolders,
		StackAttributeStorageConnectorGoogleDrive,
		StackAttributeStorageConnectorOneDrive,
		StackAttributeRedirectUrl,
		StackAttributeFeedbackUrl,
		StackAttributeThemeName,
		StackAttributeUserSettings,
		StackAttributeEmbedHostDomains,
		StackAttributeIamRoleArn,
		StackAttributeAccessEndpoints,
		StackAttributeStreamingExperienceSettings,
	}
}

const (
	// StackErrorCodeStorageConnectorError is a StackErrorCode enum value
	StackErrorCodeStorageConnectorError = "STORAGE_CONNECTOR_ERROR"

	// StackErrorCodeInternalServiceError is a StackErrorCode enum value
	StackErrorCodeInternalServiceError = "INTERNAL_SERVICE_ERROR"
)

// StackErrorCode_Values returns all elements of the StackErrorCode enum
func StackErrorCode_Values() []string {
	return []string{
		StackErrorCodeStorageConnectorError,
		StackErrorCodeInternalServiceError,
	}
}

// The type of storage connector.
const (
	// StorageConnectorTypeHomefolders is a StorageConnectorType enum value
	StorageConnectorTypeHomefolders = "HOMEFOLDERS"

	// StorageConnectorTypeGoogleDrive is a StorageConnectorType enum value
	StorageConnectorTypeGoogleDrive = "GOOGLE_DRIVE"

	// StorageConnectorTypeOneDrive is a StorageConnectorType enum value
	StorageConnectorTypeOneDrive = "ONE_DRIVE"
)

// StorageConnectorType_Values returns all elements of the StorageConnectorType enum
func StorageConnectorType_Values() []string {
	return []string{
		StorageConnectorTypeHomefolders,
		StorageConnectorTypeGoogleDrive,
		StorageConnectorTypeOneDrive,
	}
}

const (
	// StreamViewApp is a StreamView enum value
	StreamViewApp = "APP"

	// StreamViewDesktop is a StreamView enum value
	StreamViewDesktop = "DESKTOP"
)

// StreamView_Values returns all elements of the StreamView enum
func StreamView_Values() []string {
	return []string{
		StreamViewApp,
		StreamViewDesktop,
	}
}

const (
	// UsageReportExecutionErrorCodeResourceNotFound is a UsageReportExecutionErrorCode enum value
	UsageReportExecutionErrorCodeResourceNotFound = "RESOURCE_NOT_FOUND"

	// UsageReportExecutionErrorCodeAccessDenied is a UsageReportExecutionErrorCode enum value
	UsageReportExecutionErrorCodeAccessDenied = "ACCESS_DENIED"

	// UsageReportExecutionErrorCodeInternalServiceError is a UsageReportExecutionErrorCode enum value
	UsageReportExecutionErrorCodeInternalServiceError = "INTERNAL_SERVICE_ERROR"
)

// UsageReportExecutionErrorCode_Values returns all elements of the UsageReportExecutionErrorCode enum
func UsageReportExecutionErrorCode_Values() []string {
	return []string{
		UsageReportExecutionErrorCodeResourceNotFound,
		UsageReportExecutionErrorCodeAccessDenied,
		UsageReportExecutionErrorCodeInternalServiceError,
	}
}

const (
	// UsageReportScheduleDaily is a UsageReportSchedule enum value
	UsageReportScheduleDaily = "DAILY"
)

// UsageReportSchedule_Values returns all elements of the UsageReportSchedule enum
func UsageReportSchedule_Values() []string {
	return []string{
		UsageReportScheduleDaily,
	}
}

const (
	// UserStackAssociationErrorCodeStackNotFound is a UserStackAssociationErrorCode enum value
	UserStackAssociationErrorCodeStackNotFound = "STACK_NOT_FOUND"

	// UserStackAssociationErrorCodeUserNameNotFound is a UserStackAssociationErrorCode enum value
	UserStackAssociationErrorCodeUserNameNotFound = "USER_NAME_NOT_FOUND"

	// UserStackAssociationErrorCodeDirectoryNotFound is a UserStackAssociationErrorCode enum value
	UserStackAssociationErrorCodeDirectoryNotFound = "DIRECTORY_NOT_FOUND"

	// UserStackAssociationErrorCodeInternalError is a UserStackAssociationErrorCode enum value
	UserStackAssociationErrorCodeInternalError = "INTERNAL_ERROR"
)

// UserStackAssociationErrorCode_Values returns all elements of the UserStackAssociationErrorCode enum
func UserStackAssociationErrorCode_Values() []string {
	return []string{
		UserStackAssociationErrorCodeStackNotFound,
		UserStackAssociationErrorCodeUserNameNotFound,
		UserStackAssociationErrorCodeDirectoryNotFound,
		UserStackAssociationErrorCodeInternalError,
	}
}

const (
	// VisibilityTypePublic is a VisibilityType enum value
	VisibilityTypePublic = "PUBLIC"

	// VisibilityTypePrivate is a VisibilityType enum value
	VisibilityTypePrivate = "PRIVATE"

	// VisibilityTypeShared is a VisibilityType enum value
	VisibilityTypeShared = "SHARED"
)

// VisibilityType_Values returns all elements of the VisibilityType enum
func VisibilityType_Values() []string {
	return []string{
		VisibilityTypePublic,
		VisibilityTypePrivate,
		VisibilityTypeShared,
	}
}
© 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