404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 88.222.243.246
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 lightsail

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 opAllocateStaticIp = "AllocateStaticIp"

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

	if input == nil {
		input = &AllocateStaticIpInput{}
	}

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

// AllocateStaticIp API operation for Amazon Lightsail.
//
// Allocates a static IP address.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AllocateStaticIp for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AllocateStaticIp
func (c *Lightsail) AllocateStaticIp(input *AllocateStaticIpInput) (*AllocateStaticIpOutput, error) {
	req, out := c.AllocateStaticIpRequest(input)
	return out, req.Send()
}

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

const opAttachCertificateToDistribution = "AttachCertificateToDistribution"

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

	if input == nil {
		input = &AttachCertificateToDistributionInput{}
	}

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

// AttachCertificateToDistribution API operation for Amazon Lightsail.
//
// Attaches an SSL/TLS certificate to your Amazon Lightsail content delivery
// network (CDN) distribution.
//
// After the certificate is attached, your distribution accepts HTTPS traffic
// for all of the domains that are associated with the certificate.
//
// Use the CreateCertificate action to create a certificate that you can attach
// to your distribution.
//
// Only certificates created in the us-east-1 Amazon Web Services Region can
// be attached to Lightsail distributions. Lightsail distributions are global
// resources that can reference an origin in any Amazon Web Services Region,
// and distribute its content globally. However, all distributions are located
// in the us-east-1 Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AttachCertificateToDistribution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AttachCertificateToDistribution
func (c *Lightsail) AttachCertificateToDistribution(input *AttachCertificateToDistributionInput) (*AttachCertificateToDistributionOutput, error) {
	req, out := c.AttachCertificateToDistributionRequest(input)
	return out, req.Send()
}

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

const opAttachDisk = "AttachDisk"

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

	if input == nil {
		input = &AttachDiskInput{}
	}

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

// AttachDisk API operation for Amazon Lightsail.
//
// Attaches a block storage disk to a running or stopped Lightsail instance
// and exposes it to the instance with the specified disk name.
//
// The attach disk operation supports tag-based access control via resource
// tags applied to the resource identified by disk name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AttachDisk for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AttachDisk
func (c *Lightsail) AttachDisk(input *AttachDiskInput) (*AttachDiskOutput, error) {
	req, out := c.AttachDiskRequest(input)
	return out, req.Send()
}

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

const opAttachInstancesToLoadBalancer = "AttachInstancesToLoadBalancer"

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

	if input == nil {
		input = &AttachInstancesToLoadBalancerInput{}
	}

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

// AttachInstancesToLoadBalancer API operation for Amazon Lightsail.
//
// Attaches one or more Lightsail instances to a load balancer.
//
// After some time, the instances are attached to the load balancer and the
// health check status is available.
//
// The attach instances to load balancer operation supports tag-based access
// control via resource tags applied to the resource identified by load balancer
// name. For more information, see the Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AttachInstancesToLoadBalancer for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AttachInstancesToLoadBalancer
func (c *Lightsail) AttachInstancesToLoadBalancer(input *AttachInstancesToLoadBalancerInput) (*AttachInstancesToLoadBalancerOutput, error) {
	req, out := c.AttachInstancesToLoadBalancerRequest(input)
	return out, req.Send()
}

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

const opAttachLoadBalancerTlsCertificate = "AttachLoadBalancerTlsCertificate"

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

	if input == nil {
		input = &AttachLoadBalancerTlsCertificateInput{}
	}

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

// AttachLoadBalancerTlsCertificate API operation for Amazon Lightsail.
//
// Attaches a Transport Layer Security (TLS) certificate to your load balancer.
// TLS is just an updated, more secure version of Secure Socket Layer (SSL).
//
// Once you create and validate your certificate, you can attach it to your
// load balancer. You can also use this API to rotate the certificates on your
// account. Use the AttachLoadBalancerTlsCertificate action with the non-attached
// certificate, and it will replace the existing one and become the attached
// certificate.
//
// The AttachLoadBalancerTlsCertificate operation supports tag-based access
// control via resource tags applied to the resource identified by load balancer
// name. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AttachLoadBalancerTlsCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AttachLoadBalancerTlsCertificate
func (c *Lightsail) AttachLoadBalancerTlsCertificate(input *AttachLoadBalancerTlsCertificateInput) (*AttachLoadBalancerTlsCertificateOutput, error) {
	req, out := c.AttachLoadBalancerTlsCertificateRequest(input)
	return out, req.Send()
}

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

const opAttachStaticIp = "AttachStaticIp"

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

	if input == nil {
		input = &AttachStaticIpInput{}
	}

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

// AttachStaticIp API operation for Amazon Lightsail.
//
// Attaches a static IP address to a specific Amazon Lightsail instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation AttachStaticIp for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/AttachStaticIp
func (c *Lightsail) AttachStaticIp(input *AttachStaticIpInput) (*AttachStaticIpOutput, error) {
	req, out := c.AttachStaticIpRequest(input)
	return out, req.Send()
}

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

const opCloseInstancePublicPorts = "CloseInstancePublicPorts"

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

	if input == nil {
		input = &CloseInstancePublicPortsInput{}
	}

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

// CloseInstancePublicPorts API operation for Amazon Lightsail.
//
// Closes ports for a specific Amazon Lightsail instance.
//
// The CloseInstancePublicPorts action supports tag-based access control via
// resource tags applied to the resource identified by instanceName. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CloseInstancePublicPorts for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CloseInstancePublicPorts
func (c *Lightsail) CloseInstancePublicPorts(input *CloseInstancePublicPortsInput) (*CloseInstancePublicPortsOutput, error) {
	req, out := c.CloseInstancePublicPortsRequest(input)
	return out, req.Send()
}

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

const opCopySnapshot = "CopySnapshot"

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

	if input == nil {
		input = &CopySnapshotInput{}
	}

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

// CopySnapshot API operation for Amazon Lightsail.
//
// Copies a manual snapshot of an instance or disk as another manual snapshot,
// or copies an automatic snapshot of an instance or disk as a manual snapshot.
// This operation can also be used to copy a manual or automatic snapshot of
// an instance or a disk from one Amazon Web Services Region to another in Amazon
// Lightsail.
//
// When copying a manual snapshot, be sure to define the source region, source
// snapshot name, and target snapshot name parameters.
//
// When copying an automatic snapshot, be sure to define the source region,
// source resource name, target snapshot name, and either the restore date or
// the use latest restorable auto snapshot parameters.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CopySnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CopySnapshot
func (c *Lightsail) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) {
	req, out := c.CopySnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateBucket = "CreateBucket"

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

	if input == nil {
		input = &CreateBucketInput{}
	}

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

// CreateBucket API operation for Amazon Lightsail.
//
// Creates an Amazon Lightsail bucket.
//
// A bucket is a cloud storage resource available in the Lightsail object storage
// service. Use buckets to store objects such as data and its descriptive metadata.
// For more information about buckets, see Buckets in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/buckets-in-amazon-lightsail)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateBucket for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateBucket
func (c *Lightsail) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
	req, out := c.CreateBucketRequest(input)
	return out, req.Send()
}

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

const opCreateBucketAccessKey = "CreateBucketAccessKey"

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

	if input == nil {
		input = &CreateBucketAccessKeyInput{}
	}

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

// CreateBucketAccessKey API operation for Amazon Lightsail.
//
// Creates a new access key for the specified Amazon Lightsail bucket. Access
// keys consist of an access key ID and corresponding secret access key.
//
// Access keys grant full programmatic access to the specified bucket and its
// objects. You can have a maximum of two access keys per bucket. Use the GetBucketAccessKeys
// (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketAccessKeys.html)
// action to get a list of current access keys for a specific bucket. For more
// information about access keys, see Creating access keys for a bucket in Amazon
// Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-creating-bucket-access-keys)
// in the Amazon Lightsail Developer Guide.
//
// The secretAccessKey value is returned only in response to the CreateBucketAccessKey
// action. You can get a secret access key only when you first create an access
// key; you cannot get the secret access key later. If you lose the secret access
// key, you must create a new access key.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateBucketAccessKey for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateBucketAccessKey
func (c *Lightsail) CreateBucketAccessKey(input *CreateBucketAccessKeyInput) (*CreateBucketAccessKeyOutput, error) {
	req, out := c.CreateBucketAccessKeyRequest(input)
	return out, req.Send()
}

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

const opCreateCertificate = "CreateCertificate"

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

	if input == nil {
		input = &CreateCertificateInput{}
	}

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

// CreateCertificate API operation for Amazon Lightsail.
//
// Creates an SSL/TLS certificate for an Amazon Lightsail content delivery network
// (CDN) distribution and a container service.
//
// After the certificate is valid, use the AttachCertificateToDistribution action
// to use the certificate and its domains with your distribution. Or use the
// UpdateContainerService action to use the certificate and its domains with
// your container service.
//
// Only certificates created in the us-east-1 Amazon Web Services Region can
// be attached to Lightsail distributions. Lightsail distributions are global
// resources that can reference an origin in any Amazon Web Services Region,
// and distribute its content globally. However, all distributions are located
// in the us-east-1 Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateCertificate
func (c *Lightsail) CreateCertificate(input *CreateCertificateInput) (*CreateCertificateOutput, error) {
	req, out := c.CreateCertificateRequest(input)
	return out, req.Send()
}

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

const opCreateCloudFormationStack = "CreateCloudFormationStack"

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

	if input == nil {
		input = &CreateCloudFormationStackInput{}
	}

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

// CreateCloudFormationStack API operation for Amazon Lightsail.
//
// Creates an AWS CloudFormation stack, which creates a new Amazon EC2 instance
// from an exported Amazon Lightsail snapshot. This operation results in a CloudFormation
// stack record that can be used to track the AWS CloudFormation stack created.
// Use the get cloud formation stack records operation to get a list of the
// CloudFormation stacks created.
//
// Wait until after your new Amazon EC2 instance is created before running the
// create cloud formation stack operation again with the same export snapshot
// record.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateCloudFormationStack for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateCloudFormationStack
func (c *Lightsail) CreateCloudFormationStack(input *CreateCloudFormationStackInput) (*CreateCloudFormationStackOutput, error) {
	req, out := c.CreateCloudFormationStackRequest(input)
	return out, req.Send()
}

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

const opCreateContactMethod = "CreateContactMethod"

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

	if input == nil {
		input = &CreateContactMethodInput{}
	}

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

// CreateContactMethod API operation for Amazon Lightsail.
//
// Creates an email or SMS text message contact method.
//
// A contact method is used to send you notifications about your Amazon Lightsail
// resources. You can add one email address and one mobile phone number contact
// method in each Amazon Web Services Region. However, SMS text messaging is
// not supported in some Amazon Web Services Regions, and SMS text messages
// cannot be sent to some countries/regions. For more information, see Notifications
// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateContactMethod for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateContactMethod
func (c *Lightsail) CreateContactMethod(input *CreateContactMethodInput) (*CreateContactMethodOutput, error) {
	req, out := c.CreateContactMethodRequest(input)
	return out, req.Send()
}

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

const opCreateContainerService = "CreateContainerService"

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

	if input == nil {
		input = &CreateContainerServiceInput{}
	}

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

// CreateContainerService API operation for Amazon Lightsail.
//
// Creates an Amazon Lightsail container service.
//
// A Lightsail container service is a compute resource to which you can deploy
// containers. For more information, see Container services in Amazon Lightsail
// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services)
// in the Lightsail Dev 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 Lightsail's
// API operation CreateContainerService for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateContainerService
func (c *Lightsail) CreateContainerService(input *CreateContainerServiceInput) (*CreateContainerServiceOutput, error) {
	req, out := c.CreateContainerServiceRequest(input)
	return out, req.Send()
}

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

const opCreateContainerServiceDeployment = "CreateContainerServiceDeployment"

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

	if input == nil {
		input = &CreateContainerServiceDeploymentInput{}
	}

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

// CreateContainerServiceDeployment API operation for Amazon Lightsail.
//
// Creates a deployment for your Amazon Lightsail container service.
//
// A deployment specifies the containers that will be launched on the container
// service and their settings, such as the ports to open, the environment variables
// to apply, and the launch command to run. It also specifies the container
// that will serve as the public endpoint of the deployment and its settings,
// such as the HTTP or HTTPS port to use, and the health check configuration.
//
// You can deploy containers to your container service using container images
// from a public registry such as Amazon ECR Public, or from your local machine.
// For more information, see Creating container images for your Amazon Lightsail
// container services (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-creating-container-images)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateContainerServiceDeployment for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateContainerServiceDeployment
func (c *Lightsail) CreateContainerServiceDeployment(input *CreateContainerServiceDeploymentInput) (*CreateContainerServiceDeploymentOutput, error) {
	req, out := c.CreateContainerServiceDeploymentRequest(input)
	return out, req.Send()
}

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

const opCreateContainerServiceRegistryLogin = "CreateContainerServiceRegistryLogin"

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

	if input == nil {
		input = &CreateContainerServiceRegistryLoginInput{}
	}

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

// CreateContainerServiceRegistryLogin API operation for Amazon Lightsail.
//
// Creates a temporary set of log in credentials that you can use to log in
// to the Docker process on your local machine. After you're logged in, you
// can use the native Docker commands to push your local container images to
// the container image registry of your Amazon Lightsail account so that you
// can use them with your Lightsail container service. The log in credentials
// expire 12 hours after they are created, at which point you will need to create
// a new set of log in credentials.
//
// You can only push container images to the container service registry of your
// Lightsail account. You cannot pull container images or perform any other
// container image management actions on the container service registry.
//
// After you push your container images to the container image registry of your
// Lightsail account, use the RegisterContainerImage action to register the
// pushed images to a specific Lightsail container service.
//
// This action is not required if you install and use the Lightsail Control
// (lightsailctl) plugin to push container images to your Lightsail container
// service. For more information, see Pushing and managing container images
// on your Amazon Lightsail container services (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-pushing-container-images)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateContainerServiceRegistryLogin for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateContainerServiceRegistryLogin
func (c *Lightsail) CreateContainerServiceRegistryLogin(input *CreateContainerServiceRegistryLoginInput) (*CreateContainerServiceRegistryLoginOutput, error) {
	req, out := c.CreateContainerServiceRegistryLoginRequest(input)
	return out, req.Send()
}

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

const opCreateDisk = "CreateDisk"

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

	if input == nil {
		input = &CreateDiskInput{}
	}

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

// CreateDisk API operation for Amazon Lightsail.
//
// Creates a block storage disk that can be attached to an Amazon Lightsail
// instance in the same Availability Zone (us-east-2a).
//
// The create disk operation supports tag-based access control via request tags.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDisk for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDisk
func (c *Lightsail) CreateDisk(input *CreateDiskInput) (*CreateDiskOutput, error) {
	req, out := c.CreateDiskRequest(input)
	return out, req.Send()
}

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

const opCreateDiskFromSnapshot = "CreateDiskFromSnapshot"

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

	if input == nil {
		input = &CreateDiskFromSnapshotInput{}
	}

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

// CreateDiskFromSnapshot API operation for Amazon Lightsail.
//
// Creates a block storage disk from a manual or automatic snapshot of a disk.
// The resulting disk can be attached to an Amazon Lightsail instance in the
// same Availability Zone (us-east-2a).
//
// The create disk from snapshot operation supports tag-based access control
// via request tags and resource tags applied to the resource identified by
// disk snapshot name. For more information, see the Amazon Lightsail Developer
// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDiskFromSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDiskFromSnapshot
func (c *Lightsail) CreateDiskFromSnapshot(input *CreateDiskFromSnapshotInput) (*CreateDiskFromSnapshotOutput, error) {
	req, out := c.CreateDiskFromSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateDiskSnapshot = "CreateDiskSnapshot"

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

	if input == nil {
		input = &CreateDiskSnapshotInput{}
	}

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

// CreateDiskSnapshot API operation for Amazon Lightsail.
//
// Creates a snapshot of a block storage disk. You can use snapshots for backups,
// to make copies of disks, and to save data before shutting down a Lightsail
// instance.
//
// You can take a snapshot of an attached disk that is in use; however, snapshots
// only capture data that has been written to your disk at the time the snapshot
// command is issued. This may exclude any data that has been cached by any
// applications or the operating system. If you can pause any file systems on
// the disk long enough to take a snapshot, your snapshot should be complete.
// Nevertheless, if you cannot pause all file writes to the disk, you should
// unmount the disk from within the Lightsail instance, issue the create disk
// snapshot command, and then remount the disk to ensure a consistent and complete
// snapshot. You may remount and use your disk while the snapshot status is
// pending.
//
// You can also use this operation to create a snapshot of an instance's system
// volume. You might want to do this, for example, to recover data from the
// system volume of a botched instance or to create a backup of the system volume
// like you would for a block storage disk. To create a snapshot of a system
// volume, just define the instance name parameter when issuing the snapshot
// command, and a snapshot of the defined instance's system volume will be created.
// After the snapshot is available, you can create a block storage disk from
// the snapshot and attach it to a running instance to access the data on the
// disk.
//
// The create disk snapshot operation supports tag-based access control via
// request tags. For more information, see the Amazon Lightsail Developer Guide
// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDiskSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDiskSnapshot
func (c *Lightsail) CreateDiskSnapshot(input *CreateDiskSnapshotInput) (*CreateDiskSnapshotOutput, error) {
	req, out := c.CreateDiskSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateDistribution = "CreateDistribution"

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

	if input == nil {
		input = &CreateDistributionInput{}
	}

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

// CreateDistribution API operation for Amazon Lightsail.
//
// Creates an Amazon Lightsail content delivery network (CDN) distribution.
//
// A distribution is a globally distributed network of caching servers that
// improve the performance of your website or web application hosted on a Lightsail
// instance. For more information, see Content delivery networks in Amazon Lightsail
// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-content-delivery-network-distributions).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDistribution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDistribution
func (c *Lightsail) CreateDistribution(input *CreateDistributionInput) (*CreateDistributionOutput, error) {
	req, out := c.CreateDistributionRequest(input)
	return out, req.Send()
}

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

const opCreateDomain = "CreateDomain"

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

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

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

// CreateDomain API operation for Amazon Lightsail.
//
// Creates a domain resource for the specified domain (example.com).
//
// The create domain operation supports tag-based access control via request
// tags. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDomain for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDomain
func (c *Lightsail) CreateDomain(input *CreateDomainInput) (*CreateDomainOutput, error) {
	req, out := c.CreateDomainRequest(input)
	return out, req.Send()
}

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

const opCreateDomainEntry = "CreateDomainEntry"

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

	if input == nil {
		input = &CreateDomainEntryInput{}
	}

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

// CreateDomainEntry API operation for Amazon Lightsail.
//
// Creates one of the following domain name system (DNS) records in a domain
// DNS zone: Address (A), canonical name (CNAME), mail exchanger (MX), name
// server (NS), start of authority (SOA), service locator (SRV), or text (TXT).
//
// The create domain entry operation supports tag-based access control via resource
// tags applied to the resource identified by domain name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateDomainEntry for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateDomainEntry
func (c *Lightsail) CreateDomainEntry(input *CreateDomainEntryInput) (*CreateDomainEntryOutput, error) {
	req, out := c.CreateDomainEntryRequest(input)
	return out, req.Send()
}

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

const opCreateGUISessionAccessDetails = "CreateGUISessionAccessDetails"

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

	if input == nil {
		input = &CreateGUISessionAccessDetailsInput{}
	}

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

// CreateGUISessionAccessDetails API operation for Amazon Lightsail.
//
// Creates two URLs that are used to access a virtual computer’s graphical
// user interface (GUI) session. The primary URL initiates a web-based NICE
// DCV session to the virtual computer's application. The secondary URL initiates
// a web-based NICE DCV session to the virtual computer's operating session.
//
// Use StartGUISession to open the session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateGUISessionAccessDetails for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateGUISessionAccessDetails
func (c *Lightsail) CreateGUISessionAccessDetails(input *CreateGUISessionAccessDetailsInput) (*CreateGUISessionAccessDetailsOutput, error) {
	req, out := c.CreateGUISessionAccessDetailsRequest(input)
	return out, req.Send()
}

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

const opCreateInstanceSnapshot = "CreateInstanceSnapshot"

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

	if input == nil {
		input = &CreateInstanceSnapshotInput{}
	}

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

// CreateInstanceSnapshot API operation for Amazon Lightsail.
//
// Creates a snapshot of a specific virtual private server, or instance. You
// can use a snapshot to create a new instance that is based on that snapshot.
//
// The create instance snapshot operation supports tag-based access control
// via request tags. For more information, see the Amazon Lightsail Developer
// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateInstanceSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateInstanceSnapshot
func (c *Lightsail) CreateInstanceSnapshot(input *CreateInstanceSnapshotInput) (*CreateInstanceSnapshotOutput, error) {
	req, out := c.CreateInstanceSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateInstances = "CreateInstances"

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

	if input == nil {
		input = &CreateInstancesInput{}
	}

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

// CreateInstances API operation for Amazon Lightsail.
//
// Creates one or more Amazon Lightsail instances.
//
// The create instances operation supports tag-based access control via request
// tags. For more information, see the Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateInstances for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateInstances
func (c *Lightsail) CreateInstances(input *CreateInstancesInput) (*CreateInstancesOutput, error) {
	req, out := c.CreateInstancesRequest(input)
	return out, req.Send()
}

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

const opCreateInstancesFromSnapshot = "CreateInstancesFromSnapshot"

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

	if input == nil {
		input = &CreateInstancesFromSnapshotInput{}
	}

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

// CreateInstancesFromSnapshot API operation for Amazon Lightsail.
//
// Creates one or more new instances from a manual or automatic snapshot of
// an instance.
//
// The create instances from snapshot operation supports tag-based access control
// via request tags and resource tags applied to the resource identified by
// instance snapshot name. For more information, see the Amazon Lightsail Developer
// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateInstancesFromSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateInstancesFromSnapshot
func (c *Lightsail) CreateInstancesFromSnapshot(input *CreateInstancesFromSnapshotInput) (*CreateInstancesFromSnapshotOutput, error) {
	req, out := c.CreateInstancesFromSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateKeyPair = "CreateKeyPair"

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

	if input == nil {
		input = &CreateKeyPairInput{}
	}

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

// CreateKeyPair API operation for Amazon Lightsail.
//
// Creates a custom SSH key pair that you can use with an Amazon Lightsail instance.
//
// Use the DownloadDefaultKeyPair (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_DownloadDefaultKeyPair.html)
// action to create a Lightsail default key pair in an Amazon Web Services Region
// where a default key pair does not currently exist.
//
// The create key pair operation supports tag-based access control via request
// tags. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateKeyPair for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateKeyPair
func (c *Lightsail) CreateKeyPair(input *CreateKeyPairInput) (*CreateKeyPairOutput, error) {
	req, out := c.CreateKeyPairRequest(input)
	return out, req.Send()
}

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

const opCreateLoadBalancer = "CreateLoadBalancer"

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

	if input == nil {
		input = &CreateLoadBalancerInput{}
	}

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

// CreateLoadBalancer API operation for Amazon Lightsail.
//
// Creates a Lightsail load balancer. To learn more about deciding whether to
// load balance your application, see Configure your Lightsail instances for
// load balancing (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/configure-lightsail-instances-for-load-balancing).
// You can create up to 5 load balancers per AWS Region in your account.
//
// When you create a load balancer, you can specify a unique name and port settings.
// To change additional load balancer settings, use the UpdateLoadBalancerAttribute
// operation.
//
// The create load balancer operation supports tag-based access control via
// request tags. For more information, see the Amazon Lightsail Developer Guide
// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateLoadBalancer for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateLoadBalancer
func (c *Lightsail) CreateLoadBalancer(input *CreateLoadBalancerInput) (*CreateLoadBalancerOutput, error) {
	req, out := c.CreateLoadBalancerRequest(input)
	return out, req.Send()
}

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

const opCreateLoadBalancerTlsCertificate = "CreateLoadBalancerTlsCertificate"

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

	if input == nil {
		input = &CreateLoadBalancerTlsCertificateInput{}
	}

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

// CreateLoadBalancerTlsCertificate API operation for Amazon Lightsail.
//
// Creates an SSL/TLS certificate for an Amazon Lightsail load balancer.
//
// TLS is just an updated, more secure version of Secure Socket Layer (SSL).
//
// The CreateLoadBalancerTlsCertificate operation supports tag-based access
// control via resource tags applied to the resource identified by load balancer
// name. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateLoadBalancerTlsCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateLoadBalancerTlsCertificate
func (c *Lightsail) CreateLoadBalancerTlsCertificate(input *CreateLoadBalancerTlsCertificateInput) (*CreateLoadBalancerTlsCertificateOutput, error) {
	req, out := c.CreateLoadBalancerTlsCertificateRequest(input)
	return out, req.Send()
}

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

const opCreateRelationalDatabase = "CreateRelationalDatabase"

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

	if input == nil {
		input = &CreateRelationalDatabaseInput{}
	}

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

// CreateRelationalDatabase API operation for Amazon Lightsail.
//
// Creates a new database in Amazon Lightsail.
//
// The create relational database operation supports tag-based access control
// via request tags. For more information, see the Amazon Lightsail Developer
// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateRelationalDatabase
func (c *Lightsail) CreateRelationalDatabase(input *CreateRelationalDatabaseInput) (*CreateRelationalDatabaseOutput, error) {
	req, out := c.CreateRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opCreateRelationalDatabaseFromSnapshot = "CreateRelationalDatabaseFromSnapshot"

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

	if input == nil {
		input = &CreateRelationalDatabaseFromSnapshotInput{}
	}

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

// CreateRelationalDatabaseFromSnapshot API operation for Amazon Lightsail.
//
// Creates a new database from an existing database snapshot in Amazon Lightsail.
//
// You can create a new database from a snapshot in if something goes wrong
// with your original database, or to change it to a different plan, such as
// a high availability or standard plan.
//
// The create relational database from snapshot operation supports tag-based
// access control via request tags and resource tags applied to the resource
// identified by relationalDatabaseSnapshotName. For more information, see the
// Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateRelationalDatabaseFromSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateRelationalDatabaseFromSnapshot
func (c *Lightsail) CreateRelationalDatabaseFromSnapshot(input *CreateRelationalDatabaseFromSnapshotInput) (*CreateRelationalDatabaseFromSnapshotOutput, error) {
	req, out := c.CreateRelationalDatabaseFromSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateRelationalDatabaseSnapshot = "CreateRelationalDatabaseSnapshot"

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

	if input == nil {
		input = &CreateRelationalDatabaseSnapshotInput{}
	}

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

// CreateRelationalDatabaseSnapshot API operation for Amazon Lightsail.
//
// Creates a snapshot of your database in Amazon Lightsail. You can use snapshots
// for backups, to make copies of a database, and to save data before deleting
// a database.
//
// The create relational database snapshot operation supports tag-based access
// control via request tags. For more information, see the Amazon Lightsail
// Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation CreateRelationalDatabaseSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/CreateRelationalDatabaseSnapshot
func (c *Lightsail) CreateRelationalDatabaseSnapshot(input *CreateRelationalDatabaseSnapshotInput) (*CreateRelationalDatabaseSnapshotOutput, error) {
	req, out := c.CreateRelationalDatabaseSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteAlarm = "DeleteAlarm"

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

	if input == nil {
		input = &DeleteAlarmInput{}
	}

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

// DeleteAlarm API operation for Amazon Lightsail.
//
// Deletes an alarm.
//
// An alarm is used to monitor a single metric for one of your resources. When
// a metric condition is met, the alarm can notify you by email, SMS text message,
// and a banner displayed on the Amazon Lightsail console. For more information,
// see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteAlarm for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteAlarm
func (c *Lightsail) DeleteAlarm(input *DeleteAlarmInput) (*DeleteAlarmOutput, error) {
	req, out := c.DeleteAlarmRequest(input)
	return out, req.Send()
}

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

const opDeleteAutoSnapshot = "DeleteAutoSnapshot"

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

	if input == nil {
		input = &DeleteAutoSnapshotInput{}
	}

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

// DeleteAutoSnapshot API operation for Amazon Lightsail.
//
// Deletes an automatic snapshot of an instance or disk. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteAutoSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteAutoSnapshot
func (c *Lightsail) DeleteAutoSnapshot(input *DeleteAutoSnapshotInput) (*DeleteAutoSnapshotOutput, error) {
	req, out := c.DeleteAutoSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteBucket = "DeleteBucket"

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

	if input == nil {
		input = &DeleteBucketInput{}
	}

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

// DeleteBucket API operation for Amazon Lightsail.
//
// Deletes a Amazon Lightsail bucket.
//
// When you delete your bucket, the bucket name is released and can be reused
// for a new bucket in your account or another Amazon Web Services account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteBucket for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteBucket
func (c *Lightsail) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
	req, out := c.DeleteBucketRequest(input)
	return out, req.Send()
}

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

const opDeleteBucketAccessKey = "DeleteBucketAccessKey"

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

	if input == nil {
		input = &DeleteBucketAccessKeyInput{}
	}

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

// DeleteBucketAccessKey API operation for Amazon Lightsail.
//
// Deletes an access key for the specified Amazon Lightsail bucket.
//
// We recommend that you delete an access key if the secret access key is compromised.
//
// For more information about access keys, see Creating access keys for a bucket
// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-creating-bucket-access-keys)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteBucketAccessKey for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteBucketAccessKey
func (c *Lightsail) DeleteBucketAccessKey(input *DeleteBucketAccessKeyInput) (*DeleteBucketAccessKeyOutput, error) {
	req, out := c.DeleteBucketAccessKeyRequest(input)
	return out, req.Send()
}

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

const opDeleteCertificate = "DeleteCertificate"

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

	if input == nil {
		input = &DeleteCertificateInput{}
	}

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

// DeleteCertificate API operation for Amazon Lightsail.
//
// Deletes an SSL/TLS certificate for your Amazon Lightsail content delivery
// network (CDN) distribution.
//
// Certificates that are currently attached to a distribution cannot be deleted.
// Use the DetachCertificateFromDistribution action to detach a certificate
// from a distribution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteCertificate
func (c *Lightsail) DeleteCertificate(input *DeleteCertificateInput) (*DeleteCertificateOutput, error) {
	req, out := c.DeleteCertificateRequest(input)
	return out, req.Send()
}

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

const opDeleteContactMethod = "DeleteContactMethod"

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

	if input == nil {
		input = &DeleteContactMethodInput{}
	}

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

// DeleteContactMethod API operation for Amazon Lightsail.
//
// Deletes a contact method.
//
// A contact method is used to send you notifications about your Amazon Lightsail
// resources. You can add one email address and one mobile phone number contact
// method in each Amazon Web Services Region. However, SMS text messaging is
// not supported in some Amazon Web Services Regions, and SMS text messages
// cannot be sent to some countries/regions. For more information, see Notifications
// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteContactMethod for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteContactMethod
func (c *Lightsail) DeleteContactMethod(input *DeleteContactMethodInput) (*DeleteContactMethodOutput, error) {
	req, out := c.DeleteContactMethodRequest(input)
	return out, req.Send()
}

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

const opDeleteContainerImage = "DeleteContainerImage"

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

	if input == nil {
		input = &DeleteContainerImageInput{}
	}

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

// DeleteContainerImage API operation for Amazon Lightsail.
//
// Deletes a container image that is registered to your Amazon Lightsail container
// service.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteContainerImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteContainerImage
func (c *Lightsail) DeleteContainerImage(input *DeleteContainerImageInput) (*DeleteContainerImageOutput, error) {
	req, out := c.DeleteContainerImageRequest(input)
	return out, req.Send()
}

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

const opDeleteContainerService = "DeleteContainerService"

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

	if input == nil {
		input = &DeleteContainerServiceInput{}
	}

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

// DeleteContainerService API operation for Amazon Lightsail.
//
// Deletes your Amazon Lightsail container service.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteContainerService for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteContainerService
func (c *Lightsail) DeleteContainerService(input *DeleteContainerServiceInput) (*DeleteContainerServiceOutput, error) {
	req, out := c.DeleteContainerServiceRequest(input)
	return out, req.Send()
}

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

const opDeleteDisk = "DeleteDisk"

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

	if input == nil {
		input = &DeleteDiskInput{}
	}

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

// DeleteDisk API operation for Amazon Lightsail.
//
// Deletes the specified block storage disk. The disk must be in the available
// state (not attached to a Lightsail instance).
//
// The disk may remain in the deleting state for several minutes.
//
// The delete disk operation supports tag-based access control via resource
// tags applied to the resource identified by disk name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteDisk for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteDisk
func (c *Lightsail) DeleteDisk(input *DeleteDiskInput) (*DeleteDiskOutput, error) {
	req, out := c.DeleteDiskRequest(input)
	return out, req.Send()
}

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

const opDeleteDiskSnapshot = "DeleteDiskSnapshot"

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

	if input == nil {
		input = &DeleteDiskSnapshotInput{}
	}

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

// DeleteDiskSnapshot API operation for Amazon Lightsail.
//
// Deletes the specified disk snapshot.
//
// When you make periodic snapshots of a disk, the snapshots are incremental,
// and only the blocks on the device that have changed since your last snapshot
// are saved in the new snapshot. When you delete a snapshot, only the data
// not needed for any other snapshot is removed. So regardless of which prior
// snapshots have been deleted, all active snapshots will have access to all
// the information needed to restore the disk.
//
// The delete disk snapshot operation supports tag-based access control via
// resource tags applied to the resource identified by disk snapshot name. For
// more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteDiskSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteDiskSnapshot
func (c *Lightsail) DeleteDiskSnapshot(input *DeleteDiskSnapshotInput) (*DeleteDiskSnapshotOutput, error) {
	req, out := c.DeleteDiskSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteDistribution = "DeleteDistribution"

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

	if input == nil {
		input = &DeleteDistributionInput{}
	}

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

// DeleteDistribution API operation for Amazon Lightsail.
//
// Deletes your Amazon Lightsail content delivery network (CDN) distribution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteDistribution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteDistribution
func (c *Lightsail) DeleteDistribution(input *DeleteDistributionInput) (*DeleteDistributionOutput, error) {
	req, out := c.DeleteDistributionRequest(input)
	return out, req.Send()
}

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

const opDeleteDomain = "DeleteDomain"

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

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

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

// DeleteDomain API operation for Amazon Lightsail.
//
// Deletes the specified domain recordset and all of its domain records.
//
// The delete domain operation supports tag-based access control via resource
// tags applied to the resource identified by domain name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteDomain for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteDomain
func (c *Lightsail) DeleteDomain(input *DeleteDomainInput) (*DeleteDomainOutput, error) {
	req, out := c.DeleteDomainRequest(input)
	return out, req.Send()
}

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

const opDeleteDomainEntry = "DeleteDomainEntry"

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

	if input == nil {
		input = &DeleteDomainEntryInput{}
	}

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

// DeleteDomainEntry API operation for Amazon Lightsail.
//
// Deletes a specific domain entry.
//
// The delete domain entry operation supports tag-based access control via resource
// tags applied to the resource identified by domain name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteDomainEntry for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteDomainEntry
func (c *Lightsail) DeleteDomainEntry(input *DeleteDomainEntryInput) (*DeleteDomainEntryOutput, error) {
	req, out := c.DeleteDomainEntryRequest(input)
	return out, req.Send()
}

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

const opDeleteInstance = "DeleteInstance"

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

	if input == nil {
		input = &DeleteInstanceInput{}
	}

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

// DeleteInstance API operation for Amazon Lightsail.
//
// Deletes an Amazon Lightsail instance.
//
// The delete instance operation supports tag-based access control via resource
// tags applied to the resource identified by instance name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteInstance for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteInstance
func (c *Lightsail) DeleteInstance(input *DeleteInstanceInput) (*DeleteInstanceOutput, error) {
	req, out := c.DeleteInstanceRequest(input)
	return out, req.Send()
}

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

const opDeleteInstanceSnapshot = "DeleteInstanceSnapshot"

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

	if input == nil {
		input = &DeleteInstanceSnapshotInput{}
	}

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

// DeleteInstanceSnapshot API operation for Amazon Lightsail.
//
// Deletes a specific snapshot of a virtual private server (or instance).
//
// The delete instance snapshot operation supports tag-based access control
// via resource tags applied to the resource identified by instance snapshot
// name. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteInstanceSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteInstanceSnapshot
func (c *Lightsail) DeleteInstanceSnapshot(input *DeleteInstanceSnapshotInput) (*DeleteInstanceSnapshotOutput, error) {
	req, out := c.DeleteInstanceSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteKeyPair = "DeleteKeyPair"

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

	if input == nil {
		input = &DeleteKeyPairInput{}
	}

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

// DeleteKeyPair API operation for Amazon Lightsail.
//
// Deletes the specified key pair by removing the public key from Amazon Lightsail.
//
// You can delete key pairs that were created using the ImportKeyPair (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_ImportKeyPair.html)
// and CreateKeyPair (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateKeyPair.html)
// actions, as well as the Lightsail default key pair. A new default key pair
// will not be created unless you launch an instance without specifying a custom
// key pair, or you call the DownloadDefaultKeyPair (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_DownloadDefaultKeyPair.html)
// API.
//
// The delete key pair operation supports tag-based access control via resource
// tags applied to the resource identified by key pair name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteKeyPair for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteKeyPair
func (c *Lightsail) DeleteKeyPair(input *DeleteKeyPairInput) (*DeleteKeyPairOutput, error) {
	req, out := c.DeleteKeyPairRequest(input)
	return out, req.Send()
}

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

const opDeleteKnownHostKeys = "DeleteKnownHostKeys"

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

	if input == nil {
		input = &DeleteKnownHostKeysInput{}
	}

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

// DeleteKnownHostKeys API operation for Amazon Lightsail.
//
// Deletes the known host key or certificate used by the Amazon Lightsail browser-based
// SSH or RDP clients to authenticate an instance. This operation enables the
// Lightsail browser-based SSH or RDP clients to connect to the instance after
// a host key mismatch.
//
// Perform this operation only if you were expecting the host key or certificate
// mismatch or if you are familiar with the new host key or certificate on the
// instance. For more information, see Troubleshooting connection issues when
// using the Amazon Lightsail browser-based SSH or RDP client (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-troubleshooting-browser-based-ssh-rdp-client-connection).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteKnownHostKeys for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteKnownHostKeys
func (c *Lightsail) DeleteKnownHostKeys(input *DeleteKnownHostKeysInput) (*DeleteKnownHostKeysOutput, error) {
	req, out := c.DeleteKnownHostKeysRequest(input)
	return out, req.Send()
}

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

const opDeleteLoadBalancer = "DeleteLoadBalancer"

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

	if input == nil {
		input = &DeleteLoadBalancerInput{}
	}

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

// DeleteLoadBalancer API operation for Amazon Lightsail.
//
// Deletes a Lightsail load balancer and all its associated SSL/TLS certificates.
// Once the load balancer is deleted, you will need to create a new load balancer,
// create a new certificate, and verify domain ownership again.
//
// The delete load balancer operation supports tag-based access control via
// resource tags applied to the resource identified by load balancer name. For
// more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteLoadBalancer for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteLoadBalancer
func (c *Lightsail) DeleteLoadBalancer(input *DeleteLoadBalancerInput) (*DeleteLoadBalancerOutput, error) {
	req, out := c.DeleteLoadBalancerRequest(input)
	return out, req.Send()
}

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

const opDeleteLoadBalancerTlsCertificate = "DeleteLoadBalancerTlsCertificate"

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

	if input == nil {
		input = &DeleteLoadBalancerTlsCertificateInput{}
	}

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

// DeleteLoadBalancerTlsCertificate API operation for Amazon Lightsail.
//
// Deletes an SSL/TLS certificate associated with a Lightsail load balancer.
//
// The DeleteLoadBalancerTlsCertificate operation supports tag-based access
// control via resource tags applied to the resource identified by load balancer
// name. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteLoadBalancerTlsCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteLoadBalancerTlsCertificate
func (c *Lightsail) DeleteLoadBalancerTlsCertificate(input *DeleteLoadBalancerTlsCertificateInput) (*DeleteLoadBalancerTlsCertificateOutput, error) {
	req, out := c.DeleteLoadBalancerTlsCertificateRequest(input)
	return out, req.Send()
}

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

const opDeleteRelationalDatabase = "DeleteRelationalDatabase"

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

	if input == nil {
		input = &DeleteRelationalDatabaseInput{}
	}

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

// DeleteRelationalDatabase API operation for Amazon Lightsail.
//
// Deletes a database in Amazon Lightsail.
//
// The delete relational database operation supports tag-based access control
// via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteRelationalDatabase
func (c *Lightsail) DeleteRelationalDatabase(input *DeleteRelationalDatabaseInput) (*DeleteRelationalDatabaseOutput, error) {
	req, out := c.DeleteRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opDeleteRelationalDatabaseSnapshot = "DeleteRelationalDatabaseSnapshot"

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

	if input == nil {
		input = &DeleteRelationalDatabaseSnapshotInput{}
	}

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

// DeleteRelationalDatabaseSnapshot API operation for Amazon Lightsail.
//
// Deletes a database snapshot in Amazon Lightsail.
//
// The delete relational database snapshot operation supports tag-based access
// control via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DeleteRelationalDatabaseSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DeleteRelationalDatabaseSnapshot
func (c *Lightsail) DeleteRelationalDatabaseSnapshot(input *DeleteRelationalDatabaseSnapshotInput) (*DeleteRelationalDatabaseSnapshotOutput, error) {
	req, out := c.DeleteRelationalDatabaseSnapshotRequest(input)
	return out, req.Send()
}

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

const opDetachCertificateFromDistribution = "DetachCertificateFromDistribution"

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

	if input == nil {
		input = &DetachCertificateFromDistributionInput{}
	}

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

// DetachCertificateFromDistribution API operation for Amazon Lightsail.
//
// Detaches an SSL/TLS certificate from your Amazon Lightsail content delivery
// network (CDN) distribution.
//
// After the certificate is detached, your distribution stops accepting traffic
// for all of the domains that are associated with the certificate.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DetachCertificateFromDistribution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DetachCertificateFromDistribution
func (c *Lightsail) DetachCertificateFromDistribution(input *DetachCertificateFromDistributionInput) (*DetachCertificateFromDistributionOutput, error) {
	req, out := c.DetachCertificateFromDistributionRequest(input)
	return out, req.Send()
}

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

const opDetachDisk = "DetachDisk"

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

	if input == nil {
		input = &DetachDiskInput{}
	}

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

// DetachDisk API operation for Amazon Lightsail.
//
// Detaches a stopped block storage disk from a Lightsail instance. Make sure
// to unmount any file systems on the device within your operating system before
// stopping the instance and detaching the disk.
//
// The detach disk operation supports tag-based access control via resource
// tags applied to the resource identified by disk name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DetachDisk for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DetachDisk
func (c *Lightsail) DetachDisk(input *DetachDiskInput) (*DetachDiskOutput, error) {
	req, out := c.DetachDiskRequest(input)
	return out, req.Send()
}

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

const opDetachInstancesFromLoadBalancer = "DetachInstancesFromLoadBalancer"

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

	if input == nil {
		input = &DetachInstancesFromLoadBalancerInput{}
	}

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

// DetachInstancesFromLoadBalancer API operation for Amazon Lightsail.
//
// Detaches the specified instances from a Lightsail load balancer.
//
// This operation waits until the instances are no longer needed before they
// are detached from the load balancer.
//
// The detach instances from load balancer operation supports tag-based access
// control via resource tags applied to the resource identified by load balancer
// name. For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DetachInstancesFromLoadBalancer for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DetachInstancesFromLoadBalancer
func (c *Lightsail) DetachInstancesFromLoadBalancer(input *DetachInstancesFromLoadBalancerInput) (*DetachInstancesFromLoadBalancerOutput, error) {
	req, out := c.DetachInstancesFromLoadBalancerRequest(input)
	return out, req.Send()
}

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

const opDetachStaticIp = "DetachStaticIp"

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

	if input == nil {
		input = &DetachStaticIpInput{}
	}

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

// DetachStaticIp API operation for Amazon Lightsail.
//
// Detaches a static IP from the Amazon Lightsail instance to which it is attached.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DetachStaticIp for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DetachStaticIp
func (c *Lightsail) DetachStaticIp(input *DetachStaticIpInput) (*DetachStaticIpOutput, error) {
	req, out := c.DetachStaticIpRequest(input)
	return out, req.Send()
}

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

const opDisableAddOn = "DisableAddOn"

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

	if input == nil {
		input = &DisableAddOnInput{}
	}

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

// DisableAddOn API operation for Amazon Lightsail.
//
// Disables an add-on for an Amazon Lightsail resource. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DisableAddOn for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DisableAddOn
func (c *Lightsail) DisableAddOn(input *DisableAddOnInput) (*DisableAddOnOutput, error) {
	req, out := c.DisableAddOnRequest(input)
	return out, req.Send()
}

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

const opDownloadDefaultKeyPair = "DownloadDefaultKeyPair"

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

	if input == nil {
		input = &DownloadDefaultKeyPairInput{}
	}

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

// DownloadDefaultKeyPair API operation for Amazon Lightsail.
//
// Downloads the regional Amazon Lightsail default key pair.
//
// This action also creates a Lightsail default key pair if a default key pair
// does not currently exist in the Amazon Web Services Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation DownloadDefaultKeyPair for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/DownloadDefaultKeyPair
func (c *Lightsail) DownloadDefaultKeyPair(input *DownloadDefaultKeyPairInput) (*DownloadDefaultKeyPairOutput, error) {
	req, out := c.DownloadDefaultKeyPairRequest(input)
	return out, req.Send()
}

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

const opEnableAddOn = "EnableAddOn"

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

	if input == nil {
		input = &EnableAddOnInput{}
	}

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

// EnableAddOn API operation for Amazon Lightsail.
//
// Enables or modifies an add-on for an Amazon Lightsail resource. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation EnableAddOn for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/EnableAddOn
func (c *Lightsail) EnableAddOn(input *EnableAddOnInput) (*EnableAddOnOutput, error) {
	req, out := c.EnableAddOnRequest(input)
	return out, req.Send()
}

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

const opExportSnapshot = "ExportSnapshot"

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

	if input == nil {
		input = &ExportSnapshotInput{}
	}

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

// ExportSnapshot API operation for Amazon Lightsail.
//
// Exports an Amazon Lightsail instance or block storage disk snapshot to Amazon
// Elastic Compute Cloud (Amazon EC2). This operation results in an export snapshot
// record that can be used with the create cloud formation stack operation to
// create new Amazon EC2 instances.
//
// Exported instance snapshots appear in Amazon EC2 as Amazon Machine Images
// (AMIs), and the instance system disk appears as an Amazon Elastic Block Store
// (Amazon EBS) volume. Exported disk snapshots appear in Amazon EC2 as Amazon
// EBS volumes. Snapshots are exported to the same Amazon Web Services Region
// in Amazon EC2 as the source Lightsail snapshot.
//
// The export snapshot operation supports tag-based access control via resource
// tags applied to the resource identified by source snapshot name. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Use the get instance snapshots or get disk snapshots operations to get a
// list of snapshots that you can export to Amazon EC2.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation ExportSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/ExportSnapshot
func (c *Lightsail) ExportSnapshot(input *ExportSnapshotInput) (*ExportSnapshotOutput, error) {
	req, out := c.ExportSnapshotRequest(input)
	return out, req.Send()
}

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

const opGetActiveNames = "GetActiveNames"

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

	if input == nil {
		input = &GetActiveNamesInput{}
	}

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

// GetActiveNames API operation for Amazon Lightsail.
//
// Returns the names of all active (not deleted) resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetActiveNames for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetActiveNames
func (c *Lightsail) GetActiveNames(input *GetActiveNamesInput) (*GetActiveNamesOutput, error) {
	req, out := c.GetActiveNamesRequest(input)
	return out, req.Send()
}

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

const opGetAlarms = "GetAlarms"

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

	if input == nil {
		input = &GetAlarmsInput{}
	}

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

// GetAlarms API operation for Amazon Lightsail.
//
// Returns information about the configured alarms. Specify an alarm name in
// your request to return information about a specific alarm, or specify a monitored
// resource name to return information about all alarms for a specific resource.
//
// An alarm is used to monitor a single metric for one of your resources. When
// a metric condition is met, the alarm can notify you by email, SMS text message,
// and a banner displayed on the Amazon Lightsail console. For more information,
// see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetAlarms for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetAlarms
func (c *Lightsail) GetAlarms(input *GetAlarmsInput) (*GetAlarmsOutput, error) {
	req, out := c.GetAlarmsRequest(input)
	return out, req.Send()
}

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

const opGetAutoSnapshots = "GetAutoSnapshots"

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

	if input == nil {
		input = &GetAutoSnapshotsInput{}
	}

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

// GetAutoSnapshots API operation for Amazon Lightsail.
//
// Returns the available automatic snapshots for an instance or disk. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetAutoSnapshots for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetAutoSnapshots
func (c *Lightsail) GetAutoSnapshots(input *GetAutoSnapshotsInput) (*GetAutoSnapshotsOutput, error) {
	req, out := c.GetAutoSnapshotsRequest(input)
	return out, req.Send()
}

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

const opGetBlueprints = "GetBlueprints"

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

	if input == nil {
		input = &GetBlueprintsInput{}
	}

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

// GetBlueprints API operation for Amazon Lightsail.
//
// Returns the list of available instance images, or blueprints. You can use
// a blueprint to create a new instance already running a specific operating
// system, as well as a preinstalled app or development stack. The software
// each instance is running depends on the blueprint image you choose.
//
// Use active blueprints when creating new instances. Inactive blueprints are
// listed to support customers with existing instances and are not necessarily
// available to create new instances. Blueprints are marked inactive when they
// become outdated due to operating system updates or new application releases.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBlueprints for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBlueprints
func (c *Lightsail) GetBlueprints(input *GetBlueprintsInput) (*GetBlueprintsOutput, error) {
	req, out := c.GetBlueprintsRequest(input)
	return out, req.Send()
}

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

const opGetBucketAccessKeys = "GetBucketAccessKeys"

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

	if input == nil {
		input = &GetBucketAccessKeysInput{}
	}

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

// GetBucketAccessKeys API operation for Amazon Lightsail.
//
// Returns the existing access key IDs for the specified Amazon Lightsail bucket.
//
// This action does not return the secret access key value of an access key.
// You can get a secret access key only when you create it from the response
// of the CreateBucketAccessKey (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateBucketAccessKey.html)
// action. If you lose the secret access key, you must create a new access key.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBucketAccessKeys for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBucketAccessKeys
func (c *Lightsail) GetBucketAccessKeys(input *GetBucketAccessKeysInput) (*GetBucketAccessKeysOutput, error) {
	req, out := c.GetBucketAccessKeysRequest(input)
	return out, req.Send()
}

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

const opGetBucketBundles = "GetBucketBundles"

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

	if input == nil {
		input = &GetBucketBundlesInput{}
	}

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

// GetBucketBundles API operation for Amazon Lightsail.
//
// Returns the bundles that you can apply to a Amazon Lightsail bucket.
//
// The bucket bundle specifies the monthly cost, storage quota, and data transfer
// quota for a bucket.
//
// Use the UpdateBucketBundle (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html)
// action to update the bundle for a bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBucketBundles for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBucketBundles
func (c *Lightsail) GetBucketBundles(input *GetBucketBundlesInput) (*GetBucketBundlesOutput, error) {
	req, out := c.GetBucketBundlesRequest(input)
	return out, req.Send()
}

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

const opGetBucketMetricData = "GetBucketMetricData"

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

	if input == nil {
		input = &GetBucketMetricDataInput{}
	}

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

// GetBucketMetricData API operation for Amazon Lightsail.
//
// Returns the data points of a specific metric for an Amazon Lightsail bucket.
//
// Metrics report the utilization of a bucket. View and collect metric data
// regularly to monitor the number of objects stored in a bucket (including
// object versions) and the storage space used by those objects.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBucketMetricData for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBucketMetricData
func (c *Lightsail) GetBucketMetricData(input *GetBucketMetricDataInput) (*GetBucketMetricDataOutput, error) {
	req, out := c.GetBucketMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetBuckets = "GetBuckets"

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

	if input == nil {
		input = &GetBucketsInput{}
	}

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

// GetBuckets API operation for Amazon Lightsail.
//
// Returns information about one or more Amazon Lightsail buckets. The information
// returned includes the synchronization status of the Amazon Simple Storage
// Service (Amazon S3) account-level block public access feature for your Lightsail
// buckets.
//
// For more information about buckets, see Buckets in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/buckets-in-amazon-lightsail)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBuckets for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBuckets
func (c *Lightsail) GetBuckets(input *GetBucketsInput) (*GetBucketsOutput, error) {
	req, out := c.GetBucketsRequest(input)
	return out, req.Send()
}

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

const opGetBundles = "GetBundles"

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

	if input == nil {
		input = &GetBundlesInput{}
	}

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

// GetBundles API operation for Amazon Lightsail.
//
// Returns the bundles that you can apply to an Amazon Lightsail instance when
// you create it.
//
// A bundle describes the specifications of an instance, such as the monthly
// cost, amount of memory, the number of vCPUs, amount of storage space, and
// monthly network data transfer quota.
//
// Bundles are referred to as instance plans in the Lightsail console.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetBundles for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetBundles
func (c *Lightsail) GetBundles(input *GetBundlesInput) (*GetBundlesOutput, error) {
	req, out := c.GetBundlesRequest(input)
	return out, req.Send()
}

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

const opGetCertificates = "GetCertificates"

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

	if input == nil {
		input = &GetCertificatesInput{}
	}

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

// GetCertificates API operation for Amazon Lightsail.
//
// Returns information about one or more Amazon Lightsail SSL/TLS certificates.
//
// To get a summary of a certificate, omit includeCertificateDetails from your
// request. The response will include only the certificate Amazon Resource Name
// (ARN), certificate name, domain name, and tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetCertificates for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetCertificates
func (c *Lightsail) GetCertificates(input *GetCertificatesInput) (*GetCertificatesOutput, error) {
	req, out := c.GetCertificatesRequest(input)
	return out, req.Send()
}

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

const opGetCloudFormationStackRecords = "GetCloudFormationStackRecords"

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

	if input == nil {
		input = &GetCloudFormationStackRecordsInput{}
	}

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

// GetCloudFormationStackRecords API operation for Amazon Lightsail.
//
// Returns the CloudFormation stack record created as a result of the create
// cloud formation stack operation.
//
// An AWS CloudFormation stack is used to create a new Amazon EC2 instance from
// an exported Lightsail snapshot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetCloudFormationStackRecords for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetCloudFormationStackRecords
func (c *Lightsail) GetCloudFormationStackRecords(input *GetCloudFormationStackRecordsInput) (*GetCloudFormationStackRecordsOutput, error) {
	req, out := c.GetCloudFormationStackRecordsRequest(input)
	return out, req.Send()
}

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

const opGetContactMethods = "GetContactMethods"

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

	if input == nil {
		input = &GetContactMethodsInput{}
	}

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

// GetContactMethods API operation for Amazon Lightsail.
//
// Returns information about the configured contact methods. Specify a protocol
// in your request to return information about a specific contact method.
//
// A contact method is used to send you notifications about your Amazon Lightsail
// resources. You can add one email address and one mobile phone number contact
// method in each Amazon Web Services Region. However, SMS text messaging is
// not supported in some Amazon Web Services Regions, and SMS text messages
// cannot be sent to some countries/regions. For more information, see Notifications
// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContactMethods for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContactMethods
func (c *Lightsail) GetContactMethods(input *GetContactMethodsInput) (*GetContactMethodsOutput, error) {
	req, out := c.GetContactMethodsRequest(input)
	return out, req.Send()
}

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

const opGetContainerAPIMetadata = "GetContainerAPIMetadata"

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

	if input == nil {
		input = &GetContainerAPIMetadataInput{}
	}

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

// GetContainerAPIMetadata API operation for Amazon Lightsail.
//
// Returns information about Amazon Lightsail containers, such as the current
// version of the Lightsail Control (lightsailctl) plugin.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerAPIMetadata for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerAPIMetadata
func (c *Lightsail) GetContainerAPIMetadata(input *GetContainerAPIMetadataInput) (*GetContainerAPIMetadataOutput, error) {
	req, out := c.GetContainerAPIMetadataRequest(input)
	return out, req.Send()
}

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

const opGetContainerImages = "GetContainerImages"

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

	if input == nil {
		input = &GetContainerImagesInput{}
	}

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

// GetContainerImages API operation for Amazon Lightsail.
//
// Returns the container images that are registered to your Amazon Lightsail
// container service.
//
// If you created a deployment on your Lightsail container service that uses
// container images from a public registry like Docker Hub, those images are
// not returned as part of this action. Those images are not registered to your
// Lightsail container service.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerImages for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerImages
func (c *Lightsail) GetContainerImages(input *GetContainerImagesInput) (*GetContainerImagesOutput, error) {
	req, out := c.GetContainerImagesRequest(input)
	return out, req.Send()
}

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

const opGetContainerLog = "GetContainerLog"

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

	if input == nil {
		input = &GetContainerLogInput{}
	}

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

// GetContainerLog API operation for Amazon Lightsail.
//
// Returns the log events of a container of your Amazon Lightsail container
// service.
//
// If your container service has more than one node (i.e., a scale greater than
// 1), then the log events that are returned for the specified container are
// merged from all nodes on your container service.
//
// Container logs are retained for a certain amount of time. For more information,
// see Amazon Lightsail endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/lightsail.html)
// in the Amazon Web Services General Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerLog for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerLog
func (c *Lightsail) GetContainerLog(input *GetContainerLogInput) (*GetContainerLogOutput, error) {
	req, out := c.GetContainerLogRequest(input)
	return out, req.Send()
}

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

const opGetContainerServiceDeployments = "GetContainerServiceDeployments"

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

	if input == nil {
		input = &GetContainerServiceDeploymentsInput{}
	}

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

// GetContainerServiceDeployments API operation for Amazon Lightsail.
//
// # Returns the deployments for your Amazon Lightsail container service
//
// A deployment specifies the settings, such as the ports and launch command,
// of containers that are deployed to your container service.
//
// The deployments are ordered by version in ascending order. The newest version
// is listed at the top of the response.
//
// A set number of deployments are kept before the oldest one is replaced with
// the newest one. For more information, see Amazon Lightsail endpoints and
// quotas (https://docs.aws.amazon.com/general/latest/gr/lightsail.html) in
// the Amazon Web Services General Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerServiceDeployments for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerServiceDeployments
func (c *Lightsail) GetContainerServiceDeployments(input *GetContainerServiceDeploymentsInput) (*GetContainerServiceDeploymentsOutput, error) {
	req, out := c.GetContainerServiceDeploymentsRequest(input)
	return out, req.Send()
}

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

const opGetContainerServiceMetricData = "GetContainerServiceMetricData"

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

	if input == nil {
		input = &GetContainerServiceMetricDataInput{}
	}

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

// GetContainerServiceMetricData API operation for Amazon Lightsail.
//
// Returns the data points of a specific metric of your Amazon Lightsail container
// service.
//
// Metrics report the utilization of your resources. Monitor and collect metric
// data regularly to maintain the reliability, availability, and performance
// of your resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerServiceMetricData for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerServiceMetricData
func (c *Lightsail) GetContainerServiceMetricData(input *GetContainerServiceMetricDataInput) (*GetContainerServiceMetricDataOutput, error) {
	req, out := c.GetContainerServiceMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetContainerServicePowers = "GetContainerServicePowers"

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

	if input == nil {
		input = &GetContainerServicePowersInput{}
	}

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

// GetContainerServicePowers API operation for Amazon Lightsail.
//
// Returns the list of powers that can be specified for your Amazon Lightsail
// container services.
//
// The power specifies the amount of memory, the number of vCPUs, and the base
// price of the container service.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerServicePowers for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerServicePowers
func (c *Lightsail) GetContainerServicePowers(input *GetContainerServicePowersInput) (*GetContainerServicePowersOutput, error) {
	req, out := c.GetContainerServicePowersRequest(input)
	return out, req.Send()
}

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

const opGetContainerServices = "GetContainerServices"

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

	if input == nil {
		input = &GetContainerServicesInput{}
	}

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

// GetContainerServices API operation for Amazon Lightsail.
//
// Returns information about one or more of your Amazon Lightsail container
// services.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetContainerServices for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetContainerServices
func (c *Lightsail) GetContainerServices(input *GetContainerServicesInput) (*GetContainerServicesOutput, error) {
	req, out := c.GetContainerServicesRequest(input)
	return out, req.Send()
}

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

const opGetCostEstimate = "GetCostEstimate"

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

	if input == nil {
		input = &GetCostEstimateInput{}
	}

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

// GetCostEstimate API operation for Amazon Lightsail.
//
// Retrieves information about the cost estimate for a specified resource. A
// cost estimate will not generate for a resource that has been deleted.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetCostEstimate for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetCostEstimate
func (c *Lightsail) GetCostEstimate(input *GetCostEstimateInput) (*GetCostEstimateOutput, error) {
	req, out := c.GetCostEstimateRequest(input)
	return out, req.Send()
}

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

const opGetDisk = "GetDisk"

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

	if input == nil {
		input = &GetDiskInput{}
	}

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

// GetDisk API operation for Amazon Lightsail.
//
// Returns information about a specific block storage disk.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDisk for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDisk
func (c *Lightsail) GetDisk(input *GetDiskInput) (*GetDiskOutput, error) {
	req, out := c.GetDiskRequest(input)
	return out, req.Send()
}

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

const opGetDiskSnapshot = "GetDiskSnapshot"

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

	if input == nil {
		input = &GetDiskSnapshotInput{}
	}

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

// GetDiskSnapshot API operation for Amazon Lightsail.
//
// Returns information about a specific block storage disk snapshot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDiskSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDiskSnapshot
func (c *Lightsail) GetDiskSnapshot(input *GetDiskSnapshotInput) (*GetDiskSnapshotOutput, error) {
	req, out := c.GetDiskSnapshotRequest(input)
	return out, req.Send()
}

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

const opGetDiskSnapshots = "GetDiskSnapshots"

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

	if input == nil {
		input = &GetDiskSnapshotsInput{}
	}

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

// GetDiskSnapshots API operation for Amazon Lightsail.
//
// Returns information about all block storage disk snapshots in your AWS account
// and region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDiskSnapshots for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDiskSnapshots
func (c *Lightsail) GetDiskSnapshots(input *GetDiskSnapshotsInput) (*GetDiskSnapshotsOutput, error) {
	req, out := c.GetDiskSnapshotsRequest(input)
	return out, req.Send()
}

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

const opGetDisks = "GetDisks"

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

	if input == nil {
		input = &GetDisksInput{}
	}

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

// GetDisks API operation for Amazon Lightsail.
//
// Returns information about all block storage disks in your AWS account and
// region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDisks for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDisks
func (c *Lightsail) GetDisks(input *GetDisksInput) (*GetDisksOutput, error) {
	req, out := c.GetDisksRequest(input)
	return out, req.Send()
}

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

const opGetDistributionBundles = "GetDistributionBundles"

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

	if input == nil {
		input = &GetDistributionBundlesInput{}
	}

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

// GetDistributionBundles API operation for Amazon Lightsail.
//
// Returns the bundles that can be applied to your Amazon Lightsail content
// delivery network (CDN) distributions.
//
// A distribution bundle specifies the monthly network transfer quota and monthly
// cost of your distribution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDistributionBundles for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDistributionBundles
func (c *Lightsail) GetDistributionBundles(input *GetDistributionBundlesInput) (*GetDistributionBundlesOutput, error) {
	req, out := c.GetDistributionBundlesRequest(input)
	return out, req.Send()
}

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

const opGetDistributionLatestCacheReset = "GetDistributionLatestCacheReset"

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

	if input == nil {
		input = &GetDistributionLatestCacheResetInput{}
	}

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

// GetDistributionLatestCacheReset API operation for Amazon Lightsail.
//
// Returns the timestamp and status of the last cache reset of a specific Amazon
// Lightsail content delivery network (CDN) distribution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDistributionLatestCacheReset for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDistributionLatestCacheReset
func (c *Lightsail) GetDistributionLatestCacheReset(input *GetDistributionLatestCacheResetInput) (*GetDistributionLatestCacheResetOutput, error) {
	req, out := c.GetDistributionLatestCacheResetRequest(input)
	return out, req.Send()
}

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

const opGetDistributionMetricData = "GetDistributionMetricData"

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

	if input == nil {
		input = &GetDistributionMetricDataInput{}
	}

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

// GetDistributionMetricData API operation for Amazon Lightsail.
//
// Returns the data points of a specific metric for an Amazon Lightsail content
// delivery network (CDN) distribution.
//
// Metrics report the utilization of your resources, and the error counts generated
// by them. Monitor and collect metric data regularly to maintain the reliability,
// availability, and performance of your resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDistributionMetricData for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDistributionMetricData
func (c *Lightsail) GetDistributionMetricData(input *GetDistributionMetricDataInput) (*GetDistributionMetricDataOutput, error) {
	req, out := c.GetDistributionMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetDistributions = "GetDistributions"

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

	if input == nil {
		input = &GetDistributionsInput{}
	}

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

// GetDistributions API operation for Amazon Lightsail.
//
// Returns information about one or more of your Amazon Lightsail content delivery
// network (CDN) distributions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDistributions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDistributions
func (c *Lightsail) GetDistributions(input *GetDistributionsInput) (*GetDistributionsOutput, error) {
	req, out := c.GetDistributionsRequest(input)
	return out, req.Send()
}

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

const opGetDomain = "GetDomain"

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

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

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

// GetDomain API operation for Amazon Lightsail.
//
// Returns information about a specific domain recordset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDomain for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDomain
func (c *Lightsail) GetDomain(input *GetDomainInput) (*GetDomainOutput, error) {
	req, out := c.GetDomainRequest(input)
	return out, req.Send()
}

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

const opGetDomains = "GetDomains"

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

	if input == nil {
		input = &GetDomainsInput{}
	}

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

// GetDomains API operation for Amazon Lightsail.
//
// Returns a list of all domains in the user's account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetDomains for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetDomains
func (c *Lightsail) GetDomains(input *GetDomainsInput) (*GetDomainsOutput, error) {
	req, out := c.GetDomainsRequest(input)
	return out, req.Send()
}

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

const opGetExportSnapshotRecords = "GetExportSnapshotRecords"

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

	if input == nil {
		input = &GetExportSnapshotRecordsInput{}
	}

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

// GetExportSnapshotRecords API operation for Amazon Lightsail.
//
// Returns all export snapshot records created as a result of the export snapshot
// operation.
//
// An export snapshot record can be used to create a new Amazon EC2 instance
// and its related resources with the CreateCloudFormationStack (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateCloudFormationStack.html)
// action.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetExportSnapshotRecords for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetExportSnapshotRecords
func (c *Lightsail) GetExportSnapshotRecords(input *GetExportSnapshotRecordsInput) (*GetExportSnapshotRecordsOutput, error) {
	req, out := c.GetExportSnapshotRecordsRequest(input)
	return out, req.Send()
}

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

const opGetInstance = "GetInstance"

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

	if input == nil {
		input = &GetInstanceInput{}
	}

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

// GetInstance API operation for Amazon Lightsail.
//
// Returns information about a specific Amazon Lightsail instance, which is
// a virtual private server.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstance for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstance
func (c *Lightsail) GetInstance(input *GetInstanceInput) (*GetInstanceOutput, error) {
	req, out := c.GetInstanceRequest(input)
	return out, req.Send()
}

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

const opGetInstanceAccessDetails = "GetInstanceAccessDetails"

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

	if input == nil {
		input = &GetInstanceAccessDetailsInput{}
	}

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

// GetInstanceAccessDetails API operation for Amazon Lightsail.
//
// Returns temporary SSH keys you can use to connect to a specific virtual private
// server, or instance.
//
// The get instance access details operation supports tag-based access control
// via resource tags applied to the resource identified by instance name. For
// more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstanceAccessDetails for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstanceAccessDetails
func (c *Lightsail) GetInstanceAccessDetails(input *GetInstanceAccessDetailsInput) (*GetInstanceAccessDetailsOutput, error) {
	req, out := c.GetInstanceAccessDetailsRequest(input)
	return out, req.Send()
}

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

const opGetInstanceMetricData = "GetInstanceMetricData"

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

	if input == nil {
		input = &GetInstanceMetricDataInput{}
	}

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

// GetInstanceMetricData API operation for Amazon Lightsail.
//
// Returns the data points for the specified Amazon Lightsail instance metric,
// given an instance name.
//
// Metrics report the utilization of your resources, and the error counts generated
// by them. Monitor and collect metric data regularly to maintain the reliability,
// availability, and performance of your resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstanceMetricData for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstanceMetricData
func (c *Lightsail) GetInstanceMetricData(input *GetInstanceMetricDataInput) (*GetInstanceMetricDataOutput, error) {
	req, out := c.GetInstanceMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetInstancePortStates = "GetInstancePortStates"

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

	if input == nil {
		input = &GetInstancePortStatesInput{}
	}

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

// GetInstancePortStates API operation for Amazon Lightsail.
//
// Returns the firewall port states for a specific Amazon Lightsail instance,
// the IP addresses allowed to connect to the instance through the ports, and
// the protocol.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstancePortStates for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstancePortStates
func (c *Lightsail) GetInstancePortStates(input *GetInstancePortStatesInput) (*GetInstancePortStatesOutput, error) {
	req, out := c.GetInstancePortStatesRequest(input)
	return out, req.Send()
}

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

const opGetInstanceSnapshot = "GetInstanceSnapshot"

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

	if input == nil {
		input = &GetInstanceSnapshotInput{}
	}

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

// GetInstanceSnapshot API operation for Amazon Lightsail.
//
// Returns information about a specific instance snapshot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstanceSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstanceSnapshot
func (c *Lightsail) GetInstanceSnapshot(input *GetInstanceSnapshotInput) (*GetInstanceSnapshotOutput, error) {
	req, out := c.GetInstanceSnapshotRequest(input)
	return out, req.Send()
}

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

const opGetInstanceSnapshots = "GetInstanceSnapshots"

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

	if input == nil {
		input = &GetInstanceSnapshotsInput{}
	}

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

// GetInstanceSnapshots API operation for Amazon Lightsail.
//
// Returns all instance snapshots for the user's account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstanceSnapshots for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstanceSnapshots
func (c *Lightsail) GetInstanceSnapshots(input *GetInstanceSnapshotsInput) (*GetInstanceSnapshotsOutput, error) {
	req, out := c.GetInstanceSnapshotsRequest(input)
	return out, req.Send()
}

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

const opGetInstanceState = "GetInstanceState"

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

	if input == nil {
		input = &GetInstanceStateInput{}
	}

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

// GetInstanceState API operation for Amazon Lightsail.
//
// Returns the state of a specific instance. Works on one instance at a time.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstanceState for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstanceState
func (c *Lightsail) GetInstanceState(input *GetInstanceStateInput) (*GetInstanceStateOutput, error) {
	req, out := c.GetInstanceStateRequest(input)
	return out, req.Send()
}

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

const opGetInstances = "GetInstances"

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

	if input == nil {
		input = &GetInstancesInput{}
	}

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

// GetInstances API operation for Amazon Lightsail.
//
// Returns information about all Amazon Lightsail virtual private servers, or
// instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetInstances for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetInstances
func (c *Lightsail) GetInstances(input *GetInstancesInput) (*GetInstancesOutput, error) {
	req, out := c.GetInstancesRequest(input)
	return out, req.Send()
}

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

const opGetKeyPair = "GetKeyPair"

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

	if input == nil {
		input = &GetKeyPairInput{}
	}

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

// GetKeyPair API operation for Amazon Lightsail.
//
// Returns information about a specific key pair.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetKeyPair for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetKeyPair
func (c *Lightsail) GetKeyPair(input *GetKeyPairInput) (*GetKeyPairOutput, error) {
	req, out := c.GetKeyPairRequest(input)
	return out, req.Send()
}

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

const opGetKeyPairs = "GetKeyPairs"

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

	if input == nil {
		input = &GetKeyPairsInput{}
	}

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

// GetKeyPairs API operation for Amazon Lightsail.
//
// Returns information about all key pairs in the user's account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetKeyPairs for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetKeyPairs
func (c *Lightsail) GetKeyPairs(input *GetKeyPairsInput) (*GetKeyPairsOutput, error) {
	req, out := c.GetKeyPairsRequest(input)
	return out, req.Send()
}

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

const opGetLoadBalancer = "GetLoadBalancer"

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

	if input == nil {
		input = &GetLoadBalancerInput{}
	}

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

// GetLoadBalancer API operation for Amazon Lightsail.
//
// Returns information about the specified Lightsail load balancer.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetLoadBalancer for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetLoadBalancer
func (c *Lightsail) GetLoadBalancer(input *GetLoadBalancerInput) (*GetLoadBalancerOutput, error) {
	req, out := c.GetLoadBalancerRequest(input)
	return out, req.Send()
}

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

const opGetLoadBalancerMetricData = "GetLoadBalancerMetricData"

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

	if input == nil {
		input = &GetLoadBalancerMetricDataInput{}
	}

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

// GetLoadBalancerMetricData API operation for Amazon Lightsail.
//
// Returns information about health metrics for your Lightsail load balancer.
//
// Metrics report the utilization of your resources, and the error counts generated
// by them. Monitor and collect metric data regularly to maintain the reliability,
// availability, and performance of your resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetLoadBalancerMetricData for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetLoadBalancerMetricData
func (c *Lightsail) GetLoadBalancerMetricData(input *GetLoadBalancerMetricDataInput) (*GetLoadBalancerMetricDataOutput, error) {
	req, out := c.GetLoadBalancerMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetLoadBalancerTlsCertificates = "GetLoadBalancerTlsCertificates"

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

	if input == nil {
		input = &GetLoadBalancerTlsCertificatesInput{}
	}

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

// GetLoadBalancerTlsCertificates API operation for Amazon Lightsail.
//
// Returns information about the TLS certificates that are associated with the
// specified Lightsail load balancer.
//
// TLS is just an updated, more secure version of Secure Socket Layer (SSL).
//
// You can have a maximum of 2 certificates associated with a Lightsail load
// balancer. One is active and the other is inactive.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetLoadBalancerTlsCertificates for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetLoadBalancerTlsCertificates
func (c *Lightsail) GetLoadBalancerTlsCertificates(input *GetLoadBalancerTlsCertificatesInput) (*GetLoadBalancerTlsCertificatesOutput, error) {
	req, out := c.GetLoadBalancerTlsCertificatesRequest(input)
	return out, req.Send()
}

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

const opGetLoadBalancerTlsPolicies = "GetLoadBalancerTlsPolicies"

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

	if input == nil {
		input = &GetLoadBalancerTlsPoliciesInput{}
	}

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

// GetLoadBalancerTlsPolicies API operation for Amazon Lightsail.
//
// Returns a list of TLS security policies that you can apply to Lightsail load
// balancers.
//
// For more information about load balancer TLS security policies, see Configuring
// TLS security policies on your Amazon Lightsail load balancers (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetLoadBalancerTlsPolicies for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetLoadBalancerTlsPolicies
func (c *Lightsail) GetLoadBalancerTlsPolicies(input *GetLoadBalancerTlsPoliciesInput) (*GetLoadBalancerTlsPoliciesOutput, error) {
	req, out := c.GetLoadBalancerTlsPoliciesRequest(input)
	return out, req.Send()
}

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

const opGetLoadBalancers = "GetLoadBalancers"

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

	if input == nil {
		input = &GetLoadBalancersInput{}
	}

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

// GetLoadBalancers API operation for Amazon Lightsail.
//
// Returns information about all load balancers in an account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetLoadBalancers for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetLoadBalancers
func (c *Lightsail) GetLoadBalancers(input *GetLoadBalancersInput) (*GetLoadBalancersOutput, error) {
	req, out := c.GetLoadBalancersRequest(input)
	return out, req.Send()
}

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

const opGetOperation = "GetOperation"

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

	if input == nil {
		input = &GetOperationInput{}
	}

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

// GetOperation API operation for Amazon Lightsail.
//
// Returns information about a specific operation. Operations include events
// such as when you create an instance, allocate a static IP, attach a static
// IP, and so on.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetOperation for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetOperation
func (c *Lightsail) GetOperation(input *GetOperationInput) (*GetOperationOutput, error) {
	req, out := c.GetOperationRequest(input)
	return out, req.Send()
}

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

const opGetOperations = "GetOperations"

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

	if input == nil {
		input = &GetOperationsInput{}
	}

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

// GetOperations API operation for Amazon Lightsail.
//
// Returns information about all operations.
//
// Results are returned from oldest to newest, up to a maximum of 200. Results
// can be paged by making each subsequent call to GetOperations use the maximum
// (last) statusChangedAt value from the previous request.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetOperations for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetOperations
func (c *Lightsail) GetOperations(input *GetOperationsInput) (*GetOperationsOutput, error) {
	req, out := c.GetOperationsRequest(input)
	return out, req.Send()
}

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

const opGetOperationsForResource = "GetOperationsForResource"

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

	if input == nil {
		input = &GetOperationsForResourceInput{}
	}

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

// GetOperationsForResource API operation for Amazon Lightsail.
//
// Gets operations for a specific resource (an instance or a static IP).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetOperationsForResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetOperationsForResource
func (c *Lightsail) GetOperationsForResource(input *GetOperationsForResourceInput) (*GetOperationsForResourceOutput, error) {
	req, out := c.GetOperationsForResourceRequest(input)
	return out, req.Send()
}

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

const opGetRegions = "GetRegions"

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

	if input == nil {
		input = &GetRegionsInput{}
	}

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

// GetRegions API operation for Amazon Lightsail.
//
// Returns a list of all valid regions for Amazon Lightsail. Use the include
// availability zones parameter to also return the Availability Zones in a region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRegions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRegions
func (c *Lightsail) GetRegions(input *GetRegionsInput) (*GetRegionsOutput, error) {
	req, out := c.GetRegionsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabase = "GetRelationalDatabase"

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

	if input == nil {
		input = &GetRelationalDatabaseInput{}
	}

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

// GetRelationalDatabase API operation for Amazon Lightsail.
//
// Returns information about a specific database in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabase
func (c *Lightsail) GetRelationalDatabase(input *GetRelationalDatabaseInput) (*GetRelationalDatabaseOutput, error) {
	req, out := c.GetRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseBlueprints = "GetRelationalDatabaseBlueprints"

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

	if input == nil {
		input = &GetRelationalDatabaseBlueprintsInput{}
	}

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

// GetRelationalDatabaseBlueprints API operation for Amazon Lightsail.
//
// Returns a list of available database blueprints in Amazon Lightsail. A blueprint
// describes the major engine version of a database.
//
// You can use a blueprint ID to create a new database that runs a specific
// database engine.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseBlueprints for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseBlueprints
func (c *Lightsail) GetRelationalDatabaseBlueprints(input *GetRelationalDatabaseBlueprintsInput) (*GetRelationalDatabaseBlueprintsOutput, error) {
	req, out := c.GetRelationalDatabaseBlueprintsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseBundles = "GetRelationalDatabaseBundles"

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

	if input == nil {
		input = &GetRelationalDatabaseBundlesInput{}
	}

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

// GetRelationalDatabaseBundles API operation for Amazon Lightsail.
//
// Returns the list of bundles that are available in Amazon Lightsail. A bundle
// describes the performance specifications for a database.
//
// You can use a bundle ID to create a new database with explicit performance
// specifications.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseBundles for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseBundles
func (c *Lightsail) GetRelationalDatabaseBundles(input *GetRelationalDatabaseBundlesInput) (*GetRelationalDatabaseBundlesOutput, error) {
	req, out := c.GetRelationalDatabaseBundlesRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseEvents = "GetRelationalDatabaseEvents"

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

	if input == nil {
		input = &GetRelationalDatabaseEventsInput{}
	}

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

// GetRelationalDatabaseEvents API operation for Amazon Lightsail.
//
// Returns a list of events for a specific database in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseEvents for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseEvents
func (c *Lightsail) GetRelationalDatabaseEvents(input *GetRelationalDatabaseEventsInput) (*GetRelationalDatabaseEventsOutput, error) {
	req, out := c.GetRelationalDatabaseEventsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseLogEvents = "GetRelationalDatabaseLogEvents"

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

	if input == nil {
		input = &GetRelationalDatabaseLogEventsInput{}
	}

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

// GetRelationalDatabaseLogEvents API operation for Amazon Lightsail.
//
// Returns a list of log events for a database in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseLogEvents for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseLogEvents
func (c *Lightsail) GetRelationalDatabaseLogEvents(input *GetRelationalDatabaseLogEventsInput) (*GetRelationalDatabaseLogEventsOutput, error) {
	req, out := c.GetRelationalDatabaseLogEventsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseLogStreams = "GetRelationalDatabaseLogStreams"

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

	if input == nil {
		input = &GetRelationalDatabaseLogStreamsInput{}
	}

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

// GetRelationalDatabaseLogStreams API operation for Amazon Lightsail.
//
// Returns a list of available log streams for a specific database in Amazon
// Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseLogStreams for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseLogStreams
func (c *Lightsail) GetRelationalDatabaseLogStreams(input *GetRelationalDatabaseLogStreamsInput) (*GetRelationalDatabaseLogStreamsOutput, error) {
	req, out := c.GetRelationalDatabaseLogStreamsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseMasterUserPassword = "GetRelationalDatabaseMasterUserPassword"

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

	if input == nil {
		input = &GetRelationalDatabaseMasterUserPasswordInput{}
	}

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

// GetRelationalDatabaseMasterUserPassword API operation for Amazon Lightsail.
//
// Returns the current, previous, or pending versions of the master user password
// for a Lightsail database.
//
// The GetRelationalDatabaseMasterUserPassword operation supports tag-based
// access control via resource tags applied to the resource identified by relationalDatabaseName.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseMasterUserPassword for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseMasterUserPassword
func (c *Lightsail) GetRelationalDatabaseMasterUserPassword(input *GetRelationalDatabaseMasterUserPasswordInput) (*GetRelationalDatabaseMasterUserPasswordOutput, error) {
	req, out := c.GetRelationalDatabaseMasterUserPasswordRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseMetricData = "GetRelationalDatabaseMetricData"

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

	if input == nil {
		input = &GetRelationalDatabaseMetricDataInput{}
	}

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

// GetRelationalDatabaseMetricData API operation for Amazon Lightsail.
//
// Returns the data points of the specified metric for a database in Amazon
// Lightsail.
//
// Metrics report the utilization of your resources, and the error counts generated
// by them. Monitor and collect metric data regularly to maintain the reliability,
// availability, and performance of your resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseMetricData for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseMetricData
func (c *Lightsail) GetRelationalDatabaseMetricData(input *GetRelationalDatabaseMetricDataInput) (*GetRelationalDatabaseMetricDataOutput, error) {
	req, out := c.GetRelationalDatabaseMetricDataRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseParameters = "GetRelationalDatabaseParameters"

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

	if input == nil {
		input = &GetRelationalDatabaseParametersInput{}
	}

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

// GetRelationalDatabaseParameters API operation for Amazon Lightsail.
//
// Returns all of the runtime parameters offered by the underlying database
// software, or engine, for a specific database in Amazon Lightsail.
//
// In addition to the parameter names and values, this operation returns other
// information about each parameter. This information includes whether changes
// require a reboot, whether the parameter is modifiable, the allowed values,
// and the data types.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseParameters for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseParameters
func (c *Lightsail) GetRelationalDatabaseParameters(input *GetRelationalDatabaseParametersInput) (*GetRelationalDatabaseParametersOutput, error) {
	req, out := c.GetRelationalDatabaseParametersRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseSnapshot = "GetRelationalDatabaseSnapshot"

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

	if input == nil {
		input = &GetRelationalDatabaseSnapshotInput{}
	}

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

// GetRelationalDatabaseSnapshot API operation for Amazon Lightsail.
//
// Returns information about a specific database snapshot in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseSnapshot for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseSnapshot
func (c *Lightsail) GetRelationalDatabaseSnapshot(input *GetRelationalDatabaseSnapshotInput) (*GetRelationalDatabaseSnapshotOutput, error) {
	req, out := c.GetRelationalDatabaseSnapshotRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabaseSnapshots = "GetRelationalDatabaseSnapshots"

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

	if input == nil {
		input = &GetRelationalDatabaseSnapshotsInput{}
	}

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

// GetRelationalDatabaseSnapshots API operation for Amazon Lightsail.
//
// Returns information about all of your database snapshots in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabaseSnapshots for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabaseSnapshots
func (c *Lightsail) GetRelationalDatabaseSnapshots(input *GetRelationalDatabaseSnapshotsInput) (*GetRelationalDatabaseSnapshotsOutput, error) {
	req, out := c.GetRelationalDatabaseSnapshotsRequest(input)
	return out, req.Send()
}

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

const opGetRelationalDatabases = "GetRelationalDatabases"

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

	if input == nil {
		input = &GetRelationalDatabasesInput{}
	}

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

// GetRelationalDatabases API operation for Amazon Lightsail.
//
// Returns information about all of your databases in Amazon Lightsail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetRelationalDatabases for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetRelationalDatabases
func (c *Lightsail) GetRelationalDatabases(input *GetRelationalDatabasesInput) (*GetRelationalDatabasesOutput, error) {
	req, out := c.GetRelationalDatabasesRequest(input)
	return out, req.Send()
}

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

const opGetSetupHistory = "GetSetupHistory"

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

	if input == nil {
		input = &GetSetupHistoryInput{}
	}

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

// GetSetupHistory API operation for Amazon Lightsail.
//
// Returns detailed information for five of the most recent SetupInstanceHttps
// requests that were ran on the target instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetSetupHistory for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetSetupHistory
func (c *Lightsail) GetSetupHistory(input *GetSetupHistoryInput) (*GetSetupHistoryOutput, error) {
	req, out := c.GetSetupHistoryRequest(input)
	return out, req.Send()
}

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

const opGetStaticIp = "GetStaticIp"

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

	if input == nil {
		input = &GetStaticIpInput{}
	}

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

// GetStaticIp API operation for Amazon Lightsail.
//
// Returns information about an Amazon Lightsail static IP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetStaticIp for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetStaticIp
func (c *Lightsail) GetStaticIp(input *GetStaticIpInput) (*GetStaticIpOutput, error) {
	req, out := c.GetStaticIpRequest(input)
	return out, req.Send()
}

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

const opGetStaticIps = "GetStaticIps"

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

	if input == nil {
		input = &GetStaticIpsInput{}
	}

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

// GetStaticIps API operation for Amazon Lightsail.
//
// Returns information about all static IPs in the user's account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation GetStaticIps for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/GetStaticIps
func (c *Lightsail) GetStaticIps(input *GetStaticIpsInput) (*GetStaticIpsOutput, error) {
	req, out := c.GetStaticIpsRequest(input)
	return out, req.Send()
}

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

const opImportKeyPair = "ImportKeyPair"

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

	if input == nil {
		input = &ImportKeyPairInput{}
	}

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

// ImportKeyPair API operation for Amazon Lightsail.
//
// Imports a public SSH key from a specific key pair.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation ImportKeyPair for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/ImportKeyPair
func (c *Lightsail) ImportKeyPair(input *ImportKeyPairInput) (*ImportKeyPairOutput, error) {
	req, out := c.ImportKeyPairRequest(input)
	return out, req.Send()
}

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

const opIsVpcPeered = "IsVpcPeered"

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

	if input == nil {
		input = &IsVpcPeeredInput{}
	}

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

// IsVpcPeered API operation for Amazon Lightsail.
//
// Returns a Boolean value indicating whether your Lightsail VPC is peered.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation IsVpcPeered for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/IsVpcPeered
func (c *Lightsail) IsVpcPeered(input *IsVpcPeeredInput) (*IsVpcPeeredOutput, error) {
	req, out := c.IsVpcPeeredRequest(input)
	return out, req.Send()
}

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

const opOpenInstancePublicPorts = "OpenInstancePublicPorts"

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

	if input == nil {
		input = &OpenInstancePublicPortsInput{}
	}

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

// OpenInstancePublicPorts API operation for Amazon Lightsail.
//
// Opens ports for a specific Amazon Lightsail instance, and specifies the IP
// addresses allowed to connect to the instance through the ports, and the protocol.
//
// The OpenInstancePublicPorts action supports tag-based access control via
// resource tags applied to the resource identified by instanceName. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation OpenInstancePublicPorts for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/OpenInstancePublicPorts
func (c *Lightsail) OpenInstancePublicPorts(input *OpenInstancePublicPortsInput) (*OpenInstancePublicPortsOutput, error) {
	req, out := c.OpenInstancePublicPortsRequest(input)
	return out, req.Send()
}

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

const opPeerVpc = "PeerVpc"

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

	if input == nil {
		input = &PeerVpcInput{}
	}

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

// PeerVpc API operation for Amazon Lightsail.
//
// Peers the Lightsail VPC with the user's default VPC.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation PeerVpc for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/PeerVpc
func (c *Lightsail) PeerVpc(input *PeerVpcInput) (*PeerVpcOutput, error) {
	req, out := c.PeerVpcRequest(input)
	return out, req.Send()
}

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

const opPutAlarm = "PutAlarm"

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

	if input == nil {
		input = &PutAlarmInput{}
	}

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

// PutAlarm API operation for Amazon Lightsail.
//
// Creates or updates an alarm, and associates it with the specified metric.
//
// An alarm is used to monitor a single metric for one of your resources. When
// a metric condition is met, the alarm can notify you by email, SMS text message,
// and a banner displayed on the Amazon Lightsail console. For more information,
// see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
//
// When this action creates an alarm, the alarm state is immediately set to
// INSUFFICIENT_DATA. The alarm is then evaluated and its state is set appropriately.
// Any actions associated with the new state are then executed.
//
// When you update an existing alarm, its state is left unchanged, but the update
// completely overwrites the previous configuration of the alarm. The alarm
// is then evaluated with the updated configuration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation PutAlarm for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/PutAlarm
func (c *Lightsail) PutAlarm(input *PutAlarmInput) (*PutAlarmOutput, error) {
	req, out := c.PutAlarmRequest(input)
	return out, req.Send()
}

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

const opPutInstancePublicPorts = "PutInstancePublicPorts"

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

	if input == nil {
		input = &PutInstancePublicPortsInput{}
	}

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

// PutInstancePublicPorts API operation for Amazon Lightsail.
//
// Opens ports for a specific Amazon Lightsail instance, and specifies the IP
// addresses allowed to connect to the instance through the ports, and the protocol.
// This action also closes all currently open ports that are not included in
// the request. Include all of the ports and the protocols you want to open
// in your PutInstancePublicPortsrequest. Or use the OpenInstancePublicPorts
// action to open ports without closing currently open ports.
//
// The PutInstancePublicPorts action supports tag-based access control via resource
// tags applied to the resource identified by instanceName. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation PutInstancePublicPorts for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/PutInstancePublicPorts
func (c *Lightsail) PutInstancePublicPorts(input *PutInstancePublicPortsInput) (*PutInstancePublicPortsOutput, error) {
	req, out := c.PutInstancePublicPortsRequest(input)
	return out, req.Send()
}

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

const opRebootInstance = "RebootInstance"

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

	if input == nil {
		input = &RebootInstanceInput{}
	}

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

// RebootInstance API operation for Amazon Lightsail.
//
// Restarts a specific instance.
//
// The reboot instance operation supports tag-based access control via resource
// tags applied to the resource identified by instance name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation RebootInstance for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/RebootInstance
func (c *Lightsail) RebootInstance(input *RebootInstanceInput) (*RebootInstanceOutput, error) {
	req, out := c.RebootInstanceRequest(input)
	return out, req.Send()
}

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

const opRebootRelationalDatabase = "RebootRelationalDatabase"

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

	if input == nil {
		input = &RebootRelationalDatabaseInput{}
	}

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

// RebootRelationalDatabase API operation for Amazon Lightsail.
//
// Restarts a specific database in Amazon Lightsail.
//
// The reboot relational database operation supports tag-based access control
// via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation RebootRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/RebootRelationalDatabase
func (c *Lightsail) RebootRelationalDatabase(input *RebootRelationalDatabaseInput) (*RebootRelationalDatabaseOutput, error) {
	req, out := c.RebootRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opRegisterContainerImage = "RegisterContainerImage"

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

	if input == nil {
		input = &RegisterContainerImageInput{}
	}

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

// RegisterContainerImage API operation for Amazon Lightsail.
//
// Registers a container image to your Amazon Lightsail container service.
//
// This action is not required if you install and use the Lightsail Control
// (lightsailctl) plugin to push container images to your Lightsail container
// service. For more information, see Pushing and managing container images
// on your Amazon Lightsail container services (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-pushing-container-images)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation RegisterContainerImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/RegisterContainerImage
func (c *Lightsail) RegisterContainerImage(input *RegisterContainerImageInput) (*RegisterContainerImageOutput, error) {
	req, out := c.RegisterContainerImageRequest(input)
	return out, req.Send()
}

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

const opReleaseStaticIp = "ReleaseStaticIp"

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

	if input == nil {
		input = &ReleaseStaticIpInput{}
	}

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

// ReleaseStaticIp API operation for Amazon Lightsail.
//
// Deletes a specific static IP from your account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation ReleaseStaticIp for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/ReleaseStaticIp
func (c *Lightsail) ReleaseStaticIp(input *ReleaseStaticIpInput) (*ReleaseStaticIpOutput, error) {
	req, out := c.ReleaseStaticIpRequest(input)
	return out, req.Send()
}

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

const opResetDistributionCache = "ResetDistributionCache"

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

	if input == nil {
		input = &ResetDistributionCacheInput{}
	}

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

// ResetDistributionCache API operation for Amazon Lightsail.
//
// Deletes currently cached content from your Amazon Lightsail content delivery
// network (CDN) distribution.
//
// After resetting the cache, the next time a content request is made, your
// distribution pulls, serves, and caches it from the origin.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation ResetDistributionCache for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/ResetDistributionCache
func (c *Lightsail) ResetDistributionCache(input *ResetDistributionCacheInput) (*ResetDistributionCacheOutput, error) {
	req, out := c.ResetDistributionCacheRequest(input)
	return out, req.Send()
}

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

const opSendContactMethodVerification = "SendContactMethodVerification"

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

	if input == nil {
		input = &SendContactMethodVerificationInput{}
	}

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

// SendContactMethodVerification API operation for Amazon Lightsail.
//
// Sends a verification request to an email contact method to ensure it's owned
// by the requester. SMS contact methods don't need to be verified.
//
// A contact method is used to send you notifications about your Amazon Lightsail
// resources. You can add one email address and one mobile phone number contact
// method in each Amazon Web Services Region. However, SMS text messaging is
// not supported in some Amazon Web Services Regions, and SMS text messages
// cannot be sent to some countries/regions. For more information, see Notifications
// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
//
// A verification request is sent to the contact method when you initially create
// it. Use this action to send another verification request if a previous verification
// request was deleted, or has expired.
//
// Notifications are not sent to an email contact method until after it is verified,
// and confirmed as valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation SendContactMethodVerification for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/SendContactMethodVerification
func (c *Lightsail) SendContactMethodVerification(input *SendContactMethodVerificationInput) (*SendContactMethodVerificationOutput, error) {
	req, out := c.SendContactMethodVerificationRequest(input)
	return out, req.Send()
}

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

const opSetIpAddressType = "SetIpAddressType"

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

	if input == nil {
		input = &SetIpAddressTypeInput{}
	}

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

// SetIpAddressType API operation for Amazon Lightsail.
//
// Sets the IP address type for an Amazon Lightsail resource.
//
// Use this action to enable dual-stack for a resource, which enables IPv4 and
// IPv6 for the specified resource. Alternately, you can use this action to
// disable dual-stack, and enable IPv4 only.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation SetIpAddressType for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/SetIpAddressType
func (c *Lightsail) SetIpAddressType(input *SetIpAddressTypeInput) (*SetIpAddressTypeOutput, error) {
	req, out := c.SetIpAddressTypeRequest(input)
	return out, req.Send()
}

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

const opSetResourceAccessForBucket = "SetResourceAccessForBucket"

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

	if input == nil {
		input = &SetResourceAccessForBucketInput{}
	}

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

// SetResourceAccessForBucket API operation for Amazon Lightsail.
//
// Sets the Amazon Lightsail resources that can access the specified Lightsail
// bucket.
//
// Lightsail buckets currently support setting access for Lightsail instances
// in the same Amazon Web Services Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation SetResourceAccessForBucket for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/SetResourceAccessForBucket
func (c *Lightsail) SetResourceAccessForBucket(input *SetResourceAccessForBucketInput) (*SetResourceAccessForBucketOutput, error) {
	req, out := c.SetResourceAccessForBucketRequest(input)
	return out, req.Send()
}

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

const opSetupInstanceHttps = "SetupInstanceHttps"

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

	if input == nil {
		input = &SetupInstanceHttpsInput{}
	}

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

// SetupInstanceHttps API operation for Amazon Lightsail.
//
// Creates an SSL/TLS certificate that secures traffic for your website. After
// the certificate is created, it is installed on the specified Lightsail instance.
//
// If you provide more than one domain name in the request, at least one name
// must be less than or equal to 63 characters in length.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation SetupInstanceHttps for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/SetupInstanceHttps
func (c *Lightsail) SetupInstanceHttps(input *SetupInstanceHttpsInput) (*SetupInstanceHttpsOutput, error) {
	req, out := c.SetupInstanceHttpsRequest(input)
	return out, req.Send()
}

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

const opStartGUISession = "StartGUISession"

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

	if input == nil {
		input = &StartGUISessionInput{}
	}

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

// StartGUISession API operation for Amazon Lightsail.
//
// Initiates a graphical user interface (GUI) session that’s used to access
// a virtual computer’s operating system and application. The session will
// be active for 1 hour. Use this action to resume the session after it expires.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StartGUISession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StartGUISession
func (c *Lightsail) StartGUISession(input *StartGUISessionInput) (*StartGUISessionOutput, error) {
	req, out := c.StartGUISessionRequest(input)
	return out, req.Send()
}

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

const opStartInstance = "StartInstance"

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

	if input == nil {
		input = &StartInstanceInput{}
	}

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

// StartInstance API operation for Amazon Lightsail.
//
// Starts a specific Amazon Lightsail instance from a stopped state. To restart
// an instance, use the reboot instance operation.
//
// When you start a stopped instance, Lightsail assigns a new public IP address
// to the instance. To use the same IP address after stopping and starting an
// instance, create a static IP address and attach it to the instance. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-create-static-ip).
//
// The start instance operation supports tag-based access control via resource
// tags applied to the resource identified by instance name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StartInstance for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StartInstance
func (c *Lightsail) StartInstance(input *StartInstanceInput) (*StartInstanceOutput, error) {
	req, out := c.StartInstanceRequest(input)
	return out, req.Send()
}

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

const opStartRelationalDatabase = "StartRelationalDatabase"

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

	if input == nil {
		input = &StartRelationalDatabaseInput{}
	}

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

// StartRelationalDatabase API operation for Amazon Lightsail.
//
// Starts a specific database from a stopped state in Amazon Lightsail. To restart
// a database, use the reboot relational database operation.
//
// The start relational database operation supports tag-based access control
// via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StartRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StartRelationalDatabase
func (c *Lightsail) StartRelationalDatabase(input *StartRelationalDatabaseInput) (*StartRelationalDatabaseOutput, error) {
	req, out := c.StartRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opStopGUISession = "StopGUISession"

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

	if input == nil {
		input = &StopGUISessionInput{}
	}

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

// StopGUISession API operation for Amazon Lightsail.
//
// Terminates a web-based NICE DCV session that’s used to access a virtual
// computer’s operating system or application. The session will close and
// any unsaved data will be lost.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StopGUISession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StopGUISession
func (c *Lightsail) StopGUISession(input *StopGUISessionInput) (*StopGUISessionOutput, error) {
	req, out := c.StopGUISessionRequest(input)
	return out, req.Send()
}

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

const opStopInstance = "StopInstance"

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

	if input == nil {
		input = &StopInstanceInput{}
	}

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

// StopInstance API operation for Amazon Lightsail.
//
// Stops a specific Amazon Lightsail instance that is currently running.
//
// When you start a stopped instance, Lightsail assigns a new public IP address
// to the instance. To use the same IP address after stopping and starting an
// instance, create a static IP address and attach it to the instance. For more
// information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-create-static-ip).
//
// The stop instance operation supports tag-based access control via resource
// tags applied to the resource identified by instance name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StopInstance for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StopInstance
func (c *Lightsail) StopInstance(input *StopInstanceInput) (*StopInstanceOutput, error) {
	req, out := c.StopInstanceRequest(input)
	return out, req.Send()
}

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

const opStopRelationalDatabase = "StopRelationalDatabase"

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

	if input == nil {
		input = &StopRelationalDatabaseInput{}
	}

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

// StopRelationalDatabase API operation for Amazon Lightsail.
//
// Stops a specific database that is currently running in Amazon Lightsail.
//
// The stop relational database operation supports tag-based access control
// via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation StopRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/StopRelationalDatabase
func (c *Lightsail) StopRelationalDatabase(input *StopRelationalDatabaseInput) (*StopRelationalDatabaseOutput, error) {
	req, out := c.StopRelationalDatabaseRequest(input)
	return out, req.Send()
}

// StopRelationalDatabaseWithContext is the same as StopRelationalDatabase with the addition of
// the ability to pass a context and additional request options.
//
// See StopRelationalDatabase for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Lightsail) StopRelationalDatabaseWithContext(ctx aws.Context, input *StopRelationalDatabaseInput, opts ...request.Option) (*StopRelationalDatabaseOutput, error) {
	req, out := c.StopRelationalDatabaseRequest(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/lightsail-2016-11-28/TagResource
func (c *Lightsail) 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)
	return
}

// TagResource API operation for Amazon Lightsail.
//
// Adds one or more tags to the specified Amazon Lightsail resource. Each resource
// can have a maximum of 50 tags. Each tag consists of a key and an optional
// value. Tag keys must be unique per resource. For more information about tags,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
//
// The tag resource operation supports tag-based access control via request
// tags and resource tags applied to the resource identified by resource name.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/TagResource
func (c *Lightsail) 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 *Lightsail) 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 opTestAlarm = "TestAlarm"

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

	if input == nil {
		input = &TestAlarmInput{}
	}

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

// TestAlarm API operation for Amazon Lightsail.
//
// Tests an alarm by displaying a banner on the Amazon Lightsail console. If
// a notification trigger is configured for the specified alarm, the test also
// sends a notification to the notification protocol (Email and/or SMS) configured
// for the alarm.
//
// An alarm is used to monitor a single metric for one of your resources. When
// a metric condition is met, the alarm can notify you by email, SMS text message,
// and a banner displayed on the Amazon Lightsail console. For more information,
// see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation TestAlarm for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/TestAlarm
func (c *Lightsail) TestAlarm(input *TestAlarmInput) (*TestAlarmOutput, error) {
	req, out := c.TestAlarmRequest(input)
	return out, req.Send()
}

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

const opUnpeerVpc = "UnpeerVpc"

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

	if input == nil {
		input = &UnpeerVpcInput{}
	}

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

// UnpeerVpc API operation for Amazon Lightsail.
//
// Unpeers the Lightsail VPC from the user's default VPC.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UnpeerVpc for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UnpeerVpc
func (c *Lightsail) UnpeerVpc(input *UnpeerVpcInput) (*UnpeerVpcOutput, error) {
	req, out := c.UnpeerVpcRequest(input)
	return out, req.Send()
}

// UnpeerVpcWithContext is the same as UnpeerVpc with the addition of
// the ability to pass a context and additional request options.
//
// See UnpeerVpc for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Lightsail) UnpeerVpcWithContext(ctx aws.Context, input *UnpeerVpcInput, opts ...request.Option) (*UnpeerVpcOutput, error) {
	req, out := c.UnpeerVpcRequest(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/lightsail-2016-11-28/UntagResource
func (c *Lightsail) 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)
	return
}

// UntagResource API operation for Amazon Lightsail.
//
// Deletes the specified set of tag keys and their values from the specified
// Amazon Lightsail resource.
//
// The untag resource operation supports tag-based access control via request
// tags and resource tags applied to the resource identified by resource name.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UntagResource
func (c *Lightsail) 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 *Lightsail) 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 opUpdateBucket = "UpdateBucket"

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

	if input == nil {
		input = &UpdateBucketInput{}
	}

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

// UpdateBucket API operation for Amazon Lightsail.
//
// Updates an existing Amazon Lightsail bucket.
//
// Use this action to update the configuration of an existing bucket, such as
// versioning, public accessibility, and the Amazon Web Services accounts that
// can access the bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateBucket for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateBucket
func (c *Lightsail) UpdateBucket(input *UpdateBucketInput) (*UpdateBucketOutput, error) {
	req, out := c.UpdateBucketRequest(input)
	return out, req.Send()
}

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

const opUpdateBucketBundle = "UpdateBucketBundle"

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

	if input == nil {
		input = &UpdateBucketBundleInput{}
	}

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

// UpdateBucketBundle API operation for Amazon Lightsail.
//
// Updates the bundle, or storage plan, of an existing Amazon Lightsail bucket.
//
// A bucket bundle specifies the monthly cost, storage space, and data transfer
// quota for a bucket. You can update a bucket's bundle only one time within
// a monthly Amazon Web Services billing cycle. To determine if you can update
// a bucket's bundle, use the GetBuckets (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBuckets.html)
// action. The ableToUpdateBundle parameter in the response will indicate whether
// you can currently update a bucket's bundle.
//
// Update a bucket's bundle if it's consistently going over its storage space
// or data transfer quota, or if a bucket's usage is consistently in the lower
// range of its storage space or data transfer quota. Due to the unpredictable
// usage fluctuations that a bucket might experience, we strongly recommend
// that you update a bucket's bundle only as a long-term strategy, instead of
// as a short-term, monthly cost-cutting measure. Choose a bucket bundle that
// will provide the bucket with ample storage space and data transfer for a
// long time to come.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateBucketBundle for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - ServiceException
//     A general service exception.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateBucketBundle
func (c *Lightsail) UpdateBucketBundle(input *UpdateBucketBundleInput) (*UpdateBucketBundleOutput, error) {
	req, out := c.UpdateBucketBundleRequest(input)
	return out, req.Send()
}

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

const opUpdateContainerService = "UpdateContainerService"

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

	if input == nil {
		input = &UpdateContainerServiceInput{}
	}

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

// UpdateContainerService API operation for Amazon Lightsail.
//
// Updates the configuration of your Amazon Lightsail container service, such
// as its power, scale, and public domain names.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateContainerService for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateContainerService
func (c *Lightsail) UpdateContainerService(input *UpdateContainerServiceInput) (*UpdateContainerServiceOutput, error) {
	req, out := c.UpdateContainerServiceRequest(input)
	return out, req.Send()
}

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

const opUpdateDistribution = "UpdateDistribution"

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

	if input == nil {
		input = &UpdateDistributionInput{}
	}

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

// UpdateDistribution API operation for Amazon Lightsail.
//
// Updates an existing Amazon Lightsail content delivery network (CDN) distribution.
//
// Use this action to update the configuration of your existing distribution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateDistribution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateDistribution
func (c *Lightsail) UpdateDistribution(input *UpdateDistributionInput) (*UpdateDistributionOutput, error) {
	req, out := c.UpdateDistributionRequest(input)
	return out, req.Send()
}

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

const opUpdateDistributionBundle = "UpdateDistributionBundle"

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

	if input == nil {
		input = &UpdateDistributionBundleInput{}
	}

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

// UpdateDistributionBundle API operation for Amazon Lightsail.
//
// Updates the bundle of your Amazon Lightsail content delivery network (CDN)
// distribution.
//
// A distribution bundle specifies the monthly network transfer quota and monthly
// cost of your distribution.
//
// Update your distribution's bundle if your distribution is going over its
// monthly network transfer quota and is incurring an overage fee.
//
// You can update your distribution's bundle only one time within your monthly
// Amazon Web Services billing cycle. To determine if you can update your distribution's
// bundle, use the GetDistributions action. The ableToUpdateBundle parameter
// in the result will indicate whether you can currently update your distribution's
// bundle.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateDistributionBundle for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateDistributionBundle
func (c *Lightsail) UpdateDistributionBundle(input *UpdateDistributionBundleInput) (*UpdateDistributionBundleOutput, error) {
	req, out := c.UpdateDistributionBundleRequest(input)
	return out, req.Send()
}

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

const opUpdateDomainEntry = "UpdateDomainEntry"

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

	if input == nil {
		input = &UpdateDomainEntryInput{}
	}

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

// UpdateDomainEntry API operation for Amazon Lightsail.
//
// Updates a domain recordset after it is created.
//
// The update domain entry operation supports tag-based access control via resource
// tags applied to the resource identified by domain name. For more information,
// see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateDomainEntry for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateDomainEntry
func (c *Lightsail) UpdateDomainEntry(input *UpdateDomainEntryInput) (*UpdateDomainEntryOutput, error) {
	req, out := c.UpdateDomainEntryRequest(input)
	return out, req.Send()
}

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

const opUpdateInstanceMetadataOptions = "UpdateInstanceMetadataOptions"

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

	if input == nil {
		input = &UpdateInstanceMetadataOptionsInput{}
	}

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

// UpdateInstanceMetadataOptions API operation for Amazon Lightsail.
//
// Modifies the Amazon Lightsail instance metadata parameters on a running or
// stopped instance. When you modify the parameters on a running instance, the
// GetInstance or GetInstances API operation initially responds with a state
// of pending. After the parameter modifications are successfully applied, the
// state changes to applied in subsequent GetInstance or GetInstances API calls.
// For more information, see Use IMDSv2 with an Amazon Lightsail instance (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-instance-metadata-service)
// in the Amazon Lightsail Developer Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateInstanceMetadataOptions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateInstanceMetadataOptions
func (c *Lightsail) UpdateInstanceMetadataOptions(input *UpdateInstanceMetadataOptionsInput) (*UpdateInstanceMetadataOptionsOutput, error) {
	req, out := c.UpdateInstanceMetadataOptionsRequest(input)
	return out, req.Send()
}

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

const opUpdateLoadBalancerAttribute = "UpdateLoadBalancerAttribute"

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

	if input == nil {
		input = &UpdateLoadBalancerAttributeInput{}
	}

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

// UpdateLoadBalancerAttribute API operation for Amazon Lightsail.
//
// Updates the specified attribute for a load balancer. You can only update
// one attribute at a time.
//
// The update load balancer attribute operation supports tag-based access control
// via resource tags applied to the resource identified by load balancer name.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateLoadBalancerAttribute for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateLoadBalancerAttribute
func (c *Lightsail) UpdateLoadBalancerAttribute(input *UpdateLoadBalancerAttributeInput) (*UpdateLoadBalancerAttributeOutput, error) {
	req, out := c.UpdateLoadBalancerAttributeRequest(input)
	return out, req.Send()
}

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

const opUpdateRelationalDatabase = "UpdateRelationalDatabase"

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

	if input == nil {
		input = &UpdateRelationalDatabaseInput{}
	}

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

// UpdateRelationalDatabase API operation for Amazon Lightsail.
//
// Allows the update of one or more attributes of a database in Amazon Lightsail.
//
// Updates are applied immediately, or in cases where the updates could result
// in an outage, are applied during the database's predefined maintenance window.
//
// The update relational database operation supports tag-based access control
// via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateRelationalDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateRelationalDatabase
func (c *Lightsail) UpdateRelationalDatabase(input *UpdateRelationalDatabaseInput) (*UpdateRelationalDatabaseOutput, error) {
	req, out := c.UpdateRelationalDatabaseRequest(input)
	return out, req.Send()
}

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

const opUpdateRelationalDatabaseParameters = "UpdateRelationalDatabaseParameters"

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

	if input == nil {
		input = &UpdateRelationalDatabaseParametersInput{}
	}

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

// UpdateRelationalDatabaseParameters API operation for Amazon Lightsail.
//
// Allows the update of one or more parameters of a database in Amazon Lightsail.
//
// Parameter updates don't cause outages; therefore, their application is not
// subject to the preferred maintenance window. However, there are two ways
// in which parameter updates are applied: dynamic or pending-reboot. Parameters
// marked with a dynamic apply type are applied immediately. Parameters marked
// with a pending-reboot apply type are applied only after the database is rebooted
// using the reboot relational database operation.
//
// The update relational database parameters operation supports tag-based access
// control via resource tags applied to the resource identified by relationalDatabaseName.
// For more information, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-controlling-access-using-tags).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Lightsail's
// API operation UpdateRelationalDatabaseParameters for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     A general service exception.
//
//   - InvalidInputException
//     Lightsail throws this exception when user input does not conform to the validation
//     rules of an input field.
//
//     Domain and distribution APIs are only available in the N. Virginia (us-east-1)
//     Amazon Web Services Region. Please set your Amazon Web Services Region configuration
//     to us-east-1 to create, view, or edit these resources.
//
//   - NotFoundException
//     Lightsail throws this exception when it cannot find a resource.
//
//   - OperationFailureException
//     Lightsail throws this exception when an operation fails to execute.
//
//   - AccessDeniedException
//     Lightsail throws this exception when the user cannot be authenticated or
//     uses invalid credentials to access a resource.
//
//   - AccountSetupInProgressException
//     Lightsail throws this exception when an account is still in the setup in
//     progress state.
//
//   - UnauthenticatedException
//     Lightsail throws this exception when the user has not been authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/lightsail-2016-11-28/UpdateRelationalDatabaseParameters
func (c *Lightsail) UpdateRelationalDatabaseParameters(input *UpdateRelationalDatabaseParametersInput) (*UpdateRelationalDatabaseParametersOutput, error) {
	req, out := c.UpdateRelationalDatabaseParametersRequest(input)
	return out, req.Send()
}

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

// Lightsail throws this exception when the user cannot be authenticated or
// uses invalid credentials to access a resource.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

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

	Tip *string `locationName:"tip" type:"string"`
}

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

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

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

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

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

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

func (s *AccessDeniedException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

// Describes an access key for an Amazon Lightsail bucket.
//
// Access keys grant full programmatic access to the specified bucket and its
// objects. You can have a maximum of two access keys per bucket. Use the CreateBucketAccessKey
// (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateBucketAccessKey.html)
// action to create an access key for a specific bucket. For more information
// about access keys, see Creating access keys for a bucket in Amazon Lightsail
// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-creating-bucket-access-keys)
// in the Amazon Lightsail Developer Guide.
//
// The secretAccessKey value is returned only in response to the CreateBucketAccessKey
// action. You can get a secret access key only when you first create an access
// key; you cannot get the secret access key later. If you lose the secret access
// key, you must create a new access key.
type AccessKey struct {
	_ struct{} `type:"structure"`

	// The ID of the access key.
	//
	// AccessKeyId is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AccessKey's
	// String and GoString methods.
	AccessKeyId *string `locationName:"accessKeyId" min:"20" type:"string" sensitive:"true"`

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

	// An object that describes the last time the access key was used.
	//
	// This object does not include data in the response of a CreateBucketAccessKey
	// (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateBucketAccessKey.html)
	// action. If the access key has not been used, the region and serviceName values
	// are N/A, and the lastUsedDate value is null.
	LastUsed *AccessKeyLastUsed `locationName:"lastUsed" type:"structure"`

	// The secret access key used to sign requests.
	//
	// You should store the secret access key in a safe location. We recommend that
	// you delete the access key if the secret access key is compromised.
	SecretAccessKey *string `locationName:"secretAccessKey" type:"string"`

	// The status of the access key.
	//
	// A status of Active means that the key is valid, while Inactive means it is
	// not.
	Status *string `locationName:"status" type:"string" enum:"StatusType"`
}

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

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

// SetAccessKeyId sets the AccessKeyId field's value.
func (s *AccessKey) SetAccessKeyId(v string) *AccessKey {
	s.AccessKeyId = &v
	return s
}

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

// SetLastUsed sets the LastUsed field's value.
func (s *AccessKey) SetLastUsed(v *AccessKeyLastUsed) *AccessKey {
	s.LastUsed = v
	return s
}

// SetSecretAccessKey sets the SecretAccessKey field's value.
func (s *AccessKey) SetSecretAccessKey(v string) *AccessKey {
	s.SecretAccessKey = &v
	return s
}

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

// Describes the last time an access key was used.
//
// This object does not include data in the response of a CreateBucketAccessKey
// (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateBucketAccessKey.html)
// action.
type AccessKeyLastUsed struct {
	_ struct{} `type:"structure"`

	// The date and time when the access key was most recently used.
	//
	// This value is null if the access key has not been used.
	LastUsedDate *time.Time `locationName:"lastUsedDate" type:"timestamp"`

	// The Amazon Web Services Region where this access key was most recently used.
	//
	// This value is N/A if the access key has not been used.
	Region *string `locationName:"region" type:"string"`

	// The name of the Amazon Web Services service with which this access key was
	// most recently used.
	//
	// This value is N/A if the access key has not been used.
	ServiceName *string `locationName:"serviceName" type:"string"`
}

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

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

// SetLastUsedDate sets the LastUsedDate field's value.
func (s *AccessKeyLastUsed) SetLastUsedDate(v time.Time) *AccessKeyLastUsed {
	s.LastUsedDate = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *AccessKeyLastUsed) SetRegion(v string) *AccessKeyLastUsed {
	s.Region = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *AccessKeyLastUsed) SetServiceName(v string) *AccessKeyLastUsed {
	s.ServiceName = &v
	return s
}

// Describes the anonymous access permissions for an Amazon Lightsail bucket
// and its objects.
//
// For more information about bucket access permissions, see Understanding bucket
// permissions in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-understanding-bucket-permissions)
// in the
//
// Amazon Lightsail Developer Guide.
type AccessRules struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether the access control list (ACL) permissions
	// that are applied to individual objects override the getObject option that
	// is currently specified.
	//
	// When this is true, you can use the PutObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)
	// Amazon S3 API action to set individual objects to public (read-only) using
	// the public-read ACL, or to private using the private ACL.
	AllowPublicOverrides *bool `locationName:"allowPublicOverrides" type:"boolean"`

	// Specifies the anonymous access to all objects in a bucket.
	//
	// The following options can be specified:
	//
	//    * public - Sets all objects in the bucket to public (read-only), making
	//    them readable by anyone in the world. If the getObject value is set to
	//    public, then all objects in the bucket default to public regardless of
	//    the allowPublicOverrides value.
	//
	//    * private - Sets all objects in the bucket to private, making them readable
	//    only by you or anyone you give access to. If the getObject value is set
	//    to private, and the allowPublicOverrides value is set to true, then all
	//    objects in the bucket default to private unless they are configured with
	//    a public-read ACL. Individual objects with a public-read ACL are readable
	//    by anyone in the world.
	GetObject *string `locationName:"getObject" type:"string" enum:"AccessType"`
}

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

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

// SetAllowPublicOverrides sets the AllowPublicOverrides field's value.
func (s *AccessRules) SetAllowPublicOverrides(v bool) *AccessRules {
	s.AllowPublicOverrides = &v
	return s
}

// SetGetObject sets the GetObject field's value.
func (s *AccessRules) SetGetObject(v string) *AccessRules {
	s.GetObject = &v
	return s
}

// Describes the synchronization status of the Amazon Simple Storage Service
// (Amazon S3) account-level block public access (BPA) feature for your Lightsail
// buckets.
//
// The account-level BPA feature of Amazon S3 provides centralized controls
// to limit public access to all Amazon S3 buckets in an account. BPA can make
// all Amazon S3 buckets in an Amazon Web Services account private regardless
// of the individual bucket and object permissions that are configured. Lightsail
// buckets take into account the Amazon S3 account-level BPA configuration when
// allowing or denying public access. To do this, Lightsail periodically fetches
// the account-level BPA configuration from Amazon S3. When the account-level
// BPA status is InSync, the Amazon S3 account-level BPA configuration is synchronized
// and it applies to your Lightsail buckets. For more information about Amazon
// Simple Storage Service account-level BPA and how it affects Lightsail buckets,
// see Block public access for buckets in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-block-public-access-for-buckets)
// in the Amazon Lightsail Developer Guide.
type AccountLevelBpaSync struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether account-level block public access
	// is affecting your Lightsail buckets.
	BpaImpactsLightsail *bool `locationName:"bpaImpactsLightsail" type:"boolean"`

	// The timestamp of when the account-level BPA configuration was last synchronized.
	// This value is null when the account-level BPA configuration has not been
	// synchronized.
	LastSyncedAt *time.Time `locationName:"lastSyncedAt" type:"timestamp"`

	// A message that provides a reason for a Failed or Defaulted synchronization
	// status.
	//
	// The following messages are possible:
	//
	//    * SYNC_ON_HOLD - The synchronization has not yet happened. This status
	//    message occurs immediately after you create your first Lightsail bucket.
	//    This status message should change after the first synchronization happens,
	//    approximately 1 hour after the first bucket is created.
	//
	//    * DEFAULTED_FOR_SLR_MISSING - The synchronization failed because the required
	//    service-linked role is missing from your Amazon Web Services account.
	//    The account-level BPA configuration for your Lightsail buckets is defaulted
	//    to active until the synchronization can occur. This means that all your
	//    buckets are private and not publicly accessible. For more information
	//    about how to create the required service-linked role to allow synchronization,
	//    see Using Service-Linked Roles for Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-using-service-linked-roles)
	//    in the Amazon Lightsail Developer Guide.
	//
	//    * DEFAULTED_FOR_SLR_MISSING_ON_HOLD - The synchronization failed because
	//    the required service-linked role is missing from your Amazon Web Services
	//    account. Account-level BPA is not yet configured for your Lightsail buckets.
	//    Therefore, only the bucket access permissions and individual object access
	//    permissions apply to your Lightsail buckets. For more information about
	//    how to create the required service-linked role to allow synchronization,
	//    see Using Service-Linked Roles for Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-using-service-linked-roles)
	//    in the Amazon Lightsail Developer Guide.
	//
	//    * Unknown - The reason that synchronization failed is unknown. Contact
	//    Amazon Web Services Support for more information.
	Message *string `locationName:"message" type:"string" enum:"BPAStatusMessage"`

	// The status of the account-level BPA synchronization.
	//
	// The following statuses are possible:
	//
	//    * InSync - Account-level BPA is synchronized. The Amazon S3 account-level
	//    BPA configuration applies to your Lightsail buckets.
	//
	//    * NeverSynced - Synchronization has not yet happened. The Amazon S3 account-level
	//    BPA configuration does not apply to your Lightsail buckets.
	//
	//    * Failed - Synchronization failed. The Amazon S3 account-level BPA configuration
	//    does not apply to your Lightsail buckets.
	//
	//    * Defaulted - Synchronization failed and account-level BPA for your Lightsail
	//    buckets is defaulted to active.
	//
	// You might need to complete further actions if the status is Failed or Defaulted.
	// The message parameter provides more information for those statuses.
	Status *string `locationName:"status" type:"string" enum:"AccountLevelBpaSyncStatus"`
}

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

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

// SetBpaImpactsLightsail sets the BpaImpactsLightsail field's value.
func (s *AccountLevelBpaSync) SetBpaImpactsLightsail(v bool) *AccountLevelBpaSync {
	s.BpaImpactsLightsail = &v
	return s
}

// SetLastSyncedAt sets the LastSyncedAt field's value.
func (s *AccountLevelBpaSync) SetLastSyncedAt(v time.Time) *AccountLevelBpaSync {
	s.LastSyncedAt = &v
	return s
}

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

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

// Lightsail throws this exception when an account is still in the setup in
// progress state.
type AccountSetupInProgressException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

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

	Tip *string `locationName:"tip" type:"string"`
}

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

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

func newErrorAccountSetupInProgressException(v protocol.ResponseMetadata) error {
	return &AccountSetupInProgressException{
		RespMetadata: v,
	}
}

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

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

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

func (s *AccountSetupInProgressException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

// Describes an add-on that is enabled for an Amazon Lightsail resource.
type AddOn struct {
	_ struct{} `type:"structure"`

	// The amount of idle time in minutes after which your virtual computer will
	// automatically stop.
	//
	// This add-on only applies to Lightsail for Research resources.
	Duration *string `locationName:"duration" type:"string"`

	// The name of the add-on.
	Name *string `locationName:"name" type:"string"`

	// The next daily time an automatic snapshot will be created.
	//
	// The time shown is in HH:00 format, and in Coordinated Universal Time (UTC).
	//
	// The snapshot is automatically created between the time shown and up to 45
	// minutes after.
	NextSnapshotTimeOfDay *string `locationName:"nextSnapshotTimeOfDay" type:"string"`

	// The daily time when an automatic snapshot is created.
	//
	// The time shown is in HH:00 format, and in Coordinated Universal Time (UTC).
	//
	// The snapshot is automatically created between the time shown and up to 45
	// minutes after.
	SnapshotTimeOfDay *string `locationName:"snapshotTimeOfDay" type:"string"`

	// The status of the add-on.
	Status *string `locationName:"status" type:"string"`

	// The trigger threshold of the action.
	//
	// This add-on only applies to Lightsail for Research resources.
	Threshold *string `locationName:"threshold" type:"string"`
}

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

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

// SetDuration sets the Duration field's value.
func (s *AddOn) SetDuration(v string) *AddOn {
	s.Duration = &v
	return s
}

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

// SetNextSnapshotTimeOfDay sets the NextSnapshotTimeOfDay field's value.
func (s *AddOn) SetNextSnapshotTimeOfDay(v string) *AddOn {
	s.NextSnapshotTimeOfDay = &v
	return s
}

// SetSnapshotTimeOfDay sets the SnapshotTimeOfDay field's value.
func (s *AddOn) SetSnapshotTimeOfDay(v string) *AddOn {
	s.SnapshotTimeOfDay = &v
	return s
}

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

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

// Describes a request to enable, modify, or disable an add-on for an Amazon
// Lightsail resource.
//
// An additional cost may be associated with enabling add-ons. For more information,
// see the Lightsail pricing page (https://aws.amazon.com/lightsail/pricing/).
type AddOnRequest struct {
	_ struct{} `type:"structure"`

	// The add-on type.
	//
	// AddOnType is a required field
	AddOnType *string `locationName:"addOnType" type:"string" required:"true" enum:"AddOnType"`

	// An object that represents additional parameters when enabling or modifying
	// the automatic snapshot add-on.
	AutoSnapshotAddOnRequest *AutoSnapshotAddOnRequest `locationName:"autoSnapshotAddOnRequest" type:"structure"`

	// An object that represents additional parameters when enabling or modifying
	// the StopInstanceOnIdle add-on.
	//
	// This object only applies to Lightsail for Research resources.
	StopInstanceOnIdleRequest *StopInstanceOnIdleRequest `locationName:"stopInstanceOnIdleRequest" type:"structure"`
}

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

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

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

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

// SetAddOnType sets the AddOnType field's value.
func (s *AddOnRequest) SetAddOnType(v string) *AddOnRequest {
	s.AddOnType = &v
	return s
}

// SetAutoSnapshotAddOnRequest sets the AutoSnapshotAddOnRequest field's value.
func (s *AddOnRequest) SetAutoSnapshotAddOnRequest(v *AutoSnapshotAddOnRequest) *AddOnRequest {
	s.AutoSnapshotAddOnRequest = v
	return s
}

// SetStopInstanceOnIdleRequest sets the StopInstanceOnIdleRequest field's value.
func (s *AddOnRequest) SetStopInstanceOnIdleRequest(v *StopInstanceOnIdleRequest) *AddOnRequest {
	s.StopInstanceOnIdleRequest = v
	return s
}

// Describes an alarm.
//
// An alarm is a way to monitor your Lightsail resource metrics. For more information,
// see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
type Alarm struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the alarm.
	Arn *string `locationName:"arn" type:"string"`

	// The arithmetic operation used when comparing the specified statistic and
	// threshold.
	ComparisonOperator *string `locationName:"comparisonOperator" type:"string" enum:"ComparisonOperator"`

	// The contact protocols for the alarm, such as Email, SMS (text messaging),
	// or both.
	ContactProtocols []*string `locationName:"contactProtocols" type:"list" enum:"ContactProtocol"`

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

	// The number of data points that must not within the specified threshold to
	// trigger the alarm.
	DatapointsToAlarm *int64 `locationName:"datapointsToAlarm" type:"integer"`

	// The number of periods over which data is compared to the specified threshold.
	EvaluationPeriods *int64 `locationName:"evaluationPeriods" type:"integer"`

	// An object that lists information about the location of the alarm.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the metric associated with the alarm.
	MetricName *string `locationName:"metricName" type:"string" enum:"MetricName"`

	// An object that lists information about the resource monitored by the alarm.
	MonitoredResourceInfo *MonitoredResourceInfo `locationName:"monitoredResourceInfo" type:"structure"`

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

	// Indicates whether the alarm is enabled.
	NotificationEnabled *bool `locationName:"notificationEnabled" type:"boolean"`

	// The alarm states that trigger a notification.
	NotificationTriggers []*string `locationName:"notificationTriggers" type:"list" enum:"AlarmState"`

	// The period, in seconds, over which the statistic is applied.
	Period *int64 `locationName:"period" min:"60" type:"integer"`

	// The Lightsail resource type of the alarm.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The current state of the alarm.
	//
	// An alarm has the following possible states:
	//
	//    * ALARM - The metric is outside of the defined threshold.
	//
	//    * INSUFFICIENT_DATA - The alarm has just started, the metric is not available,
	//    or not enough data is available for the metric to determine the alarm
	//    state.
	//
	//    * OK - The metric is within the defined threshold.
	State *string `locationName:"state" type:"string" enum:"AlarmState"`

	// The statistic for the metric associated with the alarm.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	Statistic *string `locationName:"statistic" type:"string" enum:"MetricStatistic"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail alarm. This code enables our support team
	// to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The value against which the specified statistic is compared.
	Threshold *float64 `locationName:"threshold" type:"double"`

	// Specifies how the alarm handles missing data points.
	//
	// An alarm can treat missing data in the following ways:
	//
	//    * breaching - Assume the missing data is not within the threshold. Missing
	//    data counts towards the number of times the metric is not within the threshold.
	//
	//    * notBreaching - Assume the missing data is within the threshold. Missing
	//    data does not count towards the number of times the metric is not within
	//    the threshold.
	//
	//    * ignore - Ignore the missing data. Maintains the current alarm state.
	//
	//    * missing - Missing data is treated as missing.
	TreatMissingData *string `locationName:"treatMissingData" type:"string" enum:"TreatMissingData"`

	// The unit of the metric associated with the alarm.
	Unit *string `locationName:"unit" type:"string" enum:"MetricUnit"`
}

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

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

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

// SetComparisonOperator sets the ComparisonOperator field's value.
func (s *Alarm) SetComparisonOperator(v string) *Alarm {
	s.ComparisonOperator = &v
	return s
}

// SetContactProtocols sets the ContactProtocols field's value.
func (s *Alarm) SetContactProtocols(v []*string) *Alarm {
	s.ContactProtocols = v
	return s
}

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

// SetDatapointsToAlarm sets the DatapointsToAlarm field's value.
func (s *Alarm) SetDatapointsToAlarm(v int64) *Alarm {
	s.DatapointsToAlarm = &v
	return s
}

// SetEvaluationPeriods sets the EvaluationPeriods field's value.
func (s *Alarm) SetEvaluationPeriods(v int64) *Alarm {
	s.EvaluationPeriods = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *Alarm) SetLocation(v *ResourceLocation) *Alarm {
	s.Location = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *Alarm) SetMetricName(v string) *Alarm {
	s.MetricName = &v
	return s
}

// SetMonitoredResourceInfo sets the MonitoredResourceInfo field's value.
func (s *Alarm) SetMonitoredResourceInfo(v *MonitoredResourceInfo) *Alarm {
	s.MonitoredResourceInfo = v
	return s
}

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

// SetNotificationEnabled sets the NotificationEnabled field's value.
func (s *Alarm) SetNotificationEnabled(v bool) *Alarm {
	s.NotificationEnabled = &v
	return s
}

// SetNotificationTriggers sets the NotificationTriggers field's value.
func (s *Alarm) SetNotificationTriggers(v []*string) *Alarm {
	s.NotificationTriggers = v
	return s
}

// SetPeriod sets the Period field's value.
func (s *Alarm) SetPeriod(v int64) *Alarm {
	s.Period = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Alarm) SetResourceType(v string) *Alarm {
	s.ResourceType = &v
	return s
}

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

// SetStatistic sets the Statistic field's value.
func (s *Alarm) SetStatistic(v string) *Alarm {
	s.Statistic = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Alarm) SetSupportCode(v string) *Alarm {
	s.SupportCode = &v
	return s
}

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

// SetTreatMissingData sets the TreatMissingData field's value.
func (s *Alarm) SetTreatMissingData(v string) *Alarm {
	s.TreatMissingData = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *Alarm) SetUnit(v string) *Alarm {
	s.Unit = &v
	return s
}

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

	// The name of the static IP address.
	//
	// StaticIpName is a required field
	StaticIpName *string `locationName:"staticIpName" type:"string" required:"true"`
}

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

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

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

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

// SetStaticIpName sets the StaticIpName field's value.
func (s *AllocateStaticIpInput) SetStaticIpName(v string) *AllocateStaticIpInput {
	s.StaticIpName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 AllocateStaticIpOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *AllocateStaticIpOutput) SetOperations(v []*Operation) *AllocateStaticIpOutput {
	s.Operations = v
	return s
}

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

	// The name of the certificate to attach to a distribution.
	//
	// Only certificates with a status of ISSUED can be attached to a distribution.
	//
	// Use the GetCertificates action to get a list of certificate names that you
	// can specify.
	//
	// This is the name of the certificate resource type and is used only to reference
	// the certificate in other API actions. It can be different than the domain
	// name of the certificate. For example, your certificate name might be WordPress-Blog-Certificate
	// and the domain name of the certificate might be example.com.
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`

	// The name of the distribution that the certificate will be attached to.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	//
	// DistributionName is a required field
	DistributionName *string `locationName:"distributionName" type:"string" required:"true"`
}

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

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

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

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

// SetCertificateName sets the CertificateName field's value.
func (s *AttachCertificateToDistributionInput) SetCertificateName(v string) *AttachCertificateToDistributionInput {
	s.CertificateName = &v
	return s
}

// SetDistributionName sets the DistributionName field's value.
func (s *AttachCertificateToDistributionInput) SetDistributionName(v string) *AttachCertificateToDistributionInput {
	s.DistributionName = &v
	return s
}

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

	// An object that describes the result of the action, such as the status of
	// the request, the timestamp of the request, and the resources affected by
	// the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

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

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

// SetOperation sets the Operation field's value.
func (s *AttachCertificateToDistributionOutput) SetOperation(v *Operation) *AttachCertificateToDistributionOutput {
	s.Operation = v
	return s
}

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

	// A Boolean value used to determine the automatic mounting of a storage volume
	// to a virtual computer. The default value is False.
	//
	// This value only applies to Lightsail for Research resources.
	AutoMounting *bool `locationName:"autoMounting" type:"boolean"`

	// The unique Lightsail disk name (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`

	// The disk path to expose to the instance (/dev/xvdf).
	//
	// DiskPath is a required field
	DiskPath *string `locationName:"diskPath" type:"string" required:"true"`

	// The name of the Lightsail instance where you want to utilize the storage
	// disk.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

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

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

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

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

// SetAutoMounting sets the AutoMounting field's value.
func (s *AttachDiskInput) SetAutoMounting(v bool) *AttachDiskInput {
	s.AutoMounting = &v
	return s
}

// SetDiskName sets the DiskName field's value.
func (s *AttachDiskInput) SetDiskName(v string) *AttachDiskInput {
	s.DiskName = &v
	return s
}

// SetDiskPath sets the DiskPath field's value.
func (s *AttachDiskInput) SetDiskPath(v string) *AttachDiskInput {
	s.DiskPath = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *AttachDiskInput) SetInstanceName(v string) *AttachDiskInput {
	s.InstanceName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 AttachDiskOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *AttachDiskOutput) SetOperations(v []*Operation) *AttachDiskOutput {
	s.Operations = v
	return s
}

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

	// An array of strings representing the instance name(s) you want to attach
	// to your load balancer.
	//
	// An instance must be running before you can attach it to your load balancer.
	//
	// There are no additional limits on the number of instances you can attach
	// to your load balancer, aside from the limit of Lightsail instances you can
	// create in your account (20).
	//
	// InstanceNames is a required field
	InstanceNames []*string `locationName:"instanceNames" type:"list" required:"true"`

	// The name of the load balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

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

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

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

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

// SetInstanceNames sets the InstanceNames field's value.
func (s *AttachInstancesToLoadBalancerInput) SetInstanceNames(v []*string) *AttachInstancesToLoadBalancerInput {
	s.InstanceNames = v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *AttachInstancesToLoadBalancerInput) SetLoadBalancerName(v string) *AttachInstancesToLoadBalancerInput {
	s.LoadBalancerName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 AttachInstancesToLoadBalancerOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *AttachInstancesToLoadBalancerOutput) SetOperations(v []*Operation) *AttachInstancesToLoadBalancerOutput {
	s.Operations = v
	return s
}

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

	// The name of your SSL/TLS certificate.
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`

	// The name of the load balancer to which you want to associate the SSL/TLS
	// certificate.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

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

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

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

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

// SetCertificateName sets the CertificateName field's value.
func (s *AttachLoadBalancerTlsCertificateInput) SetCertificateName(v string) *AttachLoadBalancerTlsCertificateInput {
	s.CertificateName = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *AttachLoadBalancerTlsCertificateInput) SetLoadBalancerName(v string) *AttachLoadBalancerTlsCertificateInput {
	s.LoadBalancerName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	//
	// These SSL/TLS certificates are only usable by Lightsail load balancers. You
	// can't get the certificate and use it for another purpose.
	Operations []*Operation `locationName:"operations" 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 AttachLoadBalancerTlsCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *AttachLoadBalancerTlsCertificateOutput) SetOperations(v []*Operation) *AttachLoadBalancerTlsCertificateOutput {
	s.Operations = v
	return s
}

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

	// The instance name to which you want to attach the static IP address.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// The name of the static IP.
	//
	// StaticIpName is a required field
	StaticIpName *string `locationName:"staticIpName" type:"string" required:"true"`
}

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

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

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

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

// SetInstanceName sets the InstanceName field's value.
func (s *AttachStaticIpInput) SetInstanceName(v string) *AttachStaticIpInput {
	s.InstanceName = &v
	return s
}

// SetStaticIpName sets the StaticIpName field's value.
func (s *AttachStaticIpInput) SetStaticIpName(v string) *AttachStaticIpInput {
	s.StaticIpName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 AttachStaticIpOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *AttachStaticIpOutput) SetOperations(v []*Operation) *AttachStaticIpOutput {
	s.Operations = v
	return s
}

// Describes a block storage disk that is attached to an instance, and is included
// in an automatic snapshot.
type AttachedDisk struct {
	_ struct{} `type:"structure"`

	// The path of the disk (/dev/xvdf).
	Path *string `locationName:"path" type:"string"`

	// The size of the disk in GB.
	SizeInGb *int64 `locationName:"sizeInGb" 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 AttachedDisk) String() string {
	return awsutil.Prettify(s)
}

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

// SetPath sets the Path field's value.
func (s *AttachedDisk) SetPath(v string) *AttachedDisk {
	s.Path = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *AttachedDisk) SetSizeInGb(v int64) *AttachedDisk {
	s.SizeInGb = &v
	return s
}

// Describes a request to enable or modify the automatic snapshot add-on for
// an Amazon Lightsail instance or disk.
//
// When you modify the automatic snapshot time for a resource, it is typically
// effective immediately except under the following conditions:
//
//   - If an automatic snapshot has been created for the current day, and you
//     change the snapshot time to a later time of day, then the new snapshot
//     time will be effective the following day. This ensures that two snapshots
//     are not created for the current day.
//
//   - If an automatic snapshot has not yet been created for the current day,
//     and you change the snapshot time to an earlier time of day, then the new
//     snapshot time will be effective the following day and a snapshot is automatically
//     created at the previously set time for the current day. This ensures that
//     a snapshot is created for the current day.
//
//   - If an automatic snapshot has not yet been created for the current day,
//     and you change the snapshot time to a time that is within 30 minutes from
//     your current time, then the new snapshot time will be effective the following
//     day and a snapshot is automatically created at the previously set time
//     for the current day. This ensures that a snapshot is created for the current
//     day, because 30 minutes is required between your current time and the
//     new snapshot time that you specify.
//
//   - If an automatic snapshot is scheduled to be created within 30 minutes
//     from your current time and you change the snapshot time, then the new
//     snapshot time will be effective the following day and a snapshot is automatically
//     created at the previously set time for the current day. This ensures that
//     a snapshot is created for the current day, because 30 minutes is required
//     between your current time and the new snapshot time that you specify.
type AutoSnapshotAddOnRequest struct {
	_ struct{} `type:"structure"`

	// The daily time when an automatic snapshot will be created.
	//
	// Constraints:
	//
	//    * Must be in HH:00 format, and in an hourly increment.
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * The snapshot will be automatically created between the time specified
	//    and up to 45 minutes after.
	SnapshotTimeOfDay *string `locationName:"snapshotTimeOfDay" type:"string"`
}

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

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

// SetSnapshotTimeOfDay sets the SnapshotTimeOfDay field's value.
func (s *AutoSnapshotAddOnRequest) SetSnapshotTimeOfDay(v string) *AutoSnapshotAddOnRequest {
	s.SnapshotTimeOfDay = &v
	return s
}

// Describes an automatic snapshot.
type AutoSnapshotDetails struct {
	_ struct{} `type:"structure"`

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

	// The date of the automatic snapshot in YYYY-MM-DD format.
	Date *string `locationName:"date" type:"string"`

	// An array of objects that describe the block storage disks attached to the
	// instance when the automatic snapshot was created.
	FromAttachedDisks []*AttachedDisk `locationName:"fromAttachedDisks" type:"list"`

	// The status of the automatic snapshot.
	Status *string `locationName:"status" type:"string" enum:"AutoSnapshotStatus"`
}

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

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

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

// SetDate sets the Date field's value.
func (s *AutoSnapshotDetails) SetDate(v string) *AutoSnapshotDetails {
	s.Date = &v
	return s
}

// SetFromAttachedDisks sets the FromAttachedDisks field's value.
func (s *AutoSnapshotDetails) SetFromAttachedDisks(v []*AttachedDisk) *AutoSnapshotDetails {
	s.FromAttachedDisks = v
	return s
}

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

// Describes an Availability Zone. This is returned only as part of a GetRegions
// request.
type AvailabilityZone struct {
	_ struct{} `type:"structure"`

	// The state of the Availability Zone.
	State *string `locationName:"state" type:"string"`

	// The name of the Availability Zone. The format is us-east-2a (case-sensitive).
	ZoneName *string `locationName:"zoneName" type:"string"`
}

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

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

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

// SetZoneName sets the ZoneName field's value.
func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone {
	s.ZoneName = &v
	return s
}

// Describes a blueprint (a virtual private server image).
type Blueprint struct {
	_ struct{} `type:"structure"`

	// Virtual computer blueprints that are supported by Lightsail for Research.
	//
	// This parameter only applies to Lightsail for Research resources.
	AppCategory *string `locationName:"appCategory" type:"string" enum:"AppCategory"`

	// The ID for the virtual private server image (app_wordpress_4_4 or app_lamp_7_0).
	BlueprintId *string `locationName:"blueprintId" type:"string"`

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

	// The group name of the blueprint (amazon-linux).
	Group *string `locationName:"group" type:"string"`

	// A Boolean value indicating whether the blueprint is active. Inactive blueprints
	// are listed to support customers with existing instances but are not necessarily
	// available for launch of new instances. Blueprints are marked inactive when
	// they become outdated due to operating system updates or new application releases.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The end-user license agreement URL for the image or blueprint.
	LicenseUrl *string `locationName:"licenseUrl" type:"string"`

	// The minimum bundle power required to run this blueprint. For example, you
	// need a bundle with a power value of 500 or more to create an instance that
	// uses a blueprint with a minimum power value of 500. 0 indicates that the
	// blueprint runs on all instance sizes.
	MinPower *int64 `locationName:"minPower" type:"integer"`

	// The friendly name of the blueprint (Amazon Linux).
	Name *string `locationName:"name" type:"string"`

	// The operating system platform (either Linux/Unix-based or Windows Server-based)
	// of the blueprint.
	Platform *string `locationName:"platform" type:"string" enum:"InstancePlatform"`

	// The product URL to learn more about the image or blueprint.
	ProductUrl *string `locationName:"productUrl" type:"string"`

	// The type of the blueprint (os or app).
	Type *string `locationName:"type" type:"string" enum:"BlueprintType"`

	// The version number of the operating system, application, or stack ( 2016.03.0).
	Version *string `locationName:"version" type:"string"`

	// The version code.
	VersionCode *string `locationName:"versionCode" type:"string"`
}

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

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

// SetAppCategory sets the AppCategory field's value.
func (s *Blueprint) SetAppCategory(v string) *Blueprint {
	s.AppCategory = &v
	return s
}

// SetBlueprintId sets the BlueprintId field's value.
func (s *Blueprint) SetBlueprintId(v string) *Blueprint {
	s.BlueprintId = &v
	return s
}

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

// SetGroup sets the Group field's value.
func (s *Blueprint) SetGroup(v string) *Blueprint {
	s.Group = &v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *Blueprint) SetIsActive(v bool) *Blueprint {
	s.IsActive = &v
	return s
}

// SetLicenseUrl sets the LicenseUrl field's value.
func (s *Blueprint) SetLicenseUrl(v string) *Blueprint {
	s.LicenseUrl = &v
	return s
}

// SetMinPower sets the MinPower field's value.
func (s *Blueprint) SetMinPower(v int64) *Blueprint {
	s.MinPower = &v
	return s
}

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

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

// SetProductUrl sets the ProductUrl field's value.
func (s *Blueprint) SetProductUrl(v string) *Blueprint {
	s.ProductUrl = &v
	return s
}

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

// SetVersion sets the Version field's value.
func (s *Blueprint) SetVersion(v string) *Blueprint {
	s.Version = &v
	return s
}

// SetVersionCode sets the VersionCode field's value.
func (s *Blueprint) SetVersionCode(v string) *Blueprint {
	s.VersionCode = &v
	return s
}

// Describes an Amazon Lightsail bucket.
type Bucket struct {
	_ struct{} `type:"structure"`

	// Indicates whether the bundle that is currently applied to a bucket can be
	// changed to another bundle.
	//
	// You can update a bucket's bundle only one time within a monthly Amazon Web
	// Services billing cycle.
	//
	// Use the UpdateBucketBundle (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html)
	// action to change a bucket's bundle.
	AbleToUpdateBundle *bool `locationName:"ableToUpdateBundle" type:"boolean"`

	// An object that describes the access log configuration for the bucket.
	AccessLogConfig *BucketAccessLogConfig `locationName:"accessLogConfig" type:"structure"`

	// An object that describes the access rules of the bucket.
	AccessRules *AccessRules `locationName:"accessRules" type:"structure"`

	// The Amazon Resource Name (ARN) of the bucket.
	Arn *string `locationName:"arn" type:"string"`

	// The ID of the bundle currently applied to the bucket.
	//
	// A bucket bundle specifies the monthly cost, storage space, and data transfer
	// quota for a bucket.
	//
	// Use the UpdateBucketBundle (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html)
	// action to change the bundle of a bucket.
	BundleId *string `locationName:"bundleId" type:"string"`

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

	// An object that describes the location of the bucket, such as the Amazon Web
	// Services Region and Availability Zone.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the bucket.
	Name *string `locationName:"name" min:"3" type:"string"`

	// Indicates whether object versioning is enabled for the bucket.
	//
	// The following options can be configured:
	//
	//    * Enabled - Object versioning is enabled.
	//
	//    * Suspended - Object versioning was previously enabled but is currently
	//    suspended. Existing object versions are retained.
	//
	//    * NeverEnabled - Object versioning has never been enabled.
	ObjectVersioning *string `locationName:"objectVersioning" type:"string"`

	// An array of strings that specify the Amazon Web Services account IDs that
	// have read-only access to the bucket.
	ReadonlyAccessAccounts []*string `locationName:"readonlyAccessAccounts" type:"list"`

	// The Lightsail resource type of the bucket.
	ResourceType *string `locationName:"resourceType" type:"string"`

	// An array of objects that describe Lightsail instances that have access to
	// the bucket.
	//
	// Use the SetResourceAccessForBucket (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html)
	// action to update the instances that have access to a bucket.
	ResourcesReceivingAccess []*ResourceReceivingAccess `locationName:"resourcesReceivingAccess" type:"list"`

	// An object that describes the state of the bucket.
	State *BucketState `locationName:"state" type:"structure"`

	// The support code for a bucket. Include this code in your email to support
	// when you have questions about a Lightsail bucket. This code enables our support
	// team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the bucket. For more information, see
	// Tags in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-tags)
	// in the Amazon Lightsail Developer Guide.
	Tags []*Tag `locationName:"tags" type:"list"`

	// The URL of the bucket.
	Url *string `locationName:"url" type:"string"`
}

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

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

// SetAbleToUpdateBundle sets the AbleToUpdateBundle field's value.
func (s *Bucket) SetAbleToUpdateBundle(v bool) *Bucket {
	s.AbleToUpdateBundle = &v
	return s
}

// SetAccessLogConfig sets the AccessLogConfig field's value.
func (s *Bucket) SetAccessLogConfig(v *BucketAccessLogConfig) *Bucket {
	s.AccessLogConfig = v
	return s
}

// SetAccessRules sets the AccessRules field's value.
func (s *Bucket) SetAccessRules(v *AccessRules) *Bucket {
	s.AccessRules = v
	return s
}

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

// SetBundleId sets the BundleId field's value.
func (s *Bucket) SetBundleId(v string) *Bucket {
	s.BundleId = &v
	return s
}

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

// SetLocation sets the Location field's value.
func (s *Bucket) SetLocation(v *ResourceLocation) *Bucket {
	s.Location = v
	return s
}

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

// SetObjectVersioning sets the ObjectVersioning field's value.
func (s *Bucket) SetObjectVersioning(v string) *Bucket {
	s.ObjectVersioning = &v
	return s
}

// SetReadonlyAccessAccounts sets the ReadonlyAccessAccounts field's value.
func (s *Bucket) SetReadonlyAccessAccounts(v []*string) *Bucket {
	s.ReadonlyAccessAccounts = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Bucket) SetResourceType(v string) *Bucket {
	s.ResourceType = &v
	return s
}

// SetResourcesReceivingAccess sets the ResourcesReceivingAccess field's value.
func (s *Bucket) SetResourcesReceivingAccess(v []*ResourceReceivingAccess) *Bucket {
	s.ResourcesReceivingAccess = v
	return s
}

// SetState sets the State field's value.
func (s *Bucket) SetState(v *BucketState) *Bucket {
	s.State = v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Bucket) SetSupportCode(v string) *Bucket {
	s.SupportCode = &v
	return s
}

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

// SetUrl sets the Url field's value.
func (s *Bucket) SetUrl(v string) *Bucket {
	s.Url = &v
	return s
}

// Describes the access log configuration for a bucket in the Amazon Lightsail
// object storage service.
//
// For more information about bucket access logs, see Logging bucket requests
// using access logging in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-bucket-access-logs)
// in the Amazon Lightsail Developer Guide.
type BucketAccessLogConfig struct {
	_ struct{} `type:"structure"`

	// The name of the bucket where the access logs are saved. The destination can
	// be a Lightsail bucket in the same account, and in the same Amazon Web Services
	// Region as the source bucket.
	//
	// This parameter is required when enabling the access log for a bucket, and
	// should be omitted when disabling the access log.
	Destination *string `locationName:"destination" min:"3" type:"string"`

	// A Boolean value that indicates whether bucket access logging is enabled for
	// the bucket.
	//
	// Enabled is a required field
	Enabled *bool `locationName:"enabled" type:"boolean" required:"true"`

	// The optional object prefix for the bucket access log.
	//
	// The prefix is an optional addition to the object key that organizes your
	// access log files in the destination bucket. For example, if you specify a
	// logs/ prefix, then each log object will begin with the logs/ prefix in its
	// key (for example, logs/2021-11-01-21-32-16-E568B2907131C0C0).
	//
	// This parameter can be optionally specified when enabling the access log for
	// a bucket, and should be omitted when disabling the access log.
	Prefix *string `locationName:"prefix" 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 BucketAccessLogConfig) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDestination sets the Destination field's value.
func (s *BucketAccessLogConfig) SetDestination(v string) *BucketAccessLogConfig {
	s.Destination = &v
	return s
}

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

// SetPrefix sets the Prefix field's value.
func (s *BucketAccessLogConfig) SetPrefix(v string) *BucketAccessLogConfig {
	s.Prefix = &v
	return s
}

// Describes the specifications of a bundle that can be applied to an Amazon
// Lightsail bucket.
//
// A bucket bundle specifies the monthly cost, storage space, and data transfer
// quota for a bucket.
type BucketBundle struct {
	_ struct{} `type:"structure"`

	// The ID of the bundle.
	BundleId *string `locationName:"bundleId" type:"string"`

	// Indicates whether the bundle is active. Use for a new or existing bucket.
	IsActive *bool `locationName:"isActive" type:"boolean"`

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

	// The monthly price of the bundle, in US dollars.
	Price *float64 `locationName:"price" type:"float"`

	// The storage size of the bundle, in GB.
	StoragePerMonthInGb *int64 `locationName:"storagePerMonthInGb" type:"integer"`

	// The monthly network transfer quota of the bundle.
	TransferPerMonthInGb *int64 `locationName:"transferPerMonthInGb" 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 BucketBundle) String() string {
	return awsutil.Prettify(s)
}

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

// SetBundleId sets the BundleId field's value.
func (s *BucketBundle) SetBundleId(v string) *BucketBundle {
	s.BundleId = &v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *BucketBundle) SetIsActive(v bool) *BucketBundle {
	s.IsActive = &v
	return s
}

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

// SetPrice sets the Price field's value.
func (s *BucketBundle) SetPrice(v float64) *BucketBundle {
	s.Price = &v
	return s
}

// SetStoragePerMonthInGb sets the StoragePerMonthInGb field's value.
func (s *BucketBundle) SetStoragePerMonthInGb(v int64) *BucketBundle {
	s.StoragePerMonthInGb = &v
	return s
}

// SetTransferPerMonthInGb sets the TransferPerMonthInGb field's value.
func (s *BucketBundle) SetTransferPerMonthInGb(v int64) *BucketBundle {
	s.TransferPerMonthInGb = &v
	return s
}

// Describes the state of an Amazon Lightsail bucket.
type BucketState struct {
	_ struct{} `type:"structure"`

	// The state code of the bucket.
	//
	// The following codes are possible:
	//
	//    * OK - The bucket is in a running state.
	//
	//    * Unknown - Creation of the bucket might have timed-out. You might want
	//    to delete the bucket and create a new one.
	Code *string `locationName:"code" type:"string"`

	// A message that describes the state of the bucket.
	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 BucketState) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// Describes a bundle, which is a set of specs describing your virtual private
// server (or instance).
type Bundle struct {
	_ struct{} `type:"structure"`

	// The bundle ID (micro_1_0).
	BundleId *string `locationName:"bundleId" type:"string"`

	// The number of vCPUs included in the bundle (2).
	CpuCount *int64 `locationName:"cpuCount" type:"integer"`

	// The size of the SSD (30).
	DiskSizeInGb *int64 `locationName:"diskSizeInGb" type:"integer"`

	// The Amazon EC2 instance type (t2.micro).
	InstanceType *string `locationName:"instanceType" type:"string"`

	// A Boolean value indicating whether the bundle is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// A friendly name for the bundle (Micro).
	Name *string `locationName:"name" type:"string"`

	// A numeric value that represents the power of the bundle (500). You can use
	// the bundle's power value in conjunction with a blueprint's minimum power
	// value to determine whether the blueprint will run on the bundle. For example,
	// you need a bundle with a power value of 500 or more to create an instance
	// that uses a blueprint with a minimum power value of 500.
	Power *int64 `locationName:"power" type:"integer"`

	// The price in US dollars (5.0) of the bundle.
	Price *float64 `locationName:"price" type:"float"`

	// An integer that indicates the public ipv4 address count included in the bundle,
	// the value is either 0 or 1.
	PublicIpv4AddressCount *int64 `locationName:"publicIpv4AddressCount" type:"integer"`

	// The amount of RAM in GB (2.0).
	RamSizeInGb *float64 `locationName:"ramSizeInGb" type:"float"`

	// Virtual computer blueprints that are supported by a Lightsail for Research
	// bundle.
	//
	// This parameter only applies to Lightsail for Research resources.
	SupportedAppCategories []*string `locationName:"supportedAppCategories" type:"list" enum:"AppCategory"`

	// The operating system platform (Linux/Unix-based or Windows Server-based)
	// that the bundle supports. You can only launch a WINDOWS bundle on a blueprint
	// that supports the WINDOWS platform. LINUX_UNIX blueprints require a LINUX_UNIX
	// bundle.
	SupportedPlatforms []*string `locationName:"supportedPlatforms" type:"list" enum:"InstancePlatform"`

	// The data transfer rate per month in GB (2000).
	TransferPerMonthInGb *int64 `locationName:"transferPerMonthInGb" 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 Bundle) String() string {
	return awsutil.Prettify(s)
}

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

// SetBundleId sets the BundleId field's value.
func (s *Bundle) SetBundleId(v string) *Bundle {
	s.BundleId = &v
	return s
}

// SetCpuCount sets the CpuCount field's value.
func (s *Bundle) SetCpuCount(v int64) *Bundle {
	s.CpuCount = &v
	return s
}

// SetDiskSizeInGb sets the DiskSizeInGb field's value.
func (s *Bundle) SetDiskSizeInGb(v int64) *Bundle {
	s.DiskSizeInGb = &v
	return s
}

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

// SetIsActive sets the IsActive field's value.
func (s *Bundle) SetIsActive(v bool) *Bundle {
	s.IsActive = &v
	return s
}

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

// SetPower sets the Power field's value.
func (s *Bundle) SetPower(v int64) *Bundle {
	s.Power = &v
	return s
}

// SetPrice sets the Price field's value.
func (s *Bundle) SetPrice(v float64) *Bundle {
	s.Price = &v
	return s
}

// SetPublicIpv4AddressCount sets the PublicIpv4AddressCount field's value.
func (s *Bundle) SetPublicIpv4AddressCount(v int64) *Bundle {
	s.PublicIpv4AddressCount = &v
	return s
}

// SetRamSizeInGb sets the RamSizeInGb field's value.
func (s *Bundle) SetRamSizeInGb(v float64) *Bundle {
	s.RamSizeInGb = &v
	return s
}

// SetSupportedAppCategories sets the SupportedAppCategories field's value.
func (s *Bundle) SetSupportedAppCategories(v []*string) *Bundle {
	s.SupportedAppCategories = v
	return s
}

// SetSupportedPlatforms sets the SupportedPlatforms field's value.
func (s *Bundle) SetSupportedPlatforms(v []*string) *Bundle {
	s.SupportedPlatforms = v
	return s
}

// SetTransferPerMonthInGb sets the TransferPerMonthInGb field's value.
func (s *Bundle) SetTransferPerMonthInGb(v int64) *Bundle {
	s.TransferPerMonthInGb = &v
	return s
}

// Describes the default cache behavior of an Amazon Lightsail content delivery
// network (CDN) distribution.
type CacheBehavior struct {
	_ struct{} `type:"structure"`

	// The cache behavior of the distribution.
	//
	// The following cache behaviors can be specified:
	//
	//    * cache - This option is best for static sites. When specified, your distribution
	//    caches and serves your entire website as static content. This behavior
	//    is ideal for websites with static content that doesn't change depending
	//    on who views it, or for websites that don't use cookies, headers, or query
	//    strings to personalize content.
	//
	//    * dont-cache - This option is best for sites that serve a mix of static
	//    and dynamic content. When specified, your distribution caches and serve
	//    only the content that is specified in the distribution's CacheBehaviorPerPath
	//    parameter. This behavior is ideal for websites or web applications that
	//    use cookies, headers, and query strings to personalize content for individual
	//    users.
	Behavior *string `locationName:"behavior" type:"string" enum:"BehaviorEnum"`
}

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

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

// SetBehavior sets the Behavior field's value.
func (s *CacheBehavior) SetBehavior(v string) *CacheBehavior {
	s.Behavior = &v
	return s
}

// Describes the per-path cache behavior of an Amazon Lightsail content delivery
// network (CDN) distribution.
//
// A per-path cache behavior is used to override, or add an exception to, the
// default cache behavior of a distribution. For example, if the cacheBehavior
// is set to cache, then a per-path cache behavior can be used to specify a
// directory, file, or file type that your distribution will cache. Alternately,
// if the distribution's cacheBehavior is dont-cache, then a per-path cache
// behavior can be used to specify a directory, file, or file type that your
// distribution will not cache.
type CacheBehaviorPerPath struct {
	_ struct{} `type:"structure"`

	// The cache behavior for the specified path.
	//
	// You can specify one of the following per-path cache behaviors:
	//
	//    * cache - This behavior caches the specified path.
	//
	//    * dont-cache - This behavior doesn't cache the specified path.
	Behavior *string `locationName:"behavior" type:"string" enum:"BehaviorEnum"`

	// The path to a directory or file to cached, or not cache. Use an asterisk
	// symbol to specify wildcard directories (path/to/assets/*), and file types
	// (*.html, *jpg, *js). Directories and file paths are case-sensitive.
	//
	// Examples:
	//
	//    * Specify the following to cache all files in the document root of an
	//    Apache web server running on a Lightsail instance. var/www/html/
	//
	//    * Specify the following file to cache only the index page in the document
	//    root of an Apache web server. var/www/html/index.html
	//
	//    * Specify the following to cache only the .html files in the document
	//    root of an Apache web server. var/www/html/*.html
	//
	//    * Specify the following to cache only the .jpg, .png, and .gif files in
	//    the images sub-directory of the document root of an Apache web server.
	//    var/www/html/images/*.jpg var/www/html/images/*.png var/www/html/images/*.gif
	//    Specify the following to cache all files in the images sub-directory of
	//    the document root of an Apache web server. var/www/html/images/
	Path *string `locationName:"path" type:"string"`
}

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

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

// SetBehavior sets the Behavior field's value.
func (s *CacheBehaviorPerPath) SetBehavior(v string) *CacheBehaviorPerPath {
	s.Behavior = &v
	return s
}

// SetPath sets the Path field's value.
func (s *CacheBehaviorPerPath) SetPath(v string) *CacheBehaviorPerPath {
	s.Path = &v
	return s
}

// Describes the cache settings of an Amazon Lightsail content delivery network
// (CDN) distribution.
//
// These settings apply only to your distribution's cacheBehaviors (including
// the defaultCacheBehavior) that have a behavior of cache.
type CacheSettings struct {
	_ struct{} `type:"structure"`

	// The HTTP methods that are processed and forwarded to the distribution's origin.
	//
	// You can specify the following options:
	//
	//    * GET,HEAD - The distribution forwards the GET and HEAD methods.
	//
	//    * GET,HEAD,OPTIONS - The distribution forwards the GET, HEAD, and OPTIONS
	//    methods.
	//
	//    * GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE - The distribution forwards the
	//    GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE methods.
	//
	// If you specify the third option, you might need to restrict access to your
	// distribution's origin so users can't perform operations that you don't want
	// them to. For example, you might not want users to have permission to delete
	// objects from your origin.
	AllowedHTTPMethods *string `locationName:"allowedHTTPMethods" type:"string"`

	// The HTTP method responses that are cached by your distribution.
	//
	// You can specify the following options:
	//
	//    * GET,HEAD - The distribution caches responses to the GET and HEAD methods.
	//
	//    * GET,HEAD,OPTIONS - The distribution caches responses to the GET, HEAD,
	//    and OPTIONS methods.
	CachedHTTPMethods *string `locationName:"cachedHTTPMethods" type:"string"`

	// The default amount of time that objects stay in the distribution's cache
	// before the distribution forwards another request to the origin to determine
	// whether the content has been updated.
	//
	// The value specified applies only when the origin does not add HTTP headers
	// such as Cache-Control max-age, Cache-Control s-maxage, and Expires to objects.
	DefaultTTL *int64 `locationName:"defaultTTL" type:"long"`

	// An object that describes the cookies that are forwarded to the origin. Your
	// content is cached based on the cookies that are forwarded.
	ForwardedCookies *CookieObject `locationName:"forwardedCookies" type:"structure"`

	// An object that describes the headers that are forwarded to the origin. Your
	// content is cached based on the headers that are forwarded.
	ForwardedHeaders *HeaderObject `locationName:"forwardedHeaders" type:"structure"`

	// An object that describes the query strings that are forwarded to the origin.
	// Your content is cached based on the query strings that are forwarded.
	ForwardedQueryStrings *QueryStringObject `locationName:"forwardedQueryStrings" type:"structure"`

	// The maximum amount of time that objects stay in the distribution's cache
	// before the distribution forwards another request to the origin to determine
	// whether the object has been updated.
	//
	// The value specified applies only when the origin adds HTTP headers such as
	// Cache-Control max-age, Cache-Control s-maxage, and Expires to objects.
	MaximumTTL *int64 `locationName:"maximumTTL" type:"long"`

	// The minimum amount of time that objects stay in the distribution's cache
	// before the distribution forwards another request to the origin to determine
	// whether the object has been updated.
	//
	// A value of 0 must be specified for minimumTTL if the distribution is configured
	// to forward all headers to the origin.
	MinimumTTL *int64 `locationName:"minimumTTL" 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 CacheSettings) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllowedHTTPMethods sets the AllowedHTTPMethods field's value.
func (s *CacheSettings) SetAllowedHTTPMethods(v string) *CacheSettings {
	s.AllowedHTTPMethods = &v
	return s
}

// SetCachedHTTPMethods sets the CachedHTTPMethods field's value.
func (s *CacheSettings) SetCachedHTTPMethods(v string) *CacheSettings {
	s.CachedHTTPMethods = &v
	return s
}

// SetDefaultTTL sets the DefaultTTL field's value.
func (s *CacheSettings) SetDefaultTTL(v int64) *CacheSettings {
	s.DefaultTTL = &v
	return s
}

// SetForwardedCookies sets the ForwardedCookies field's value.
func (s *CacheSettings) SetForwardedCookies(v *CookieObject) *CacheSettings {
	s.ForwardedCookies = v
	return s
}

// SetForwardedHeaders sets the ForwardedHeaders field's value.
func (s *CacheSettings) SetForwardedHeaders(v *HeaderObject) *CacheSettings {
	s.ForwardedHeaders = v
	return s
}

// SetForwardedQueryStrings sets the ForwardedQueryStrings field's value.
func (s *CacheSettings) SetForwardedQueryStrings(v *QueryStringObject) *CacheSettings {
	s.ForwardedQueryStrings = v
	return s
}

// SetMaximumTTL sets the MaximumTTL field's value.
func (s *CacheSettings) SetMaximumTTL(v int64) *CacheSettings {
	s.MaximumTTL = &v
	return s
}

// SetMinimumTTL sets the MinimumTTL field's value.
func (s *CacheSettings) SetMinimumTTL(v int64) *CacheSettings {
	s.MinimumTTL = &v
	return s
}

// Describes the full details of an Amazon Lightsail SSL/TLS certificate.
//
// To get a summary of a certificate, use the GetCertificates action and omit
// includeCertificateDetails from your request. The response will include only
// the certificate Amazon Resource Name (ARN), certificate name, domain name,
// and tags.
type Certificate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the certificate.
	Arn *string `locationName:"arn" type:"string"`

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

	// The domain name of the certificate.
	DomainName *string `locationName:"domainName" type:"string"`

	// An array of objects that describe the domain validation records of the certificate.
	DomainValidationRecords []*DomainValidationRecord `locationName:"domainValidationRecords" type:"list"`

	// The renewal eligibility of the certificate.
	EligibleToRenew *string `locationName:"eligibleToRenew" type:"string"`

	// The number of Lightsail resources that the certificate is attached to.
	InUseResourceCount *int64 `locationName:"inUseResourceCount" type:"integer"`

	// The timestamp when the certificate was issued.
	IssuedAt *time.Time `locationName:"issuedAt" type:"timestamp"`

	// The certificate authority that issued the certificate.
	IssuerCA *string `locationName:"issuerCA" type:"string"`

	// The algorithm used to generate the key pair (the public and private key)
	// of the certificate.
	KeyAlgorithm *string `locationName:"keyAlgorithm" type:"string"`

	// The name of the certificate (my-certificate).
	Name *string `locationName:"name" type:"string"`

	// The timestamp when the certificate expires.
	NotAfter *time.Time `locationName:"notAfter" type:"timestamp"`

	// The timestamp when the certificate is first valid.
	NotBefore *time.Time `locationName:"notBefore" type:"timestamp"`

	// An object that describes the status of the certificate renewal managed by
	// Lightsail.
	RenewalSummary *RenewalSummary `locationName:"renewalSummary" type:"structure"`

	// The validation failure reason, if any, of the certificate.
	//
	// The following failure reasons are possible:
	//
	//    * NO_AVAILABLE_CONTACTS - This failure applies to email validation, which
	//    is not available for Lightsail certificates.
	//
	//    * ADDITIONAL_VERIFICATION_REQUIRED - Lightsail requires additional information
	//    to process this certificate request. This can happen as a fraud-protection
	//    measure, such as when the domain ranks within the Alexa top 1000 websites.
	//    To provide the required information, use the Amazon Web Services Support
	//    Center (https://console.aws.amazon.com/support/home) to contact Amazon
	//    Web Services Support. You cannot request a certificate for Amazon-owned
	//    domain names such as those ending in amazonaws.com, cloudfront.net, or
	//    elasticbeanstalk.com.
	//
	//    * DOMAIN_NOT_ALLOWED - One or more of the domain names in the certificate
	//    request was reported as an unsafe domain by VirusTotal (https://www.virustotal.com/gui/home/url).
	//    To correct the problem, search for your domain name on the VirusTotal
	//    (https://www.virustotal.com/gui/home/url) website. If your domain is reported
	//    as suspicious, see Google Help for Hacked Websites (https://developers.google.com/web/fundamentals/security/hacked)
	//    to learn what you can do. If you believe that the result is a false positive,
	//    notify the organization that is reporting the domain. VirusTotal is an
	//    aggregate of several antivirus and URL scanners and cannot remove your
	//    domain from a block list itself. After you correct the problem and the
	//    VirusTotal registry has been updated, request a new certificate. If you
	//    see this error and your domain is not included in the VirusTotal list,
	//    visit the Amazon Web Services Support Center (https://console.aws.amazon.com/support/home)
	//    and create a case.
	//
	//    * INVALID_PUBLIC_DOMAIN - One or more of the domain names in the certificate
	//    request is not valid. Typically, this is because a domain name in the
	//    request is not a valid top-level domain. Try to request a certificate
	//    again, correcting any spelling errors or typos that were in the failed
	//    request, and ensure that all domain names in the request are for valid
	//    top-level domains. For example, you cannot request a certificate for example.invalidpublicdomain
	//    because invalidpublicdomain is not a valid top-level domain.
	//
	//    * OTHER - Typically, this failure occurs when there is a typographical
	//    error in one or more of the domain names in the certificate request. Try
	//    to request a certificate again, correcting any spelling errors or typos
	//    that were in the failed request.
	RequestFailureReason *string `locationName:"requestFailureReason" type:"string"`

	// The reason the certificate was revoked. This value is present only when the
	// certificate status is REVOKED.
	RevocationReason *string `locationName:"revocationReason" type:"string"`

	// The timestamp when the certificate was revoked. This value is present only
	// when the certificate status is REVOKED.
	RevokedAt *time.Time `locationName:"revokedAt" type:"timestamp"`

	// The serial number of the certificate.
	SerialNumber *string `locationName:"serialNumber" type:"string"`

	// The validation status of the certificate.
	Status *string `locationName:"status" type:"string" enum:"CertificateStatus"`

	// An array of strings that specify the alternate domains (example2.com) and
	// subdomains (blog.example.com) of the certificate.
	SubjectAlternativeNames []*string `locationName:"subjectAlternativeNames" type:"list"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail certificate. This code enables our support
	// team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 Certificate) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDomainName sets the DomainName field's value.
func (s *Certificate) SetDomainName(v string) *Certificate {
	s.DomainName = &v
	return s
}

// SetDomainValidationRecords sets the DomainValidationRecords field's value.
func (s *Certificate) SetDomainValidationRecords(v []*DomainValidationRecord) *Certificate {
	s.DomainValidationRecords = v
	return s
}

// SetEligibleToRenew sets the EligibleToRenew field's value.
func (s *Certificate) SetEligibleToRenew(v string) *Certificate {
	s.EligibleToRenew = &v
	return s
}

// SetInUseResourceCount sets the InUseResourceCount field's value.
func (s *Certificate) SetInUseResourceCount(v int64) *Certificate {
	s.InUseResourceCount = &v
	return s
}

// SetIssuedAt sets the IssuedAt field's value.
func (s *Certificate) SetIssuedAt(v time.Time) *Certificate {
	s.IssuedAt = &v
	return s
}

// SetIssuerCA sets the IssuerCA field's value.
func (s *Certificate) SetIssuerCA(v string) *Certificate {
	s.IssuerCA = &v
	return s
}

// SetKeyAlgorithm sets the KeyAlgorithm field's value.
func (s *Certificate) SetKeyAlgorithm(v string) *Certificate {
	s.KeyAlgorithm = &v
	return s
}

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

// SetNotAfter sets the NotAfter field's value.
func (s *Certificate) SetNotAfter(v time.Time) *Certificate {
	s.NotAfter = &v
	return s
}

// SetNotBefore sets the NotBefore field's value.
func (s *Certificate) SetNotBefore(v time.Time) *Certificate {
	s.NotBefore = &v
	return s
}

// SetRenewalSummary sets the RenewalSummary field's value.
func (s *Certificate) SetRenewalSummary(v *RenewalSummary) *Certificate {
	s.RenewalSummary = v
	return s
}

// SetRequestFailureReason sets the RequestFailureReason field's value.
func (s *Certificate) SetRequestFailureReason(v string) *Certificate {
	s.RequestFailureReason = &v
	return s
}

// SetRevocationReason sets the RevocationReason field's value.
func (s *Certificate) SetRevocationReason(v string) *Certificate {
	s.RevocationReason = &v
	return s
}

// SetRevokedAt sets the RevokedAt field's value.
func (s *Certificate) SetRevokedAt(v time.Time) *Certificate {
	s.RevokedAt = &v
	return s
}

// SetSerialNumber sets the SerialNumber field's value.
func (s *Certificate) SetSerialNumber(v string) *Certificate {
	s.SerialNumber = &v
	return s
}

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

// SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
func (s *Certificate) SetSubjectAlternativeNames(v []*string) *Certificate {
	s.SubjectAlternativeNames = v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Certificate) SetSupportCode(v string) *Certificate {
	s.SupportCode = &v
	return s
}

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

// Describes an Amazon Lightsail SSL/TLS certificate.
type CertificateSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the certificate.
	CertificateArn *string `locationName:"certificateArn" type:"string"`

	// An object that describes a certificate in detail.
	CertificateDetail *Certificate `locationName:"certificateDetail" type:"structure"`

	// The name of the certificate.
	CertificateName *string `locationName:"certificateName" type:"string"`

	// The domain name of the certificate.
	DomainName *string `locationName:"domainName" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 CertificateSummary) String() string {
	return awsutil.Prettify(s)
}

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

// SetCertificateArn sets the CertificateArn field's value.
func (s *CertificateSummary) SetCertificateArn(v string) *CertificateSummary {
	s.CertificateArn = &v
	return s
}

// SetCertificateDetail sets the CertificateDetail field's value.
func (s *CertificateSummary) SetCertificateDetail(v *Certificate) *CertificateSummary {
	s.CertificateDetail = v
	return s
}

// SetCertificateName sets the CertificateName field's value.
func (s *CertificateSummary) SetCertificateName(v string) *CertificateSummary {
	s.CertificateName = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *CertificateSummary) SetDomainName(v string) *CertificateSummary {
	s.DomainName = &v
	return s
}

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

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

	// The name of the instance for which to close ports.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// An object to describe the ports to close for the specified instance.
	//
	// PortInfo is a required field
	PortInfo *PortInfo `locationName:"portInfo" 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 CloseInstancePublicPortsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInstanceName sets the InstanceName field's value.
func (s *CloseInstancePublicPortsInput) SetInstanceName(v string) *CloseInstancePublicPortsInput {
	s.InstanceName = &v
	return s
}

// SetPortInfo sets the PortInfo field's value.
func (s *CloseInstancePublicPortsInput) SetPortInfo(v *PortInfo) *CloseInstancePublicPortsInput {
	s.PortInfo = v
	return s
}

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

	// An object that describes the result of the action, such as the status of
	// the request, the timestamp of the request, and the resources affected by
	// the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

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

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

// SetOperation sets the Operation field's value.
func (s *CloseInstancePublicPortsOutput) SetOperation(v *Operation) *CloseInstancePublicPortsOutput {
	s.Operation = v
	return s
}

// Describes a CloudFormation stack record created as a result of the create
// cloud formation stack action.
//
// A CloudFormation stack record provides information about the AWS CloudFormation
// stack used to create a new Amazon Elastic Compute Cloud instance from an
// exported Lightsail instance snapshot.
type CloudFormationStackRecord struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the CloudFormation stack record.
	Arn *string `locationName:"arn" type:"string"`

	// The date when the CloudFormation stack record was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// A list of objects describing the destination service, which is AWS CloudFormation,
	// and the Amazon Resource Name (ARN) of the AWS CloudFormation stack.
	DestinationInfo *DestinationInfo `locationName:"destinationInfo" type:"structure"`

	// A list of objects describing the Availability Zone and Amazon Web Services
	// Region of the CloudFormation stack record.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the CloudFormation stack record. It starts with CloudFormationStackRecord
	// followed by a GUID.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type (CloudFormationStackRecord).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// A list of objects describing the source of the CloudFormation stack record.
	SourceInfo []*CloudFormationStackRecordSourceInfo `locationName:"sourceInfo" type:"list"`

	// The current state of the CloudFormation stack record.
	State *string `locationName:"state" type:"string" enum:"RecordState"`
}

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

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

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

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

// SetDestinationInfo sets the DestinationInfo field's value.
func (s *CloudFormationStackRecord) SetDestinationInfo(v *DestinationInfo) *CloudFormationStackRecord {
	s.DestinationInfo = v
	return s
}

// SetLocation sets the Location field's value.
func (s *CloudFormationStackRecord) SetLocation(v *ResourceLocation) *CloudFormationStackRecord {
	s.Location = v
	return s
}

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

// SetResourceType sets the ResourceType field's value.
func (s *CloudFormationStackRecord) SetResourceType(v string) *CloudFormationStackRecord {
	s.ResourceType = &v
	return s
}

// SetSourceInfo sets the SourceInfo field's value.
func (s *CloudFormationStackRecord) SetSourceInfo(v []*CloudFormationStackRecordSourceInfo) *CloudFormationStackRecord {
	s.SourceInfo = v
	return s
}

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

// Describes the source of a CloudFormation stack record (i.e., the export snapshot
// record).
type CloudFormationStackRecordSourceInfo struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the export snapshot record.
	Arn *string `locationName:"arn" type:"string"`

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

	// The Lightsail resource type (ExportSnapshotRecord).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"CloudFormationStackRecordSourceType"`
}

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

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

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

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

// SetResourceType sets the ResourceType field's value.
func (s *CloudFormationStackRecordSourceInfo) SetResourceType(v string) *CloudFormationStackRecordSourceInfo {
	s.ResourceType = &v
	return s
}

// Describes a contact method.
//
// A contact method is a way to send you notifications. For more information,
// see Notifications in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
type ContactMethod struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact method.
	Arn *string `locationName:"arn" type:"string"`

	// The destination of the contact method, such as an email address or a mobile
	// phone number.
	ContactEndpoint *string `locationName:"contactEndpoint" type:"string"`

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

	// An object that describes the location of the contact method, such as the
	// Amazon Web Services Region and Availability Zone.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the contact method.
	Name *string `locationName:"name" type:"string"`

	// The protocol of the contact method, such as email or SMS (text messaging).
	Protocol *string `locationName:"protocol" type:"string" enum:"ContactProtocol"`

	// The Lightsail resource type of the contact method.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The current status of the contact method.
	//
	// A contact method has the following possible status:
	//
	//    * PendingVerification - The contact method has not yet been verified,
	//    and the verification has not yet expired.
	//
	//    * Valid - The contact method has been verified.
	//
	//    * InValid - An attempt was made to verify the contact method, but the
	//    verification has expired.
	Status *string `locationName:"status" type:"string" enum:"ContactMethodStatus"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail contact method. This code enables our support
	// team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`
}

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

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

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

// SetContactEndpoint sets the ContactEndpoint field's value.
func (s *ContactMethod) SetContactEndpoint(v string) *ContactMethod {
	s.ContactEndpoint = &v
	return s
}

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

// SetLocation sets the Location field's value.
func (s *ContactMethod) SetLocation(v *ResourceLocation) *ContactMethod {
	s.Location = v
	return s
}

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

// SetProtocol sets the Protocol field's value.
func (s *ContactMethod) SetProtocol(v string) *ContactMethod {
	s.Protocol = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ContactMethod) SetResourceType(v string) *ContactMethod {
	s.ResourceType = &v
	return s
}

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

// SetSupportCode sets the SupportCode field's value.
func (s *ContactMethod) SetSupportCode(v string) *ContactMethod {
	s.SupportCode = &v
	return s
}

// Describes the settings of a container that will be launched, or that is launched,
// to an Amazon Lightsail container service.
type Container struct {
	_ struct{} `type:"structure"`

	// The launch command for the container.
	Command []*string `locationName:"command" type:"list"`

	// The environment variables of the container.
	Environment map[string]*string `locationName:"environment" type:"map"`

	// The name of the image used for the container.
	//
	// Container images sourced from your Lightsail container service, that are
	// registered and stored on your service, start with a colon (:). For example,
	// if your container service name is container-service-1, the container image
	// label is mystaticsite, and you want to use the third (3) version of the registered
	// container image, then you should specify :container-service-1.mystaticsite.3.
	// To use the latest version of a container image, specify latest instead of
	// a version number (for example, :container-service-1.mystaticsite.latest).
	// Lightsail will automatically use the highest numbered version of the registered
	// container image.
	//
	// Container images sourced from a public registry like Docker Hub don't start
	// with a colon. For example, nginx:latest or nginx.
	Image *string `locationName:"image" type:"string"`

	// The open firewall ports of the container.
	Ports map[string]*string `locationName:"ports" 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 Container) String() string {
	return awsutil.Prettify(s)
}

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

// SetCommand sets the Command field's value.
func (s *Container) SetCommand(v []*string) *Container {
	s.Command = v
	return s
}

// SetEnvironment sets the Environment field's value.
func (s *Container) SetEnvironment(v map[string]*string) *Container {
	s.Environment = v
	return s
}

// SetImage sets the Image field's value.
func (s *Container) SetImage(v string) *Container {
	s.Image = &v
	return s
}

// SetPorts sets the Ports field's value.
func (s *Container) SetPorts(v map[string]*string) *Container {
	s.Ports = v
	return s
}

// Describes a container image that is registered to an Amazon Lightsail container
// service.
type ContainerImage struct {
	_ struct{} `type:"structure"`

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

	// The digest of the container image.
	Digest *string `locationName:"digest" type:"string"`

	// The name of the container image.
	Image *string `locationName:"image" type:"string"`
}

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

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

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

// SetDigest sets the Digest field's value.
func (s *ContainerImage) SetDigest(v string) *ContainerImage {
	s.Digest = &v
	return s
}

// SetImage sets the Image field's value.
func (s *ContainerImage) SetImage(v string) *ContainerImage {
	s.Image = &v
	return s
}

// Describes an Amazon Lightsail container service.
type ContainerService struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the container service.
	Arn *string `locationName:"arn" type:"string"`

	// The name of the container service.
	ContainerServiceName *string `locationName:"containerServiceName" min:"1" type:"string"`

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

	// An object that describes the current container deployment of the container
	// service.
	CurrentDeployment *ContainerServiceDeployment `locationName:"currentDeployment" type:"structure"`

	// A Boolean value indicating whether the container service is disabled.
	IsDisabled *bool `locationName:"isDisabled" type:"boolean"`

	// An object that describes the location of the container service, such as the
	// Amazon Web Services Region and Availability Zone.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// An object that describes the next deployment of the container service.
	//
	// This value is null when there is no deployment in a pending state.
	NextDeployment *ContainerServiceDeployment `locationName:"nextDeployment" type:"structure"`

	// The power specification of the container service.
	//
	// The power specifies the amount of RAM, the number of vCPUs, and the base
	// price of the container service.
	Power *string `locationName:"power" type:"string" enum:"ContainerServicePowerName"`

	// The ID of the power of the container service.
	PowerId *string `locationName:"powerId" type:"string"`

	// The principal ARN of the container service.
	//
	// The principal ARN can be used to create a trust relationship between your
	// standard Amazon Web Services account and your Lightsail container service.
	// This allows you to give your service permission to access resources in your
	// standard Amazon Web Services account.
	PrincipalArn *string `locationName:"principalArn" type:"string"`

	// The private domain name of the container service.
	//
	// The private domain name is accessible only by other resources within the
	// default virtual private cloud (VPC) of your Lightsail account.
	PrivateDomainName *string `locationName:"privateDomainName" type:"string"`

	// An object that describes the configuration for the container service to access
	// private container image repositories, such as Amazon Elastic Container Registry
	// (Amazon ECR) private repositories.
	//
	// For more information, see Configuring access to an Amazon ECR private repository
	// for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
	// in the Amazon Lightsail Developer Guide.
	PrivateRegistryAccess *PrivateRegistryAccess `locationName:"privateRegistryAccess" type:"structure"`

	// The public domain name of the container service, such as example.com and
	// www.example.com.
	//
	// You can specify up to four public domain names for a container service. The
	// domain names that you specify are used when you create a deployment with
	// a container configured as the public endpoint of your container service.
	//
	// If you don't specify public domain names, then you can use the default domain
	// of the container service.
	//
	// You must create and validate an SSL/TLS certificate before you can use public
	// domain names with your container service. Use the CreateCertificate action
	// to create a certificate for the public domain names you want to use with
	// your container service.
	//
	// See CreateContainerService or UpdateContainerService for information about
	// how to specify public domain names for your Lightsail container service.
	PublicDomainNames map[string][]*string `locationName:"publicDomainNames" type:"map"`

	// The Lightsail resource type of the container service.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The scale specification of the container service.
	//
	// The scale specifies the allocated compute nodes of the container service.
	Scale *int64 `locationName:"scale" min:"1" type:"integer"`

	// The current state of the container service.
	//
	// The following container service states are possible:
	//
	//    * PENDING - The container service is being created.
	//
	//    * READY - The container service is running but it does not have an active
	//    container deployment.
	//
	//    * DEPLOYING - The container service is launching a container deployment.
	//
	//    * RUNNING - The container service is running and it has an active container
	//    deployment.
	//
	//    * UPDATING - The container service capacity or its custom domains are
	//    being updated.
	//
	//    * DELETING - The container service is being deleted.
	//
	//    * DISABLED - The container service is disabled, and its active deployment
	//    and containers, if any, are shut down.
	State *string `locationName:"state" type:"string" enum:"ContainerServiceState"`

	// An object that describes the current state of the container service.
	//
	// The state detail is populated only when a container service is in a PENDING,
	// DEPLOYING, or UPDATING state.
	StateDetail *ContainerServiceStateDetail `locationName:"stateDetail" type:"structure"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" type:"list"`

	// The publicly accessible URL of the container service.
	//
	// If no public endpoint is specified in the currentDeployment, this URL returns
	// a 404 response.
	Url *string `locationName:"url" type:"string"`
}

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

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

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

// SetContainerServiceName sets the ContainerServiceName field's value.
func (s *ContainerService) SetContainerServiceName(v string) *ContainerService {
	s.ContainerServiceName = &v
	return s
}

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

// SetCurrentDeployment sets the CurrentDeployment field's value.
func (s *ContainerService) SetCurrentDeployment(v *ContainerServiceDeployment) *ContainerService {
	s.CurrentDeployment = v
	return s
}

// SetIsDisabled sets the IsDisabled field's value.
func (s *ContainerService) SetIsDisabled(v bool) *ContainerService {
	s.IsDisabled = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *ContainerService) SetLocation(v *ResourceLocation) *ContainerService {
	s.Location = v
	return s
}

// SetNextDeployment sets the NextDeployment field's value.
func (s *ContainerService) SetNextDeployment(v *ContainerServiceDeployment) *ContainerService {
	s.NextDeployment = v
	return s
}

// SetPower sets the Power field's value.
func (s *ContainerService) SetPower(v string) *ContainerService {
	s.Power = &v
	return s
}

// SetPowerId sets the PowerId field's value.
func (s *ContainerService) SetPowerId(v string) *ContainerService {
	s.PowerId = &v
	return s
}

// SetPrincipalArn sets the PrincipalArn field's value.
func (s *ContainerService) SetPrincipalArn(v string) *ContainerService {
	s.PrincipalArn = &v
	return s
}

// SetPrivateDomainName sets the PrivateDomainName field's value.
func (s *ContainerService) SetPrivateDomainName(v string) *ContainerService {
	s.PrivateDomainName = &v
	return s
}

// SetPrivateRegistryAccess sets the PrivateRegistryAccess field's value.
func (s *ContainerService) SetPrivateRegistryAccess(v *PrivateRegistryAccess) *ContainerService {
	s.PrivateRegistryAccess = v
	return s
}

// SetPublicDomainNames sets the PublicDomainNames field's value.
func (s *ContainerService) SetPublicDomainNames(v map[string][]*string) *ContainerService {
	s.PublicDomainNames = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ContainerService) SetResourceType(v string) *ContainerService {
	s.ResourceType = &v
	return s
}

// SetScale sets the Scale field's value.
func (s *ContainerService) SetScale(v int64) *ContainerService {
	s.Scale = &v
	return s
}

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

// SetStateDetail sets the StateDetail field's value.
func (s *ContainerService) SetStateDetail(v *ContainerServiceStateDetail) *ContainerService {
	s.StateDetail = v
	return s
}

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

// SetUrl sets the Url field's value.
func (s *ContainerService) SetUrl(v string) *ContainerService {
	s.Url = &v
	return s
}

// Describes a container deployment configuration of an Amazon Lightsail container
// service.
//
// A deployment specifies the settings, such as the ports and launch command,
// of containers that are deployed to your container service.
type ContainerServiceDeployment struct {
	_ struct{} `type:"structure"`

	// An object that describes the configuration for the containers of the deployment.
	Containers map[string]*Container `locationName:"containers" type:"map"`

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

	// An object that describes the endpoint of the deployment.
	PublicEndpoint *ContainerServiceEndpoint `locationName:"publicEndpoint" type:"structure"`

	// The state of the deployment.
	//
	// A deployment can be in one of the following states:
	//
	//    * ACTIVATING - The deployment is being created.
	//
	//    * ACTIVE - The deployment was successfully created, and it's currently
	//    running on the container service. The container service can have only
	//    one deployment in an active state at a time.
	//
	//    * INACTIVE - The deployment was previously successfully created, but it
	//    is not currently running on the container service.
	//
	//    * FAILED - The deployment failed. Use the GetContainerLog action to view
	//    the log events for the containers in the deployment to try to determine
	//    the reason for the failure.
	State *string `locationName:"state" type:"string" enum:"ContainerServiceDeploymentState"`

	// The version number of the deployment.
	Version *int64 `locationName:"version" 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 ContainerServiceDeployment) String() string {
	return awsutil.Prettify(s)
}

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

// SetContainers sets the Containers field's value.
func (s *ContainerServiceDeployment) SetContainers(v map[string]*Container) *ContainerServiceDeployment {
	s.Containers = v
	return s
}

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

// SetPublicEndpoint sets the PublicEndpoint field's value.
func (s *ContainerServiceDeployment) SetPublicEndpoint(v *ContainerServiceEndpoint) *ContainerServiceDeployment {
	s.PublicEndpoint = v
	return s
}

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

// SetVersion sets the Version field's value.
func (s *ContainerServiceDeployment) SetVersion(v int64) *ContainerServiceDeployment {
	s.Version = &v
	return s
}

// Describes a container deployment configuration of an Amazon Lightsail container
// service.
//
// A deployment specifies the settings, such as the ports and launch command,
// of containers that are deployed to your container service.
type ContainerServiceDeploymentRequest struct {
	_ struct{} `type:"structure"`

	// An object that describes the configuration for the containers of the deployment.
	Containers map[string]*Container `locationName:"containers" type:"map"`

	// An object that describes the endpoint of the deployment.
	PublicEndpoint *EndpointRequest `locationName:"publicEndpoint" type:"structure"`
}

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

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

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

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

// SetContainers sets the Containers field's value.
func (s *ContainerServiceDeploymentRequest) SetContainers(v map[string]*Container) *ContainerServiceDeploymentRequest {
	s.Containers = v
	return s
}

// SetPublicEndpoint sets the PublicEndpoint field's value.
func (s *ContainerServiceDeploymentRequest) SetPublicEndpoint(v *EndpointRequest) *ContainerServiceDeploymentRequest {
	s.PublicEndpoint = v
	return s
}

// Describes the activation status of the role that you can use to grant an
// Amazon Lightsail container service access to Amazon Elastic Container Registry
// (Amazon ECR) private repositories.
//
// When activated, Lightsail creates an Identity and Access Management (IAM)
// role for the specified Lightsail container service. You can use the ARN of
// the role to create a trust relationship between your Lightsail container
// service and an Amazon ECR private repository in your Amazon Web Services
// account. This allows your container service to pull images from Amazon ECR
// private repositories. For more information, see Configuring access to an
// Amazon ECR private repository for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
// in the Amazon Lightsail Developer Guide.
type ContainerServiceECRImagePullerRole struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether the role is activated.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The Amazon Resource Name (ARN) of the role, if it is activated.
	PrincipalArn *string `locationName:"principalArn" type:"string"`
}

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

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

// SetIsActive sets the IsActive field's value.
func (s *ContainerServiceECRImagePullerRole) SetIsActive(v bool) *ContainerServiceECRImagePullerRole {
	s.IsActive = &v
	return s
}

// SetPrincipalArn sets the PrincipalArn field's value.
func (s *ContainerServiceECRImagePullerRole) SetPrincipalArn(v string) *ContainerServiceECRImagePullerRole {
	s.PrincipalArn = &v
	return s
}

// Describes a request to activate or deactivate the role that you can use to
// grant an Amazon Lightsail container service access to Amazon Elastic Container
// Registry (Amazon ECR) private repositories.
//
// When activated, Lightsail creates an Identity and Access Management (IAM)
// role for the specified Lightsail container service. You can use the ARN of
// the role to create a trust relationship between your Lightsail container
// service and an Amazon ECR private repository in your Amazon Web Services
// account. This allows your container service to pull images from Amazon ECR
// private repositories. For more information, see Configuring access to an
// Amazon ECR private repository for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
// in the Amazon Lightsail Developer Guide.
type ContainerServiceECRImagePullerRoleRequest struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to activate the role.
	IsActive *bool `locationName:"isActive" 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 ContainerServiceECRImagePullerRoleRequest) String() string {
	return awsutil.Prettify(s)
}

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

// SetIsActive sets the IsActive field's value.
func (s *ContainerServiceECRImagePullerRoleRequest) SetIsActive(v bool) *ContainerServiceECRImagePullerRoleRequest {
	s.IsActive = &v
	return s
}

// Describes the public endpoint configuration of a deployment of an Amazon
// Lightsail container service.
type ContainerServiceEndpoint struct {
	_ struct{} `type:"structure"`

	// The name of the container entry of the deployment that the endpoint configuration
	// applies to.
	ContainerName *string `locationName:"containerName" type:"string"`

	// The port of the specified container to which traffic is forwarded to.
	ContainerPort *int64 `locationName:"containerPort" type:"integer"`

	// An object that describes the health check configuration of the container.
	HealthCheck *ContainerServiceHealthCheckConfig `locationName:"healthCheck" type:"structure"`
}

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

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

// SetContainerName sets the ContainerName field's value.
func (s *ContainerServiceEndpoint) SetContainerName(v string) *ContainerServiceEndpoint {
	s.ContainerName = &v
	return s
}

// SetContainerPort sets the ContainerPort field's value.
func (s *ContainerServiceEndpoint) SetContainerPort(v int64) *ContainerServiceEndpoint {
	s.ContainerPort = &v
	return s
}

// SetHealthCheck sets the HealthCheck field's value.
func (s *ContainerServiceEndpoint) SetHealthCheck(v *ContainerServiceHealthCheckConfig) *ContainerServiceEndpoint {
	s.HealthCheck = v
	return s
}

// Describes the health check configuration of an Amazon Lightsail container
// service.
type ContainerServiceHealthCheckConfig struct {
	_ struct{} `type:"structure"`

	// The number of consecutive health checks successes required before moving
	// the container to the Healthy state. The default value is 2.
	HealthyThreshold *int64 `locationName:"healthyThreshold" type:"integer"`

	// The approximate interval, in seconds, between health checks of an individual
	// container. You can specify between 5 and 300 seconds. The default value is
	// 5.
	IntervalSeconds *int64 `locationName:"intervalSeconds" type:"integer"`

	// The path on the container on which to perform the health check. The default
	// value is /.
	Path *string `locationName:"path" type:"string"`

	// The HTTP codes to use when checking for a successful response from a container.
	// You can specify values between 200 and 499. You can specify multiple values
	// (for example, 200,202) or a range of values (for example, 200-299).
	SuccessCodes *string `locationName:"successCodes" type:"string"`

	// The amount of time, in seconds, during which no response means a failed health
	// check. You can specify between 2 and 60 seconds. The default value is 2.
	TimeoutSeconds *int64 `locationName:"timeoutSeconds" type:"integer"`

	// The number of consecutive health check failures required before moving the
	// container to the Unhealthy state. The default value is 2.
	UnhealthyThreshold *int64 `locationName:"unhealthyThreshold" 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 ContainerServiceHealthCheckConfig) String() string {
	return awsutil.Prettify(s)
}

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

// SetHealthyThreshold sets the HealthyThreshold field's value.
func (s *ContainerServiceHealthCheckConfig) SetHealthyThreshold(v int64) *ContainerServiceHealthCheckConfig {
	s.HealthyThreshold = &v
	return s
}

// SetIntervalSeconds sets the IntervalSeconds field's value.
func (s *ContainerServiceHealthCheckConfig) SetIntervalSeconds(v int64) *ContainerServiceHealthCheckConfig {
	s.IntervalSeconds = &v
	return s
}

// SetPath sets the Path field's value.
func (s *ContainerServiceHealthCheckConfig) SetPath(v string) *ContainerServiceHealthCheckConfig {
	s.Path = &v
	return s
}

// SetSuccessCodes sets the SuccessCodes field's value.
func (s *ContainerServiceHealthCheckConfig) SetSuccessCodes(v string) *ContainerServiceHealthCheckConfig {
	s.SuccessCodes = &v
	return s
}

// SetTimeoutSeconds sets the TimeoutSeconds field's value.
func (s *ContainerServiceHealthCheckConfig) SetTimeoutSeconds(v int64) *ContainerServiceHealthCheckConfig {
	s.TimeoutSeconds = &v
	return s
}

// SetUnhealthyThreshold sets the UnhealthyThreshold field's value.
func (s *ContainerServiceHealthCheckConfig) SetUnhealthyThreshold(v int64) *ContainerServiceHealthCheckConfig {
	s.UnhealthyThreshold = &v
	return s
}

// Describes the log events of a container of an Amazon Lightsail container
// service.
type ContainerServiceLogEvent struct {
	_ struct{} `type:"structure"`

	// The timestamp when the container service log event was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The message of the container service log event.
	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 ContainerServiceLogEvent) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// Describes the powers that can be specified for an Amazon Lightsail container
// service.
//
// The power specifies the amount of RAM, the number of vCPUs, and the base
// price of the container service.
type ContainerServicePower struct {
	_ struct{} `type:"structure"`

	// The number of vCPUs included in the power.
	CpuCount *float64 `locationName:"cpuCount" type:"float"`

	// A Boolean value indicating whether the power is active and can be specified
	// for container services.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The friendly name of the power (nano).
	Name *string `locationName:"name" type:"string"`

	// The ID of the power (nano-1).
	PowerId *string `locationName:"powerId" type:"string"`

	// The monthly price of the power in USD.
	Price *float64 `locationName:"price" type:"float"`

	// The amount of RAM (in GB) of the power.
	RamSizeInGb *float64 `locationName:"ramSizeInGb" type:"float"`
}

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

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

// SetCpuCount sets the CpuCount field's value.
func (s *ContainerServicePower) SetCpuCount(v float64) *ContainerServicePower {
	s.CpuCount = &v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *ContainerServicePower) SetIsActive(v bool) *ContainerServicePower {
	s.IsActive = &v
	return s
}

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

// SetPowerId sets the PowerId field's value.
func (s *ContainerServicePower) SetPowerId(v string) *ContainerServicePower {
	s.PowerId = &v
	return s
}

// SetPrice sets the Price field's value.
func (s *ContainerServicePower) SetPrice(v float64) *ContainerServicePower {
	s.Price = &v
	return s
}

// SetRamSizeInGb sets the RamSizeInGb field's value.
func (s *ContainerServicePower) SetRamSizeInGb(v float64) *ContainerServicePower {
	s.RamSizeInGb = &v
	return s
}

// Describes the sign-in credentials for the container image registry of an
// Amazon Lightsail account.
type ContainerServiceRegistryLogin struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the container image registry sign-in credentials expire.
	//
	// The log in credentials expire 12 hours after they are created, at which point
	// you will need to create a new set of log in credentials using the CreateContainerServiceRegistryLogin
	// action.
	ExpiresAt *time.Time `locationName:"expiresAt" type:"timestamp"`

	// The container service registry password to use to push container images to
	// the container image registry of a Lightsail account
	Password *string `locationName:"password" type:"string"`

	// The address to use to push container images to the container image registry
	// of a Lightsail account.
	Registry *string `locationName:"registry" type:"string"`

	// The container service registry username to use to push container images to
	// the container image registry of a Lightsail account.
	Username *string `locationName:"username" type:"string"`
}

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

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

// SetExpiresAt sets the ExpiresAt field's value.
func (s *ContainerServiceRegistryLogin) SetExpiresAt(v time.Time) *ContainerServiceRegistryLogin {
	s.ExpiresAt = &v
	return s
}

// SetPassword sets the Password field's value.
func (s *ContainerServiceRegistryLogin) SetPassword(v string) *ContainerServiceRegistryLogin {
	s.Password = &v
	return s
}

// SetRegistry sets the Registry field's value.
func (s *ContainerServiceRegistryLogin) SetRegistry(v string) *ContainerServiceRegistryLogin {
	s.Registry = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *ContainerServiceRegistryLogin) SetUsername(v string) *ContainerServiceRegistryLogin {
	s.Username = &v
	return s
}

// Describes the current state of a container service.
type ContainerServiceStateDetail struct {
	_ struct{} `type:"structure"`

	// The state code of the container service.
	//
	// The following state codes are possible:
	//
	//    * The following state codes are possible if your container service is
	//    in a DEPLOYING or UPDATING state: CREATING_SYSTEM_RESOURCES - The system
	//    resources for your container service are being created. CREATING_NETWORK_INFRASTRUCTURE
	//    - The network infrastructure for your container service are being created.
	//    PROVISIONING_CERTIFICATE - The SSL/TLS certificate for your container
	//    service is being created. PROVISIONING_SERVICE - Your container service
	//    is being provisioned. CREATING_DEPLOYMENT - Your deployment is being created
	//    on your container service. EVALUATING_HEALTH_CHECK - The health of your
	//    deployment is being evaluated. ACTIVATING_DEPLOYMENT - Your deployment
	//    is being activated.
	//
	//    * The following state codes are possible if your container service is
	//    in a PENDING state: CERTIFICATE_LIMIT_EXCEEDED - The SSL/TLS certificate
	//    required for your container service exceeds the maximum number of certificates
	//    allowed for your account. UNKNOWN_ERROR - An error was experienced when
	//    your container service was being created.
	Code *string `locationName:"code" type:"string" enum:"ContainerServiceStateDetailCode"`

	// A message that provides more information for the state code.
	//
	// The state detail is populated only when a container service is in a PENDING,
	// DEPLOYING, or UPDATING state.
	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 ContainerServiceStateDetail) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// Describes whether an Amazon Lightsail content delivery network (CDN) distribution
// forwards cookies to the origin and, if so, which ones.
//
// For the cookies that you specify, your distribution caches separate versions
// of the specified content based on the cookie values in viewer requests.
type CookieObject struct {
	_ struct{} `type:"structure"`

	// The specific cookies to forward to your distribution's origin.
	CookiesAllowList []*string `locationName:"cookiesAllowList" type:"list"`

	// Specifies which cookies to forward to the distribution's origin for a cache
	// behavior: all, none, or allow-list to forward only the cookies specified
	// in the cookiesAllowList parameter.
	Option *string `locationName:"option" type:"string" enum:"ForwardValues"`
}

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

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

// SetCookiesAllowList sets the CookiesAllowList field's value.
func (s *CookieObject) SetCookiesAllowList(v []*string) *CookieObject {
	s.CookiesAllowList = v
	return s
}

// SetOption sets the Option field's value.
func (s *CookieObject) SetOption(v string) *CookieObject {
	s.Option = &v
	return s
}

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

	// The date of the source automatic snapshot to copy. Use the get auto snapshots
	// operation to identify the dates of the available automatic snapshots.
	//
	// Constraints:
	//
	//    * Must be specified in YYYY-MM-DD format.
	//
	//    * This parameter cannot be defined together with the use latest restorable
	//    auto snapshot parameter. The restore date and use latest restorable auto
	//    snapshot parameters are mutually exclusive.
	//
	//    * Define this parameter only when copying an automatic snapshot as a manual
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-keeping-automatic-snapshots).
	RestoreDate *string `locationName:"restoreDate" type:"string"`

	// The Amazon Web Services Region where the source manual or automatic snapshot
	// is located.
	//
	// SourceRegion is a required field
	SourceRegion *string `locationName:"sourceRegion" type:"string" required:"true" enum:"RegionName"`

	// The name of the source instance or disk from which the source automatic snapshot
	// was created.
	//
	// Constraint:
	//
	//    * Define this parameter only when copying an automatic snapshot as a manual
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-keeping-automatic-snapshots).
	SourceResourceName *string `locationName:"sourceResourceName" type:"string"`

	// The name of the source manual snapshot to copy.
	//
	// Constraint:
	//
	//    * Define this parameter only when copying a manual snapshot as another
	//    manual snapshot.
	SourceSnapshotName *string `locationName:"sourceSnapshotName" type:"string"`

	// The name of the new manual snapshot to be created as a copy.
	//
	// TargetSnapshotName is a required field
	TargetSnapshotName *string `locationName:"targetSnapshotName" type:"string" required:"true"`

	// A Boolean value to indicate whether to use the latest available automatic
	// snapshot of the specified source instance or disk.
	//
	// Constraints:
	//
	//    * This parameter cannot be defined together with the restore date parameter.
	//    The use latest restorable auto snapshot and restore date parameters are
	//    mutually exclusive.
	//
	//    * Define this parameter only when copying an automatic snapshot as a manual
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-keeping-automatic-snapshots).
	UseLatestRestorableAutoSnapshot *bool `locationName:"useLatestRestorableAutoSnapshot" 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 CopySnapshotInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRestoreDate sets the RestoreDate field's value.
func (s *CopySnapshotInput) SetRestoreDate(v string) *CopySnapshotInput {
	s.RestoreDate = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *CopySnapshotInput) SetSourceRegion(v string) *CopySnapshotInput {
	s.SourceRegion = &v
	return s
}

// SetSourceResourceName sets the SourceResourceName field's value.
func (s *CopySnapshotInput) SetSourceResourceName(v string) *CopySnapshotInput {
	s.SourceResourceName = &v
	return s
}

// SetSourceSnapshotName sets the SourceSnapshotName field's value.
func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
	s.SourceSnapshotName = &v
	return s
}

// SetTargetSnapshotName sets the TargetSnapshotName field's value.
func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
	s.TargetSnapshotName = &v
	return s
}

// SetUseLatestRestorableAutoSnapshot sets the UseLatestRestorableAutoSnapshot field's value.
func (s *CopySnapshotInput) SetUseLatestRestorableAutoSnapshot(v bool) *CopySnapshotInput {
	s.UseLatestRestorableAutoSnapshot = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CopySnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CopySnapshotOutput) SetOperations(v []*Operation) *CopySnapshotOutput {
	s.Operations = v
	return s
}

// Describes the estimated cost for resources in your Lightsail for Research
// account.
type CostEstimate struct {
	_ struct{} `type:"structure"`

	// The cost estimate result that's associated with a time period.
	ResultsByTime []*EstimateByTime `locationName:"resultsByTime" type:"list"`

	// The types of usage that are included in the estimate, such as costs, usage,
	// or data transfer.
	UsageType *string `locationName:"usageType" type:"string"`
}

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

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

// SetResultsByTime sets the ResultsByTime field's value.
func (s *CostEstimate) SetResultsByTime(v []*EstimateByTime) *CostEstimate {
	s.ResultsByTime = v
	return s
}

// SetUsageType sets the UsageType field's value.
func (s *CostEstimate) SetUsageType(v string) *CostEstimate {
	s.UsageType = &v
	return s
}

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

	// The name of the bucket that the new access key will belong to, and grant
	// access to.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`
}

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

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

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

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

// SetBucketName sets the BucketName field's value.
func (s *CreateBucketAccessKeyInput) SetBucketName(v string) *CreateBucketAccessKeyInput {
	s.BucketName = &v
	return s
}

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

	// An object that describes the access key that is created.
	AccessKey *AccessKey `locationName:"accessKey" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateBucketAccessKeyOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessKey sets the AccessKey field's value.
func (s *CreateBucketAccessKeyOutput) SetAccessKey(v *AccessKey) *CreateBucketAccessKeyOutput {
	s.AccessKey = v
	return s
}

// SetOperations sets the Operations field's value.
func (s *CreateBucketAccessKeyOutput) SetOperations(v []*Operation) *CreateBucketAccessKeyOutput {
	s.Operations = v
	return s
}

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

	// The name for the bucket.
	//
	// For more information about bucket names, see Bucket naming rules in Amazon
	// Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/bucket-naming-rules-in-amazon-lightsail)
	// in the Amazon Lightsail Developer Guide.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// The ID of the bundle to use for the bucket.
	//
	// A bucket bundle specifies the monthly cost, storage space, and data transfer
	// quota for a bucket.
	//
	// Use the GetBucketBundles (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketBundles.html)
	// action to get a list of bundle IDs that you can specify.
	//
	// Use the UpdateBucketBundle (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html)
	// action to change the bundle after the bucket is created.
	//
	// BundleId is a required field
	BundleId *string `locationName:"bundleId" type:"string" required:"true"`

	// A Boolean value that indicates whether to enable versioning of objects in
	// the bucket.
	//
	// For more information about versioning, see Enabling and suspending object
	// versioning in a bucket in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-managing-bucket-object-versioning)
	// in the Amazon Lightsail Developer Guide.
	EnableObjectVersioning *bool `locationName:"enableObjectVersioning" type:"boolean"`

	// The tag keys and optional values to add to the bucket during creation.
	//
	// Use the TagResource (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_TagResource.html)
	// action to tag the bucket after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateBucketInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetBucketName sets the BucketName field's value.
func (s *CreateBucketInput) SetBucketName(v string) *CreateBucketInput {
	s.BucketName = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *CreateBucketInput) SetBundleId(v string) *CreateBucketInput {
	s.BundleId = &v
	return s
}

// SetEnableObjectVersioning sets the EnableObjectVersioning field's value.
func (s *CreateBucketInput) SetEnableObjectVersioning(v bool) *CreateBucketInput {
	s.EnableObjectVersioning = &v
	return s
}

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

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

	// An object that describes the bucket that is created.
	Bucket *Bucket `locationName:"bucket" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateBucketOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetBucket sets the Bucket field's value.
func (s *CreateBucketOutput) SetBucket(v *Bucket) *CreateBucketOutput {
	s.Bucket = v
	return s
}

// SetOperations sets the Operations field's value.
func (s *CreateBucketOutput) SetOperations(v []*Operation) *CreateBucketOutput {
	s.Operations = v
	return s
}

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

	// The name for the certificate.
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`

	// The domain name (example.com) for the certificate.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`

	// An array of strings that specify the alternate domains (example2.com) and
	// subdomains (blog.example.com) for the certificate.
	//
	// You can specify a maximum of nine alternate domains (in addition to the primary
	// domain name).
	//
	// Wildcard domain entries (*.example.com) are not supported.
	SubjectAlternativeNames []*string `locationName:"subjectAlternativeNames" type:"list"`

	// The tag keys and optional values to add to the certificate during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateCertificateInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCertificateName sets the CertificateName field's value.
func (s *CreateCertificateInput) SetCertificateName(v string) *CreateCertificateInput {
	s.CertificateName = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *CreateCertificateInput) SetDomainName(v string) *CreateCertificateInput {
	s.DomainName = &v
	return s
}

// SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
func (s *CreateCertificateInput) SetSubjectAlternativeNames(v []*string) *CreateCertificateInput {
	s.SubjectAlternativeNames = v
	return s
}

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

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

	// An object that describes the certificate created.
	Certificate *CertificateSummary `locationName:"certificate" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCertificate sets the Certificate field's value.
func (s *CreateCertificateOutput) SetCertificate(v *CertificateSummary) *CreateCertificateOutput {
	s.Certificate = v
	return s
}

// SetOperations sets the Operations field's value.
func (s *CreateCertificateOutput) SetOperations(v []*Operation) *CreateCertificateOutput {
	s.Operations = v
	return s
}

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

	// An array of parameters that will be used to create the new Amazon EC2 instance.
	// You can only pass one instance entry at a time in this array. You will get
	// an invalid parameter error if you pass more than one instance entry in this
	// array.
	//
	// Instances is a required field
	Instances []*InstanceEntry `locationName:"instances" 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 CreateCloudFormationStackInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInstances sets the Instances field's value.
func (s *CreateCloudFormationStackInput) SetInstances(v []*InstanceEntry) *CreateCloudFormationStackInput {
	s.Instances = v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateCloudFormationStackOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CreateCloudFormationStackOutput) SetOperations(v []*Operation) *CreateCloudFormationStackOutput {
	s.Operations = v
	return s
}

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

	// The destination of the contact method, such as an email address or a mobile
	// phone number.
	//
	// Use the E.164 format when specifying a mobile phone number. E.164 is a standard
	// for the phone number structure used for international telecommunication.
	// Phone numbers that follow this format can have a maximum of 15 digits, and
	// they are prefixed with the plus character (+) and the country code. For example,
	// a U.S. phone number in E.164 format would be specified as +1XXX5550100. For
	// more information, see E.164 (https://en.wikipedia.org/wiki/E.164) on Wikipedia.
	//
	// ContactEndpoint is a required field
	ContactEndpoint *string `locationName:"contactEndpoint" min:"1" type:"string" required:"true"`

	// The protocol of the contact method, such as Email or SMS (text messaging).
	//
	// The SMS protocol is supported only in the following Amazon Web Services Regions.
	//
	//    * US East (N. Virginia) (us-east-1)
	//
	//    * US West (Oregon) (us-west-2)
	//
	//    * Europe (Ireland) (eu-west-1)
	//
	//    * Asia Pacific (Tokyo) (ap-northeast-1)
	//
	//    * Asia Pacific (Singapore) (ap-southeast-1)
	//
	//    * Asia Pacific (Sydney) (ap-southeast-2)
	//
	// For a list of countries/regions where SMS text messages can be sent, and
	// the latest Amazon Web Services Regions where SMS text messaging is supported,
	// see Supported Regions and Countries (https://docs.aws.amazon.com/sns/latest/dg/sns-supported-regions-countries.html)
	// in the Amazon SNS Developer Guide.
	//
	// For more information about notifications in Amazon Lightsail, see Notifications
	// in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-notifications).
	//
	// Protocol is a required field
	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"ContactProtocol"`
}

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

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

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

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

// SetContactEndpoint sets the ContactEndpoint field's value.
func (s *CreateContactMethodInput) SetContactEndpoint(v string) *CreateContactMethodInput {
	s.ContactEndpoint = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *CreateContactMethodInput) SetProtocol(v string) *CreateContactMethodInput {
	s.Protocol = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateContactMethodOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CreateContactMethodOutput) SetOperations(v []*Operation) *CreateContactMethodOutput {
	s.Operations = v
	return s
}

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

	// An object that describes the settings of the containers that will be launched
	// on the container service.
	Containers map[string]*Container `locationName:"containers" type:"map"`

	// An object that describes the settings of the public endpoint for the container
	// service.
	PublicEndpoint *EndpointRequest `locationName:"publicEndpoint" type:"structure"`

	// The name of the container service for which to create the deployment.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetContainers sets the Containers field's value.
func (s *CreateContainerServiceDeploymentInput) SetContainers(v map[string]*Container) *CreateContainerServiceDeploymentInput {
	s.Containers = v
	return s
}

// SetPublicEndpoint sets the PublicEndpoint field's value.
func (s *CreateContainerServiceDeploymentInput) SetPublicEndpoint(v *EndpointRequest) *CreateContainerServiceDeploymentInput {
	s.PublicEndpoint = v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *CreateContainerServiceDeploymentInput) SetServiceName(v string) *CreateContainerServiceDeploymentInput {
	s.ServiceName = &v
	return s
}

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

	// An object that describes a container service.
	ContainerService *ContainerService `locationName:"containerService" type:"structure"`
}

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

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

// SetContainerService sets the ContainerService field's value.
func (s *CreateContainerServiceDeploymentOutput) SetContainerService(v *ContainerService) *CreateContainerServiceDeploymentOutput {
	s.ContainerService = v
	return s
}

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

	// An object that describes a deployment for the container service.
	//
	// A deployment specifies the containers that will be launched on the container
	// service and their settings, such as the ports to open, the environment variables
	// to apply, and the launch command to run. It also specifies the container
	// that will serve as the public endpoint of the deployment and its settings,
	// such as the HTTP or HTTPS port to use, and the health check configuration.
	Deployment *ContainerServiceDeploymentRequest `locationName:"deployment" type:"structure"`

	// The power specification for the container service.
	//
	// The power specifies the amount of memory, vCPUs, and base monthly cost of
	// each node of the container service. The power and scale of a container service
	// makes up its configured capacity. To determine the monthly price of your
	// container service, multiply the base price of the power with the scale (the
	// number of nodes) of the service.
	//
	// Use the GetContainerServicePowers action to get a list of power options that
	// you can specify using this parameter, and their base monthly cost.
	//
	// Power is a required field
	Power *string `locationName:"power" type:"string" required:"true" enum:"ContainerServicePowerName"`

	// An object to describe the configuration for the container service to access
	// private container image repositories, such as Amazon Elastic Container Registry
	// (Amazon ECR) private repositories.
	//
	// For more information, see Configuring access to an Amazon ECR private repository
	// for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
	// in the Amazon Lightsail Developer Guide.
	PrivateRegistryAccess *PrivateRegistryAccessRequest `locationName:"privateRegistryAccess" type:"structure"`

	// The public domain names to use with the container service, such as example.com
	// and www.example.com.
	//
	// You can specify up to four public domain names for a container service. The
	// domain names that you specify are used when you create a deployment with
	// a container configured as the public endpoint of your container service.
	//
	// If you don't specify public domain names, then you can use the default domain
	// of the container service.
	//
	// You must create and validate an SSL/TLS certificate before you can use public
	// domain names with your container service. Use the CreateCertificate action
	// to create a certificate for the public domain names you want to use with
	// your container service.
	//
	// You can specify public domain names using a string to array map as shown
	// in the example later on this page.
	PublicDomainNames map[string][]*string `locationName:"publicDomainNames" type:"map"`

	// The scale specification for the container service.
	//
	// The scale specifies the allocated compute nodes of the container service.
	// The power and scale of a container service makes up its configured capacity.
	// To determine the monthly price of your container service, multiply the base
	// price of the power with the scale (the number of nodes) of the service.
	//
	// Scale is a required field
	Scale *int64 `locationName:"scale" min:"1" type:"integer" required:"true"`

	// The name for the container service.
	//
	// The name that you specify for your container service will make up part of
	// its default domain. The default domain of a container service is typically
	// https://<ServiceName>.<RandomGUID>.<AWSRegion>.cs.amazonlightsail.com. If
	// the name of your container service is container-service-1, and it's located
	// in the US East (Ohio) Amazon Web Services Region (us-east-2), then the domain
	// for your container service will be like the following example: https://container-service-1.ur4EXAMPLE2uq.us-east-2.cs.amazonlightsail.com
	//
	// The following are the requirements for container service names:
	//
	//    * Must be unique within each Amazon Web Services Region in your Lightsail
	//    account.
	//
	//    * Must contain 1 to 63 characters.
	//
	//    * Must contain only alphanumeric characters and hyphens.
	//
	//    * A hyphen (-) can separate words but cannot be at the start or end of
	//    the name.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`

	// The tag keys and optional values to add to the container service during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	//
	// For more information about tags in Lightsail, see the Amazon Lightsail Developer
	// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 CreateContainerServiceInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateContainerServiceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateContainerServiceInput"}
	if s.Power == nil {
		invalidParams.Add(request.NewErrParamRequired("Power"))
	}
	if s.Scale == nil {
		invalidParams.Add(request.NewErrParamRequired("Scale"))
	}
	if s.Scale != nil && *s.Scale < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Scale", 1))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}
	if s.Deployment != nil {
		if err := s.Deployment.Validate(); err != nil {
			invalidParams.AddNested("Deployment", err.(request.ErrInvalidParams))
		}
	}

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

// SetDeployment sets the Deployment field's value.
func (s *CreateContainerServiceInput) SetDeployment(v *ContainerServiceDeploymentRequest) *CreateContainerServiceInput {
	s.Deployment = v
	return s
}

// SetPower sets the Power field's value.
func (s *CreateContainerServiceInput) SetPower(v string) *CreateContainerServiceInput {
	s.Power = &v
	return s
}

// SetPrivateRegistryAccess sets the PrivateRegistryAccess field's value.
func (s *CreateContainerServiceInput) SetPrivateRegistryAccess(v *PrivateRegistryAccessRequest) *CreateContainerServiceInput {
	s.PrivateRegistryAccess = v
	return s
}

// SetPublicDomainNames sets the PublicDomainNames field's value.
func (s *CreateContainerServiceInput) SetPublicDomainNames(v map[string][]*string) *CreateContainerServiceInput {
	s.PublicDomainNames = v
	return s
}

// SetScale sets the Scale field's value.
func (s *CreateContainerServiceInput) SetScale(v int64) *CreateContainerServiceInput {
	s.Scale = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *CreateContainerServiceInput) SetServiceName(v string) *CreateContainerServiceInput {
	s.ServiceName = &v
	return s
}

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

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

	// An object that describes a container service.
	ContainerService *ContainerService `locationName:"containerService" type:"structure"`
}

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

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

// SetContainerService sets the ContainerService field's value.
func (s *CreateContainerServiceOutput) SetContainerService(v *ContainerService) *CreateContainerServiceOutput {
	s.ContainerService = v
	return s
}

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

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

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

	// An object that describes the log in information for the container service
	// registry of your Lightsail account.
	RegistryLogin *ContainerServiceRegistryLogin `locationName:"registryLogin" type:"structure"`
}

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

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

// SetRegistryLogin sets the RegistryLogin field's value.
func (s *CreateContainerServiceRegistryLoginOutput) SetRegistryLogin(v *ContainerServiceRegistryLogin) *CreateContainerServiceRegistryLoginOutput {
	s.RegistryLogin = v
	return s
}

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

	// An array of objects that represent the add-ons to enable for the new disk.
	AddOns []*AddOnRequest `locationName:"addOns" type:"list"`

	// The Availability Zone where you want to create the disk (us-east-2a). Choose
	// the same Availability Zone as the Lightsail instance where you want to create
	// the disk.
	//
	// Use the GetRegions operation to list the Availability Zones where Lightsail
	// is currently available.
	//
	// AvailabilityZone is a required field
	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`

	// The unique Lightsail disk name (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`

	// The name of the disk snapshot (my-snapshot) from which to create the new
	// storage disk.
	//
	// Constraint:
	//
	//    * This parameter cannot be defined together with the source disk name
	//    parameter. The disk snapshot name and source disk name parameters are
	//    mutually exclusive.
	DiskSnapshotName *string `locationName:"diskSnapshotName" type:"string"`

	// The date of the automatic snapshot to use for the new disk. Use the get auto
	// snapshots operation to identify the dates of the available automatic snapshots.
	//
	// Constraints:
	//
	//    * Must be specified in YYYY-MM-DD format.
	//
	//    * This parameter cannot be defined together with the use latest restorable
	//    auto snapshot parameter. The restore date and use latest restorable auto
	//    snapshot parameters are mutually exclusive.
	//
	//    * Define this parameter only when creating a new disk from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	RestoreDate *string `locationName:"restoreDate" type:"string"`

	// The size of the disk in GB (32).
	//
	// SizeInGb is a required field
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer" required:"true"`

	// The name of the source disk from which the source automatic snapshot was
	// created.
	//
	// Constraints:
	//
	//    * This parameter cannot be defined together with the disk snapshot name
	//    parameter. The source disk name and disk snapshot name parameters are
	//    mutually exclusive.
	//
	//    * Define this parameter only when creating a new disk from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	SourceDiskName *string `locationName:"sourceDiskName" type:"string"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" type:"list"`

	// A Boolean value to indicate whether to use the latest available automatic
	// snapshot.
	//
	// Constraints:
	//
	//    * This parameter cannot be defined together with the restore date parameter.
	//    The use latest restorable auto snapshot and restore date parameters are
	//    mutually exclusive.
	//
	//    * Define this parameter only when creating a new disk from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	UseLatestRestorableAutoSnapshot *bool `locationName:"useLatestRestorableAutoSnapshot" 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 CreateDiskFromSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAddOns sets the AddOns field's value.
func (s *CreateDiskFromSnapshotInput) SetAddOns(v []*AddOnRequest) *CreateDiskFromSnapshotInput {
	s.AddOns = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateDiskFromSnapshotInput) SetAvailabilityZone(v string) *CreateDiskFromSnapshotInput {
	s.AvailabilityZone = &v
	return s
}

// SetDiskName sets the DiskName field's value.
func (s *CreateDiskFromSnapshotInput) SetDiskName(v string) *CreateDiskFromSnapshotInput {
	s.DiskName = &v
	return s
}

// SetDiskSnapshotName sets the DiskSnapshotName field's value.
func (s *CreateDiskFromSnapshotInput) SetDiskSnapshotName(v string) *CreateDiskFromSnapshotInput {
	s.DiskSnapshotName = &v
	return s
}

// SetRestoreDate sets the RestoreDate field's value.
func (s *CreateDiskFromSnapshotInput) SetRestoreDate(v string) *CreateDiskFromSnapshotInput {
	s.RestoreDate = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *CreateDiskFromSnapshotInput) SetSizeInGb(v int64) *CreateDiskFromSnapshotInput {
	s.SizeInGb = &v
	return s
}

// SetSourceDiskName sets the SourceDiskName field's value.
func (s *CreateDiskFromSnapshotInput) SetSourceDiskName(v string) *CreateDiskFromSnapshotInput {
	s.SourceDiskName = &v
	return s
}

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

// SetUseLatestRestorableAutoSnapshot sets the UseLatestRestorableAutoSnapshot field's value.
func (s *CreateDiskFromSnapshotInput) SetUseLatestRestorableAutoSnapshot(v bool) *CreateDiskFromSnapshotInput {
	s.UseLatestRestorableAutoSnapshot = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateDiskFromSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CreateDiskFromSnapshotOutput) SetOperations(v []*Operation) *CreateDiskFromSnapshotOutput {
	s.Operations = v
	return s
}

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

	// An array of objects that represent the add-ons to enable for the new disk.
	AddOns []*AddOnRequest `locationName:"addOns" type:"list"`

	// The Availability Zone where you want to create the disk (us-east-2a). Use
	// the same Availability Zone as the Lightsail instance to which you want to
	// attach the disk.
	//
	// Use the get regions operation to list the Availability Zones where Lightsail
	// is currently available.
	//
	// AvailabilityZone is a required field
	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`

	// The unique Lightsail disk name (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`

	// The size of the disk in GB (32).
	//
	// SizeInGb is a required field
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateDiskInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAddOns sets the AddOns field's value.
func (s *CreateDiskInput) SetAddOns(v []*AddOnRequest) *CreateDiskInput {
	s.AddOns = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateDiskInput) SetAvailabilityZone(v string) *CreateDiskInput {
	s.AvailabilityZone = &v
	return s
}

// SetDiskName sets the DiskName field's value.
func (s *CreateDiskInput) SetDiskName(v string) *CreateDiskInput {
	s.DiskName = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *CreateDiskInput) SetSizeInGb(v int64) *CreateDiskInput {
	s.SizeInGb = &v
	return s
}

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

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateDiskOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CreateDiskOutput) SetOperations(v []*Operation) *CreateDiskOutput {
	s.Operations = v
	return s
}

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

	// The unique name of the source disk (Disk-Virginia-1).
	//
	// This parameter cannot be defined together with the instance name parameter.
	// The disk name and instance name parameters are mutually exclusive.
	DiskName *string `locationName:"diskName" type:"string"`

	// The name of the destination disk snapshot (my-disk-snapshot) based on the
	// source disk.
	//
	// DiskSnapshotName is a required field
	DiskSnapshotName *string `locationName:"diskSnapshotName" type:"string" required:"true"`

	// The unique name of the source instance (Amazon_Linux-512MB-Virginia-1). When
	// this is defined, a snapshot of the instance's system volume is created.
	//
	// This parameter cannot be defined together with the disk name parameter. The
	// instance name and disk name parameters are mutually exclusive.
	InstanceName *string `locationName:"instanceName" type:"string"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateDiskSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDiskName sets the DiskName field's value.
func (s *CreateDiskSnapshotInput) SetDiskName(v string) *CreateDiskSnapshotInput {
	s.DiskName = &v
	return s
}

// SetDiskSnapshotName sets the DiskSnapshotName field's value.
func (s *CreateDiskSnapshotInput) SetDiskSnapshotName(v string) *CreateDiskSnapshotInput {
	s.DiskSnapshotName = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *CreateDiskSnapshotInput) SetInstanceName(v string) *CreateDiskSnapshotInput {
	s.InstanceName = &v
	return s
}

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

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateDiskSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOperations sets the Operations field's value.
func (s *CreateDiskSnapshotOutput) SetOperations(v []*Operation) *CreateDiskSnapshotOutput {
	s.Operations = v
	return s
}

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

	// The bundle ID to use for the distribution.
	//
	// A distribution bundle describes the specifications of your distribution,
	// such as the monthly cost and monthly network transfer quota.
	//
	// Use the GetDistributionBundles action to get a list of distribution bundle
	// IDs that you can specify.
	//
	// BundleId is a required field
	BundleId *string `locationName:"bundleId" type:"string" required:"true"`

	// An object that describes the cache behavior settings for the distribution.
	CacheBehaviorSettings *CacheSettings `locationName:"cacheBehaviorSettings" type:"structure"`

	// An array of objects that describe the per-path cache behavior for the distribution.
	CacheBehaviors []*CacheBehaviorPerPath `locationName:"cacheBehaviors" type:"list"`

	// An object that describes the default cache behavior for the distribution.
	//
	// DefaultCacheBehavior is a required field
	DefaultCacheBehavior *CacheBehavior `locationName:"defaultCacheBehavior" type:"structure" required:"true"`

	// The name for the distribution.
	//
	// DistributionName is a required field
	DistributionName *string `locationName:"distributionName" type:"string" required:"true"`

	// The IP address type for the distribution.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	//
	// The default value is dualstack.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// An object that describes the origin resource for the distribution, such as
	// a Lightsail instance, bucket, or load balancer.
	//
	// The distribution pulls, caches, and serves content from the origin.
	//
	// Origin is a required field
	Origin *InputOrigin `locationName:"origin" type:"structure" required:"true"`

	// The tag keys and optional values to add to the distribution during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateDistributionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetBundleId sets the BundleId field's value.
func (s *CreateDistributionInput) SetBundleId(v string) *CreateDistributionInput {
	s.BundleId = &v
	return s
}

// SetCacheBehaviorSettings sets the CacheBehaviorSettings field's value.
func (s *CreateDistributionInput) SetCacheBehaviorSettings(v *CacheSettings) *CreateDistributionInput {
	s.CacheBehaviorSettings = v
	return s
}

// SetCacheBehaviors sets the CacheBehaviors field's value.
func (s *CreateDistributionInput) SetCacheBehaviors(v []*CacheBehaviorPerPath) *CreateDistributionInput {
	s.CacheBehaviors = v
	return s
}

// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
func (s *CreateDistributionInput) SetDefaultCacheBehavior(v *CacheBehavior) *CreateDistributionInput {
	s.DefaultCacheBehavior = v
	return s
}

// SetDistributionName sets the DistributionName field's value.
func (s *CreateDistributionInput) SetDistributionName(v string) *CreateDistributionInput {
	s.DistributionName = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *CreateDistributionInput) SetIpAddressType(v string) *CreateDistributionInput {
	s.IpAddressType = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *CreateDistributionInput) SetOrigin(v *InputOrigin) *CreateDistributionInput {
	s.Origin = v
	return s
}

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

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

	// An object that describes the distribution created.
	Distribution *LightsailDistribution `locationName:"distribution" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

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

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

// SetDistribution sets the Distribution field's value.
func (s *CreateDistributionOutput) SetDistribution(v *LightsailDistribution) *CreateDistributionOutput {
	s.Distribution = v
	return s
}

// SetOperation sets the Operation field's value.
func (s *CreateDistributionOutput) SetOperation(v *Operation) *CreateDistributionOutput {
	s.Operation = v
	return s
}

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

	// An array of key-value pairs containing information about the domain entry
	// request.
	//
	// DomainEntry is a required field
	DomainEntry *DomainEntry `locationName:"domainEntry" type:"structure" required:"true"`

	// The domain name (example.com) for which you want to create the domain entry.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`
}

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

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

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

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

// SetDomainEntry sets the DomainEntry field's value.
func (s *CreateDomainEntryInput) SetDomainEntry(v *DomainEntry) *CreateDomainEntryInput {
	s.DomainEntry = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *CreateDomainEntryInput) SetDomainName(v string) *CreateDomainEntryInput {
	s.DomainName = &v
	return s
}

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

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

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

// SetOperation sets the Operation field's value.
func (s *CreateDomainEntryOutput) SetOperation(v *Operation) *CreateDomainEntryOutput {
	s.Operation = v
	return s
}

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

	// The domain name to manage (example.com).
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateDomainInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDomainName sets the DomainName field's value.
func (s *CreateDomainInput) SetDomainName(v string) *CreateDomainInput {
	s.DomainName = &v
	return s
}

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

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

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

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

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

// SetOperation sets the Operation field's value.
func (s *CreateDomainOutput) SetOperation(v *Operation) *CreateDomainOutput {
	s.Operation = v
	return s
}

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

	// The resource name.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

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

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

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

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

// SetResourceName sets the ResourceName field's value.
func (s *CreateGUISessionAccessDetailsInput) SetResourceName(v string) *CreateGUISessionAccessDetailsInput {
	s.ResourceName = &v
	return s
}

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

	// The reason the operation failed.
	FailureReason *string `locationName:"failureReason" type:"string"`

	// The percentage of completion for the operation.
	PercentageComplete *int64 `locationName:"percentageComplete" type:"integer"`

	// The resource name.
	ResourceName *string `locationName:"resourceName" type:"string"`

	// Returns information about the specified NICE DCV GUI session.
	Sessions []*Session `locationName:"sessions" type:"list"`

	// The status of the operation.
	Status *string `locationName:"status" type:"string" enum:"Status"`
}

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

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

// SetFailureReason sets the FailureReason field's value.
func (s *CreateGUISessionAccessDetailsOutput) SetFailureReason(v string) *CreateGUISessionAccessDetailsOutput {
	s.FailureReason = &v
	return s
}

// SetPercentageComplete sets the PercentageComplete field's value.
func (s *CreateGUISessionAccessDetailsOutput) SetPercentageComplete(v int64) *CreateGUISessionAccessDetailsOutput {
	s.PercentageComplete = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *CreateGUISessionAccessDetailsOutput) SetResourceName(v string) *CreateGUISessionAccessDetailsOutput {
	s.ResourceName = &v
	return s
}

// SetSessions sets the Sessions field's value.
func (s *CreateGUISessionAccessDetailsOutput) SetSessions(v []*Session) *CreateGUISessionAccessDetailsOutput {
	s.Sessions = v
	return s
}

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

type CreateInstanceSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The Lightsail instance on which to base your snapshot.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// The name for your new snapshot.
	//
	// InstanceSnapshotName is a required field
	InstanceSnapshotName *string `locationName:"instanceSnapshotName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateInstanceSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInstanceSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInstanceSnapshotInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}
	if s.InstanceSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *CreateInstanceSnapshotInput) SetInstanceName(v string) *CreateInstanceSnapshotInput {
	s.InstanceName = &v
	return s
}

// SetInstanceSnapshotName sets the InstanceSnapshotName field's value.
func (s *CreateInstanceSnapshotInput) SetInstanceSnapshotName(v string) *CreateInstanceSnapshotInput {
	s.InstanceSnapshotName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateInstanceSnapshotInput) SetTags(v []*Tag) *CreateInstanceSnapshotInput {
	s.Tags = v
	return s
}

type CreateInstanceSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateInstanceSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateInstanceSnapshotOutput) SetOperations(v []*Operation) *CreateInstanceSnapshotOutput {
	s.Operations = v
	return s
}

type CreateInstancesFromSnapshotInput struct {
	_ struct{} `type:"structure"`

	// An array of objects representing the add-ons to enable for the new instance.
	AddOns []*AddOnRequest `locationName:"addOns" type:"list"`

	// An object containing information about one or more disk mappings.
	AttachedDiskMapping map[string][]*DiskMap `locationName:"attachedDiskMapping" type:"map"`

	// The Availability Zone where you want to create your instances. Use the following
	// formatting: us-east-2a (case sensitive). You can get a list of Availability
	// Zones by using the get regions (http://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetRegions.html)
	// operation. Be sure to add the include Availability Zones parameter to your
	// request.
	//
	// AvailabilityZone is a required field
	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`

	// The bundle of specification information for your virtual private server (or
	// instance), including the pricing plan (micro_1_0).
	//
	// BundleId is a required field
	BundleId *string `locationName:"bundleId" type:"string" required:"true"`

	// The names for your new instances.
	//
	// InstanceNames is a required field
	InstanceNames []*string `locationName:"instanceNames" type:"list" required:"true"`

	// The name of the instance snapshot on which you are basing your new instances.
	// Use the get instance snapshots operation to return information about your
	// existing snapshots.
	//
	// Constraint:
	//
	//    * This parameter cannot be defined together with the source instance name
	//    parameter. The instance snapshot name and source instance name parameters
	//    are mutually exclusive.
	InstanceSnapshotName *string `locationName:"instanceSnapshotName" type:"string"`

	// The IP address type for the instance.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	//
	// The default value is dualstack.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// The name for your key pair.
	KeyPairName *string `locationName:"keyPairName" type:"string"`

	// The date of the automatic snapshot to use for the new instance. Use the get
	// auto snapshots operation to identify the dates of the available automatic
	// snapshots.
	//
	// Constraints:
	//
	//    * Must be specified in YYYY-MM-DD format.
	//
	//    * This parameter cannot be defined together with the use latest restorable
	//    auto snapshot parameter. The restore date and use latest restorable auto
	//    snapshot parameters are mutually exclusive.
	//
	//    * Define this parameter only when creating a new instance from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	RestoreDate *string `locationName:"restoreDate" type:"string"`

	// The name of the source instance from which the source automatic snapshot
	// was created.
	//
	// Constraints:
	//
	//    * This parameter cannot be defined together with the instance snapshot
	//    name parameter. The source instance name and instance snapshot name parameters
	//    are mutually exclusive.
	//
	//    * Define this parameter only when creating a new instance from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	SourceInstanceName *string `locationName:"sourceInstanceName" type:"string"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" type:"list"`

	// A Boolean value to indicate whether to use the latest available automatic
	// snapshot.
	//
	// Constraints:
	//
	//    * This parameter cannot be defined together with the restore date parameter.
	//    The use latest restorable auto snapshot and restore date parameters are
	//    mutually exclusive.
	//
	//    * Define this parameter only when creating a new instance from an automatic
	//    snapshot. For more information, see the Amazon Lightsail Developer Guide
	//    (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configuring-automatic-snapshots).
	UseLatestRestorableAutoSnapshot *bool `locationName:"useLatestRestorableAutoSnapshot" type:"boolean"`

	// You can create a launch script that configures a server with additional user
	// data. For example, apt-get -y update.
	//
	// Depending on the machine image you choose, the command to get software on
	// your instance varies. Amazon Linux and CentOS use yum, Debian and Ubuntu
	// use apt-get, and FreeBSD uses pkg. For a complete list, see the Amazon Lightsail
	// Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/compare-options-choose-lightsail-instance-image).
	UserData *string `locationName:"userData" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesFromSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesFromSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInstancesFromSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInstancesFromSnapshotInput"}
	if s.AvailabilityZone == nil {
		invalidParams.Add(request.NewErrParamRequired("AvailabilityZone"))
	}
	if s.BundleId == nil {
		invalidParams.Add(request.NewErrParamRequired("BundleId"))
	}
	if s.InstanceNames == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceNames"))
	}
	if s.AddOns != nil {
		for i, v := range s.AddOns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddOns", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAddOns sets the AddOns field's value.
func (s *CreateInstancesFromSnapshotInput) SetAddOns(v []*AddOnRequest) *CreateInstancesFromSnapshotInput {
	s.AddOns = v
	return s
}

// SetAttachedDiskMapping sets the AttachedDiskMapping field's value.
func (s *CreateInstancesFromSnapshotInput) SetAttachedDiskMapping(v map[string][]*DiskMap) *CreateInstancesFromSnapshotInput {
	s.AttachedDiskMapping = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateInstancesFromSnapshotInput) SetAvailabilityZone(v string) *CreateInstancesFromSnapshotInput {
	s.AvailabilityZone = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *CreateInstancesFromSnapshotInput) SetBundleId(v string) *CreateInstancesFromSnapshotInput {
	s.BundleId = &v
	return s
}

// SetInstanceNames sets the InstanceNames field's value.
func (s *CreateInstancesFromSnapshotInput) SetInstanceNames(v []*string) *CreateInstancesFromSnapshotInput {
	s.InstanceNames = v
	return s
}

// SetInstanceSnapshotName sets the InstanceSnapshotName field's value.
func (s *CreateInstancesFromSnapshotInput) SetInstanceSnapshotName(v string) *CreateInstancesFromSnapshotInput {
	s.InstanceSnapshotName = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *CreateInstancesFromSnapshotInput) SetIpAddressType(v string) *CreateInstancesFromSnapshotInput {
	s.IpAddressType = &v
	return s
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *CreateInstancesFromSnapshotInput) SetKeyPairName(v string) *CreateInstancesFromSnapshotInput {
	s.KeyPairName = &v
	return s
}

// SetRestoreDate sets the RestoreDate field's value.
func (s *CreateInstancesFromSnapshotInput) SetRestoreDate(v string) *CreateInstancesFromSnapshotInput {
	s.RestoreDate = &v
	return s
}

// SetSourceInstanceName sets the SourceInstanceName field's value.
func (s *CreateInstancesFromSnapshotInput) SetSourceInstanceName(v string) *CreateInstancesFromSnapshotInput {
	s.SourceInstanceName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateInstancesFromSnapshotInput) SetTags(v []*Tag) *CreateInstancesFromSnapshotInput {
	s.Tags = v
	return s
}

// SetUseLatestRestorableAutoSnapshot sets the UseLatestRestorableAutoSnapshot field's value.
func (s *CreateInstancesFromSnapshotInput) SetUseLatestRestorableAutoSnapshot(v bool) *CreateInstancesFromSnapshotInput {
	s.UseLatestRestorableAutoSnapshot = &v
	return s
}

// SetUserData sets the UserData field's value.
func (s *CreateInstancesFromSnapshotInput) SetUserData(v string) *CreateInstancesFromSnapshotInput {
	s.UserData = &v
	return s
}

type CreateInstancesFromSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateInstancesFromSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesFromSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateInstancesFromSnapshotOutput) SetOperations(v []*Operation) *CreateInstancesFromSnapshotOutput {
	s.Operations = v
	return s
}

type CreateInstancesInput struct {
	_ struct{} `type:"structure"`

	// An array of objects representing the add-ons to enable for the new instance.
	AddOns []*AddOnRequest `locationName:"addOns" type:"list"`

	// The Availability Zone in which to create your instance. Use the following
	// format: us-east-2a (case sensitive). You can get a list of Availability Zones
	// by using the get regions (http://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetRegions.html)
	// operation. Be sure to add the include Availability Zones parameter to your
	// request.
	//
	// AvailabilityZone is a required field
	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`

	// The ID for a virtual private server image (app_wordpress_4_4 or app_lamp_7_0).
	// Use the get blueprints operation to return a list of available images (or
	// blueprints).
	//
	// Use active blueprints when creating new instances. Inactive blueprints are
	// listed to support customers with existing instances and are not necessarily
	// available to create new instances. Blueprints are marked inactive when they
	// become outdated due to operating system updates or new application releases.
	//
	// BlueprintId is a required field
	BlueprintId *string `locationName:"blueprintId" type:"string" required:"true"`

	// The bundle of specification information for your virtual private server (or
	// instance), including the pricing plan (micro_1_0).
	//
	// BundleId is a required field
	BundleId *string `locationName:"bundleId" type:"string" required:"true"`

	// (Discontinued) The name for your custom image.
	//
	// In releases prior to June 12, 2017, this parameter was ignored by the API.
	// It is now discontinued.
	//
	// Deprecated: CustomImageName has been deprecated
	CustomImageName *string `locationName:"customImageName" deprecated:"true" type:"string"`

	// The names to use for your new Lightsail instances. Separate multiple values
	// using quotation marks and commas, for example: ["MyFirstInstance","MySecondInstance"]
	//
	// InstanceNames is a required field
	InstanceNames []*string `locationName:"instanceNames" type:"list" required:"true"`

	// The IP address type for the instance.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	//
	// The default value is dualstack.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// The name of your key pair.
	KeyPairName *string `locationName:"keyPairName" type:"string"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" type:"list"`

	// A launch script you can create that configures a server with additional user
	// data. For example, you might want to run apt-get -y update.
	//
	// Depending on the machine image you choose, the command to get software on
	// your instance varies. Amazon Linux and CentOS use yum, Debian and Ubuntu
	// use apt-get, and FreeBSD uses pkg. For a complete list, see the Amazon Lightsail
	// Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/compare-options-choose-lightsail-instance-image).
	UserData *string `locationName:"userData" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInstancesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInstancesInput"}
	if s.AvailabilityZone == nil {
		invalidParams.Add(request.NewErrParamRequired("AvailabilityZone"))
	}
	if s.BlueprintId == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintId"))
	}
	if s.BundleId == nil {
		invalidParams.Add(request.NewErrParamRequired("BundleId"))
	}
	if s.InstanceNames == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceNames"))
	}
	if s.AddOns != nil {
		for i, v := range s.AddOns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddOns", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAddOns sets the AddOns field's value.
func (s *CreateInstancesInput) SetAddOns(v []*AddOnRequest) *CreateInstancesInput {
	s.AddOns = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateInstancesInput) SetAvailabilityZone(v string) *CreateInstancesInput {
	s.AvailabilityZone = &v
	return s
}

// SetBlueprintId sets the BlueprintId field's value.
func (s *CreateInstancesInput) SetBlueprintId(v string) *CreateInstancesInput {
	s.BlueprintId = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *CreateInstancesInput) SetBundleId(v string) *CreateInstancesInput {
	s.BundleId = &v
	return s
}

// SetCustomImageName sets the CustomImageName field's value.
func (s *CreateInstancesInput) SetCustomImageName(v string) *CreateInstancesInput {
	s.CustomImageName = &v
	return s
}

// SetInstanceNames sets the InstanceNames field's value.
func (s *CreateInstancesInput) SetInstanceNames(v []*string) *CreateInstancesInput {
	s.InstanceNames = v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *CreateInstancesInput) SetIpAddressType(v string) *CreateInstancesInput {
	s.IpAddressType = &v
	return s
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *CreateInstancesInput) SetKeyPairName(v string) *CreateInstancesInput {
	s.KeyPairName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateInstancesInput) SetTags(v []*Tag) *CreateInstancesInput {
	s.Tags = v
	return s
}

// SetUserData sets the UserData field's value.
func (s *CreateInstancesInput) SetUserData(v string) *CreateInstancesInput {
	s.UserData = &v
	return s
}

type CreateInstancesOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateInstancesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstancesOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateInstancesOutput) SetOperations(v []*Operation) *CreateInstancesOutput {
	s.Operations = v
	return s
}

type CreateKeyPairInput struct {
	_ struct{} `type:"structure"`

	// The name for your new key pair.
	//
	// KeyPairName is a required field
	KeyPairName *string `locationName:"keyPairName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateKeyPairInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateKeyPairInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateKeyPairInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateKeyPairInput"}
	if s.KeyPairName == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyPairName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *CreateKeyPairInput) SetKeyPairName(v string) *CreateKeyPairInput {
	s.KeyPairName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateKeyPairInput) SetTags(v []*Tag) *CreateKeyPairInput {
	s.Tags = v
	return s
}

type CreateKeyPairOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the new key pair
	// you just created.
	KeyPair *KeyPair `locationName:"keyPair" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`

	// A base64-encoded RSA private key.
	PrivateKeyBase64 *string `locationName:"privateKeyBase64" type:"string"`

	// A base64-encoded public key of the ssh-rsa type.
	PublicKeyBase64 *string `locationName:"publicKeyBase64" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateKeyPairOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateKeyPairOutput) GoString() string {
	return s.String()
}

// SetKeyPair sets the KeyPair field's value.
func (s *CreateKeyPairOutput) SetKeyPair(v *KeyPair) *CreateKeyPairOutput {
	s.KeyPair = v
	return s
}

// SetOperation sets the Operation field's value.
func (s *CreateKeyPairOutput) SetOperation(v *Operation) *CreateKeyPairOutput {
	s.Operation = v
	return s
}

// SetPrivateKeyBase64 sets the PrivateKeyBase64 field's value.
func (s *CreateKeyPairOutput) SetPrivateKeyBase64(v string) *CreateKeyPairOutput {
	s.PrivateKeyBase64 = &v
	return s
}

// SetPublicKeyBase64 sets the PublicKeyBase64 field's value.
func (s *CreateKeyPairOutput) SetPublicKeyBase64(v string) *CreateKeyPairOutput {
	s.PublicKeyBase64 = &v
	return s
}

type CreateLoadBalancerInput struct {
	_ struct{} `type:"structure"`

	// The optional alternative domains and subdomains to use with your SSL/TLS
	// certificate (www.example.com, example.com, m.example.com, blog.example.com).
	CertificateAlternativeNames []*string `locationName:"certificateAlternativeNames" type:"list"`

	// The domain name with which your certificate is associated (example.com).
	//
	// If you specify certificateDomainName, then certificateName is required (and
	// vice-versa).
	CertificateDomainName *string `locationName:"certificateDomainName" type:"string"`

	// The name of the SSL/TLS certificate.
	//
	// If you specify certificateName, then certificateDomainName is required (and
	// vice-versa).
	CertificateName *string `locationName:"certificateName" type:"string"`

	// The path you provided to perform the load balancer health check. If you didn't
	// specify a health check path, Lightsail uses the root path of your website
	// ("/").
	//
	// You may want to specify a custom health check path other than the root of
	// your application if your home page loads slowly or has a lot of media or
	// scripting on it.
	HealthCheckPath *string `locationName:"healthCheckPath" type:"string"`

	// The instance port where you're creating your load balancer.
	//
	// InstancePort is a required field
	InstancePort *int64 `locationName:"instancePort" type:"integer" required:"true"`

	// The IP address type for the load balancer.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	//
	// The default value is dualstack.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// The name of your load balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" type:"list"`

	// The name of the TLS policy to apply to the load balancer.
	//
	// Use the GetLoadBalancerTlsPolicies (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetLoadBalancerTlsPolicies.html)
	// action to get a list of TLS policy names that you can specify.
	//
	// For more information about load balancer TLS policies, see Configuring TLS
	// security policies on your Amazon Lightsail load balancers (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy)
	// in the Amazon Lightsail Developer Guide.
	TlsPolicyName *string `locationName:"tlsPolicyName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateLoadBalancerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateLoadBalancerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateLoadBalancerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateLoadBalancerInput"}
	if s.InstancePort == nil {
		invalidParams.Add(request.NewErrParamRequired("InstancePort"))
	}
	if s.InstancePort != nil && *s.InstancePort < -1 {
		invalidParams.Add(request.NewErrParamMinValue("InstancePort", -1))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateAlternativeNames sets the CertificateAlternativeNames field's value.
func (s *CreateLoadBalancerInput) SetCertificateAlternativeNames(v []*string) *CreateLoadBalancerInput {
	s.CertificateAlternativeNames = v
	return s
}

// SetCertificateDomainName sets the CertificateDomainName field's value.
func (s *CreateLoadBalancerInput) SetCertificateDomainName(v string) *CreateLoadBalancerInput {
	s.CertificateDomainName = &v
	return s
}

// SetCertificateName sets the CertificateName field's value.
func (s *CreateLoadBalancerInput) SetCertificateName(v string) *CreateLoadBalancerInput {
	s.CertificateName = &v
	return s
}

// SetHealthCheckPath sets the HealthCheckPath field's value.
func (s *CreateLoadBalancerInput) SetHealthCheckPath(v string) *CreateLoadBalancerInput {
	s.HealthCheckPath = &v
	return s
}

// SetInstancePort sets the InstancePort field's value.
func (s *CreateLoadBalancerInput) SetInstancePort(v int64) *CreateLoadBalancerInput {
	s.InstancePort = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *CreateLoadBalancerInput) SetIpAddressType(v string) *CreateLoadBalancerInput {
	s.IpAddressType = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *CreateLoadBalancerInput) SetLoadBalancerName(v string) *CreateLoadBalancerInput {
	s.LoadBalancerName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateLoadBalancerInput) SetTags(v []*Tag) *CreateLoadBalancerInput {
	s.Tags = v
	return s
}

// SetTlsPolicyName sets the TlsPolicyName field's value.
func (s *CreateLoadBalancerInput) SetTlsPolicyName(v string) *CreateLoadBalancerInput {
	s.TlsPolicyName = &v
	return s
}

type CreateLoadBalancerOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateLoadBalancerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateLoadBalancerOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateLoadBalancerOutput) SetOperations(v []*Operation) *CreateLoadBalancerOutput {
	s.Operations = v
	return s
}

type CreateLoadBalancerTlsCertificateInput struct {
	_ struct{} `type:"structure"`

	// An array of strings listing alternative domains and subdomains for your SSL/TLS
	// certificate. Lightsail will de-dupe the names for you. You can have a maximum
	// of 9 alternative names (in addition to the 1 primary domain). We do not support
	// wildcards (*.example.com).
	CertificateAlternativeNames []*string `locationName:"certificateAlternativeNames" type:"list"`

	// The domain name (example.com) for your SSL/TLS certificate.
	//
	// CertificateDomainName is a required field
	CertificateDomainName *string `locationName:"certificateDomainName" type:"string" required:"true"`

	// The SSL/TLS certificate name.
	//
	// You can have up to 10 certificates in your account at one time. Each Lightsail
	// load balancer can have up to 2 certificates associated with it at one time.
	// There is also an overall limit to the number of certificates that can be
	// issue in a 365-day period. For more information, see Limits (http://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html).
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`

	// The load balancer name where you want to create the SSL/TLS certificate.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateLoadBalancerTlsCertificateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateLoadBalancerTlsCertificateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateLoadBalancerTlsCertificateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateLoadBalancerTlsCertificateInput"}
	if s.CertificateDomainName == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateDomainName"))
	}
	if s.CertificateName == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateName"))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateAlternativeNames sets the CertificateAlternativeNames field's value.
func (s *CreateLoadBalancerTlsCertificateInput) SetCertificateAlternativeNames(v []*string) *CreateLoadBalancerTlsCertificateInput {
	s.CertificateAlternativeNames = v
	return s
}

// SetCertificateDomainName sets the CertificateDomainName field's value.
func (s *CreateLoadBalancerTlsCertificateInput) SetCertificateDomainName(v string) *CreateLoadBalancerTlsCertificateInput {
	s.CertificateDomainName = &v
	return s
}

// SetCertificateName sets the CertificateName field's value.
func (s *CreateLoadBalancerTlsCertificateInput) SetCertificateName(v string) *CreateLoadBalancerTlsCertificateInput {
	s.CertificateName = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *CreateLoadBalancerTlsCertificateInput) SetLoadBalancerName(v string) *CreateLoadBalancerTlsCertificateInput {
	s.LoadBalancerName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateLoadBalancerTlsCertificateInput) SetTags(v []*Tag) *CreateLoadBalancerTlsCertificateInput {
	s.Tags = v
	return s
}

type CreateLoadBalancerTlsCertificateOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateLoadBalancerTlsCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateLoadBalancerTlsCertificateOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateLoadBalancerTlsCertificateOutput) SetOperations(v []*Operation) *CreateLoadBalancerTlsCertificateOutput {
	s.Operations = v
	return s
}

type CreateRelationalDatabaseFromSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The Availability Zone in which to create your new database. Use the us-east-2a
	// case-sensitive format.
	//
	// You can get a list of Availability Zones by using the get regions operation.
	// Be sure to add the include relational database Availability Zones parameter
	// to your request.
	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`

	// Specifies the accessibility options for your new database. A value of true
	// specifies a database that is available to resources outside of your Lightsail
	// account. A value of false specifies a database that is available only to
	// your Lightsail resources in the same region as your database.
	PubliclyAccessible *bool `locationName:"publiclyAccessible" type:"boolean"`

	// The bundle ID for your new database. A bundle describes the performance specifications
	// for your database.
	//
	// You can get a list of database bundle IDs by using the get relational database
	// bundles operation.
	//
	// When creating a new database from a snapshot, you cannot choose a bundle
	// that is smaller than the bundle of the source database.
	RelationalDatabaseBundleId *string `locationName:"relationalDatabaseBundleId" type:"string"`

	// The name to use for your new Lightsail database resource.
	//
	// Constraints:
	//
	//    * Must contain from 2 to 255 alphanumeric characters, or hyphens.
	//
	//    * The first and last character must be a letter or number.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// The name of the database snapshot from which to create your new database.
	RelationalDatabaseSnapshotName *string `locationName:"relationalDatabaseSnapshotName" type:"string"`

	// The date and time to restore your database from.
	//
	// Constraints:
	//
	//    * Must be before the latest restorable time for the database.
	//
	//    * Cannot be specified if the use latest restorable time parameter is true.
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use a
	//    restore time of October 1, 2018, at 8 PM UTC, then you input 1538424000
	//    as the restore time.
	RestoreTime *time.Time `locationName:"restoreTime" type:"timestamp"`

	// The name of the source database.
	SourceRelationalDatabaseName *string `locationName:"sourceRelationalDatabaseName" type:"string"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" type:"list"`

	// Specifies whether your database is restored from the latest backup time.
	// A value of true restores from the latest backup time.
	//
	// Default: false
	//
	// Constraints: Cannot be specified if the restore time parameter is provided.
	UseLatestRestorableTime *bool `locationName:"useLatestRestorableTime" 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 CreateRelationalDatabaseFromSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseFromSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRelationalDatabaseFromSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRelationalDatabaseFromSnapshotInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetAvailabilityZone(v string) *CreateRelationalDatabaseFromSnapshotInput {
	s.AvailabilityZone = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetPubliclyAccessible(v bool) *CreateRelationalDatabaseFromSnapshotInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRelationalDatabaseBundleId sets the RelationalDatabaseBundleId field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetRelationalDatabaseBundleId(v string) *CreateRelationalDatabaseFromSnapshotInput {
	s.RelationalDatabaseBundleId = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetRelationalDatabaseName(v string) *CreateRelationalDatabaseFromSnapshotInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetRelationalDatabaseSnapshotName sets the RelationalDatabaseSnapshotName field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetRelationalDatabaseSnapshotName(v string) *CreateRelationalDatabaseFromSnapshotInput {
	s.RelationalDatabaseSnapshotName = &v
	return s
}

// SetRestoreTime sets the RestoreTime field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetRestoreTime(v time.Time) *CreateRelationalDatabaseFromSnapshotInput {
	s.RestoreTime = &v
	return s
}

// SetSourceRelationalDatabaseName sets the SourceRelationalDatabaseName field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetSourceRelationalDatabaseName(v string) *CreateRelationalDatabaseFromSnapshotInput {
	s.SourceRelationalDatabaseName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetTags(v []*Tag) *CreateRelationalDatabaseFromSnapshotInput {
	s.Tags = v
	return s
}

// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.
func (s *CreateRelationalDatabaseFromSnapshotInput) SetUseLatestRestorableTime(v bool) *CreateRelationalDatabaseFromSnapshotInput {
	s.UseLatestRestorableTime = &v
	return s
}

type CreateRelationalDatabaseFromSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateRelationalDatabaseFromSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseFromSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateRelationalDatabaseFromSnapshotOutput) SetOperations(v []*Operation) *CreateRelationalDatabaseFromSnapshotOutput {
	s.Operations = v
	return s
}

type CreateRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The Availability Zone in which to create your new database. Use the us-east-2a
	// case-sensitive format.
	//
	// You can get a list of Availability Zones by using the get regions operation.
	// Be sure to add the include relational database Availability Zones parameter
	// to your request.
	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`

	// The meaning of this parameter differs according to the database engine you
	// use.
	//
	// MySQL
	//
	// The name of the database to create when the Lightsail database resource is
	// created. If this parameter isn't specified, no database is created in the
	// database resource.
	//
	// Constraints:
	//
	//    * Must contain 1 to 64 letters or numbers.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0- 9).
	//
	//    * Can't be a word reserved by the specified database engine. For more
	//    information about reserved words in MySQL, see the Keywords and Reserved
	//    Words articles for MySQL 5.6 (https://dev.mysql.com/doc/refman/5.6/en/keywords.html),
	//    MySQL 5.7 (https://dev.mysql.com/doc/refman/5.7/en/keywords.html), and
	//    MySQL 8.0 (https://dev.mysql.com/doc/refman/8.0/en/keywords.html).
	//
	// PostgreSQL
	//
	// The name of the database to create when the Lightsail database resource is
	// created. If this parameter isn't specified, a database named postgres is
	// created in the database resource.
	//
	// Constraints:
	//
	//    * Must contain 1 to 63 letters or numbers.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0- 9).
	//
	//    * Can't be a word reserved by the specified database engine. For more
	//    information about reserved words in PostgreSQL, see the SQL Key Words
	//    articles for PostgreSQL 9.6 (https://www.postgresql.org/docs/9.6/sql-keywords-appendix.html),
	//    PostgreSQL 10 (https://www.postgresql.org/docs/10/sql-keywords-appendix.html),
	//    PostgreSQL 11 (https://www.postgresql.org/docs/11/sql-keywords-appendix.html),
	//    and PostgreSQL 12 (https://www.postgresql.org/docs/12/sql-keywords-appendix.html).
	//
	// MasterDatabaseName is a required field
	MasterDatabaseName *string `locationName:"masterDatabaseName" type:"string" required:"true"`

	// The password for the master user. The password can include any printable
	// ASCII character except "/", """, or "@". It cannot contain spaces.
	//
	// MySQL
	//
	// Constraints: Must contain from 8 to 41 characters.
	//
	// PostgreSQL
	//
	// Constraints: Must contain from 8 to 128 characters.
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateRelationalDatabaseInput's
	// String and GoString methods.
	MasterUserPassword *string `locationName:"masterUserPassword" type:"string" sensitive:"true"`

	// The name for the master user.
	//
	// MySQL
	//
	// Constraints:
	//
	//    * Required for MySQL.
	//
	//    * Must be 1 to 16 letters or numbers. Can contain underscores.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine. For more information
	//    about reserved words in MySQL 5.6 or 5.7, see the Keywords and Reserved
	//    Words articles for MySQL 5.6 (https://dev.mysql.com/doc/refman/5.6/en/keywords.html),
	//    MySQL 5.7 (https://dev.mysql.com/doc/refman/5.7/en/keywords.html), or
	//    MySQL 8.0 (https://dev.mysql.com/doc/refman/8.0/en/keywords.html).
	//
	// PostgreSQL
	//
	// Constraints:
	//
	//    * Required for PostgreSQL.
	//
	//    * Must be 1 to 63 letters or numbers. Can contain underscores.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine. For more information
	//    about reserved words in MySQL 5.6 or 5.7, see the Keywords and Reserved
	//    Words articles for PostgreSQL 9.6 (https://www.postgresql.org/docs/9.6/sql-keywords-appendix.html),
	//    PostgreSQL 10 (https://www.postgresql.org/docs/10/sql-keywords-appendix.html),
	//    PostgreSQL 11 (https://www.postgresql.org/docs/11/sql-keywords-appendix.html),
	//    and PostgreSQL 12 (https://www.postgresql.org/docs/12/sql-keywords-appendix.html).
	//
	// MasterUsername is a required field
	MasterUsername *string `locationName:"masterUsername" type:"string" required:"true"`

	// The daily time range during which automated backups are created for your
	// new database if automated backups are enabled.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each AWS Region. For more information about the preferred backup
	// window time blocks for each region, see the Working With Backups (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
	// guide in the Amazon Relational Database Service documentation.
	//
	// Constraints:
	//
	//    * Must be in the hh24:mi-hh24:mi format. Example: 16:00-16:30
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `locationName:"preferredBackupWindow" type:"string"`

	// The weekly time range during which system maintenance can occur on your new
	// database.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each AWS Region, occurring on a random day of the week.
	//
	// Constraints:
	//
	//    * Must be in the ddd:hh24:mi-ddd:hh24:mi format.
	//
	//    * Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
	//
	//    * Must be at least 30 minutes.
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Example: Tue:17:00-Tue:17:30
	PreferredMaintenanceWindow *string `locationName:"preferredMaintenanceWindow" type:"string"`

	// Specifies the accessibility options for your new database. A value of true
	// specifies a database that is available to resources outside of your Lightsail
	// account. A value of false specifies a database that is available only to
	// your Lightsail resources in the same region as your database.
	PubliclyAccessible *bool `locationName:"publiclyAccessible" type:"boolean"`

	// The blueprint ID for your new database. A blueprint describes the major engine
	// version of a database.
	//
	// You can get a list of database blueprints IDs by using the get relational
	// database blueprints operation.
	//
	// RelationalDatabaseBlueprintId is a required field
	RelationalDatabaseBlueprintId *string `locationName:"relationalDatabaseBlueprintId" type:"string" required:"true"`

	// The bundle ID for your new database. A bundle describes the performance specifications
	// for your database.
	//
	// You can get a list of database bundle IDs by using the get relational database
	// bundles operation.
	//
	// RelationalDatabaseBundleId is a required field
	RelationalDatabaseBundleId *string `locationName:"relationalDatabaseBundleId" type:"string" required:"true"`

	// The name to use for your new Lightsail database resource.
	//
	// Constraints:
	//
	//    * Must contain from 2 to 255 alphanumeric characters, or hyphens.
	//
	//    * The first and last character must be a letter or number.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRelationalDatabaseInput"}
	if s.MasterDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("MasterDatabaseName"))
	}
	if s.MasterUsername == nil {
		invalidParams.Add(request.NewErrParamRequired("MasterUsername"))
	}
	if s.RelationalDatabaseBlueprintId == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseBlueprintId"))
	}
	if s.RelationalDatabaseBundleId == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseBundleId"))
	}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateRelationalDatabaseInput) SetAvailabilityZone(v string) *CreateRelationalDatabaseInput {
	s.AvailabilityZone = &v
	return s
}

// SetMasterDatabaseName sets the MasterDatabaseName field's value.
func (s *CreateRelationalDatabaseInput) SetMasterDatabaseName(v string) *CreateRelationalDatabaseInput {
	s.MasterDatabaseName = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *CreateRelationalDatabaseInput) SetMasterUserPassword(v string) *CreateRelationalDatabaseInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *CreateRelationalDatabaseInput) SetMasterUsername(v string) *CreateRelationalDatabaseInput {
	s.MasterUsername = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *CreateRelationalDatabaseInput) SetPreferredBackupWindow(v string) *CreateRelationalDatabaseInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *CreateRelationalDatabaseInput) SetPreferredMaintenanceWindow(v string) *CreateRelationalDatabaseInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateRelationalDatabaseInput) SetPubliclyAccessible(v bool) *CreateRelationalDatabaseInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRelationalDatabaseBlueprintId sets the RelationalDatabaseBlueprintId field's value.
func (s *CreateRelationalDatabaseInput) SetRelationalDatabaseBlueprintId(v string) *CreateRelationalDatabaseInput {
	s.RelationalDatabaseBlueprintId = &v
	return s
}

// SetRelationalDatabaseBundleId sets the RelationalDatabaseBundleId field's value.
func (s *CreateRelationalDatabaseInput) SetRelationalDatabaseBundleId(v string) *CreateRelationalDatabaseInput {
	s.RelationalDatabaseBundleId = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *CreateRelationalDatabaseInput) SetRelationalDatabaseName(v string) *CreateRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRelationalDatabaseInput) SetTags(v []*Tag) *CreateRelationalDatabaseInput {
	s.Tags = v
	return s
}

type CreateRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateRelationalDatabaseOutput) SetOperations(v []*Operation) *CreateRelationalDatabaseOutput {
	s.Operations = v
	return s
}

type CreateRelationalDatabaseSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the database on which to base your new snapshot.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// The name for your new database snapshot.
	//
	// Constraints:
	//
	//    * Must contain from 2 to 255 alphanumeric characters, or hyphens.
	//
	//    * The first and last character must be a letter or number.
	//
	// RelationalDatabaseSnapshotName is a required field
	RelationalDatabaseSnapshotName *string `locationName:"relationalDatabaseSnapshotName" type:"string" required:"true"`

	// The tag keys and optional values to add to the resource during create.
	//
	// Use the TagResource action to tag a resource after it's created.
	Tags []*Tag `locationName:"tags" 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 CreateRelationalDatabaseSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRelationalDatabaseSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRelationalDatabaseSnapshotInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}
	if s.RelationalDatabaseSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *CreateRelationalDatabaseSnapshotInput) SetRelationalDatabaseName(v string) *CreateRelationalDatabaseSnapshotInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetRelationalDatabaseSnapshotName sets the RelationalDatabaseSnapshotName field's value.
func (s *CreateRelationalDatabaseSnapshotInput) SetRelationalDatabaseSnapshotName(v string) *CreateRelationalDatabaseSnapshotInput {
	s.RelationalDatabaseSnapshotName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRelationalDatabaseSnapshotInput) SetTags(v []*Tag) *CreateRelationalDatabaseSnapshotInput {
	s.Tags = v
	return s
}

type CreateRelationalDatabaseSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 CreateRelationalDatabaseSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRelationalDatabaseSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *CreateRelationalDatabaseSnapshotOutput) SetOperations(v []*Operation) *CreateRelationalDatabaseSnapshotOutput {
	s.Operations = v
	return s
}

type DeleteAlarmInput struct {
	_ struct{} `type:"structure"`

	// The name of the alarm to delete.
	//
	// AlarmName is a required field
	AlarmName *string `locationName:"alarmName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAlarmInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAlarmInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteAlarmInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteAlarmInput"}
	if s.AlarmName == nil {
		invalidParams.Add(request.NewErrParamRequired("AlarmName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlarmName sets the AlarmName field's value.
func (s *DeleteAlarmInput) SetAlarmName(v string) *DeleteAlarmInput {
	s.AlarmName = &v
	return s
}

type DeleteAlarmOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteAlarmOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAlarmOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteAlarmOutput) SetOperations(v []*Operation) *DeleteAlarmOutput {
	s.Operations = v
	return s
}

type DeleteAutoSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The date of the automatic snapshot to delete in YYYY-MM-DD format. Use the
	// get auto snapshots operation to get the available automatic snapshots for
	// a resource.
	//
	// Date is a required field
	Date *string `locationName:"date" type:"string" required:"true"`

	// The name of the source instance or disk from which to delete the automatic
	// snapshot.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAutoSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAutoSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteAutoSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteAutoSnapshotInput"}
	if s.Date == nil {
		invalidParams.Add(request.NewErrParamRequired("Date"))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDate sets the Date field's value.
func (s *DeleteAutoSnapshotInput) SetDate(v string) *DeleteAutoSnapshotInput {
	s.Date = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *DeleteAutoSnapshotInput) SetResourceName(v string) *DeleteAutoSnapshotInput {
	s.ResourceName = &v
	return s
}

type DeleteAutoSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteAutoSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAutoSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteAutoSnapshotOutput) SetOperations(v []*Operation) *DeleteAutoSnapshotOutput {
	s.Operations = v
	return s
}

type DeleteBucketAccessKeyInput struct {
	_ struct{} `type:"structure"`

	// The ID of the access key to delete.
	//
	// Use the GetBucketAccessKeys (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketAccessKeys.html)
	// action to get a list of access key IDs that you can specify.
	//
	// AccessKeyId is a required field
	AccessKeyId *string `locationName:"accessKeyId" type:"string" required:"true"`

	// The name of the bucket that the access key belongs to.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBucketAccessKeyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBucketAccessKeyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteBucketAccessKeyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAccessKeyInput"}
	if s.AccessKeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("AccessKeyId"))
	}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessKeyId sets the AccessKeyId field's value.
func (s *DeleteBucketAccessKeyInput) SetAccessKeyId(v string) *DeleteBucketAccessKeyInput {
	s.AccessKeyId = &v
	return s
}

// SetBucketName sets the BucketName field's value.
func (s *DeleteBucketAccessKeyInput) SetBucketName(v string) *DeleteBucketAccessKeyInput {
	s.BucketName = &v
	return s
}

type DeleteBucketAccessKeyOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteBucketAccessKeyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBucketAccessKeyOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteBucketAccessKeyOutput) SetOperations(v []*Operation) *DeleteBucketAccessKeyOutput {
	s.Operations = v
	return s
}

type DeleteBucketInput struct {
	_ struct{} `type:"structure"`

	// The name of the bucket to delete.
	//
	// Use the GetBuckets (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBuckets.html)
	// action to get a list of bucket names that you can specify.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// A Boolean value that indicates whether to force delete the bucket.
	//
	// You must force delete the bucket if it has one of the following conditions:
	//
	//    * The bucket is the origin of a distribution.
	//
	//    * The bucket has instances that were granted access to it using the SetResourceAccessForBucket
	//    (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html)
	//    action.
	//
	//    * The bucket has objects.
	//
	//    * The bucket has access keys.
	//
	// Force deleting a bucket might impact other resources that rely on the bucket,
	// such as instances, distributions, or software that use the issued access
	// keys.
	ForceDelete *bool `locationName:"forceDelete" 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 DeleteBucketInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBucketInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteBucketInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *DeleteBucketInput) SetBucketName(v string) *DeleteBucketInput {
	s.BucketName = &v
	return s
}

// SetForceDelete sets the ForceDelete field's value.
func (s *DeleteBucketInput) SetForceDelete(v bool) *DeleteBucketInput {
	s.ForceDelete = &v
	return s
}

type DeleteBucketOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteBucketOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBucketOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteBucketOutput) SetOperations(v []*Operation) *DeleteBucketOutput {
	s.Operations = v
	return s
}

type DeleteCertificateInput struct {
	_ struct{} `type:"structure"`

	// The name of the certificate to delete.
	//
	// Use the GetCertificates action to get a list of certificate names that you
	// can specify.
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCertificateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCertificateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteCertificateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteCertificateInput"}
	if s.CertificateName == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateName sets the CertificateName field's value.
func (s *DeleteCertificateInput) SetCertificateName(v string) *DeleteCertificateInput {
	s.CertificateName = &v
	return s
}

type DeleteCertificateOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCertificateOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteCertificateOutput) SetOperations(v []*Operation) *DeleteCertificateOutput {
	s.Operations = v
	return s
}

type DeleteContactMethodInput struct {
	_ struct{} `type:"structure"`

	// The protocol that will be deleted, such as Email or SMS (text messaging).
	//
	// To delete an Email and an SMS contact method if you added both, you must
	// run separate DeleteContactMethod actions to delete each protocol.
	//
	// Protocol is a required field
	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"ContactProtocol"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactMethodInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactMethodInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContactMethodInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContactMethodInput"}
	if s.Protocol == nil {
		invalidParams.Add(request.NewErrParamRequired("Protocol"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetProtocol sets the Protocol field's value.
func (s *DeleteContactMethodInput) SetProtocol(v string) *DeleteContactMethodInput {
	s.Protocol = &v
	return s
}

type DeleteContactMethodOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteContactMethodOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactMethodOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteContactMethodOutput) SetOperations(v []*Operation) *DeleteContactMethodOutput {
	s.Operations = v
	return s
}

type DeleteContainerImageInput struct {
	_ struct{} `type:"structure"`

	// The name of the container image to delete from the container service.
	//
	// Use the GetContainerImages action to get the name of the container images
	// that are registered to a container service.
	//
	// Container images sourced from your Lightsail container service, that are
	// registered and stored on your service, start with a colon (:). For example,
	// :container-service-1.mystaticwebsite.1. Container images sourced from a public
	// registry like Docker Hub don't start with a colon. For example, nginx:latest
	// or nginx.
	//
	// Image is a required field
	Image *string `locationName:"image" type:"string" required:"true"`

	// The name of the container service for which to delete a registered container
	// image.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerImageInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerImageInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContainerImageInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContainerImageInput"}
	if s.Image == nil {
		invalidParams.Add(request.NewErrParamRequired("Image"))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetImage sets the Image field's value.
func (s *DeleteContainerImageInput) SetImage(v string) *DeleteContainerImageInput {
	s.Image = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *DeleteContainerImageInput) SetServiceName(v string) *DeleteContainerImageInput {
	s.ServiceName = &v
	return s
}

type DeleteContainerImageOutput 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 DeleteContainerImageOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerImageOutput) GoString() string {
	return s.String()
}

type DeleteContainerServiceInput struct {
	_ struct{} `type:"structure"`

	// The name of the container service to delete.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerServiceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerServiceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContainerServiceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContainerServiceInput"}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServiceName sets the ServiceName field's value.
func (s *DeleteContainerServiceInput) SetServiceName(v string) *DeleteContainerServiceInput {
	s.ServiceName = &v
	return s
}

type DeleteContainerServiceOutput 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 DeleteContainerServiceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContainerServiceOutput) GoString() string {
	return s.String()
}

type DeleteDiskInput struct {
	_ struct{} `type:"structure"`

	// The unique name of the disk you want to delete (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`

	// A Boolean value to indicate whether to delete all add-ons for the disk.
	ForceDeleteAddOns *bool `locationName:"forceDeleteAddOns" 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 DeleteDiskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDiskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDiskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDiskInput"}
	if s.DiskName == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskName sets the DiskName field's value.
func (s *DeleteDiskInput) SetDiskName(v string) *DeleteDiskInput {
	s.DiskName = &v
	return s
}

// SetForceDeleteAddOns sets the ForceDeleteAddOns field's value.
func (s *DeleteDiskInput) SetForceDeleteAddOns(v bool) *DeleteDiskInput {
	s.ForceDeleteAddOns = &v
	return s
}

type DeleteDiskOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteDiskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDiskOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteDiskOutput) SetOperations(v []*Operation) *DeleteDiskOutput {
	s.Operations = v
	return s
}

type DeleteDiskSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the disk snapshot you want to delete (my-disk-snapshot).
	//
	// DiskSnapshotName is a required field
	DiskSnapshotName *string `locationName:"diskSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDiskSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDiskSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDiskSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDiskSnapshotInput"}
	if s.DiskSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskSnapshotName sets the DiskSnapshotName field's value.
func (s *DeleteDiskSnapshotInput) SetDiskSnapshotName(v string) *DeleteDiskSnapshotInput {
	s.DiskSnapshotName = &v
	return s
}

type DeleteDiskSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteDiskSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDiskSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteDiskSnapshotOutput) SetOperations(v []*Operation) *DeleteDiskSnapshotOutput {
	s.Operations = v
	return s
}

type DeleteDistributionInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution to delete.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	DistributionName *string `locationName:"distributionName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDistributionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDistributionInput) GoString() string {
	return s.String()
}

// SetDistributionName sets the DistributionName field's value.
func (s *DeleteDistributionInput) SetDistributionName(v string) *DeleteDistributionInput {
	s.DistributionName = &v
	return s
}

type DeleteDistributionOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the result of the action, such as the status of
	// the request, the timestamp of the request, and the resources affected by
	// the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDistributionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDistributionOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *DeleteDistributionOutput) SetOperation(v *Operation) *DeleteDistributionOutput {
	s.Operation = v
	return s
}

type DeleteDomainEntryInput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about your domain entries.
	//
	// DomainEntry is a required field
	DomainEntry *DomainEntry `locationName:"domainEntry" type:"structure" required:"true"`

	// The name of the domain entry to delete.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainEntryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainEntryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDomainEntryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDomainEntryInput"}
	if s.DomainEntry == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainEntry"))
	}
	if s.DomainName == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainEntry sets the DomainEntry field's value.
func (s *DeleteDomainEntryInput) SetDomainEntry(v *DomainEntry) *DeleteDomainEntryInput {
	s.DomainEntry = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *DeleteDomainEntryInput) SetDomainName(v string) *DeleteDomainEntryInput {
	s.DomainName = &v
	return s
}

type DeleteDomainEntryOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainEntryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainEntryOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *DeleteDomainEntryOutput) SetOperation(v *Operation) *DeleteDomainEntryOutput {
	s.Operation = v
	return s
}

type DeleteDomainInput struct {
	_ struct{} `type:"structure"`

	// The specific domain name to delete.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDomainInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDomainInput"}
	if s.DomainName == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainName sets the DomainName field's value.
func (s *DeleteDomainInput) SetDomainName(v string) *DeleteDomainInput {
	s.DomainName = &v
	return s
}

type DeleteDomainOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDomainOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *DeleteDomainOutput) SetOperation(v *Operation) *DeleteDomainOutput {
	s.Operation = v
	return s
}

type DeleteInstanceInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value to indicate whether to delete all add-ons for the instance.
	ForceDeleteAddOns *bool `locationName:"forceDeleteAddOns" type:"boolean"`

	// The name of the instance to delete.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInstanceInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetForceDeleteAddOns sets the ForceDeleteAddOns field's value.
func (s *DeleteInstanceInput) SetForceDeleteAddOns(v bool) *DeleteInstanceInput {
	s.ForceDeleteAddOns = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *DeleteInstanceInput) SetInstanceName(v string) *DeleteInstanceInput {
	s.InstanceName = &v
	return s
}

type DeleteInstanceOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteInstanceOutput) SetOperations(v []*Operation) *DeleteInstanceOutput {
	s.Operations = v
	return s
}

type DeleteInstanceSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the snapshot to delete.
	//
	// InstanceSnapshotName is a required field
	InstanceSnapshotName *string `locationName:"instanceSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInstanceSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInstanceSnapshotInput"}
	if s.InstanceSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceSnapshotName sets the InstanceSnapshotName field's value.
func (s *DeleteInstanceSnapshotInput) SetInstanceSnapshotName(v string) *DeleteInstanceSnapshotInput {
	s.InstanceSnapshotName = &v
	return s
}

type DeleteInstanceSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteInstanceSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteInstanceSnapshotOutput) SetOperations(v []*Operation) *DeleteInstanceSnapshotOutput {
	s.Operations = v
	return s
}

type DeleteKeyPairInput struct {
	_ struct{} `type:"structure"`

	// The RSA fingerprint of the Lightsail default key pair to delete.
	//
	// The expectedFingerprint parameter is required only when specifying to delete
	// a Lightsail default key pair.
	ExpectedFingerprint *string `locationName:"expectedFingerprint" type:"string"`

	// The name of the key pair to delete.
	//
	// KeyPairName is a required field
	KeyPairName *string `locationName:"keyPairName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKeyPairInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKeyPairInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteKeyPairInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteKeyPairInput"}
	if s.KeyPairName == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyPairName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExpectedFingerprint sets the ExpectedFingerprint field's value.
func (s *DeleteKeyPairInput) SetExpectedFingerprint(v string) *DeleteKeyPairInput {
	s.ExpectedFingerprint = &v
	return s
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *DeleteKeyPairInput) SetKeyPairName(v string) *DeleteKeyPairInput {
	s.KeyPairName = &v
	return s
}

type DeleteKeyPairOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKeyPairOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKeyPairOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *DeleteKeyPairOutput) SetOperation(v *Operation) *DeleteKeyPairOutput {
	s.Operation = v
	return s
}

type DeleteKnownHostKeysInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance for which you want to reset the host key or certificate.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKnownHostKeysInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKnownHostKeysInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteKnownHostKeysInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteKnownHostKeysInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *DeleteKnownHostKeysInput) SetInstanceName(v string) *DeleteKnownHostKeysInput {
	s.InstanceName = &v
	return s
}

type DeleteKnownHostKeysOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteKnownHostKeysOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteKnownHostKeysOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteKnownHostKeysOutput) SetOperations(v []*Operation) *DeleteKnownHostKeysOutput {
	s.Operations = v
	return s
}

type DeleteLoadBalancerInput struct {
	_ struct{} `type:"structure"`

	// The name of the load balancer you want to delete.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteLoadBalancerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteLoadBalancerInput"}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *DeleteLoadBalancerInput) SetLoadBalancerName(v string) *DeleteLoadBalancerInput {
	s.LoadBalancerName = &v
	return s
}

type DeleteLoadBalancerOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteLoadBalancerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteLoadBalancerOutput) SetOperations(v []*Operation) *DeleteLoadBalancerOutput {
	s.Operations = v
	return s
}

type DeleteLoadBalancerTlsCertificateInput struct {
	_ struct{} `type:"structure"`

	// The SSL/TLS certificate name.
	//
	// CertificateName is a required field
	CertificateName *string `locationName:"certificateName" type:"string" required:"true"`

	// When true, forces the deletion of an SSL/TLS certificate.
	//
	// There can be two certificates associated with a Lightsail load balancer:
	// the primary and the backup. The force parameter is required when the primary
	// SSL/TLS certificate is in use by an instance attached to the load balancer.
	Force *bool `locationName:"force" type:"boolean"`

	// The load balancer name.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerTlsCertificateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerTlsCertificateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteLoadBalancerTlsCertificateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteLoadBalancerTlsCertificateInput"}
	if s.CertificateName == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateName"))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateName sets the CertificateName field's value.
func (s *DeleteLoadBalancerTlsCertificateInput) SetCertificateName(v string) *DeleteLoadBalancerTlsCertificateInput {
	s.CertificateName = &v
	return s
}

// SetForce sets the Force field's value.
func (s *DeleteLoadBalancerTlsCertificateInput) SetForce(v bool) *DeleteLoadBalancerTlsCertificateInput {
	s.Force = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *DeleteLoadBalancerTlsCertificateInput) SetLoadBalancerName(v string) *DeleteLoadBalancerTlsCertificateInput {
	s.LoadBalancerName = &v
	return s
}

type DeleteLoadBalancerTlsCertificateOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteLoadBalancerTlsCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteLoadBalancerTlsCertificateOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteLoadBalancerTlsCertificateOutput) SetOperations(v []*Operation) *DeleteLoadBalancerTlsCertificateOutput {
	s.Operations = v
	return s
}

type DeleteRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The name of the database snapshot created if skip final snapshot is false,
	// which is the default value for that parameter.
	//
	// Specifying this parameter and also specifying the skip final snapshot parameter
	// to true results in an error.
	//
	// Constraints:
	//
	//    * Must contain from 2 to 255 alphanumeric characters, or hyphens.
	//
	//    * The first and last character must be a letter or number.
	FinalRelationalDatabaseSnapshotName *string `locationName:"finalRelationalDatabaseSnapshotName" type:"string"`

	// The name of the database that you are deleting.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// Determines whether a final database snapshot is created before your database
	// is deleted. If true is specified, no database snapshot is created. If false
	// is specified, a database snapshot is created before your database is deleted.
	//
	// You must specify the final relational database snapshot name parameter if
	// the skip final snapshot parameter is false.
	//
	// Default: false
	SkipFinalSnapshot *bool `locationName:"skipFinalSnapshot" 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 DeleteRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFinalRelationalDatabaseSnapshotName sets the FinalRelationalDatabaseSnapshotName field's value.
func (s *DeleteRelationalDatabaseInput) SetFinalRelationalDatabaseSnapshotName(v string) *DeleteRelationalDatabaseInput {
	s.FinalRelationalDatabaseSnapshotName = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *DeleteRelationalDatabaseInput) SetRelationalDatabaseName(v string) *DeleteRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetSkipFinalSnapshot sets the SkipFinalSnapshot field's value.
func (s *DeleteRelationalDatabaseInput) SetSkipFinalSnapshot(v bool) *DeleteRelationalDatabaseInput {
	s.SkipFinalSnapshot = &v
	return s
}

type DeleteRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteRelationalDatabaseOutput) SetOperations(v []*Operation) *DeleteRelationalDatabaseOutput {
	s.Operations = v
	return s
}

type DeleteRelationalDatabaseSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the database snapshot that you are deleting.
	//
	// RelationalDatabaseSnapshotName is a required field
	RelationalDatabaseSnapshotName *string `locationName:"relationalDatabaseSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRelationalDatabaseSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRelationalDatabaseSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRelationalDatabaseSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRelationalDatabaseSnapshotInput"}
	if s.RelationalDatabaseSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseSnapshotName sets the RelationalDatabaseSnapshotName field's value.
func (s *DeleteRelationalDatabaseSnapshotInput) SetRelationalDatabaseSnapshotName(v string) *DeleteRelationalDatabaseSnapshotInput {
	s.RelationalDatabaseSnapshotName = &v
	return s
}

type DeleteRelationalDatabaseSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DeleteRelationalDatabaseSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRelationalDatabaseSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DeleteRelationalDatabaseSnapshotOutput) SetOperations(v []*Operation) *DeleteRelationalDatabaseSnapshotOutput {
	s.Operations = v
	return s
}

// Describes the destination of a record.
type DestinationInfo struct {
	_ struct{} `type:"structure"`

	// The ID of the resource created at the destination.
	Id *string `locationName:"id" type:"string"`

	// The destination service of the record.
	Service *string `locationName:"service" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DestinationInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DestinationInfo) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *DestinationInfo) SetId(v string) *DestinationInfo {
	s.Id = &v
	return s
}

// SetService sets the Service field's value.
func (s *DestinationInfo) SetService(v string) *DestinationInfo {
	s.Service = &v
	return s
}

type DetachCertificateFromDistributionInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution from which to detach the certificate.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	//
	// DistributionName is a required field
	DistributionName *string `locationName:"distributionName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachCertificateFromDistributionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachCertificateFromDistributionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DetachCertificateFromDistributionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DetachCertificateFromDistributionInput"}
	if s.DistributionName == nil {
		invalidParams.Add(request.NewErrParamRequired("DistributionName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDistributionName sets the DistributionName field's value.
func (s *DetachCertificateFromDistributionInput) SetDistributionName(v string) *DetachCertificateFromDistributionInput {
	s.DistributionName = &v
	return s
}

type DetachCertificateFromDistributionOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the result of the action, such as the status of
	// the request, the timestamp of the request, and the resources affected by
	// the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachCertificateFromDistributionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachCertificateFromDistributionOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *DetachCertificateFromDistributionOutput) SetOperation(v *Operation) *DetachCertificateFromDistributionOutput {
	s.Operation = v
	return s
}

type DetachDiskInput struct {
	_ struct{} `type:"structure"`

	// The unique name of the disk you want to detach from your instance (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachDiskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachDiskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DetachDiskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DetachDiskInput"}
	if s.DiskName == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskName sets the DiskName field's value.
func (s *DetachDiskInput) SetDiskName(v string) *DetachDiskInput {
	s.DiskName = &v
	return s
}

type DetachDiskOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DetachDiskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachDiskOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DetachDiskOutput) SetOperations(v []*Operation) *DetachDiskOutput {
	s.Operations = v
	return s
}

type DetachInstancesFromLoadBalancerInput struct {
	_ struct{} `type:"structure"`

	// An array of strings containing the names of the instances you want to detach
	// from the load balancer.
	//
	// InstanceNames is a required field
	InstanceNames []*string `locationName:"instanceNames" type:"list" required:"true"`

	// The name of the Lightsail load balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachInstancesFromLoadBalancerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachInstancesFromLoadBalancerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DetachInstancesFromLoadBalancerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DetachInstancesFromLoadBalancerInput"}
	if s.InstanceNames == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceNames"))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceNames sets the InstanceNames field's value.
func (s *DetachInstancesFromLoadBalancerInput) SetInstanceNames(v []*string) *DetachInstancesFromLoadBalancerInput {
	s.InstanceNames = v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *DetachInstancesFromLoadBalancerInput) SetLoadBalancerName(v string) *DetachInstancesFromLoadBalancerInput {
	s.LoadBalancerName = &v
	return s
}

type DetachInstancesFromLoadBalancerOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DetachInstancesFromLoadBalancerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachInstancesFromLoadBalancerOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DetachInstancesFromLoadBalancerOutput) SetOperations(v []*Operation) *DetachInstancesFromLoadBalancerOutput {
	s.Operations = v
	return s
}

type DetachStaticIpInput struct {
	_ struct{} `type:"structure"`

	// The name of the static IP to detach from the instance.
	//
	// StaticIpName is a required field
	StaticIpName *string `locationName:"staticIpName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachStaticIpInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachStaticIpInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DetachStaticIpInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DetachStaticIpInput"}
	if s.StaticIpName == nil {
		invalidParams.Add(request.NewErrParamRequired("StaticIpName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStaticIpName sets the StaticIpName field's value.
func (s *DetachStaticIpInput) SetStaticIpName(v string) *DetachStaticIpInput {
	s.StaticIpName = &v
	return s
}

type DetachStaticIpOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DetachStaticIpOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DetachStaticIpOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DetachStaticIpOutput) SetOperations(v []*Operation) *DetachStaticIpOutput {
	s.Operations = v
	return s
}

type DisableAddOnInput struct {
	_ struct{} `type:"structure"`

	// The add-on type to disable.
	//
	// AddOnType is a required field
	AddOnType *string `locationName:"addOnType" type:"string" required:"true" enum:"AddOnType"`

	// The name of the source resource for which to disable the add-on.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableAddOnInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableAddOnInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisableAddOnInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisableAddOnInput"}
	if s.AddOnType == nil {
		invalidParams.Add(request.NewErrParamRequired("AddOnType"))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAddOnType sets the AddOnType field's value.
func (s *DisableAddOnInput) SetAddOnType(v string) *DisableAddOnInput {
	s.AddOnType = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *DisableAddOnInput) SetResourceName(v string) *DisableAddOnInput {
	s.ResourceName = &v
	return s
}

type DisableAddOnOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 DisableAddOnOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableAddOnOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *DisableAddOnOutput) SetOperations(v []*Operation) *DisableAddOnOutput {
	s.Operations = v
	return s
}

// Describes a block storage disk.
type Disk struct {
	_ struct{} `type:"structure"`

	// An array of objects representing the add-ons enabled on the disk.
	AddOns []*AddOn `locationName:"addOns" type:"list"`

	// The Amazon Resource Name (ARN) of the disk.
	Arn *string `locationName:"arn" type:"string"`

	// The resources to which the disk is attached.
	AttachedTo *string `locationName:"attachedTo" type:"string"`

	// (Discontinued) The attachment state of the disk.
	//
	// In releases prior to November 14, 2017, this parameter returned attached
	// for system disks in the API response. It is now discontinued, but still included
	// in the response. Use isAttached instead.
	//
	// Deprecated: AttachmentState has been deprecated
	AttachmentState *string `locationName:"attachmentState" deprecated:"true" type:"string"`

	// The status of automatically mounting a storage disk to a virtual computer.
	//
	// This parameter only applies to Lightsail for Research resources.
	AutoMountStatus *string `locationName:"autoMountStatus" type:"string" enum:"AutoMountStatus"`

	// The date when the disk was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// (Discontinued) The number of GB in use by the disk.
	//
	// In releases prior to November 14, 2017, this parameter was not included in
	// the API response. It is now discontinued.
	//
	// Deprecated: GbInUse has been deprecated
	GbInUse *int64 `locationName:"gbInUse" deprecated:"true" type:"integer"`

	// The input/output operations per second (IOPS) of the disk.
	Iops *int64 `locationName:"iops" type:"integer"`

	// A Boolean value indicating whether the disk is attached.
	IsAttached *bool `locationName:"isAttached" type:"boolean"`

	// A Boolean value indicating whether this disk is a system disk (has an operating
	// system loaded on it).
	IsSystemDisk *bool `locationName:"isSystemDisk" type:"boolean"`

	// The AWS Region and Availability Zone where the disk is located.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The unique name of the disk.
	Name *string `locationName:"name" type:"string"`

	// The disk path.
	Path *string `locationName:"path" type:"string"`

	// The Lightsail resource type (Disk).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The size of the disk in GB.
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer"`

	// Describes the status of the disk.
	State *string `locationName:"state" type:"string" enum:"DiskState"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 Disk) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Disk) GoString() string {
	return s.String()
}

// SetAddOns sets the AddOns field's value.
func (s *Disk) SetAddOns(v []*AddOn) *Disk {
	s.AddOns = v
	return s
}

// SetArn sets the Arn field's value.
func (s *Disk) SetArn(v string) *Disk {
	s.Arn = &v
	return s
}

// SetAttachedTo sets the AttachedTo field's value.
func (s *Disk) SetAttachedTo(v string) *Disk {
	s.AttachedTo = &v
	return s
}

// SetAttachmentState sets the AttachmentState field's value.
func (s *Disk) SetAttachmentState(v string) *Disk {
	s.AttachmentState = &v
	return s
}

// SetAutoMountStatus sets the AutoMountStatus field's value.
func (s *Disk) SetAutoMountStatus(v string) *Disk {
	s.AutoMountStatus = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Disk) SetCreatedAt(v time.Time) *Disk {
	s.CreatedAt = &v
	return s
}

// SetGbInUse sets the GbInUse field's value.
func (s *Disk) SetGbInUse(v int64) *Disk {
	s.GbInUse = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *Disk) SetIops(v int64) *Disk {
	s.Iops = &v
	return s
}

// SetIsAttached sets the IsAttached field's value.
func (s *Disk) SetIsAttached(v bool) *Disk {
	s.IsAttached = &v
	return s
}

// SetIsSystemDisk sets the IsSystemDisk field's value.
func (s *Disk) SetIsSystemDisk(v bool) *Disk {
	s.IsSystemDisk = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *Disk) SetLocation(v *ResourceLocation) *Disk {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *Disk) SetName(v string) *Disk {
	s.Name = &v
	return s
}

// SetPath sets the Path field's value.
func (s *Disk) SetPath(v string) *Disk {
	s.Path = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Disk) SetResourceType(v string) *Disk {
	s.ResourceType = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *Disk) SetSizeInGb(v int64) *Disk {
	s.SizeInGb = &v
	return s
}

// SetState sets the State field's value.
func (s *Disk) SetState(v string) *Disk {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Disk) SetSupportCode(v string) *Disk {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Disk) SetTags(v []*Tag) *Disk {
	s.Tags = v
	return s
}

// Describes a disk.
type DiskInfo struct {
	_ struct{} `type:"structure"`

	// A Boolean value indicating whether this disk is a system disk (has an operating
	// system loaded on it).
	IsSystemDisk *bool `locationName:"isSystemDisk" type:"boolean"`

	// The disk name.
	Name *string `locationName:"name" type:"string"`

	// The disk path.
	Path *string `locationName:"path" type:"string"`

	// The size of the disk in GB (32).
	SizeInGb *int64 `locationName:"sizeInGb" 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 DiskInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DiskInfo) GoString() string {
	return s.String()
}

// SetIsSystemDisk sets the IsSystemDisk field's value.
func (s *DiskInfo) SetIsSystemDisk(v bool) *DiskInfo {
	s.IsSystemDisk = &v
	return s
}

// SetName sets the Name field's value.
func (s *DiskInfo) SetName(v string) *DiskInfo {
	s.Name = &v
	return s
}

// SetPath sets the Path field's value.
func (s *DiskInfo) SetPath(v string) *DiskInfo {
	s.Path = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *DiskInfo) SetSizeInGb(v int64) *DiskInfo {
	s.SizeInGb = &v
	return s
}

// Describes a block storage disk mapping.
type DiskMap struct {
	_ struct{} `type:"structure"`

	// The new disk name (my-new-disk).
	NewDiskName *string `locationName:"newDiskName" type:"string"`

	// The original disk path exposed to the instance (for example, /dev/sdh).
	OriginalDiskPath *string `locationName:"originalDiskPath" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DiskMap) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DiskMap) GoString() string {
	return s.String()
}

// SetNewDiskName sets the NewDiskName field's value.
func (s *DiskMap) SetNewDiskName(v string) *DiskMap {
	s.NewDiskName = &v
	return s
}

// SetOriginalDiskPath sets the OriginalDiskPath field's value.
func (s *DiskMap) SetOriginalDiskPath(v string) *DiskMap {
	s.OriginalDiskPath = &v
	return s
}

// Describes a block storage disk snapshot.
type DiskSnapshot struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the disk snapshot.
	Arn *string `locationName:"arn" type:"string"`

	// The date when the disk snapshot was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon Resource Name (ARN) of the source disk from which the disk snapshot
	// was created.
	FromDiskArn *string `locationName:"fromDiskArn" type:"string"`

	// The unique name of the source disk from which the disk snapshot was created.
	FromDiskName *string `locationName:"fromDiskName" type:"string"`

	// The Amazon Resource Name (ARN) of the source instance from which the disk
	// (system volume) snapshot was created.
	FromInstanceArn *string `locationName:"fromInstanceArn" type:"string"`

	// The unique name of the source instance from which the disk (system volume)
	// snapshot was created.
	FromInstanceName *string `locationName:"fromInstanceName" type:"string"`

	// A Boolean value indicating whether the snapshot was created from an automatic
	// snapshot.
	IsFromAutoSnapshot *bool `locationName:"isFromAutoSnapshot" type:"boolean"`

	// The AWS Region and Availability Zone where the disk snapshot was created.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the disk snapshot (my-disk-snapshot).
	Name *string `locationName:"name" type:"string"`

	// The progress of the snapshot.
	Progress *string `locationName:"progress" type:"string"`

	// The Lightsail resource type (DiskSnapshot).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The size of the disk in GB.
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer"`

	// The status of the disk snapshot operation.
	State *string `locationName:"state" type:"string" enum:"DiskSnapshotState"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 DiskSnapshot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DiskSnapshot) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DiskSnapshot) SetArn(v string) *DiskSnapshot {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *DiskSnapshot) SetCreatedAt(v time.Time) *DiskSnapshot {
	s.CreatedAt = &v
	return s
}

// SetFromDiskArn sets the FromDiskArn field's value.
func (s *DiskSnapshot) SetFromDiskArn(v string) *DiskSnapshot {
	s.FromDiskArn = &v
	return s
}

// SetFromDiskName sets the FromDiskName field's value.
func (s *DiskSnapshot) SetFromDiskName(v string) *DiskSnapshot {
	s.FromDiskName = &v
	return s
}

// SetFromInstanceArn sets the FromInstanceArn field's value.
func (s *DiskSnapshot) SetFromInstanceArn(v string) *DiskSnapshot {
	s.FromInstanceArn = &v
	return s
}

// SetFromInstanceName sets the FromInstanceName field's value.
func (s *DiskSnapshot) SetFromInstanceName(v string) *DiskSnapshot {
	s.FromInstanceName = &v
	return s
}

// SetIsFromAutoSnapshot sets the IsFromAutoSnapshot field's value.
func (s *DiskSnapshot) SetIsFromAutoSnapshot(v bool) *DiskSnapshot {
	s.IsFromAutoSnapshot = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *DiskSnapshot) SetLocation(v *ResourceLocation) *DiskSnapshot {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *DiskSnapshot) SetName(v string) *DiskSnapshot {
	s.Name = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *DiskSnapshot) SetProgress(v string) *DiskSnapshot {
	s.Progress = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *DiskSnapshot) SetResourceType(v string) *DiskSnapshot {
	s.ResourceType = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *DiskSnapshot) SetSizeInGb(v int64) *DiskSnapshot {
	s.SizeInGb = &v
	return s
}

// SetState sets the State field's value.
func (s *DiskSnapshot) SetState(v string) *DiskSnapshot {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *DiskSnapshot) SetSupportCode(v string) *DiskSnapshot {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *DiskSnapshot) SetTags(v []*Tag) *DiskSnapshot {
	s.Tags = v
	return s
}

// Describes a disk snapshot.
type DiskSnapshotInfo struct {
	_ struct{} `type:"structure"`

	// The size of the disk in GB (32).
	SizeInGb *int64 `locationName:"sizeInGb" 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 DiskSnapshotInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DiskSnapshotInfo) GoString() string {
	return s.String()
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *DiskSnapshotInfo) SetSizeInGb(v int64) *DiskSnapshotInfo {
	s.SizeInGb = &v
	return s
}

// Describes the specifications of a distribution bundle.
type DistributionBundle struct {
	_ struct{} `type:"structure"`

	// The ID of the bundle.
	BundleId *string `locationName:"bundleId" type:"string"`

	// Indicates whether the bundle is active, and can be specified for a new or
	// existing distribution.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The name of the distribution bundle.
	Name *string `locationName:"name" type:"string"`

	// The monthly price, in US dollars, of the bundle.
	Price *float64 `locationName:"price" type:"float"`

	// The monthly network transfer quota of the bundle.
	TransferPerMonthInGb *int64 `locationName:"transferPerMonthInGb" 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 DistributionBundle) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DistributionBundle) GoString() string {
	return s.String()
}

// SetBundleId sets the BundleId field's value.
func (s *DistributionBundle) SetBundleId(v string) *DistributionBundle {
	s.BundleId = &v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *DistributionBundle) SetIsActive(v bool) *DistributionBundle {
	s.IsActive = &v
	return s
}

// SetName sets the Name field's value.
func (s *DistributionBundle) SetName(v string) *DistributionBundle {
	s.Name = &v
	return s
}

// SetPrice sets the Price field's value.
func (s *DistributionBundle) SetPrice(v float64) *DistributionBundle {
	s.Price = &v
	return s
}

// SetTransferPerMonthInGb sets the TransferPerMonthInGb field's value.
func (s *DistributionBundle) SetTransferPerMonthInGb(v int64) *DistributionBundle {
	s.TransferPerMonthInGb = &v
	return s
}

// Describes the creation state of the canonical name (CNAME) records that are
// automatically added by Amazon Lightsail to the DNS of a domain to validate
// domain ownership for an SSL/TLS certificate.
//
// When you create an SSL/TLS certificate for a Lightsail resource, you must
// add a set of CNAME records to the DNS of the domains for the certificate
// to validate that you own the domains. Lightsail can automatically add the
// CNAME records to the DNS of the domain if the DNS zone for the domain exists
// within your Lightsail account. If automatic record addition fails, or if
// you manage the DNS of your domain using a third-party service, then you must
// manually add the CNAME records to the DNS of your domain. For more information,
// see Verify an SSL/TLS certificate in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/verify-tls-ssl-certificate-using-dns-cname-https)
// in the Amazon Lightsail Developer Guide.
type DnsRecordCreationState struct {
	_ struct{} `type:"structure"`

	// The status code for the automated DNS record creation.
	//
	// Following are the possible values:
	//
	//    * SUCCEEDED - The validation records were successfully added to the domain.
	//
	//    * STARTED - The automatic DNS record creation has started.
	//
	//    * FAILED - The validation records failed to be added to the domain.
	Code *string `locationName:"code" type:"string" enum:"DnsRecordCreationStateCode"`

	// The message that describes the reason for the status code.
	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 DnsRecordCreationState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DnsRecordCreationState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *DnsRecordCreationState) SetCode(v string) *DnsRecordCreationState {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *DnsRecordCreationState) SetMessage(v string) *DnsRecordCreationState {
	s.Message = &v
	return s
}

// Describes a domain where you are storing recordsets.
type Domain struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the domain recordset (arn:aws:lightsail:global:123456789101:Domain/824cede0-abc7-4f84-8dbc-12345EXAMPLE).
	Arn *string `locationName:"arn" type:"string"`

	// The date when the domain recordset was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// An array of key-value pairs containing information about the domain entries.
	DomainEntries []*DomainEntry `locationName:"domainEntries" type:"list"`

	// The AWS Region and Availability Zones where the domain recordset was created.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the domain.
	Name *string `locationName:"name" type:"string"`

	// An object that describes the state of the Route 53 domain delegation to a
	// Lightsail DNS zone.
	RegisteredDomainDelegationInfo *RegisteredDomainDelegationInfo `locationName:"registeredDomainDelegationInfo" type:"structure"`

	// The resource type.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 Domain) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Domain) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Domain) SetArn(v string) *Domain {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Domain) SetCreatedAt(v time.Time) *Domain {
	s.CreatedAt = &v
	return s
}

// SetDomainEntries sets the DomainEntries field's value.
func (s *Domain) SetDomainEntries(v []*DomainEntry) *Domain {
	s.DomainEntries = v
	return s
}

// SetLocation sets the Location field's value.
func (s *Domain) SetLocation(v *ResourceLocation) *Domain {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *Domain) SetName(v string) *Domain {
	s.Name = &v
	return s
}

// SetRegisteredDomainDelegationInfo sets the RegisteredDomainDelegationInfo field's value.
func (s *Domain) SetRegisteredDomainDelegationInfo(v *RegisteredDomainDelegationInfo) *Domain {
	s.RegisteredDomainDelegationInfo = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Domain) SetResourceType(v string) *Domain {
	s.ResourceType = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Domain) SetSupportCode(v string) *Domain {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Domain) SetTags(v []*Tag) *Domain {
	s.Tags = v
	return s
}

// Describes a domain recordset entry.
type DomainEntry struct {
	_ struct{} `type:"structure"`

	// The ID of the domain recordset entry.
	Id *string `locationName:"id" type:"string"`

	// When true, specifies whether the domain entry is an alias used by the Lightsail
	// load balancer, Lightsail container service, Lightsail content delivery network
	// (CDN) distribution, or another Amazon Web Services resource. You can include
	// an alias (A type) record in your request, which points to the DNS name of
	// a load balancer, container service, CDN distribution, or other Amazon Web
	// Services resource and routes traffic to that resource.
	IsAlias *bool `locationName:"isAlias" type:"boolean"`

	// The name of the domain.
	Name *string `locationName:"name" type:"string"`

	// (Discontinued) The options for the domain entry.
	//
	// In releases prior to November 29, 2017, this parameter was not included in
	// the API response. It is now discontinued.
	//
	// Deprecated: Options has been deprecated
	Options map[string]*string `locationName:"options" deprecated:"true" type:"map"`

	// The target IP address (192.0.2.0), or AWS name server (ns-111.awsdns-22.com.).
	//
	// For Lightsail load balancers, the value looks like ab1234c56789c6b86aba6fb203d443bc-123456789.us-east-2.elb.amazonaws.com.
	// For Lightsail distributions, the value looks like exampled1182ne.cloudfront.net.
	// For Lightsail container services, the value looks like container-service-1.example23scljs.us-west-2.cs.amazonlightsail.com.
	// Be sure to also set isAlias to true when setting up an A record for a Lightsail
	// load balancer, distribution, or container service.
	Target *string `locationName:"target" type:"string"`

	// The type of domain entry, such as address for IPv4 (A), address for IPv6
	// (AAAA), canonical name (CNAME), mail exchanger (MX), name server (NS), start
	// of authority (SOA), service locator (SRV), or text (TXT).
	//
	// The following domain entry types can be used:
	//
	//    * A
	//
	//    * AAAA
	//
	//    * CNAME
	//
	//    * MX
	//
	//    * NS
	//
	//    * SOA
	//
	//    * SRV
	//
	//    * TXT
	Type *string `locationName:"type" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainEntry) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *DomainEntry) SetId(v string) *DomainEntry {
	s.Id = &v
	return s
}

// SetIsAlias sets the IsAlias field's value.
func (s *DomainEntry) SetIsAlias(v bool) *DomainEntry {
	s.IsAlias = &v
	return s
}

// SetName sets the Name field's value.
func (s *DomainEntry) SetName(v string) *DomainEntry {
	s.Name = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *DomainEntry) SetOptions(v map[string]*string) *DomainEntry {
	s.Options = v
	return s
}

// SetTarget sets the Target field's value.
func (s *DomainEntry) SetTarget(v string) *DomainEntry {
	s.Target = &v
	return s
}

// SetType sets the Type field's value.
func (s *DomainEntry) SetType(v string) *DomainEntry {
	s.Type = &v
	return s
}

// Describes the domain name system (DNS) records that you must add to the DNS
// of your registered domain to validate ownership for an Amazon Lightsail SSL/TLS
// certificate.
type DomainValidationRecord struct {
	_ struct{} `type:"structure"`

	// An object that describes the state of the canonical name (CNAME) records
	// that are automatically added by Lightsail to the DNS of the domain to validate
	// domain ownership.
	DnsRecordCreationState *DnsRecordCreationState `locationName:"dnsRecordCreationState" type:"structure"`

	// The domain name of the certificate validation record. For example, example.com
	// or www.example.com.
	DomainName *string `locationName:"domainName" type:"string"`

	// An object that describes the DNS records to add to your domain's DNS to validate
	// it for the certificate.
	ResourceRecord *ResourceRecord `locationName:"resourceRecord" type:"structure"`

	// The validation status of the record.
	ValidationStatus *string `locationName:"validationStatus" type:"string" enum:"CertificateDomainValidationStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainValidationRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainValidationRecord) GoString() string {
	return s.String()
}

// SetDnsRecordCreationState sets the DnsRecordCreationState field's value.
func (s *DomainValidationRecord) SetDnsRecordCreationState(v *DnsRecordCreationState) *DomainValidationRecord {
	s.DnsRecordCreationState = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *DomainValidationRecord) SetDomainName(v string) *DomainValidationRecord {
	s.DomainName = &v
	return s
}

// SetResourceRecord sets the ResourceRecord field's value.
func (s *DomainValidationRecord) SetResourceRecord(v *ResourceRecord) *DomainValidationRecord {
	s.ResourceRecord = v
	return s
}

// SetValidationStatus sets the ValidationStatus field's value.
func (s *DomainValidationRecord) SetValidationStatus(v string) *DomainValidationRecord {
	s.ValidationStatus = &v
	return s
}

type DownloadDefaultKeyPairInput 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 DownloadDefaultKeyPairInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DownloadDefaultKeyPairInput) GoString() string {
	return s.String()
}

type DownloadDefaultKeyPairOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp when the default key pair was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// A base64-encoded RSA private key.
	PrivateKeyBase64 *string `locationName:"privateKeyBase64" type:"string"`

	// A base64-encoded public key of the ssh-rsa type.
	PublicKeyBase64 *string `locationName:"publicKeyBase64" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DownloadDefaultKeyPairOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DownloadDefaultKeyPairOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *DownloadDefaultKeyPairOutput) SetCreatedAt(v time.Time) *DownloadDefaultKeyPairOutput {
	s.CreatedAt = &v
	return s
}

// SetPrivateKeyBase64 sets the PrivateKeyBase64 field's value.
func (s *DownloadDefaultKeyPairOutput) SetPrivateKeyBase64(v string) *DownloadDefaultKeyPairOutput {
	s.PrivateKeyBase64 = &v
	return s
}

// SetPublicKeyBase64 sets the PublicKeyBase64 field's value.
func (s *DownloadDefaultKeyPairOutput) SetPublicKeyBase64(v string) *DownloadDefaultKeyPairOutput {
	s.PublicKeyBase64 = &v
	return s
}

type EnableAddOnInput struct {
	_ struct{} `type:"structure"`

	// An array of strings representing the add-on to enable or modify.
	//
	// AddOnRequest is a required field
	AddOnRequest *AddOnRequest `locationName:"addOnRequest" type:"structure" required:"true"`

	// The name of the source resource for which to enable or modify the add-on.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableAddOnInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableAddOnInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableAddOnInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableAddOnInput"}
	if s.AddOnRequest == nil {
		invalidParams.Add(request.NewErrParamRequired("AddOnRequest"))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.AddOnRequest != nil {
		if err := s.AddOnRequest.Validate(); err != nil {
			invalidParams.AddNested("AddOnRequest", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAddOnRequest sets the AddOnRequest field's value.
func (s *EnableAddOnInput) SetAddOnRequest(v *AddOnRequest) *EnableAddOnInput {
	s.AddOnRequest = v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *EnableAddOnInput) SetResourceName(v string) *EnableAddOnInput {
	s.ResourceName = &v
	return s
}

type EnableAddOnOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 EnableAddOnOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableAddOnOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *EnableAddOnOutput) SetOperations(v []*Operation) *EnableAddOnOutput {
	s.Operations = v
	return s
}

// Describes the settings of a public endpoint for an Amazon Lightsail container
// service.
type EndpointRequest struct {
	_ struct{} `type:"structure"`

	// The name of the container for the endpoint.
	//
	// ContainerName is a required field
	ContainerName *string `locationName:"containerName" type:"string" required:"true"`

	// The port of the container to which traffic is forwarded to.
	//
	// ContainerPort is a required field
	ContainerPort *int64 `locationName:"containerPort" type:"integer" required:"true"`

	// An object that describes the health check configuration of the container.
	HealthCheck *ContainerServiceHealthCheckConfig `locationName:"healthCheck" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EndpointRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EndpointRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EndpointRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EndpointRequest"}
	if s.ContainerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ContainerName"))
	}
	if s.ContainerPort == nil {
		invalidParams.Add(request.NewErrParamRequired("ContainerPort"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContainerName sets the ContainerName field's value.
func (s *EndpointRequest) SetContainerName(v string) *EndpointRequest {
	s.ContainerName = &v
	return s
}

// SetContainerPort sets the ContainerPort field's value.
func (s *EndpointRequest) SetContainerPort(v int64) *EndpointRequest {
	s.ContainerPort = &v
	return s
}

// SetHealthCheck sets the HealthCheck field's value.
func (s *EndpointRequest) SetHealthCheck(v *ContainerServiceHealthCheckConfig) *EndpointRequest {
	s.HealthCheck = v
	return s
}

// An estimate that's associated with a time period.
type EstimateByTime struct {
	_ struct{} `type:"structure"`

	// The currency of the estimate in USD.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The unit of measurement that's used for the cost estimate.
	PricingUnit *string `locationName:"pricingUnit" type:"string" enum:"PricingUnit"`

	// The period of time, in days, that an estimate covers. The period has a start
	// date and an end date. The start date must come before the end date.
	TimePeriod *TimePeriod `locationName:"timePeriod" type:"structure"`

	// The number of pricing units used to calculate the total number of hours.
	// For example, 1 unit equals 1 hour.
	Unit *float64 `locationName:"unit" type:"double"`

	// The amount of cost or usage that's measured for the cost estimate.
	UsageCost *float64 `locationName:"usageCost" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EstimateByTime) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EstimateByTime) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *EstimateByTime) SetCurrency(v string) *EstimateByTime {
	s.Currency = &v
	return s
}

// SetPricingUnit sets the PricingUnit field's value.
func (s *EstimateByTime) SetPricingUnit(v string) *EstimateByTime {
	s.PricingUnit = &v
	return s
}

// SetTimePeriod sets the TimePeriod field's value.
func (s *EstimateByTime) SetTimePeriod(v *TimePeriod) *EstimateByTime {
	s.TimePeriod = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *EstimateByTime) SetUnit(v float64) *EstimateByTime {
	s.Unit = &v
	return s
}

// SetUsageCost sets the UsageCost field's value.
func (s *EstimateByTime) SetUsageCost(v float64) *EstimateByTime {
	s.UsageCost = &v
	return s
}

type ExportSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance or disk snapshot to be exported to Amazon EC2.
	//
	// SourceSnapshotName is a required field
	SourceSnapshotName *string `locationName:"sourceSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportSnapshotInput"}
	if s.SourceSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSourceSnapshotName sets the SourceSnapshotName field's value.
func (s *ExportSnapshotInput) SetSourceSnapshotName(v string) *ExportSnapshotInput {
	s.SourceSnapshotName = &v
	return s
}

type ExportSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 ExportSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *ExportSnapshotOutput) SetOperations(v []*Operation) *ExportSnapshotOutput {
	s.Operations = v
	return s
}

// Describes an export snapshot record.
type ExportSnapshotRecord struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the export snapshot record.
	Arn *string `locationName:"arn" type:"string"`

	// The date when the export snapshot record was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// A list of objects describing the destination of the export snapshot record.
	DestinationInfo *DestinationInfo `locationName:"destinationInfo" type:"structure"`

	// The AWS Region and Availability Zone where the export snapshot record is
	// located.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The export snapshot record name.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type (ExportSnapshotRecord).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// A list of objects describing the source of the export snapshot record.
	SourceInfo *ExportSnapshotRecordSourceInfo `locationName:"sourceInfo" type:"structure"`

	// The state of the export snapshot record.
	State *string `locationName:"state" type:"string" enum:"RecordState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotRecord) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ExportSnapshotRecord) SetArn(v string) *ExportSnapshotRecord {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *ExportSnapshotRecord) SetCreatedAt(v time.Time) *ExportSnapshotRecord {
	s.CreatedAt = &v
	return s
}

// SetDestinationInfo sets the DestinationInfo field's value.
func (s *ExportSnapshotRecord) SetDestinationInfo(v *DestinationInfo) *ExportSnapshotRecord {
	s.DestinationInfo = v
	return s
}

// SetLocation sets the Location field's value.
func (s *ExportSnapshotRecord) SetLocation(v *ResourceLocation) *ExportSnapshotRecord {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *ExportSnapshotRecord) SetName(v string) *ExportSnapshotRecord {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ExportSnapshotRecord) SetResourceType(v string) *ExportSnapshotRecord {
	s.ResourceType = &v
	return s
}

// SetSourceInfo sets the SourceInfo field's value.
func (s *ExportSnapshotRecord) SetSourceInfo(v *ExportSnapshotRecordSourceInfo) *ExportSnapshotRecord {
	s.SourceInfo = v
	return s
}

// SetState sets the State field's value.
func (s *ExportSnapshotRecord) SetState(v string) *ExportSnapshotRecord {
	s.State = &v
	return s
}

// Describes the source of an export snapshot record.
type ExportSnapshotRecordSourceInfo struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the source instance or disk snapshot.
	Arn *string `locationName:"arn" type:"string"`

	// The date when the source instance or disk snapshot was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// A list of objects describing a disk snapshot.
	DiskSnapshotInfo *DiskSnapshotInfo `locationName:"diskSnapshotInfo" type:"structure"`

	// The Amazon Resource Name (ARN) of the snapshot's source instance or disk.
	FromResourceArn *string `locationName:"fromResourceArn" type:"string"`

	// The name of the snapshot's source instance or disk.
	FromResourceName *string `locationName:"fromResourceName" type:"string"`

	// A list of objects describing an instance snapshot.
	InstanceSnapshotInfo *InstanceSnapshotInfo `locationName:"instanceSnapshotInfo" type:"structure"`

	// The name of the source instance or disk snapshot.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type (InstanceSnapshot or DiskSnapshot).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ExportSnapshotRecordSourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotRecordSourceInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportSnapshotRecordSourceInfo) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ExportSnapshotRecordSourceInfo) SetArn(v string) *ExportSnapshotRecordSourceInfo {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *ExportSnapshotRecordSourceInfo) SetCreatedAt(v time.Time) *ExportSnapshotRecordSourceInfo {
	s.CreatedAt = &v
	return s
}

// SetDiskSnapshotInfo sets the DiskSnapshotInfo field's value.
func (s *ExportSnapshotRecordSourceInfo) SetDiskSnapshotInfo(v *DiskSnapshotInfo) *ExportSnapshotRecordSourceInfo {
	s.DiskSnapshotInfo = v
	return s
}

// SetFromResourceArn sets the FromResourceArn field's value.
func (s *ExportSnapshotRecordSourceInfo) SetFromResourceArn(v string) *ExportSnapshotRecordSourceInfo {
	s.FromResourceArn = &v
	return s
}

// SetFromResourceName sets the FromResourceName field's value.
func (s *ExportSnapshotRecordSourceInfo) SetFromResourceName(v string) *ExportSnapshotRecordSourceInfo {
	s.FromResourceName = &v
	return s
}

// SetInstanceSnapshotInfo sets the InstanceSnapshotInfo field's value.
func (s *ExportSnapshotRecordSourceInfo) SetInstanceSnapshotInfo(v *InstanceSnapshotInfo) *ExportSnapshotRecordSourceInfo {
	s.InstanceSnapshotInfo = v
	return s
}

// SetName sets the Name field's value.
func (s *ExportSnapshotRecordSourceInfo) SetName(v string) *ExportSnapshotRecordSourceInfo {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ExportSnapshotRecordSourceInfo) SetResourceType(v string) *ExportSnapshotRecordSourceInfo {
	s.ResourceType = &v
	return s
}

type GetActiveNamesInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetActiveNames request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetActiveNamesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetActiveNamesInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetActiveNamesInput) SetPageToken(v string) *GetActiveNamesInput {
	s.PageToken = &v
	return s
}

type GetActiveNamesOutput struct {
	_ struct{} `type:"structure"`

	// The list of active names returned by the get active names request.
	ActiveNames []*string `locationName:"activeNames" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetActiveNames request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetActiveNamesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetActiveNamesOutput) GoString() string {
	return s.String()
}

// SetActiveNames sets the ActiveNames field's value.
func (s *GetActiveNamesOutput) SetActiveNames(v []*string) *GetActiveNamesOutput {
	s.ActiveNames = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetActiveNamesOutput) SetNextPageToken(v string) *GetActiveNamesOutput {
	s.NextPageToken = &v
	return s
}

type GetAlarmsInput struct {
	_ struct{} `type:"structure"`

	// The name of the alarm.
	//
	// Specify an alarm name to return information about a specific alarm.
	AlarmName *string `locationName:"alarmName" type:"string"`

	// The name of the Lightsail resource being monitored by the alarm.
	//
	// Specify a monitored resource name to return information about all alarms
	// for a specific resource.
	MonitoredResourceName *string `locationName:"monitoredResourceName" type:"string"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetAlarms request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAlarmsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAlarmsInput) GoString() string {
	return s.String()
}

// SetAlarmName sets the AlarmName field's value.
func (s *GetAlarmsInput) SetAlarmName(v string) *GetAlarmsInput {
	s.AlarmName = &v
	return s
}

// SetMonitoredResourceName sets the MonitoredResourceName field's value.
func (s *GetAlarmsInput) SetMonitoredResourceName(v string) *GetAlarmsInput {
	s.MonitoredResourceName = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetAlarmsInput) SetPageToken(v string) *GetAlarmsInput {
	s.PageToken = &v
	return s
}

type GetAlarmsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the alarms.
	Alarms []*Alarm `locationName:"alarms" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetAlarms request and specify
	// the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAlarmsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAlarmsOutput) GoString() string {
	return s.String()
}

// SetAlarms sets the Alarms field's value.
func (s *GetAlarmsOutput) SetAlarms(v []*Alarm) *GetAlarmsOutput {
	s.Alarms = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetAlarmsOutput) SetNextPageToken(v string) *GetAlarmsOutput {
	s.NextPageToken = &v
	return s
}

type GetAutoSnapshotsInput struct {
	_ struct{} `type:"structure"`

	// The name of the source instance or disk from which to get automatic snapshot
	// information.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoSnapshotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoSnapshotsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetAutoSnapshotsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetAutoSnapshotsInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceName sets the ResourceName field's value.
func (s *GetAutoSnapshotsInput) SetResourceName(v string) *GetAutoSnapshotsInput {
	s.ResourceName = &v
	return s
}

type GetAutoSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the automatic snapshots that are available
	// for the specified source instance or disk.
	AutoSnapshots []*AutoSnapshotDetails `locationName:"autoSnapshots" type:"list"`

	// The name of the source instance or disk for the automatic snapshots.
	ResourceName *string `locationName:"resourceName" type:"string"`

	// The resource type of the automatic snapshot. The possible values are Instance,
	// and Disk.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoSnapshotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoSnapshotsOutput) GoString() string {
	return s.String()
}

// SetAutoSnapshots sets the AutoSnapshots field's value.
func (s *GetAutoSnapshotsOutput) SetAutoSnapshots(v []*AutoSnapshotDetails) *GetAutoSnapshotsOutput {
	s.AutoSnapshots = v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *GetAutoSnapshotsOutput) SetResourceName(v string) *GetAutoSnapshotsOutput {
	s.ResourceName = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *GetAutoSnapshotsOutput) SetResourceType(v string) *GetAutoSnapshotsOutput {
	s.ResourceType = &v
	return s
}

type GetBlueprintsInput struct {
	_ struct{} `type:"structure"`

	// Returns a list of blueprints that are specific to Lightsail for Research.
	//
	// You must use this parameter to view Lightsail for Research blueprints.
	AppCategory *string `locationName:"appCategory" type:"string" enum:"AppCategory"`

	// A Boolean value that indicates whether to include inactive (unavailable)
	// blueprints in the response of your request.
	IncludeInactive *bool `locationName:"includeInactive" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetBlueprints request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintsInput) GoString() string {
	return s.String()
}

// SetAppCategory sets the AppCategory field's value.
func (s *GetBlueprintsInput) SetAppCategory(v string) *GetBlueprintsInput {
	s.AppCategory = &v
	return s
}

// SetIncludeInactive sets the IncludeInactive field's value.
func (s *GetBlueprintsInput) SetIncludeInactive(v bool) *GetBlueprintsInput {
	s.IncludeInactive = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetBlueprintsInput) SetPageToken(v string) *GetBlueprintsInput {
	s.PageToken = &v
	return s
}

type GetBlueprintsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs that contains information about the available
	// blueprints.
	Blueprints []*Blueprint `locationName:"blueprints" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetBlueprints request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintsOutput) GoString() string {
	return s.String()
}

// SetBlueprints sets the Blueprints field's value.
func (s *GetBlueprintsOutput) SetBlueprints(v []*Blueprint) *GetBlueprintsOutput {
	s.Blueprints = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetBlueprintsOutput) SetNextPageToken(v string) *GetBlueprintsOutput {
	s.NextPageToken = &v
	return s
}

type GetBucketAccessKeysInput struct {
	_ struct{} `type:"structure"`

	// The name of the bucket for which to return access keys.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketAccessKeysInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketAccessKeysInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBucketAccessKeysInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccessKeysInput"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *GetBucketAccessKeysInput) SetBucketName(v string) *GetBucketAccessKeysInput {
	s.BucketName = &v
	return s
}

type GetBucketAccessKeysOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the access keys for the specified bucket.
	AccessKeys []*AccessKey `locationName:"accessKeys" 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 GetBucketAccessKeysOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketAccessKeysOutput) GoString() string {
	return s.String()
}

// SetAccessKeys sets the AccessKeys field's value.
func (s *GetBucketAccessKeysOutput) SetAccessKeys(v []*AccessKey) *GetBucketAccessKeysOutput {
	s.AccessKeys = v
	return s
}

type GetBucketBundlesInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to include inactive (unavailable)
	// bundles in the response of your request.
	IncludeInactive *bool `locationName:"includeInactive" 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 GetBucketBundlesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketBundlesInput) GoString() string {
	return s.String()
}

// SetIncludeInactive sets the IncludeInactive field's value.
func (s *GetBucketBundlesInput) SetIncludeInactive(v bool) *GetBucketBundlesInput {
	s.IncludeInactive = &v
	return s
}

type GetBucketBundlesOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes bucket bundles.
	Bundles []*BucketBundle `locationName:"bundles" 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 GetBucketBundlesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketBundlesOutput) GoString() string {
	return s.String()
}

// SetBundles sets the Bundles field's value.
func (s *GetBucketBundlesOutput) SetBundles(v []*BucketBundle) *GetBucketBundlesOutput {
	s.Bundles = v
	return s
}

type GetBucketMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The name of the bucket for which to get metric data.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// The timestamp indicating the latest data to be returned.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid bucket metric names are listed below, along with the most useful statistics
	// to include in your request, and the published unit value.
	//
	// These bucket metrics are reported once per day.
	//
	//    * BucketSizeBytes - The amount of data in bytes stored in a bucket. This
	//    value is calculated by summing the size of all objects in the bucket (including
	//    object versions), including the size of all parts for all incomplete multipart
	//    uploads to the bucket. Statistics: The most useful statistic is Maximum.
	//    Unit: The published unit is Bytes.
	//
	//    * NumberOfObjects - The total number of objects stored in a bucket. This
	//    value is calculated by counting all objects in the bucket (including object
	//    versions) and the total number of parts for all incomplete multipart uploads
	//    to the bucket. Statistics: The most useful statistic is Average. Unit:
	//    The published unit is Count.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"BucketMetricName"`

	// The granularity, in seconds, of the returned data points.
	//
	// Bucket storage metrics are reported once per day. Therefore, you should specify
	// a period of 86400 seconds, which is the number of seconds in a day.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The timestamp indicating the earliest data to be returned.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - The sum of all values submitted for the matching metric. You can
	//    use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`

	// The unit for the metric data request.
	//
	// Valid units depend on the metric data being requested. For the valid units
	// with each available metric, see the metricName parameter.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBucketMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricDataInput"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}
	if s.Unit == nil {
		invalidParams.Add(request.NewErrParamRequired("Unit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *GetBucketMetricDataInput) SetBucketName(v string) *GetBucketMetricDataInput {
	s.BucketName = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *GetBucketMetricDataInput) SetEndTime(v time.Time) *GetBucketMetricDataInput {
	s.EndTime = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetBucketMetricDataInput) SetMetricName(v string) *GetBucketMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetBucketMetricDataInput) SetPeriod(v int64) *GetBucketMetricDataInput {
	s.Period = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetBucketMetricDataInput) SetStartTime(v time.Time) *GetBucketMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetBucketMetricDataInput) SetStatistics(v []*string) *GetBucketMetricDataInput {
	s.Statistics = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *GetBucketMetricDataInput) SetUnit(v string) *GetBucketMetricDataInput {
	s.Unit = &v
	return s
}

type GetBucketMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"BucketMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetBucketMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetBucketMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetBucketMetricDataOutput) SetMetricName(v string) *GetBucketMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetBucketsInput struct {
	_ struct{} `type:"structure"`

	// The name of the bucket for which to return information.
	//
	// When omitted, the response includes all of your buckets in the Amazon Web
	// Services Region where the request is made.
	BucketName *string `locationName:"bucketName" min:"3" type:"string"`

	// A Boolean value that indicates whether to include Lightsail instances that
	// were given access to the bucket using the SetResourceAccessForBucket (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html)
	// action.
	IncludeConnectedResources *bool `locationName:"includeConnectedResources" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetBuckets request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBucketsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBucketsInput"}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *GetBucketsInput) SetBucketName(v string) *GetBucketsInput {
	s.BucketName = &v
	return s
}

// SetIncludeConnectedResources sets the IncludeConnectedResources field's value.
func (s *GetBucketsInput) SetIncludeConnectedResources(v bool) *GetBucketsInput {
	s.IncludeConnectedResources = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetBucketsInput) SetPageToken(v string) *GetBucketsInput {
	s.PageToken = &v
	return s
}

type GetBucketsOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the synchronization status of the Amazon S3 account-level
	// block public access feature for your Lightsail buckets.
	//
	// For more information about this feature and how it affects Lightsail buckets,
	// see Block public access for buckets in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-block-public-access-for-buckets).
	AccountLevelBpaSync *AccountLevelBpaSync `locationName:"accountLevelBpaSync" type:"structure"`

	// An array of objects that describe buckets.
	Buckets []*Bucket `locationName:"buckets" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetBuckets request and specify
	// the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBucketsOutput) GoString() string {
	return s.String()
}

// SetAccountLevelBpaSync sets the AccountLevelBpaSync field's value.
func (s *GetBucketsOutput) SetAccountLevelBpaSync(v *AccountLevelBpaSync) *GetBucketsOutput {
	s.AccountLevelBpaSync = v
	return s
}

// SetBuckets sets the Buckets field's value.
func (s *GetBucketsOutput) SetBuckets(v []*Bucket) *GetBucketsOutput {
	s.Buckets = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetBucketsOutput) SetNextPageToken(v string) *GetBucketsOutput {
	s.NextPageToken = &v
	return s
}

type GetBundlesInput struct {
	_ struct{} `type:"structure"`

	// Returns a list of bundles that are specific to Lightsail for Research.
	//
	// You must use this parameter to view Lightsail for Research bundles.
	AppCategory *string `locationName:"appCategory" type:"string" enum:"AppCategory"`

	// A Boolean value that indicates whether to include inactive (unavailable)
	// bundles in the response of your request.
	IncludeInactive *bool `locationName:"includeInactive" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetBundles request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBundlesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBundlesInput) GoString() string {
	return s.String()
}

// SetAppCategory sets the AppCategory field's value.
func (s *GetBundlesInput) SetAppCategory(v string) *GetBundlesInput {
	s.AppCategory = &v
	return s
}

// SetIncludeInactive sets the IncludeInactive field's value.
func (s *GetBundlesInput) SetIncludeInactive(v bool) *GetBundlesInput {
	s.IncludeInactive = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetBundlesInput) SetPageToken(v string) *GetBundlesInput {
	s.PageToken = &v
	return s
}

type GetBundlesOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs that contains information about the available
	// bundles.
	Bundles []*Bundle `locationName:"bundles" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetBundles request and specify
	// the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBundlesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBundlesOutput) GoString() string {
	return s.String()
}

// SetBundles sets the Bundles field's value.
func (s *GetBundlesOutput) SetBundles(v []*Bundle) *GetBundlesOutput {
	s.Bundles = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetBundlesOutput) SetNextPageToken(v string) *GetBundlesOutput {
	s.NextPageToken = &v
	return s
}

type GetCertificatesInput struct {
	_ struct{} `type:"structure"`

	// The name for the certificate for which to return information.
	//
	// When omitted, the response includes all of your certificates in the Amazon
	// Web Services Region where the request is made.
	CertificateName *string `locationName:"certificateName" type:"string"`

	// The status of the certificates for which to return information.
	//
	// For example, specify ISSUED to return only certificates with an ISSUED status.
	//
	// When omitted, the response includes all of your certificates in the Amazon
	// Web Services Region where the request is made, regardless of their current
	// status.
	CertificateStatuses []*string `locationName:"certificateStatuses" type:"list" enum:"CertificateStatus"`

	// Indicates whether to include detailed information about the certificates
	// in the response.
	//
	// When omitted, the response includes only the certificate names, Amazon Resource
	// Names (ARNs), domain names, and tags.
	IncludeCertificateDetails *bool `locationName:"includeCertificateDetails" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetCertificates request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCertificatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCertificatesInput) GoString() string {
	return s.String()
}

// SetCertificateName sets the CertificateName field's value.
func (s *GetCertificatesInput) SetCertificateName(v string) *GetCertificatesInput {
	s.CertificateName = &v
	return s
}

// SetCertificateStatuses sets the CertificateStatuses field's value.
func (s *GetCertificatesInput) SetCertificateStatuses(v []*string) *GetCertificatesInput {
	s.CertificateStatuses = v
	return s
}

// SetIncludeCertificateDetails sets the IncludeCertificateDetails field's value.
func (s *GetCertificatesInput) SetIncludeCertificateDetails(v bool) *GetCertificatesInput {
	s.IncludeCertificateDetails = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetCertificatesInput) SetPageToken(v string) *GetCertificatesInput {
	s.PageToken = &v
	return s
}

type GetCertificatesOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes certificates.
	Certificates []*CertificateSummary `locationName:"certificates" type:"list"`

	// If NextPageToken is returned there are more results available. The value
	// of NextPageToken is a unique pagination token for each page. Make the call
	// again using the returned token to retrieve the next page. Keep all other
	// arguments unchanged.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCertificatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCertificatesOutput) GoString() string {
	return s.String()
}

// SetCertificates sets the Certificates field's value.
func (s *GetCertificatesOutput) SetCertificates(v []*CertificateSummary) *GetCertificatesOutput {
	s.Certificates = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetCertificatesOutput) SetNextPageToken(v string) *GetCertificatesOutput {
	s.NextPageToken = &v
	return s
}

type GetCloudFormationStackRecordsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetClouFormationStackRecords request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCloudFormationStackRecordsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCloudFormationStackRecordsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetCloudFormationStackRecordsInput) SetPageToken(v string) *GetCloudFormationStackRecordsInput {
	s.PageToken = &v
	return s
}

type GetCloudFormationStackRecordsOutput struct {
	_ struct{} `type:"structure"`

	// A list of objects describing the CloudFormation stack records.
	CloudFormationStackRecords []*CloudFormationStackRecord `locationName:"cloudFormationStackRecords" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetCloudFormationStackRecords
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCloudFormationStackRecordsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCloudFormationStackRecordsOutput) GoString() string {
	return s.String()
}

// SetCloudFormationStackRecords sets the CloudFormationStackRecords field's value.
func (s *GetCloudFormationStackRecordsOutput) SetCloudFormationStackRecords(v []*CloudFormationStackRecord) *GetCloudFormationStackRecordsOutput {
	s.CloudFormationStackRecords = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetCloudFormationStackRecordsOutput) SetNextPageToken(v string) *GetCloudFormationStackRecordsOutput {
	s.NextPageToken = &v
	return s
}

type GetContactMethodsInput struct {
	_ struct{} `type:"structure"`

	// The protocols used to send notifications, such as Email, or SMS (text messaging).
	//
	// Specify a protocol in your request to return information about a specific
	// contact method protocol.
	Protocols []*string `locationName:"protocols" type:"list" enum:"ContactProtocol"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContactMethodsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContactMethodsInput) GoString() string {
	return s.String()
}

// SetProtocols sets the Protocols field's value.
func (s *GetContactMethodsInput) SetProtocols(v []*string) *GetContactMethodsInput {
	s.Protocols = v
	return s
}

type GetContactMethodsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the contact methods.
	ContactMethods []*ContactMethod `locationName:"contactMethods" 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 GetContactMethodsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContactMethodsOutput) GoString() string {
	return s.String()
}

// SetContactMethods sets the ContactMethods field's value.
func (s *GetContactMethodsOutput) SetContactMethods(v []*ContactMethod) *GetContactMethodsOutput {
	s.ContactMethods = v
	return s
}

type GetContainerAPIMetadataInput 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 GetContainerAPIMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerAPIMetadataInput) GoString() string {
	return s.String()
}

type GetContainerAPIMetadataOutput struct {
	_ struct{} `type:"structure"`

	// Metadata about Lightsail containers, such as the current version of the Lightsail
	// Control (lightsailctl) plugin.
	Metadata []map[string]*string `locationName:"metadata" 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 GetContainerAPIMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerAPIMetadataOutput) GoString() string {
	return s.String()
}

// SetMetadata sets the Metadata field's value.
func (s *GetContainerAPIMetadataOutput) SetMetadata(v []map[string]*string) *GetContainerAPIMetadataOutput {
	s.Metadata = v
	return s
}

type GetContainerImagesInput struct {
	_ struct{} `type:"structure"`

	// The name of the container service for which to return registered container
	// images.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerImagesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerImagesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContainerImagesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContainerImagesInput"}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServiceName sets the ServiceName field's value.
func (s *GetContainerImagesInput) SetServiceName(v string) *GetContainerImagesInput {
	s.ServiceName = &v
	return s
}

type GetContainerImagesOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe container images that are registered to
	// the container service.
	ContainerImages []*ContainerImage `locationName:"containerImages" 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 GetContainerImagesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerImagesOutput) GoString() string {
	return s.String()
}

// SetContainerImages sets the ContainerImages field's value.
func (s *GetContainerImagesOutput) SetContainerImages(v []*ContainerImage) *GetContainerImagesOutput {
	s.ContainerImages = v
	return s
}

type GetContainerLogInput struct {
	_ struct{} `type:"structure"`

	// The name of the container that is either running or previously ran on the
	// container service for which to return a log.
	//
	// ContainerName is a required field
	ContainerName *string `locationName:"containerName" type:"string" required:"true"`

	// The end of the time interval for which to get log data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use an
	//    end time of October 1, 2018, at 9 PM UTC, specify 1538427600 as the end
	//    time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// The pattern to use to filter the returned log events to a specific term.
	//
	// The following are a few examples of filter patterns that you can specify:
	//
	//    * To return all log events, specify a filter pattern of "".
	//
	//    * To exclude log events that contain the ERROR term, and return all other
	//    log events, specify a filter pattern of "-ERROR".
	//
	//    * To return log events that contain the ERROR term, specify a filter pattern
	//    of "ERROR".
	//
	//    * To return log events that contain both the ERROR and Exception terms,
	//    specify a filter pattern of "ERROR Exception".
	//
	//    * To return log events that contain the ERROR or the Exception term, specify
	//    a filter pattern of "?ERROR ?Exception".
	FilterPattern *string `locationName:"filterPattern" type:"string"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetContainerLog request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`

	// The name of the container service for which to get a container log.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`

	// The start of the time interval for which to get log data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use a
	//    start time of October 1, 2018, at 8 PM UTC, specify 1538424000 as the
	//    start time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	StartTime *time.Time `locationName:"startTime" 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 GetContainerLogInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerLogInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContainerLogInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContainerLogInput"}
	if s.ContainerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ContainerName"))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContainerName sets the ContainerName field's value.
func (s *GetContainerLogInput) SetContainerName(v string) *GetContainerLogInput {
	s.ContainerName = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *GetContainerLogInput) SetEndTime(v time.Time) *GetContainerLogInput {
	s.EndTime = &v
	return s
}

// SetFilterPattern sets the FilterPattern field's value.
func (s *GetContainerLogInput) SetFilterPattern(v string) *GetContainerLogInput {
	s.FilterPattern = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetContainerLogInput) SetPageToken(v string) *GetContainerLogInput {
	s.PageToken = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *GetContainerLogInput) SetServiceName(v string) *GetContainerLogInput {
	s.ServiceName = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetContainerLogInput) SetStartTime(v time.Time) *GetContainerLogInput {
	s.StartTime = &v
	return s
}

type GetContainerLogOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the log events of a container.
	LogEvents []*ContainerServiceLogEvent `locationName:"logEvents" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetContainerLog request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerLogOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerLogOutput) GoString() string {
	return s.String()
}

// SetLogEvents sets the LogEvents field's value.
func (s *GetContainerLogOutput) SetLogEvents(v []*ContainerServiceLogEvent) *GetContainerLogOutput {
	s.LogEvents = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetContainerLogOutput) SetNextPageToken(v string) *GetContainerLogOutput {
	s.NextPageToken = &v
	return s
}

type GetContainerServiceDeploymentsInput struct {
	_ struct{} `type:"structure"`

	// The name of the container service for which to return deployments.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceDeploymentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceDeploymentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContainerServiceDeploymentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContainerServiceDeploymentsInput"}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServiceName sets the ServiceName field's value.
func (s *GetContainerServiceDeploymentsInput) SetServiceName(v string) *GetContainerServiceDeploymentsInput {
	s.ServiceName = &v
	return s
}

type GetContainerServiceDeploymentsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe deployments for a container service.
	Deployments []*ContainerServiceDeployment `locationName:"deployments" 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 GetContainerServiceDeploymentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceDeploymentsOutput) GoString() string {
	return s.String()
}

// SetDeployments sets the Deployments field's value.
func (s *GetContainerServiceDeploymentsOutput) SetDeployments(v []*ContainerServiceDeployment) *GetContainerServiceDeploymentsOutput {
	s.Deployments = v
	return s
}

type GetContainerServiceMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The end time of the time period.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid container service metric names are listed below, along with the most
	// useful statistics to include in your request, and the published unit value.
	//
	//    * CPUUtilization - The average percentage of compute units that are currently
	//    in use across all nodes of the container service. This metric identifies
	//    the processing power required to run containers on each node of the container
	//    service. Statistics: The most useful statistics are Maximum and Average.
	//    Unit: The published unit is Percent.
	//
	//    * MemoryUtilization - The average percentage of available memory that
	//    is currently in use across all nodes of the container service. This metric
	//    identifies the memory required to run containers on each node of the container
	//    service. Statistics: The most useful statistics are Maximum and Average.
	//    Unit: The published unit is Percent.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"ContainerServiceMetricName"`

	// The granularity, in seconds, of the returned data points.
	//
	// All container service metric data is available in 5-minute (300 seconds)
	// granularity.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The name of the container service for which to get metric data.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`

	// The start time of the time period.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContainerServiceMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContainerServiceMetricDataInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetContainerServiceMetricDataInput) SetEndTime(v time.Time) *GetContainerServiceMetricDataInput {
	s.EndTime = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetContainerServiceMetricDataInput) SetMetricName(v string) *GetContainerServiceMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetContainerServiceMetricDataInput) SetPeriod(v int64) *GetContainerServiceMetricDataInput {
	s.Period = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *GetContainerServiceMetricDataInput) SetServiceName(v string) *GetContainerServiceMetricDataInput {
	s.ServiceName = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetContainerServiceMetricDataInput) SetStartTime(v time.Time) *GetContainerServiceMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetContainerServiceMetricDataInput) SetStatistics(v []*string) *GetContainerServiceMetricDataInput {
	s.Statistics = v
	return s
}

type GetContainerServiceMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"ContainerServiceMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServiceMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetContainerServiceMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetContainerServiceMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetContainerServiceMetricDataOutput) SetMetricName(v string) *GetContainerServiceMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetContainerServicePowersInput 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 GetContainerServicePowersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServicePowersInput) GoString() string {
	return s.String()
}

type GetContainerServicePowersOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the powers that can be specified for a
	// container service.
	Powers []*ContainerServicePower `locationName:"powers" 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 GetContainerServicePowersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServicePowersOutput) GoString() string {
	return s.String()
}

// SetPowers sets the Powers field's value.
func (s *GetContainerServicePowersOutput) SetPowers(v []*ContainerServicePower) *GetContainerServicePowersOutput {
	s.Powers = v
	return s
}

type GetContainerServicesInput struct {
	_ struct{} `type:"structure"`

	// The name of the container service for which to return information.
	//
	// When omitted, the response includes all of your container services in the
	// Amazon Web Services Region where the request is made.
	ServiceName *string `locationName:"serviceName" 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 GetContainerServicesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServicesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContainerServicesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContainerServicesInput"}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServiceName sets the ServiceName field's value.
func (s *GetContainerServicesInput) SetServiceName(v string) *GetContainerServicesInput {
	s.ServiceName = &v
	return s
}

type GetContainerServicesOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe one or more container services.
	ContainerServices []*ContainerService `locationName:"containerServices" 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 GetContainerServicesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContainerServicesOutput) GoString() string {
	return s.String()
}

// SetContainerServices sets the ContainerServices field's value.
func (s *GetContainerServicesOutput) SetContainerServices(v []*ContainerService) *GetContainerServicesOutput {
	s.ContainerServices = v
	return s
}

type GetCostEstimateInput struct {
	_ struct{} `type:"structure"`

	// The cost estimate end time.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you want to use an
	//    end time of October 1, 2018, at 9 PM UTC, specify 1538427600 as the end
	//    time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The resource name.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`

	// The cost estimate start time.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you want to use a
	//    start time of October 1, 2018, at 8 PM UTC, specify 1538424000 as the
	//    start time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCostEstimateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCostEstimateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCostEstimateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCostEstimateInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetCostEstimateInput) SetEndTime(v time.Time) *GetCostEstimateInput {
	s.EndTime = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *GetCostEstimateInput) SetResourceName(v string) *GetCostEstimateInput {
	s.ResourceName = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetCostEstimateInput) SetStartTime(v time.Time) *GetCostEstimateInput {
	s.StartTime = &v
	return s
}

type GetCostEstimateOutput struct {
	_ struct{} `type:"structure"`

	// Returns the estimate's forecasted cost or usage.
	ResourcesBudgetEstimate []*ResourceBudgetEstimate `locationName:"resourcesBudgetEstimate" 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 GetCostEstimateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCostEstimateOutput) GoString() string {
	return s.String()
}

// SetResourcesBudgetEstimate sets the ResourcesBudgetEstimate field's value.
func (s *GetCostEstimateOutput) SetResourcesBudgetEstimate(v []*ResourceBudgetEstimate) *GetCostEstimateOutput {
	s.ResourcesBudgetEstimate = v
	return s
}

type GetDiskInput struct {
	_ struct{} `type:"structure"`

	// The name of the disk (my-disk).
	//
	// DiskName is a required field
	DiskName *string `locationName:"diskName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDiskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDiskInput"}
	if s.DiskName == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskName sets the DiskName field's value.
func (s *GetDiskInput) SetDiskName(v string) *GetDiskInput {
	s.DiskName = &v
	return s
}

type GetDiskOutput struct {
	_ struct{} `type:"structure"`

	// An object containing information about the disk.
	Disk *Disk `locationName:"disk" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskOutput) GoString() string {
	return s.String()
}

// SetDisk sets the Disk field's value.
func (s *GetDiskOutput) SetDisk(v *Disk) *GetDiskOutput {
	s.Disk = v
	return s
}

type GetDiskSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the disk snapshot (my-disk-snapshot).
	//
	// DiskSnapshotName is a required field
	DiskSnapshotName *string `locationName:"diskSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDiskSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDiskSnapshotInput"}
	if s.DiskSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskSnapshotName sets the DiskSnapshotName field's value.
func (s *GetDiskSnapshotInput) SetDiskSnapshotName(v string) *GetDiskSnapshotInput {
	s.DiskSnapshotName = &v
	return s
}

type GetDiskSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An object containing information about the disk snapshot.
	DiskSnapshot *DiskSnapshot `locationName:"diskSnapshot" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotOutput) GoString() string {
	return s.String()
}

// SetDiskSnapshot sets the DiskSnapshot field's value.
func (s *GetDiskSnapshotOutput) SetDiskSnapshot(v *DiskSnapshot) *GetDiskSnapshotOutput {
	s.DiskSnapshot = v
	return s
}

type GetDiskSnapshotsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetDiskSnapshots request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetDiskSnapshotsInput) SetPageToken(v string) *GetDiskSnapshotsInput {
	s.PageToken = &v
	return s
}

type GetDiskSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects containing information about all block storage disk snapshots.
	DiskSnapshots []*DiskSnapshot `locationName:"diskSnapshots" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetDiskSnapshots request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiskSnapshotsOutput) GoString() string {
	return s.String()
}

// SetDiskSnapshots sets the DiskSnapshots field's value.
func (s *GetDiskSnapshotsOutput) SetDiskSnapshots(v []*DiskSnapshot) *GetDiskSnapshotsOutput {
	s.DiskSnapshots = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetDiskSnapshotsOutput) SetNextPageToken(v string) *GetDiskSnapshotsOutput {
	s.NextPageToken = &v
	return s
}

type GetDisksInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetDisks request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDisksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDisksInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetDisksInput) SetPageToken(v string) *GetDisksInput {
	s.PageToken = &v
	return s
}

type GetDisksOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects containing information about all block storage disks.
	Disks []*Disk `locationName:"disks" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetDisks request and specify
	// the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDisksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDisksOutput) GoString() string {
	return s.String()
}

// SetDisks sets the Disks field's value.
func (s *GetDisksOutput) SetDisks(v []*Disk) *GetDisksOutput {
	s.Disks = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetDisksOutput) SetNextPageToken(v string) *GetDisksOutput {
	s.NextPageToken = &v
	return s
}

type GetDistributionBundlesInput 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 GetDistributionBundlesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionBundlesInput) GoString() string {
	return s.String()
}

type GetDistributionBundlesOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes a distribution bundle.
	Bundles []*DistributionBundle `locationName:"bundles" 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 GetDistributionBundlesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionBundlesOutput) GoString() string {
	return s.String()
}

// SetBundles sets the Bundles field's value.
func (s *GetDistributionBundlesOutput) SetBundles(v []*DistributionBundle) *GetDistributionBundlesOutput {
	s.Bundles = v
	return s
}

type GetDistributionLatestCacheResetInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution for which to return the timestamp of the last
	// cache reset.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	//
	// When omitted, the response includes the latest cache reset timestamp of all
	// your distributions.
	DistributionName *string `locationName:"distributionName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionLatestCacheResetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionLatestCacheResetInput) GoString() string {
	return s.String()
}

// SetDistributionName sets the DistributionName field's value.
func (s *GetDistributionLatestCacheResetInput) SetDistributionName(v string) *GetDistributionLatestCacheResetInput {
	s.DistributionName = &v
	return s
}

type GetDistributionLatestCacheResetOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of the last cache reset (1479734909.17) in Unix time format.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp"`

	// The status of the last cache reset.
	Status *string `locationName:"status" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionLatestCacheResetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionLatestCacheResetOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *GetDistributionLatestCacheResetOutput) SetCreateTime(v time.Time) *GetDistributionLatestCacheResetOutput {
	s.CreateTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDistributionLatestCacheResetOutput) SetStatus(v string) *GetDistributionLatestCacheResetOutput {
	s.Status = &v
	return s
}

type GetDistributionMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution for which to get metric data.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	//
	// DistributionName is a required field
	DistributionName *string `locationName:"distributionName" type:"string" required:"true"`

	// The end of the time interval for which to get metric data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use an
	//    end time of October 1, 2018, at 9 PM UTC, specify 1538427600 as the end
	//    time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid distribution metric names are listed below, along with the most useful
	// statistics to include in your request, and the published unit value.
	//
	//    * Requests - The total number of viewer requests received by your Lightsail
	//    distribution, for all HTTP methods, and for both HTTP and HTTPS requests.
	//    Statistics: The most useful statistic is Sum. Unit: The published unit
	//    is None.
	//
	//    * BytesDownloaded - The number of bytes downloaded by viewers for GET,
	//    HEAD, and OPTIONS requests. Statistics: The most useful statistic is Sum.
	//    Unit: The published unit is None.
	//
	//    * BytesUploaded - The number of bytes uploaded to your origin by your
	//    Lightsail distribution, using POST and PUT requests. Statistics: The most
	//    useful statistic is Sum. Unit: The published unit is None.
	//
	//    * TotalErrorRate - The percentage of all viewer requests for which the
	//    response's HTTP status code was 4xx or 5xx. Statistics: The most useful
	//    statistic is Average. Unit: The published unit is Percent.
	//
	//    * 4xxErrorRate - The percentage of all viewer requests for which the response's
	//    HTTP status cod was 4xx. In these cases, the client or client viewer may
	//    have made an error. For example, a status code of 404 (Not Found) means
	//    that the client requested an object that could not be found. Statistics:
	//    The most useful statistic is Average. Unit: The published unit is Percent.
	//
	//    * 5xxErrorRate - The percentage of all viewer requests for which the response's
	//    HTTP status code was 5xx. In these cases, the origin server did not satisfy
	//    the requests. For example, a status code of 503 (Service Unavailable)
	//    means that the origin server is currently unavailable. Statistics: The
	//    most useful statistic is Average. Unit: The published unit is Percent.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"DistributionMetricName"`

	// The granularity, in seconds, for the metric data points that will be returned.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The start of the time interval for which to get metric data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use a
	//    start time of October 1, 2018, at 8 PM UTC, specify 1538424000 as the
	//    start time.
	//
	// You can convert a human-friendly time to Unix time format using a converter
	// like Epoch converter (https://www.epochconverter.com/).
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`

	// The unit for the metric data request.
	//
	// Valid units depend on the metric data being requested. For the valid units
	// with each available metric, see the metricName parameter.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDistributionMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDistributionMetricDataInput"}
	if s.DistributionName == nil {
		invalidParams.Add(request.NewErrParamRequired("DistributionName"))
	}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}
	if s.Unit == nil {
		invalidParams.Add(request.NewErrParamRequired("Unit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDistributionName sets the DistributionName field's value.
func (s *GetDistributionMetricDataInput) SetDistributionName(v string) *GetDistributionMetricDataInput {
	s.DistributionName = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *GetDistributionMetricDataInput) SetEndTime(v time.Time) *GetDistributionMetricDataInput {
	s.EndTime = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetDistributionMetricDataInput) SetMetricName(v string) *GetDistributionMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetDistributionMetricDataInput) SetPeriod(v int64) *GetDistributionMetricDataInput {
	s.Period = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetDistributionMetricDataInput) SetStartTime(v time.Time) *GetDistributionMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetDistributionMetricDataInput) SetStatistics(v []*string) *GetDistributionMetricDataInput {
	s.Statistics = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *GetDistributionMetricDataInput) SetUnit(v string) *GetDistributionMetricDataInput {
	s.Unit = &v
	return s
}

type GetDistributionMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"DistributionMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetDistributionMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetDistributionMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetDistributionMetricDataOutput) SetMetricName(v string) *GetDistributionMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetDistributionsInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution for which to return information.
	//
	// When omitted, the response includes all of your distributions in the Amazon
	// Web Services Region where the request is made.
	DistributionName *string `locationName:"distributionName" type:"string"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetDistributions request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionsInput) GoString() string {
	return s.String()
}

// SetDistributionName sets the DistributionName field's value.
func (s *GetDistributionsInput) SetDistributionName(v string) *GetDistributionsInput {
	s.DistributionName = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetDistributionsInput) SetPageToken(v string) *GetDistributionsInput {
	s.PageToken = &v
	return s
}

type GetDistributionsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe your distributions.
	Distributions []*LightsailDistribution `locationName:"distributions" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetDistributions request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDistributionsOutput) GoString() string {
	return s.String()
}

// SetDistributions sets the Distributions field's value.
func (s *GetDistributionsOutput) SetDistributions(v []*LightsailDistribution) *GetDistributionsOutput {
	s.Distributions = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetDistributionsOutput) SetNextPageToken(v string) *GetDistributionsOutput {
	s.NextPageToken = &v
	return s
}

type GetDomainInput struct {
	_ struct{} `type:"structure"`

	// The domain name for which your want to return information about.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDomainInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDomainInput"}
	if s.DomainName == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainName sets the DomainName field's value.
func (s *GetDomainInput) SetDomainName(v string) *GetDomainInput {
	s.DomainName = &v
	return s
}

type GetDomainOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about your get domain
	// request.
	Domain *Domain `locationName:"domain" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainOutput) GoString() string {
	return s.String()
}

// SetDomain sets the Domain field's value.
func (s *GetDomainOutput) SetDomain(v *Domain) *GetDomainOutput {
	s.Domain = v
	return s
}

type GetDomainsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetDomains request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetDomainsInput) SetPageToken(v string) *GetDomainsInput {
	s.PageToken = &v
	return s
}

type GetDomainsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about each of the domain
	// entries in the user's account.
	Domains []*Domain `locationName:"domains" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetDomains request and specify
	// the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainsOutput) GoString() string {
	return s.String()
}

// SetDomains sets the Domains field's value.
func (s *GetDomainsOutput) SetDomains(v []*Domain) *GetDomainsOutput {
	s.Domains = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetDomainsOutput) SetNextPageToken(v string) *GetDomainsOutput {
	s.NextPageToken = &v
	return s
}

type GetExportSnapshotRecordsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetExportSnapshotRecords request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetExportSnapshotRecordsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetExportSnapshotRecordsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetExportSnapshotRecordsInput) SetPageToken(v string) *GetExportSnapshotRecordsInput {
	s.PageToken = &v
	return s
}

type GetExportSnapshotRecordsOutput struct {
	_ struct{} `type:"structure"`

	// A list of objects describing the export snapshot records.
	ExportSnapshotRecords []*ExportSnapshotRecord `locationName:"exportSnapshotRecords" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetExportSnapshotRecords
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetExportSnapshotRecordsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetExportSnapshotRecordsOutput) GoString() string {
	return s.String()
}

// SetExportSnapshotRecords sets the ExportSnapshotRecords field's value.
func (s *GetExportSnapshotRecordsOutput) SetExportSnapshotRecords(v []*ExportSnapshotRecord) *GetExportSnapshotRecordsOutput {
	s.ExportSnapshotRecords = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetExportSnapshotRecordsOutput) SetNextPageToken(v string) *GetExportSnapshotRecordsOutput {
	s.NextPageToken = &v
	return s
}

type GetInstanceAccessDetailsInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance to access.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// The protocol to use to connect to your instance. Defaults to ssh.
	Protocol *string `locationName:"protocol" type:"string" enum:"InstanceAccessProtocol"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceAccessDetailsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceAccessDetailsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstanceAccessDetailsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstanceAccessDetailsInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *GetInstanceAccessDetailsInput) SetInstanceName(v string) *GetInstanceAccessDetailsInput {
	s.InstanceName = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *GetInstanceAccessDetailsInput) SetProtocol(v string) *GetInstanceAccessDetailsInput {
	s.Protocol = &v
	return s
}

type GetInstanceAccessDetailsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about a get instance access
	// request.
	AccessDetails *InstanceAccessDetails `locationName:"accessDetails" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceAccessDetailsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceAccessDetailsOutput) GoString() string {
	return s.String()
}

// SetAccessDetails sets the AccessDetails field's value.
func (s *GetInstanceAccessDetailsOutput) SetAccessDetails(v *InstanceAccessDetails) *GetInstanceAccessDetailsOutput {
	s.AccessDetails = v
	return s
}

type GetInstanceInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstanceInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *GetInstanceInput) SetInstanceName(v string) *GetInstanceInput {
	s.InstanceName = &v
	return s
}

type GetInstanceMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The end time of the time period.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The name of the instance for which you want to get metrics data.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid instance metric names are listed below, along with the most useful
	// statistics to include in your request, and the published unit value.
	//
	//    * BurstCapacityPercentage - The percentage of CPU performance available
	//    for your instance to burst above its baseline. Your instance continuously
	//    accrues and consumes burst capacity. Burst capacity stops accruing when
	//    your instance's BurstCapacityPercentage reaches 100%. For more information,
	//    see Viewing instance burst capacity in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-instance-burst-capacity).
	//    Statistics: The most useful statistics are Maximum and Average. Unit:
	//    The published unit is Percent.
	//
	//    * BurstCapacityTime - The available amount of time for your instance to
	//    burst at 100% CPU utilization. Your instance continuously accrues and
	//    consumes burst capacity. Burst capacity time stops accruing when your
	//    instance's BurstCapacityPercentage metric reaches 100%. Burst capacity
	//    time is consumed at the full rate only when your instance operates at
	//    100% CPU utilization. For example, if your instance operates at 50% CPU
	//    utilization in the burstable zone for a 5-minute period, then it consumes
	//    CPU burst capacity minutes at a 50% rate in that period. Your instance
	//    consumed 2 minutes and 30 seconds of CPU burst capacity minutes in the
	//    5-minute period. For more information, see Viewing instance burst capacity
	//    in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-instance-burst-capacity).
	//    Statistics: The most useful statistics are Maximum and Average. Unit:
	//    The published unit is Seconds.
	//
	//    * CPUUtilization - The percentage of allocated compute units that are
	//    currently in use on the instance. This metric identifies the processing
	//    power to run the applications on the instance. Tools in your operating
	//    system can show a lower percentage than Lightsail when the instance is
	//    not allocated a full processor core. Statistics: The most useful statistics
	//    are Maximum and Average. Unit: The published unit is Percent.
	//
	//    * NetworkIn - The number of bytes received on all network interfaces by
	//    the instance. This metric identifies the volume of incoming network traffic
	//    to the instance. The number reported is the number of bytes received during
	//    the period. Because this metric is reported in 5-minute intervals, divide
	//    the reported number by 300 to find Bytes/second. Statistics: The most
	//    useful statistic is Sum. Unit: The published unit is Bytes.
	//
	//    * NetworkOut - The number of bytes sent out on all network interfaces
	//    by the instance. This metric identifies the volume of outgoing network
	//    traffic from the instance. The number reported is the number of bytes
	//    sent during the period. Because this metric is reported in 5-minute intervals,
	//    divide the reported number by 300 to find Bytes/second. Statistics: The
	//    most useful statistic is Sum. Unit: The published unit is Bytes.
	//
	//    * StatusCheckFailed - Reports whether the instance passed or failed both
	//    the instance status check and the system status check. This metric can
	//    be either 0 (passed) or 1 (failed). This metric data is available in 1-minute
	//    (60 seconds) granularity. Statistics: The most useful statistic is Sum.
	//    Unit: The published unit is Count.
	//
	//    * StatusCheckFailed_Instance - Reports whether the instance passed or
	//    failed the instance status check. This metric can be either 0 (passed)
	//    or 1 (failed). This metric data is available in 1-minute (60 seconds)
	//    granularity. Statistics: The most useful statistic is Sum. Unit: The published
	//    unit is Count.
	//
	//    * StatusCheckFailed_System - Reports whether the instance passed or failed
	//    the system status check. This metric can be either 0 (passed) or 1 (failed).
	//    This metric data is available in 1-minute (60 seconds) granularity. Statistics:
	//    The most useful statistic is Sum. Unit: The published unit is Count.
	//
	//    * MetadataNoToken - Reports the number of times that the instance metadata
	//    service was successfully accessed without a token. This metric determines
	//    if there are any processes accessing instance metadata by using Instance
	//    Metadata Service Version 1, which doesn't use a token. If all requests
	//    use token-backed sessions, such as Instance Metadata Service Version 2,
	//    then the value is 0. Statistics: The most useful statistic is Sum. Unit:
	//    The published unit is Count.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"InstanceMetricName"`

	// The granularity, in seconds, of the returned data points.
	//
	// The StatusCheckFailed, StatusCheckFailed_Instance, and StatusCheckFailed_System
	// instance metric data is available in 1-minute (60 seconds) granularity. All
	// other instance metric data is available in 5-minute (300 seconds) granularity.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The start time of the time period.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`

	// The unit for the metric data request. Valid units depend on the metric data
	// being requested. For the valid units to specify with each available metric,
	// see the metricName parameter.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstanceMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstanceMetricDataInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}
	if s.Unit == nil {
		invalidParams.Add(request.NewErrParamRequired("Unit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetInstanceMetricDataInput) SetEndTime(v time.Time) *GetInstanceMetricDataInput {
	s.EndTime = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *GetInstanceMetricDataInput) SetInstanceName(v string) *GetInstanceMetricDataInput {
	s.InstanceName = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetInstanceMetricDataInput) SetMetricName(v string) *GetInstanceMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetInstanceMetricDataInput) SetPeriod(v int64) *GetInstanceMetricDataInput {
	s.Period = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetInstanceMetricDataInput) SetStartTime(v time.Time) *GetInstanceMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetInstanceMetricDataInput) SetStatistics(v []*string) *GetInstanceMetricDataInput {
	s.Statistics = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *GetInstanceMetricDataInput) SetUnit(v string) *GetInstanceMetricDataInput {
	s.Unit = &v
	return s
}

type GetInstanceMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"InstanceMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetInstanceMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetInstanceMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetInstanceMetricDataOutput) SetMetricName(v string) *GetInstanceMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetInstanceOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the specified instance.
	Instance *Instance `locationName:"instance" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceOutput) GoString() string {
	return s.String()
}

// SetInstance sets the Instance field's value.
func (s *GetInstanceOutput) SetInstance(v *Instance) *GetInstanceOutput {
	s.Instance = v
	return s
}

type GetInstancePortStatesInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance for which to return firewall port states.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancePortStatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancePortStatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstancePortStatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstancePortStatesInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *GetInstancePortStatesInput) SetInstanceName(v string) *GetInstancePortStatesInput {
	s.InstanceName = &v
	return s
}

type GetInstancePortStatesOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the firewall port states for the specified
	// instance.
	PortStates []*InstancePortState `locationName:"portStates" 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 GetInstancePortStatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancePortStatesOutput) GoString() string {
	return s.String()
}

// SetPortStates sets the PortStates field's value.
func (s *GetInstancePortStatesOutput) SetPortStates(v []*InstancePortState) *GetInstancePortStatesOutput {
	s.PortStates = v
	return s
}

type GetInstanceSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the snapshot for which you are requesting information.
	//
	// InstanceSnapshotName is a required field
	InstanceSnapshotName *string `locationName:"instanceSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstanceSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstanceSnapshotInput"}
	if s.InstanceSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceSnapshotName sets the InstanceSnapshotName field's value.
func (s *GetInstanceSnapshotInput) SetInstanceSnapshotName(v string) *GetInstanceSnapshotInput {
	s.InstanceSnapshotName = &v
	return s
}

type GetInstanceSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the results of your
	// get instance snapshot request.
	InstanceSnapshot *InstanceSnapshot `locationName:"instanceSnapshot" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotOutput) GoString() string {
	return s.String()
}

// SetInstanceSnapshot sets the InstanceSnapshot field's value.
func (s *GetInstanceSnapshotOutput) SetInstanceSnapshot(v *InstanceSnapshot) *GetInstanceSnapshotOutput {
	s.InstanceSnapshot = v
	return s
}

type GetInstanceSnapshotsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetInstanceSnapshots request. If
	// your results are paginated, the response will return a next page token that
	// you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetInstanceSnapshotsInput) SetPageToken(v string) *GetInstanceSnapshotsInput {
	s.PageToken = &v
	return s
}

type GetInstanceSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the results of your
	// get instance snapshots request.
	InstanceSnapshots []*InstanceSnapshot `locationName:"instanceSnapshots" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetInstanceSnapshots request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceSnapshotsOutput) GoString() string {
	return s.String()
}

// SetInstanceSnapshots sets the InstanceSnapshots field's value.
func (s *GetInstanceSnapshotsOutput) SetInstanceSnapshots(v []*InstanceSnapshot) *GetInstanceSnapshotsOutput {
	s.InstanceSnapshots = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetInstanceSnapshotsOutput) SetNextPageToken(v string) *GetInstanceSnapshotsOutput {
	s.NextPageToken = &v
	return s
}

type GetInstanceStateInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance to get state information about.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceStateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceStateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInstanceStateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInstanceStateInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *GetInstanceStateInput) SetInstanceName(v string) *GetInstanceStateInput {
	s.InstanceName = &v
	return s
}

type GetInstanceStateOutput struct {
	_ struct{} `type:"structure"`

	// The state of the instance.
	State *InstanceState `locationName:"state" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceStateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstanceStateOutput) GoString() string {
	return s.String()
}

// SetState sets the State field's value.
func (s *GetInstanceStateOutput) SetState(v *InstanceState) *GetInstanceStateOutput {
	s.State = v
	return s
}

type GetInstancesInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetInstances request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancesInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetInstancesInput) SetPageToken(v string) *GetInstancesInput {
	s.PageToken = &v
	return s
}

type GetInstancesOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about your instances.
	Instances []*Instance `locationName:"instances" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetInstances request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInstancesOutput) GoString() string {
	return s.String()
}

// SetInstances sets the Instances field's value.
func (s *GetInstancesOutput) SetInstances(v []*Instance) *GetInstancesOutput {
	s.Instances = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetInstancesOutput) SetNextPageToken(v string) *GetInstancesOutput {
	s.NextPageToken = &v
	return s
}

type GetKeyPairInput struct {
	_ struct{} `type:"structure"`

	// The name of the key pair for which you are requesting information.
	//
	// KeyPairName is a required field
	KeyPairName *string `locationName:"keyPairName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetKeyPairInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetKeyPairInput"}
	if s.KeyPairName == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyPairName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *GetKeyPairInput) SetKeyPairName(v string) *GetKeyPairInput {
	s.KeyPairName = &v
	return s
}

type GetKeyPairOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the key pair.
	KeyPair *KeyPair `locationName:"keyPair" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairOutput) GoString() string {
	return s.String()
}

// SetKeyPair sets the KeyPair field's value.
func (s *GetKeyPairOutput) SetKeyPair(v *KeyPair) *GetKeyPairOutput {
	s.KeyPair = v
	return s
}

type GetKeyPairsInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to include the default key pair in
	// the response of your request.
	IncludeDefaultKeyPair *bool `locationName:"includeDefaultKeyPair" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetKeyPairs request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairsInput) GoString() string {
	return s.String()
}

// SetIncludeDefaultKeyPair sets the IncludeDefaultKeyPair field's value.
func (s *GetKeyPairsInput) SetIncludeDefaultKeyPair(v bool) *GetKeyPairsInput {
	s.IncludeDefaultKeyPair = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetKeyPairsInput) SetPageToken(v string) *GetKeyPairsInput {
	s.PageToken = &v
	return s
}

type GetKeyPairsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the key pairs.
	KeyPairs []*KeyPair `locationName:"keyPairs" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetKeyPairs request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetKeyPairsOutput) GoString() string {
	return s.String()
}

// SetKeyPairs sets the KeyPairs field's value.
func (s *GetKeyPairsOutput) SetKeyPairs(v []*KeyPair) *GetKeyPairsOutput {
	s.KeyPairs = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetKeyPairsOutput) SetNextPageToken(v string) *GetKeyPairsOutput {
	s.NextPageToken = &v
	return s
}

type GetLoadBalancerInput struct {
	_ struct{} `type:"structure"`

	// The name of the load balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetLoadBalancerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetLoadBalancerInput"}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *GetLoadBalancerInput) SetLoadBalancerName(v string) *GetLoadBalancerInput {
	s.LoadBalancerName = &v
	return s
}

type GetLoadBalancerMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The end time of the period.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The name of the load balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid load balancer metric names are listed below, along with the most useful
	// statistics to include in your request, and the published unit value.
	//
	//    * ClientTLSNegotiationErrorCount - The number of TLS connections initiated
	//    by the client that did not establish a session with the load balancer
	//    due to a TLS error generated by the load balancer. Possible causes include
	//    a mismatch of ciphers or protocols. Statistics: The most useful statistic
	//    is Sum. Unit: The published unit is Count.
	//
	//    * HealthyHostCount - The number of target instances that are considered
	//    healthy. Statistics: The most useful statistic are Average, Minimum, and
	//    Maximum. Unit: The published unit is Count.
	//
	//    * HTTPCode_Instance_2XX_Count - The number of HTTP 2XX response codes
	//    generated by the target instances. This does not include any response
	//    codes generated by the load balancer. Statistics: The most useful statistic
	//    is Sum. Note that Minimum, Maximum, and Average all return 1. Unit: The
	//    published unit is Count.
	//
	//    * HTTPCode_Instance_3XX_Count - The number of HTTP 3XX response codes
	//    generated by the target instances. This does not include any response
	//    codes generated by the load balancer. Statistics: The most useful statistic
	//    is Sum. Note that Minimum, Maximum, and Average all return 1. Unit: The
	//    published unit is Count.
	//
	//    * HTTPCode_Instance_4XX_Count - The number of HTTP 4XX response codes
	//    generated by the target instances. This does not include any response
	//    codes generated by the load balancer. Statistics: The most useful statistic
	//    is Sum. Note that Minimum, Maximum, and Average all return 1. Unit: The
	//    published unit is Count.
	//
	//    * HTTPCode_Instance_5XX_Count - The number of HTTP 5XX response codes
	//    generated by the target instances. This does not include any response
	//    codes generated by the load balancer. Statistics: The most useful statistic
	//    is Sum. Note that Minimum, Maximum, and Average all return 1. Unit: The
	//    published unit is Count.
	//
	//    * HTTPCode_LB_4XX_Count - The number of HTTP 4XX client error codes that
	//    originated from the load balancer. Client errors are generated when requests
	//    are malformed or incomplete. These requests were not received by the target
	//    instance. This count does not include response codes generated by the
	//    target instances. Statistics: The most useful statistic is Sum. Note that
	//    Minimum, Maximum, and Average all return 1. Unit: The published unit is
	//    Count.
	//
	//    * HTTPCode_LB_5XX_Count - The number of HTTP 5XX server error codes that
	//    originated from the load balancer. This does not include any response
	//    codes generated by the target instance. This metric is reported if there
	//    are no healthy instances attached to the load balancer, or if the request
	//    rate exceeds the capacity of the instances (spillover) or the load balancer.
	//    Statistics: The most useful statistic is Sum. Note that Minimum, Maximum,
	//    and Average all return 1. Unit: The published unit is Count.
	//
	//    * InstanceResponseTime - The time elapsed, in seconds, after the request
	//    leaves the load balancer until a response from the target instance is
	//    received. Statistics: The most useful statistic is Average. Unit: The
	//    published unit is Seconds.
	//
	//    * RejectedConnectionCount - The number of connections that were rejected
	//    because the load balancer had reached its maximum number of connections.
	//    Statistics: The most useful statistic is Sum. Unit: The published unit
	//    is Count.
	//
	//    * RequestCount - The number of requests processed over IPv4. This count
	//    includes only the requests with a response generated by a target instance
	//    of the load balancer. Statistics: The most useful statistic is Sum. Note
	//    that Minimum, Maximum, and Average all return 1. Unit: The published unit
	//    is Count.
	//
	//    * UnhealthyHostCount - The number of target instances that are considered
	//    unhealthy. Statistics: The most useful statistic are Average, Minimum,
	//    and Maximum. Unit: The published unit is Count.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"LoadBalancerMetricName"`

	// The granularity, in seconds, of the returned data points.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The start time of the period.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`

	// The unit for the metric data request. Valid units depend on the metric data
	// being requested. For the valid units with each available metric, see the
	// metricName parameter.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetLoadBalancerMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetLoadBalancerMetricDataInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}
	if s.Unit == nil {
		invalidParams.Add(request.NewErrParamRequired("Unit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetLoadBalancerMetricDataInput) SetEndTime(v time.Time) *GetLoadBalancerMetricDataInput {
	s.EndTime = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *GetLoadBalancerMetricDataInput) SetLoadBalancerName(v string) *GetLoadBalancerMetricDataInput {
	s.LoadBalancerName = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetLoadBalancerMetricDataInput) SetMetricName(v string) *GetLoadBalancerMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetLoadBalancerMetricDataInput) SetPeriod(v int64) *GetLoadBalancerMetricDataInput {
	s.Period = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetLoadBalancerMetricDataInput) SetStartTime(v time.Time) *GetLoadBalancerMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetLoadBalancerMetricDataInput) SetStatistics(v []*string) *GetLoadBalancerMetricDataInput {
	s.Statistics = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *GetLoadBalancerMetricDataInput) SetUnit(v string) *GetLoadBalancerMetricDataInput {
	s.Unit = &v
	return s
}

type GetLoadBalancerMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"LoadBalancerMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetLoadBalancerMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetLoadBalancerMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetLoadBalancerMetricDataOutput) SetMetricName(v string) *GetLoadBalancerMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetLoadBalancerOutput struct {
	_ struct{} `type:"structure"`

	// An object containing information about your load balancer.
	LoadBalancer *LoadBalancer `locationName:"loadBalancer" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerOutput) GoString() string {
	return s.String()
}

// SetLoadBalancer sets the LoadBalancer field's value.
func (s *GetLoadBalancerOutput) SetLoadBalancer(v *LoadBalancer) *GetLoadBalancerOutput {
	s.LoadBalancer = v
	return s
}

type GetLoadBalancerTlsCertificatesInput struct {
	_ struct{} `type:"structure"`

	// The name of the load balancer you associated with your SSL/TLS certificate.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsCertificatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsCertificatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetLoadBalancerTlsCertificatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetLoadBalancerTlsCertificatesInput"}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *GetLoadBalancerTlsCertificatesInput) SetLoadBalancerName(v string) *GetLoadBalancerTlsCertificatesInput {
	s.LoadBalancerName = &v
	return s
}

type GetLoadBalancerTlsCertificatesOutput struct {
	_ struct{} `type:"structure"`

	// An array of LoadBalancerTlsCertificate objects describing your SSL/TLS certificates.
	TlsCertificates []*LoadBalancerTlsCertificate `locationName:"tlsCertificates" 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 GetLoadBalancerTlsCertificatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsCertificatesOutput) GoString() string {
	return s.String()
}

// SetTlsCertificates sets the TlsCertificates field's value.
func (s *GetLoadBalancerTlsCertificatesOutput) SetTlsCertificates(v []*LoadBalancerTlsCertificate) *GetLoadBalancerTlsCertificatesOutput {
	s.TlsCertificates = v
	return s
}

type GetLoadBalancerTlsPoliciesInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetLoadBalancerTlsPolicies request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsPoliciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsPoliciesInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetLoadBalancerTlsPoliciesInput) SetPageToken(v string) *GetLoadBalancerTlsPoliciesInput {
	s.PageToken = &v
	return s
}

type GetLoadBalancerTlsPoliciesOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetLoadBalancerTlsPolicies
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An array of objects that describe the TLS security policies that are available.
	TlsPolicies []*LoadBalancerTlsPolicy `locationName:"tlsPolicies" 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 GetLoadBalancerTlsPoliciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancerTlsPoliciesOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetLoadBalancerTlsPoliciesOutput) SetNextPageToken(v string) *GetLoadBalancerTlsPoliciesOutput {
	s.NextPageToken = &v
	return s
}

// SetTlsPolicies sets the TlsPolicies field's value.
func (s *GetLoadBalancerTlsPoliciesOutput) SetTlsPolicies(v []*LoadBalancerTlsPolicy) *GetLoadBalancerTlsPoliciesOutput {
	s.TlsPolicies = v
	return s
}

type GetLoadBalancersInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetLoadBalancers request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancersInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetLoadBalancersInput) SetPageToken(v string) *GetLoadBalancersInput {
	s.PageToken = &v
	return s
}

type GetLoadBalancersOutput struct {
	_ struct{} `type:"structure"`

	// An array of LoadBalancer objects describing your load balancers.
	LoadBalancers []*LoadBalancer `locationName:"loadBalancers" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetLoadBalancers request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLoadBalancersOutput) GoString() string {
	return s.String()
}

// SetLoadBalancers sets the LoadBalancers field's value.
func (s *GetLoadBalancersOutput) SetLoadBalancers(v []*LoadBalancer) *GetLoadBalancersOutput {
	s.LoadBalancers = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetLoadBalancersOutput) SetNextPageToken(v string) *GetLoadBalancersOutput {
	s.NextPageToken = &v
	return s
}

type GetOperationInput struct {
	_ struct{} `type:"structure"`

	// A GUID used to identify the operation.
	//
	// OperationId is a required field
	OperationId *string `locationName:"operationId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetOperationInput"}
	if s.OperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("OperationId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOperationId sets the OperationId field's value.
func (s *GetOperationInput) SetOperationId(v string) *GetOperationInput {
	s.OperationId = &v
	return s
}

type GetOperationOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *GetOperationOutput) SetOperation(v *Operation) *GetOperationOutput {
	s.Operation = v
	return s
}

type GetOperationsForResourceInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetOperationsForResource request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`

	// The name of the resource for which you are requesting information.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsForResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetOperationsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetOperationsForResourceInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPageToken sets the PageToken field's value.
func (s *GetOperationsForResourceInput) SetPageToken(v string) *GetOperationsForResourceInput {
	s.PageToken = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *GetOperationsForResourceInput) SetResourceName(v string) *GetOperationsForResourceInput {
	s.ResourceName = &v
	return s
}

type GetOperationsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// (Discontinued) Returns the number of pages of results that remain.
	//
	// In releases prior to June 12, 2017, this parameter returned null by the API.
	// It is now discontinued, and the API returns the next page token parameter
	// instead.
	//
	// Deprecated: NextPageCount has been deprecated
	NextPageCount *string `locationName:"nextPageCount" deprecated:"true" type:"string"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetOperationsForResource
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 GetOperationsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsForResourceOutput) GoString() string {
	return s.String()
}

// SetNextPageCount sets the NextPageCount field's value.
func (s *GetOperationsForResourceOutput) SetNextPageCount(v string) *GetOperationsForResourceOutput {
	s.NextPageCount = &v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetOperationsForResourceOutput) SetNextPageToken(v string) *GetOperationsForResourceOutput {
	s.NextPageToken = &v
	return s
}

// SetOperations sets the Operations field's value.
func (s *GetOperationsForResourceOutput) SetOperations(v []*Operation) *GetOperationsForResourceOutput {
	s.Operations = v
	return s
}

type GetOperationsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetOperations request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetOperationsInput) SetPageToken(v string) *GetOperationsInput {
	s.PageToken = &v
	return s
}

type GetOperationsOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetOperations request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 GetOperationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationsOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetOperationsOutput) SetNextPageToken(v string) *GetOperationsOutput {
	s.NextPageToken = &v
	return s
}

// SetOperations sets the Operations field's value.
func (s *GetOperationsOutput) SetOperations(v []*Operation) *GetOperationsOutput {
	s.Operations = v
	return s
}

type GetRegionsInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value indicating whether to also include Availability Zones in
	// your get regions request. Availability Zones are indicated with a letter:
	// us-east-2a.
	IncludeAvailabilityZones *bool `locationName:"includeAvailabilityZones" type:"boolean"`

	// A Boolean value indicating whether to also include Availability Zones for
	// databases in your get regions request. Availability Zones are indicated with
	// a letter (us-east-2a).
	IncludeRelationalDatabaseAvailabilityZones *bool `locationName:"includeRelationalDatabaseAvailabilityZones" 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 GetRegionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRegionsInput) GoString() string {
	return s.String()
}

// SetIncludeAvailabilityZones sets the IncludeAvailabilityZones field's value.
func (s *GetRegionsInput) SetIncludeAvailabilityZones(v bool) *GetRegionsInput {
	s.IncludeAvailabilityZones = &v
	return s
}

// SetIncludeRelationalDatabaseAvailabilityZones sets the IncludeRelationalDatabaseAvailabilityZones field's value.
func (s *GetRegionsInput) SetIncludeRelationalDatabaseAvailabilityZones(v bool) *GetRegionsInput {
	s.IncludeRelationalDatabaseAvailabilityZones = &v
	return s
}

type GetRegionsOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about your get regions
	// request.
	Regions []*Region `locationName:"regions" 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 GetRegionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRegionsOutput) GoString() string {
	return s.String()
}

// SetRegions sets the Regions field's value.
func (s *GetRegionsOutput) SetRegions(v []*Region) *GetRegionsOutput {
	s.Regions = v
	return s
}

type GetRelationalDatabaseBlueprintsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseBlueprints request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBlueprintsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBlueprintsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseBlueprintsInput) SetPageToken(v string) *GetRelationalDatabaseBlueprintsInput {
	s.PageToken = &v
	return s
}

type GetRelationalDatabaseBlueprintsOutput struct {
	_ struct{} `type:"structure"`

	// An object describing the result of your get relational database blueprints
	// request.
	Blueprints []*RelationalDatabaseBlueprint `locationName:"blueprints" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabaseBlueprints
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBlueprintsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBlueprintsOutput) GoString() string {
	return s.String()
}

// SetBlueprints sets the Blueprints field's value.
func (s *GetRelationalDatabaseBlueprintsOutput) SetBlueprints(v []*RelationalDatabaseBlueprint) *GetRelationalDatabaseBlueprintsOutput {
	s.Blueprints = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabaseBlueprintsOutput) SetNextPageToken(v string) *GetRelationalDatabaseBlueprintsOutput {
	s.NextPageToken = &v
	return s
}

type GetRelationalDatabaseBundlesInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to include inactive (unavailable)
	// bundles in the response of your request.
	IncludeInactive *bool `locationName:"includeInactive" type:"boolean"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseBundles request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBundlesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBundlesInput) GoString() string {
	return s.String()
}

// SetIncludeInactive sets the IncludeInactive field's value.
func (s *GetRelationalDatabaseBundlesInput) SetIncludeInactive(v bool) *GetRelationalDatabaseBundlesInput {
	s.IncludeInactive = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseBundlesInput) SetPageToken(v string) *GetRelationalDatabaseBundlesInput {
	s.PageToken = &v
	return s
}

type GetRelationalDatabaseBundlesOutput struct {
	_ struct{} `type:"structure"`

	// An object describing the result of your get relational database bundles request.
	Bundles []*RelationalDatabaseBundle `locationName:"bundles" type:"list"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabaseBundles
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBundlesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseBundlesOutput) GoString() string {
	return s.String()
}

// SetBundles sets the Bundles field's value.
func (s *GetRelationalDatabaseBundlesOutput) SetBundles(v []*RelationalDatabaseBundle) *GetRelationalDatabaseBundlesOutput {
	s.Bundles = v
	return s
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabaseBundlesOutput) SetNextPageToken(v string) *GetRelationalDatabaseBundlesOutput {
	s.NextPageToken = &v
	return s
}

type GetRelationalDatabaseEventsInput struct {
	_ struct{} `type:"structure"`

	// The number of minutes in the past from which to retrieve events. For example,
	// to get all events from the past 2 hours, enter 120.
	//
	// Default: 60
	//
	// The minimum is 1 and the maximum is 14 days (20160 minutes).
	DurationInMinutes *int64 `locationName:"durationInMinutes" type:"integer"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseEvents request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`

	// The name of the database from which to get events.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseEventsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseEventsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseEventsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseEventsInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDurationInMinutes sets the DurationInMinutes field's value.
func (s *GetRelationalDatabaseEventsInput) SetDurationInMinutes(v int64) *GetRelationalDatabaseEventsInput {
	s.DurationInMinutes = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseEventsInput) SetPageToken(v string) *GetRelationalDatabaseEventsInput {
	s.PageToken = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseEventsInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseEventsInput {
	s.RelationalDatabaseName = &v
	return s
}

type GetRelationalDatabaseEventsOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabaseEvents
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An object describing the result of your get relational database events request.
	RelationalDatabaseEvents []*RelationalDatabaseEvent `locationName:"relationalDatabaseEvents" 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 GetRelationalDatabaseEventsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseEventsOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabaseEventsOutput) SetNextPageToken(v string) *GetRelationalDatabaseEventsOutput {
	s.NextPageToken = &v
	return s
}

// SetRelationalDatabaseEvents sets the RelationalDatabaseEvents field's value.
func (s *GetRelationalDatabaseEventsOutput) SetRelationalDatabaseEvents(v []*RelationalDatabaseEvent) *GetRelationalDatabaseEventsOutput {
	s.RelationalDatabaseEvents = v
	return s
}

type GetRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The name of the database that you are looking up.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

type GetRelationalDatabaseLogEventsInput struct {
	_ struct{} `type:"structure"`

	// The end of the time interval from which to get log events.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use an
	//    end time of October 1, 2018, at 8 PM UTC, then you input 1538424000 as
	//    the end time.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// The name of the log stream.
	//
	// Use the get relational database log streams operation to get a list of available
	// log streams.
	//
	// LogStreamName is a required field
	LogStreamName *string `locationName:"logStreamName" type:"string" required:"true"`

	// The token to advance to the next or previous page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseLogEvents request.
	// If your results are paginated, the response will return a next forward token
	// and/or next backward token that you can specify as the page token in a subsequent
	// request.
	PageToken *string `locationName:"pageToken" type:"string"`

	// The name of your database for which to get log events.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// Parameter to specify if the log should start from head or tail. If true is
	// specified, the log event starts from the head of the log. If false is specified,
	// the log event starts from the tail of the log.
	//
	// For PostgreSQL, the default value of false is the only option available.
	StartFromHead *bool `locationName:"startFromHead" type:"boolean"`

	// The start of the time interval from which to get log events.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use a
	//    start time of October 1, 2018, at 8 PM UTC, then you input 1538424000
	//    as the start time.
	StartTime *time.Time `locationName:"startTime" 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 GetRelationalDatabaseLogEventsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseLogEventsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseLogEventsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseLogEventsInput"}
	if s.LogStreamName == nil {
		invalidParams.Add(request.NewErrParamRequired("LogStreamName"))
	}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetEndTime(v time.Time) *GetRelationalDatabaseLogEventsInput {
	s.EndTime = &v
	return s
}

// SetLogStreamName sets the LogStreamName field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetLogStreamName(v string) *GetRelationalDatabaseLogEventsInput {
	s.LogStreamName = &v
	return s
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetPageToken(v string) *GetRelationalDatabaseLogEventsInput {
	s.PageToken = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseLogEventsInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetStartFromHead sets the StartFromHead field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetStartFromHead(v bool) *GetRelationalDatabaseLogEventsInput {
	s.StartFromHead = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetRelationalDatabaseLogEventsInput) SetStartTime(v time.Time) *GetRelationalDatabaseLogEventsInput {
	s.StartTime = &v
	return s
}

type GetRelationalDatabaseLogEventsOutput struct {
	_ struct{} `type:"structure"`

	// A token used for advancing to the previous page of results from your get
	// relational database log events request.
	NextBackwardToken *string `locationName:"nextBackwardToken" type:"string"`

	// A token used for advancing to the next page of results from your get relational
	// database log events request.
	NextForwardToken *string `locationName:"nextForwardToken" type:"string"`

	// An object describing the result of your get relational database log events
	// request.
	ResourceLogEvents []*LogEvent `locationName:"resourceLogEvents" 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 GetRelationalDatabaseLogEventsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseLogEventsOutput) GoString() string {
	return s.String()
}

// SetNextBackwardToken sets the NextBackwardToken field's value.
func (s *GetRelationalDatabaseLogEventsOutput) SetNextBackwardToken(v string) *GetRelationalDatabaseLogEventsOutput {
	s.NextBackwardToken = &v
	return s
}

// SetNextForwardToken sets the NextForwardToken field's value.
func (s *GetRelationalDatabaseLogEventsOutput) SetNextForwardToken(v string) *GetRelationalDatabaseLogEventsOutput {
	s.NextForwardToken = &v
	return s
}

// SetResourceLogEvents sets the ResourceLogEvents field's value.
func (s *GetRelationalDatabaseLogEventsOutput) SetResourceLogEvents(v []*LogEvent) *GetRelationalDatabaseLogEventsOutput {
	s.ResourceLogEvents = v
	return s
}

type GetRelationalDatabaseLogStreamsInput struct {
	_ struct{} `type:"structure"`

	// The name of your database for which to get log streams.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseLogStreamsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseLogStreamsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseLogStreamsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseLogStreamsInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseLogStreamsInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseLogStreamsInput {
	s.RelationalDatabaseName = &v
	return s
}

type GetRelationalDatabaseLogStreamsOutput struct {
	_ struct{} `type:"structure"`

	// An object describing the result of your get relational database log streams
	// request.
	LogStreams []*string `locationName:"logStreams" 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 GetRelationalDatabaseLogStreamsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseLogStreamsOutput) GoString() string {
	return s.String()
}

// SetLogStreams sets the LogStreams field's value.
func (s *GetRelationalDatabaseLogStreamsOutput) SetLogStreams(v []*string) *GetRelationalDatabaseLogStreamsOutput {
	s.LogStreams = v
	return s
}

type GetRelationalDatabaseMasterUserPasswordInput struct {
	_ struct{} `type:"structure"`

	// The password version to return.
	//
	// Specifying CURRENT or PREVIOUS returns the current or previous passwords
	// respectively. Specifying PENDING returns the newest version of the password
	// that will rotate to CURRENT. After the PENDING password rotates to CURRENT,
	// the PENDING password is no longer available.
	//
	// Default: CURRENT
	PasswordVersion *string `locationName:"passwordVersion" type:"string" enum:"RelationalDatabasePasswordVersion"`

	// The name of your database for which to get the master user password.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMasterUserPasswordInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMasterUserPasswordInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseMasterUserPasswordInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseMasterUserPasswordInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPasswordVersion sets the PasswordVersion field's value.
func (s *GetRelationalDatabaseMasterUserPasswordInput) SetPasswordVersion(v string) *GetRelationalDatabaseMasterUserPasswordInput {
	s.PasswordVersion = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseMasterUserPasswordInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseMasterUserPasswordInput {
	s.RelationalDatabaseName = &v
	return s
}

type GetRelationalDatabaseMasterUserPasswordOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp when the specified version of the master user password was
	// created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The master user password for the password version specified.
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetRelationalDatabaseMasterUserPasswordOutput's
	// String and GoString methods.
	MasterUserPassword *string `locationName:"masterUserPassword" 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 GetRelationalDatabaseMasterUserPasswordOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMasterUserPasswordOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetRelationalDatabaseMasterUserPasswordOutput) SetCreatedAt(v time.Time) *GetRelationalDatabaseMasterUserPasswordOutput {
	s.CreatedAt = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *GetRelationalDatabaseMasterUserPasswordOutput) SetMasterUserPassword(v string) *GetRelationalDatabaseMasterUserPasswordOutput {
	s.MasterUserPassword = &v
	return s
}

type GetRelationalDatabaseMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The end of the time interval from which to get metric data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use an
	//    end time of October 1, 2018, at 8 PM UTC, then you input 1538424000 as
	//    the end time.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The metric for which you want to return information.
	//
	// Valid relational database metric names are listed below, along with the most
	// useful statistics to include in your request, and the published unit value.
	// All relational database metric data is available in 1-minute (60 seconds)
	// granularity.
	//
	//    * CPUUtilization - The percentage of CPU utilization currently in use
	//    on the database. Statistics: The most useful statistics are Maximum and
	//    Average. Unit: The published unit is Percent.
	//
	//    * DatabaseConnections - The number of database connections in use. Statistics:
	//    The most useful statistics are Maximum and Sum. Unit: The published unit
	//    is Count.
	//
	//    * DiskQueueDepth - The number of outstanding IOs (read/write requests)
	//    that are waiting to access the disk. Statistics: The most useful statistic
	//    is Sum. Unit: The published unit is Count.
	//
	//    * FreeStorageSpace - The amount of available storage space. Statistics:
	//    The most useful statistic is Sum. Unit: The published unit is Bytes.
	//
	//    * NetworkReceiveThroughput - The incoming (Receive) network traffic on
	//    the database, including both customer database traffic and AWS traffic
	//    used for monitoring and replication. Statistics: The most useful statistic
	//    is Average. Unit: The published unit is Bytes/Second.
	//
	//    * NetworkTransmitThroughput - The outgoing (Transmit) network traffic
	//    on the database, including both customer database traffic and AWS traffic
	//    used for monitoring and replication. Statistics: The most useful statistic
	//    is Average. Unit: The published unit is Bytes/Second.
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"RelationalDatabaseMetricName"`

	// The granularity, in seconds, of the returned data points.
	//
	// All relational database metric data is available in 1-minute (60 seconds)
	// granularity.
	//
	// Period is a required field
	Period *int64 `locationName:"period" min:"60" type:"integer" required:"true"`

	// The name of your database from which to get metric data.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// The start of the time interval from which to get metric data.
	//
	// Constraints:
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Specified in the Unix time format. For example, if you wish to use a
	//    start time of October 1, 2018, at 8 PM UTC, then you input 1538424000
	//    as the start time.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic for the metric.
	//
	// The following statistics are available:
	//
	//    * Minimum - The lowest value observed during the specified period. Use
	//    this value to determine low volumes of activity for your application.
	//
	//    * Maximum - The highest value observed during the specified period. Use
	//    this value to determine high volumes of activity for your application.
	//
	//    * Sum - All values submitted for the matching metric added together. You
	//    can use this statistic to determine the total volume of a metric.
	//
	//    * Average - The value of Sum / SampleCount during the specified period.
	//    By comparing this statistic with the Minimum and Maximum values, you can
	//    determine the full scope of a metric and how close the average use is
	//    to the Minimum and Maximum values. This comparison helps you to know when
	//    to increase or decrease your resources.
	//
	//    * SampleCount - The count, or number, of data points used for the statistical
	//    calculation.
	//
	// Statistics is a required field
	Statistics []*string `locationName:"statistics" type:"list" required:"true" enum:"MetricStatistic"`

	// The unit for the metric data request. Valid units depend on the metric data
	// being requested. For the valid units with each available metric, see the
	// metricName parameter.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseMetricDataInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.Period != nil && *s.Period < 60 {
		invalidParams.Add(request.NewErrParamMinValue("Period", 60))
	}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Statistics == nil {
		invalidParams.Add(request.NewErrParamRequired("Statistics"))
	}
	if s.Unit == nil {
		invalidParams.Add(request.NewErrParamRequired("Unit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetEndTime(v time.Time) *GetRelationalDatabaseMetricDataInput {
	s.EndTime = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetMetricName(v string) *GetRelationalDatabaseMetricDataInput {
	s.MetricName = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetPeriod(v int64) *GetRelationalDatabaseMetricDataInput {
	s.Period = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseMetricDataInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetStartTime(v time.Time) *GetRelationalDatabaseMetricDataInput {
	s.StartTime = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetStatistics(v []*string) *GetRelationalDatabaseMetricDataInput {
	s.Statistics = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *GetRelationalDatabaseMetricDataInput) SetUnit(v string) *GetRelationalDatabaseMetricDataInput {
	s.Unit = &v
	return s
}

type GetRelationalDatabaseMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the metric data returned.
	MetricData []*MetricDatapoint `locationName:"metricData" type:"list"`

	// The name of the metric returned.
	MetricName *string `locationName:"metricName" type:"string" enum:"RelationalDatabaseMetricName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricData sets the MetricData field's value.
func (s *GetRelationalDatabaseMetricDataOutput) SetMetricData(v []*MetricDatapoint) *GetRelationalDatabaseMetricDataOutput {
	s.MetricData = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *GetRelationalDatabaseMetricDataOutput) SetMetricName(v string) *GetRelationalDatabaseMetricDataOutput {
	s.MetricName = &v
	return s
}

type GetRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An object describing the specified database.
	RelationalDatabase *RelationalDatabase `locationName:"relationalDatabase" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetRelationalDatabase sets the RelationalDatabase field's value.
func (s *GetRelationalDatabaseOutput) SetRelationalDatabase(v *RelationalDatabase) *GetRelationalDatabaseOutput {
	s.RelationalDatabase = v
	return s
}

type GetRelationalDatabaseParametersInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseParameters request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`

	// The name of your database for which to get parameters.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseParametersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseParametersInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseParametersInput) SetPageToken(v string) *GetRelationalDatabaseParametersInput {
	s.PageToken = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *GetRelationalDatabaseParametersInput) SetRelationalDatabaseName(v string) *GetRelationalDatabaseParametersInput {
	s.RelationalDatabaseName = &v
	return s
}

type GetRelationalDatabaseParametersOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabaseParameters
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An object describing the result of your get relational database parameters
	// request.
	Parameters []*RelationalDatabaseParameter `locationName:"parameters" 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 GetRelationalDatabaseParametersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseParametersOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabaseParametersOutput) SetNextPageToken(v string) *GetRelationalDatabaseParametersOutput {
	s.NextPageToken = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *GetRelationalDatabaseParametersOutput) SetParameters(v []*RelationalDatabaseParameter) *GetRelationalDatabaseParametersOutput {
	s.Parameters = v
	return s
}

type GetRelationalDatabaseSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The name of the database snapshot for which to get information.
	//
	// RelationalDatabaseSnapshotName is a required field
	RelationalDatabaseSnapshotName *string `locationName:"relationalDatabaseSnapshotName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRelationalDatabaseSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRelationalDatabaseSnapshotInput"}
	if s.RelationalDatabaseSnapshotName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseSnapshotName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseSnapshotName sets the RelationalDatabaseSnapshotName field's value.
func (s *GetRelationalDatabaseSnapshotInput) SetRelationalDatabaseSnapshotName(v string) *GetRelationalDatabaseSnapshotInput {
	s.RelationalDatabaseSnapshotName = &v
	return s
}

type GetRelationalDatabaseSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// An object describing the specified database snapshot.
	RelationalDatabaseSnapshot *RelationalDatabaseSnapshot `locationName:"relationalDatabaseSnapshot" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotOutput) GoString() string {
	return s.String()
}

// SetRelationalDatabaseSnapshot sets the RelationalDatabaseSnapshot field's value.
func (s *GetRelationalDatabaseSnapshotOutput) SetRelationalDatabaseSnapshot(v *RelationalDatabaseSnapshot) *GetRelationalDatabaseSnapshotOutput {
	s.RelationalDatabaseSnapshot = v
	return s
}

type GetRelationalDatabaseSnapshotsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabaseSnapshots request.
	// If your results are paginated, the response will return a next page token
	// that you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabaseSnapshotsInput) SetPageToken(v string) *GetRelationalDatabaseSnapshotsInput {
	s.PageToken = &v
	return s
}

type GetRelationalDatabaseSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabaseSnapshots
	// request and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An object describing the result of your get relational database snapshots
	// request.
	RelationalDatabaseSnapshots []*RelationalDatabaseSnapshot `locationName:"relationalDatabaseSnapshots" 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 GetRelationalDatabaseSnapshotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabaseSnapshotsOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabaseSnapshotsOutput) SetNextPageToken(v string) *GetRelationalDatabaseSnapshotsOutput {
	s.NextPageToken = &v
	return s
}

// SetRelationalDatabaseSnapshots sets the RelationalDatabaseSnapshots field's value.
func (s *GetRelationalDatabaseSnapshotsOutput) SetRelationalDatabaseSnapshots(v []*RelationalDatabaseSnapshot) *GetRelationalDatabaseSnapshotsOutput {
	s.RelationalDatabaseSnapshots = v
	return s
}

type GetRelationalDatabasesInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetRelationalDatabases request. If
	// your results are paginated, the response will return a next page token that
	// you can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabasesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabasesInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetRelationalDatabasesInput) SetPageToken(v string) *GetRelationalDatabasesInput {
	s.PageToken = &v
	return s
}

type GetRelationalDatabasesOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetRelationalDatabases request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An object describing the result of your get relational databases request.
	RelationalDatabases []*RelationalDatabase `locationName:"relationalDatabases" 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 GetRelationalDatabasesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRelationalDatabasesOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetRelationalDatabasesOutput) SetNextPageToken(v string) *GetRelationalDatabasesOutput {
	s.NextPageToken = &v
	return s
}

// SetRelationalDatabases sets the RelationalDatabases field's value.
func (s *GetRelationalDatabasesOutput) SetRelationalDatabases(v []*RelationalDatabase) *GetRelationalDatabasesOutput {
	s.RelationalDatabases = v
	return s
}

type GetSetupHistoryInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetSetupHistory request. If your
	// results are paginated, the response will return a next page token that you
	// can specify as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" min:"24" type:"string"`

	// The name of the resource for which you are requesting information.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSetupHistoryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSetupHistoryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSetupHistoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSetupHistoryInput"}
	if s.PageToken != nil && len(*s.PageToken) < 24 {
		invalidParams.Add(request.NewErrParamMinLen("PageToken", 24))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPageToken sets the PageToken field's value.
func (s *GetSetupHistoryInput) SetPageToken(v string) *GetSetupHistoryInput {
	s.PageToken = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *GetSetupHistoryInput) SetResourceName(v string) *GetSetupHistoryInput {
	s.ResourceName = &v
	return s
}

type GetSetupHistoryOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetSetupHistory request
	// and specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" min:"24" type:"string"`

	// The historical information that's returned.
	SetupHistory []*SetupHistory `locationName:"setupHistory" 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 GetSetupHistoryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSetupHistoryOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetSetupHistoryOutput) SetNextPageToken(v string) *GetSetupHistoryOutput {
	s.NextPageToken = &v
	return s
}

// SetSetupHistory sets the SetupHistory field's value.
func (s *GetSetupHistoryOutput) SetSetupHistory(v []*SetupHistory) *GetSetupHistoryOutput {
	s.SetupHistory = v
	return s
}

type GetStaticIpInput struct {
	_ struct{} `type:"structure"`

	// The name of the static IP in Lightsail.
	//
	// StaticIpName is a required field
	StaticIpName *string `locationName:"staticIpName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetStaticIpInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetStaticIpInput"}
	if s.StaticIpName == nil {
		invalidParams.Add(request.NewErrParamRequired("StaticIpName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStaticIpName sets the StaticIpName field's value.
func (s *GetStaticIpInput) SetStaticIpName(v string) *GetStaticIpInput {
	s.StaticIpName = &v
	return s
}

type GetStaticIpOutput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the requested static
	// IP.
	StaticIp *StaticIp `locationName:"staticIp" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpOutput) GoString() string {
	return s.String()
}

// SetStaticIp sets the StaticIp field's value.
func (s *GetStaticIpOutput) SetStaticIp(v *StaticIp) *GetStaticIpOutput {
	s.StaticIp = v
	return s
}

type GetStaticIpsInput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// To get a page token, perform an initial GetStaticIps request. If your results
	// are paginated, the response will return a next page token that you can specify
	// as the page token in a subsequent request.
	PageToken *string `locationName:"pageToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpsInput) GoString() string {
	return s.String()
}

// SetPageToken sets the PageToken field's value.
func (s *GetStaticIpsInput) SetPageToken(v string) *GetStaticIpsInput {
	s.PageToken = &v
	return s
}

type GetStaticIpsOutput struct {
	_ struct{} `type:"structure"`

	// The token to advance to the next page of results from your request.
	//
	// A next page token is not returned if there are no more results to display.
	//
	// To get the next page of results, perform another GetStaticIps request and
	// specify the next page token using the pageToken parameter.
	NextPageToken *string `locationName:"nextPageToken" type:"string"`

	// An array of key-value pairs containing information about your get static
	// IPs request.
	StaticIps []*StaticIp `locationName:"staticIps" 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 GetStaticIpsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStaticIpsOutput) GoString() string {
	return s.String()
}

// SetNextPageToken sets the NextPageToken field's value.
func (s *GetStaticIpsOutput) SetNextPageToken(v string) *GetStaticIpsOutput {
	s.NextPageToken = &v
	return s
}

// SetStaticIps sets the StaticIps field's value.
func (s *GetStaticIpsOutput) SetStaticIps(v []*StaticIp) *GetStaticIpsOutput {
	s.StaticIps = v
	return s
}

// Describes the request headers that a Lightsail distribution bases caching
// on.
//
// For the headers that you specify, your distribution caches separate versions
// of the specified content based on the header values in viewer requests. For
// example, suppose viewer requests for logo.jpg contain a custom product header
// that has a value of either acme or apex, and you configure your distribution
// to cache your content based on values in the product header. Your distribution
// forwards the product header to the origin and caches the response from the
// origin once for each header value.
type HeaderObject struct {
	_ struct{} `type:"structure"`

	// The specific headers to forward to your distribution's origin.
	HeadersAllowList []*string `locationName:"headersAllowList" type:"list" enum:"HeaderEnum"`

	// The headers that you want your distribution to forward to your origin and
	// base caching on.
	//
	// You can configure your distribution to do one of the following:
	//
	//    * all - Forward all headers to your origin.
	//
	//    * none - Forward only the default headers.
	//
	//    * allow-list - Forward only the headers you specify using the headersAllowList
	//    parameter.
	Option *string `locationName:"option" type:"string" enum:"ForwardValues"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HeaderObject) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HeaderObject) GoString() string {
	return s.String()
}

// SetHeadersAllowList sets the HeadersAllowList field's value.
func (s *HeaderObject) SetHeadersAllowList(v []*string) *HeaderObject {
	s.HeadersAllowList = v
	return s
}

// SetOption sets the Option field's value.
func (s *HeaderObject) SetOption(v string) *HeaderObject {
	s.Option = &v
	return s
}

// Describes the public SSH host keys or the RDP certificate.
type HostKeyAttributes struct {
	_ struct{} `type:"structure"`

	// The SSH host key algorithm or the RDP certificate format.
	//
	// For SSH host keys, the algorithm may be ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519,
	// etc. For RDP certificates, the algorithm is always x509-cert.
	Algorithm *string `locationName:"algorithm" type:"string"`

	// The SHA-1 fingerprint of the returned SSH host key or RDP certificate.
	//
	//    * Example of an SHA-1 SSH fingerprint: SHA1:1CHH6FaAaXjtFOsR/t83vf91SR0
	//
	//    * Example of an SHA-1 RDP fingerprint: af:34:51:fe:09:f0:e0:da:b8:4e:56:ca:60:c2:10:ff:38:06:db:45
	FingerprintSHA1 *string `locationName:"fingerprintSHA1" type:"string"`

	// The SHA-256 fingerprint of the returned SSH host key or RDP certificate.
	//
	//    * Example of an SHA-256 SSH fingerprint: SHA256:KTsMnRBh1IhD17HpdfsbzeGA4jOijm5tyXsMjKVbB8o
	//
	//    * Example of an SHA-256 RDP fingerprint: 03:9b:36:9f:4b:de:4e:61:70:fc:7c:c9:78:e7:d2:1a:1c:25:a8:0c:91:f6:7c:e4:d6:a0:85:c8:b4:53:99:68
	FingerprintSHA256 *string `locationName:"fingerprintSHA256" type:"string"`

	// The returned RDP certificate is not valid after this point in time.
	//
	// This value is listed only for RDP certificates.
	NotValidAfter *time.Time `locationName:"notValidAfter" type:"timestamp"`

	// The returned RDP certificate is valid after this point in time.
	//
	// This value is listed only for RDP certificates.
	NotValidBefore *time.Time `locationName:"notValidBefore" type:"timestamp"`

	// The public SSH host key or the RDP certificate.
	PublicKey *string `locationName:"publicKey" type:"string"`

	// The time that the SSH host key or RDP certificate was recorded by Lightsail.
	WitnessedAt *time.Time `locationName:"witnessedAt" 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 HostKeyAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HostKeyAttributes) GoString() string {
	return s.String()
}

// SetAlgorithm sets the Algorithm field's value.
func (s *HostKeyAttributes) SetAlgorithm(v string) *HostKeyAttributes {
	s.Algorithm = &v
	return s
}

// SetFingerprintSHA1 sets the FingerprintSHA1 field's value.
func (s *HostKeyAttributes) SetFingerprintSHA1(v string) *HostKeyAttributes {
	s.FingerprintSHA1 = &v
	return s
}

// SetFingerprintSHA256 sets the FingerprintSHA256 field's value.
func (s *HostKeyAttributes) SetFingerprintSHA256(v string) *HostKeyAttributes {
	s.FingerprintSHA256 = &v
	return s
}

// SetNotValidAfter sets the NotValidAfter field's value.
func (s *HostKeyAttributes) SetNotValidAfter(v time.Time) *HostKeyAttributes {
	s.NotValidAfter = &v
	return s
}

// SetNotValidBefore sets the NotValidBefore field's value.
func (s *HostKeyAttributes) SetNotValidBefore(v time.Time) *HostKeyAttributes {
	s.NotValidBefore = &v
	return s
}

// SetPublicKey sets the PublicKey field's value.
func (s *HostKeyAttributes) SetPublicKey(v string) *HostKeyAttributes {
	s.PublicKey = &v
	return s
}

// SetWitnessedAt sets the WitnessedAt field's value.
func (s *HostKeyAttributes) SetWitnessedAt(v time.Time) *HostKeyAttributes {
	s.WitnessedAt = &v
	return s
}

type ImportKeyPairInput struct {
	_ struct{} `type:"structure"`

	// The name of the key pair for which you want to import the public key.
	//
	// KeyPairName is a required field
	KeyPairName *string `locationName:"keyPairName" type:"string" required:"true"`

	// A base64-encoded public key of the ssh-rsa type.
	//
	// PublicKeyBase64 is a required field
	PublicKeyBase64 *string `locationName:"publicKeyBase64" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportKeyPairInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportKeyPairInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ImportKeyPairInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ImportKeyPairInput"}
	if s.KeyPairName == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyPairName"))
	}
	if s.PublicKeyBase64 == nil {
		invalidParams.Add(request.NewErrParamRequired("PublicKeyBase64"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *ImportKeyPairInput) SetKeyPairName(v string) *ImportKeyPairInput {
	s.KeyPairName = &v
	return s
}

// SetPublicKeyBase64 sets the PublicKeyBase64 field's value.
func (s *ImportKeyPairInput) SetPublicKeyBase64(v string) *ImportKeyPairInput {
	s.PublicKeyBase64 = &v
	return s
}

type ImportKeyPairOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportKeyPairOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportKeyPairOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *ImportKeyPairOutput) SetOperation(v *Operation) *ImportKeyPairOutput {
	s.Operation = v
	return s
}

// Describes the origin resource of an Amazon Lightsail content delivery network
// (CDN) distribution.
//
// An origin can be a Lightsail instance, bucket, container service, or load
// balancer. A distribution pulls content from an origin, caches it, and serves
// it to viewers via a worldwide network of edge servers.
type InputOrigin struct {
	_ struct{} `type:"structure"`

	// The name of the origin resource.
	Name *string `locationName:"name" type:"string"`

	// The protocol that your Amazon Lightsail distribution uses when establishing
	// a connection with your origin to pull content.
	ProtocolPolicy *string `locationName:"protocolPolicy" type:"string" enum:"OriginProtocolPolicyEnum"`

	// The AWS Region name of the origin resource.
	RegionName *string `locationName:"regionName" type:"string" enum:"RegionName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InputOrigin) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InputOrigin) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *InputOrigin) SetName(v string) *InputOrigin {
	s.Name = &v
	return s
}

// SetProtocolPolicy sets the ProtocolPolicy field's value.
func (s *InputOrigin) SetProtocolPolicy(v string) *InputOrigin {
	s.ProtocolPolicy = &v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *InputOrigin) SetRegionName(v string) *InputOrigin {
	s.RegionName = &v
	return s
}

// Describes an instance (a virtual private server).
type Instance struct {
	_ struct{} `type:"structure"`

	// An array of objects representing the add-ons enabled on the instance.
	AddOns []*AddOn `locationName:"addOns" type:"list"`

	// The Amazon Resource Name (ARN) of the instance (arn:aws:lightsail:us-east-2:123456789101:Instance/244ad76f-8aad-4741-809f-12345EXAMPLE).
	Arn *string `locationName:"arn" type:"string"`

	// The blueprint ID (os_amlinux_2016_03).
	BlueprintId *string `locationName:"blueprintId" type:"string"`

	// The friendly name of the blueprint (Amazon Linux).
	BlueprintName *string `locationName:"blueprintName" type:"string"`

	// The bundle for the instance (micro_1_0).
	BundleId *string `locationName:"bundleId" type:"string"`

	// The timestamp when the instance was created (1479734909.17) in Unix time
	// format.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The size of the vCPU and the amount of RAM for the instance.
	Hardware *InstanceHardware `locationName:"hardware" type:"structure"`

	// The IP address type of the instance.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// The IPv6 addresses of the instance.
	Ipv6Addresses []*string `locationName:"ipv6Addresses" type:"list"`

	// A Boolean value indicating whether this instance has a static IP assigned
	// to it.
	IsStaticIp *bool `locationName:"isStaticIp" type:"boolean"`

	// The region name and Availability Zone where the instance is located.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The metadata options for the Amazon Lightsail instance.
	MetadataOptions *InstanceMetadataOptions `locationName:"metadataOptions" type:"structure"`

	// The name the user gave the instance (Amazon_Linux-1GB-Ohio-1).
	Name *string `locationName:"name" type:"string"`

	// Information about the public ports and monthly data transfer rates for the
	// instance.
	Networking *InstanceNetworking `locationName:"networking" type:"structure"`

	// The private IP address of the instance.
	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`

	// The public IP address of the instance.
	PublicIpAddress *string `locationName:"publicIpAddress" type:"string"`

	// The type of resource (usually Instance).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The name of the SSH key being used to connect to the instance (LightsailDefaultKeyPair).
	SshKeyName *string `locationName:"sshKeyName" type:"string"`

	// The status code and the state (running) for the instance.
	State *InstanceState `locationName:"state" type:"structure"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" type:"list"`

	// The user name for connecting to the instance (ec2-user).
	Username *string `locationName:"username" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Instance) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Instance) GoString() string {
	return s.String()
}

// SetAddOns sets the AddOns field's value.
func (s *Instance) SetAddOns(v []*AddOn) *Instance {
	s.AddOns = v
	return s
}

// SetArn sets the Arn field's value.
func (s *Instance) SetArn(v string) *Instance {
	s.Arn = &v
	return s
}

// SetBlueprintId sets the BlueprintId field's value.
func (s *Instance) SetBlueprintId(v string) *Instance {
	s.BlueprintId = &v
	return s
}

// SetBlueprintName sets the BlueprintName field's value.
func (s *Instance) SetBlueprintName(v string) *Instance {
	s.BlueprintName = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *Instance) SetBundleId(v string) *Instance {
	s.BundleId = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Instance) SetCreatedAt(v time.Time) *Instance {
	s.CreatedAt = &v
	return s
}

// SetHardware sets the Hardware field's value.
func (s *Instance) SetHardware(v *InstanceHardware) *Instance {
	s.Hardware = v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *Instance) SetIpAddressType(v string) *Instance {
	s.IpAddressType = &v
	return s
}

// SetIpv6Addresses sets the Ipv6Addresses field's value.
func (s *Instance) SetIpv6Addresses(v []*string) *Instance {
	s.Ipv6Addresses = v
	return s
}

// SetIsStaticIp sets the IsStaticIp field's value.
func (s *Instance) SetIsStaticIp(v bool) *Instance {
	s.IsStaticIp = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *Instance) SetLocation(v *ResourceLocation) *Instance {
	s.Location = v
	return s
}

// SetMetadataOptions sets the MetadataOptions field's value.
func (s *Instance) SetMetadataOptions(v *InstanceMetadataOptions) *Instance {
	s.MetadataOptions = v
	return s
}

// SetName sets the Name field's value.
func (s *Instance) SetName(v string) *Instance {
	s.Name = &v
	return s
}

// SetNetworking sets the Networking field's value.
func (s *Instance) SetNetworking(v *InstanceNetworking) *Instance {
	s.Networking = v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *Instance) SetPrivateIpAddress(v string) *Instance {
	s.PrivateIpAddress = &v
	return s
}

// SetPublicIpAddress sets the PublicIpAddress field's value.
func (s *Instance) SetPublicIpAddress(v string) *Instance {
	s.PublicIpAddress = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Instance) SetResourceType(v string) *Instance {
	s.ResourceType = &v
	return s
}

// SetSshKeyName sets the SshKeyName field's value.
func (s *Instance) SetSshKeyName(v string) *Instance {
	s.SshKeyName = &v
	return s
}

// SetState sets the State field's value.
func (s *Instance) SetState(v *InstanceState) *Instance {
	s.State = v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *Instance) SetSupportCode(v string) *Instance {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Instance) SetTags(v []*Tag) *Instance {
	s.Tags = v
	return s
}

// SetUsername sets the Username field's value.
func (s *Instance) SetUsername(v string) *Instance {
	s.Username = &v
	return s
}

// The parameters for gaining temporary access to one of your Amazon Lightsail
// instances.
type InstanceAccessDetails struct {
	_ struct{} `type:"structure"`

	// For SSH access, the public key to use when accessing your instance For OpenSSH
	// clients (command line SSH), you should save this value to tempkey-cert.pub.
	CertKey *string `locationName:"certKey" type:"string"`

	// For SSH access, the date on which the temporary keys expire.
	ExpiresAt *time.Time `locationName:"expiresAt" type:"timestamp"`

	// Describes the public SSH host keys or the RDP certificate.
	HostKeys []*HostKeyAttributes `locationName:"hostKeys" type:"list"`

	// The name of this Amazon Lightsail instance.
	InstanceName *string `locationName:"instanceName" type:"string"`

	// The public IP address of the Amazon Lightsail instance.
	IpAddress *string `locationName:"ipAddress" type:"string"`

	// The IPv6 address of the Amazon Lightsail instance.
	Ipv6Addresses []*string `locationName:"ipv6Addresses" type:"list"`

	// For RDP access, the password for your Amazon Lightsail instance. Password
	// will be an empty string if the password for your new instance is not ready
	// yet. When you create an instance, it can take up to 15 minutes for the instance
	// to be ready.
	//
	// If you create an instance using any key pair other than the default (LightsailDefaultKeyPair),
	// password will always be an empty string.
	//
	// If you change the Administrator password on the instance, Lightsail will
	// continue to return the original password value. When accessing the instance
	// using RDP, you need to manually enter the Administrator password after changing
	// it from the default.
	Password *string `locationName:"password" type:"string"`

	// For a Windows Server-based instance, an object with the data you can use
	// to retrieve your password. This is only needed if password is empty and the
	// instance is not new (and therefore the password is not ready yet). When you
	// create an instance, it can take up to 15 minutes for the instance to be ready.
	PasswordData *PasswordData `locationName:"passwordData" type:"structure"`

	// For SSH access, the temporary private key. For OpenSSH clients (command line
	// SSH), you should save this value to tempkey).
	PrivateKey *string `locationName:"privateKey" type:"string"`

	// The protocol for these Amazon Lightsail instance access details.
	Protocol *string `locationName:"protocol" type:"string" enum:"InstanceAccessProtocol"`

	// The user name to use when logging in to the Amazon Lightsail instance.
	Username *string `locationName:"username" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceAccessDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceAccessDetails) GoString() string {
	return s.String()
}

// SetCertKey sets the CertKey field's value.
func (s *InstanceAccessDetails) SetCertKey(v string) *InstanceAccessDetails {
	s.CertKey = &v
	return s
}

// SetExpiresAt sets the ExpiresAt field's value.
func (s *InstanceAccessDetails) SetExpiresAt(v time.Time) *InstanceAccessDetails {
	s.ExpiresAt = &v
	return s
}

// SetHostKeys sets the HostKeys field's value.
func (s *InstanceAccessDetails) SetHostKeys(v []*HostKeyAttributes) *InstanceAccessDetails {
	s.HostKeys = v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *InstanceAccessDetails) SetInstanceName(v string) *InstanceAccessDetails {
	s.InstanceName = &v
	return s
}

// SetIpAddress sets the IpAddress field's value.
func (s *InstanceAccessDetails) SetIpAddress(v string) *InstanceAccessDetails {
	s.IpAddress = &v
	return s
}

// SetIpv6Addresses sets the Ipv6Addresses field's value.
func (s *InstanceAccessDetails) SetIpv6Addresses(v []*string) *InstanceAccessDetails {
	s.Ipv6Addresses = v
	return s
}

// SetPassword sets the Password field's value.
func (s *InstanceAccessDetails) SetPassword(v string) *InstanceAccessDetails {
	s.Password = &v
	return s
}

// SetPasswordData sets the PasswordData field's value.
func (s *InstanceAccessDetails) SetPasswordData(v *PasswordData) *InstanceAccessDetails {
	s.PasswordData = v
	return s
}

// SetPrivateKey sets the PrivateKey field's value.
func (s *InstanceAccessDetails) SetPrivateKey(v string) *InstanceAccessDetails {
	s.PrivateKey = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *InstanceAccessDetails) SetProtocol(v string) *InstanceAccessDetails {
	s.Protocol = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *InstanceAccessDetails) SetUsername(v string) *InstanceAccessDetails {
	s.Username = &v
	return s
}

// Describes the Amazon Elastic Compute Cloud instance and related resources
// to be created using the create cloud formation stack operation.
type InstanceEntry struct {
	_ struct{} `type:"structure"`

	// The Availability Zone for the new Amazon EC2 instance.
	//
	// AvailabilityZone is a required field
	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`

	// The instance type (t2.micro) to use for the new Amazon EC2 instance.
	//
	// InstanceType is a required field
	InstanceType *string `locationName:"instanceType" type:"string" required:"true"`

	// The port configuration to use for the new Amazon EC2 instance.
	//
	// The following configuration options are available:
	//
	//    * DEFAULT - Use the default firewall settings from the Lightsail instance
	//    blueprint. If this is specified, then IPv4 and IPv6 will be configured
	//    for the new instance that is created in Amazon EC2.
	//
	//    * INSTANCE - Use the configured firewall settings from the source Lightsail
	//    instance. If this is specified, the new instance that is created in Amazon
	//    EC2 will be configured to match the configuration of the source Lightsail
	//    instance. For example, if the source instance is configured for dual-stack
	//    (IPv4 and IPv6), then IPv4 and IPv6 will be configured for the new instance
	//    that is created in Amazon EC2. If the source instance is configured for
	//    IPv4 only, then only IPv4 will be configured for the new instance that
	//    is created in Amazon EC2.
	//
	//    * NONE - Use the default Amazon EC2 security group. If this is specified,
	//    then only IPv4 will be configured for the new instance that is created
	//    in Amazon EC2.
	//
	//    * CLOSED - All ports closed. If this is specified, then only IPv4 will
	//    be configured for the new instance that is created in Amazon EC2.
	//
	// If you configured lightsail-connect as a cidrListAliases on your instance,
	// or if you chose to allow the Lightsail browser-based SSH or RDP clients to
	// connect to your instance, that configuration is not carried over to your
	// new Amazon EC2 instance.
	//
	// PortInfoSource is a required field
	PortInfoSource *string `locationName:"portInfoSource" type:"string" required:"true" enum:"PortInfoSourceType"`

	// The name of the export snapshot record, which contains the exported Lightsail
	// instance snapshot that will be used as the source of the new Amazon EC2 instance.
	//
	// Use the get export snapshot records operation to get a list of export snapshot
	// records that you can use to create a CloudFormation stack.
	//
	// SourceName is a required field
	SourceName *string `locationName:"sourceName" type:"string" required:"true"`

	// A launch script you can create that configures a server with additional user
	// data. For example, you might want to run apt-get -y update.
	//
	// Depending on the machine image you choose, the command to get software on
	// your instance varies. Amazon Linux and CentOS use yum, Debian and Ubuntu
	// use apt-get, and FreeBSD uses pkg.
	UserData *string `locationName:"userData" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceEntry) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstanceEntry) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstanceEntry"}
	if s.AvailabilityZone == nil {
		invalidParams.Add(request.NewErrParamRequired("AvailabilityZone"))
	}
	if s.InstanceType == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
	}
	if s.PortInfoSource == nil {
		invalidParams.Add(request.NewErrParamRequired("PortInfoSource"))
	}
	if s.SourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *InstanceEntry) SetAvailabilityZone(v string) *InstanceEntry {
	s.AvailabilityZone = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *InstanceEntry) SetInstanceType(v string) *InstanceEntry {
	s.InstanceType = &v
	return s
}

// SetPortInfoSource sets the PortInfoSource field's value.
func (s *InstanceEntry) SetPortInfoSource(v string) *InstanceEntry {
	s.PortInfoSource = &v
	return s
}

// SetSourceName sets the SourceName field's value.
func (s *InstanceEntry) SetSourceName(v string) *InstanceEntry {
	s.SourceName = &v
	return s
}

// SetUserData sets the UserData field's value.
func (s *InstanceEntry) SetUserData(v string) *InstanceEntry {
	s.UserData = &v
	return s
}

// Describes the hardware for the instance.
type InstanceHardware struct {
	_ struct{} `type:"structure"`

	// The number of vCPUs the instance has.
	CpuCount *int64 `locationName:"cpuCount" type:"integer"`

	// The disks attached to the instance.
	Disks []*Disk `locationName:"disks" type:"list"`

	// The amount of RAM in GB on the instance (1.0).
	RamSizeInGb *float64 `locationName:"ramSizeInGb" type:"float"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceHardware) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceHardware) GoString() string {
	return s.String()
}

// SetCpuCount sets the CpuCount field's value.
func (s *InstanceHardware) SetCpuCount(v int64) *InstanceHardware {
	s.CpuCount = &v
	return s
}

// SetDisks sets the Disks field's value.
func (s *InstanceHardware) SetDisks(v []*Disk) *InstanceHardware {
	s.Disks = v
	return s
}

// SetRamSizeInGb sets the RamSizeInGb field's value.
func (s *InstanceHardware) SetRamSizeInGb(v float64) *InstanceHardware {
	s.RamSizeInGb = &v
	return s
}

// Describes information about the health of the instance.
type InstanceHealthSummary struct {
	_ struct{} `type:"structure"`

	// Describes the overall instance health. Valid values are below.
	InstanceHealth *string `locationName:"instanceHealth" type:"string" enum:"InstanceHealthState"`

	// More information about the instance health. If the instanceHealth is healthy,
	// then an instanceHealthReason value is not provided.
	//
	// If instanceHealth is initial, the instanceHealthReason value can be one of
	// the following:
	//
	//    * Lb.RegistrationInProgress - The target instance is in the process of
	//    being registered with the load balancer.
	//
	//    * Lb.InitialHealthChecking - The Lightsail load balancer is still sending
	//    the target instance the minimum number of health checks required to determine
	//    its health status.
	//
	// If instanceHealth is unhealthy, the instanceHealthReason value can be one
	// of the following:
	//
	//    * Instance.ResponseCodeMismatch - The health checks did not return an
	//    expected HTTP code.
	//
	//    * Instance.Timeout - The health check requests timed out.
	//
	//    * Instance.FailedHealthChecks - The health checks failed because the connection
	//    to the target instance timed out, the target instance response was malformed,
	//    or the target instance failed the health check for an unknown reason.
	//
	//    * Lb.InternalError - The health checks failed due to an internal error.
	//
	// If instanceHealth is unused, the instanceHealthReason value can be one of
	// the following:
	//
	//    * Instance.NotRegistered - The target instance is not registered with
	//    the target group.
	//
	//    * Instance.NotInUse - The target group is not used by any load balancer,
	//    or the target instance is in an Availability Zone that is not enabled
	//    for its load balancer.
	//
	//    * Instance.IpUnusable - The target IP address is reserved for use by a
	//    Lightsail load balancer.
	//
	//    * Instance.InvalidState - The target is in the stopped or terminated state.
	//
	// If instanceHealth is draining, the instanceHealthReason value can be one
	// of the following:
	//
	//    * Instance.DeregistrationInProgress - The target instance is in the process
	//    of being deregistered and the deregistration delay period has not expired.
	InstanceHealthReason *string `locationName:"instanceHealthReason" type:"string" enum:"InstanceHealthReason"`

	// The name of the Lightsail instance for which you are requesting health check
	// data.
	InstanceName *string `locationName:"instanceName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceHealthSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceHealthSummary) GoString() string {
	return s.String()
}

// SetInstanceHealth sets the InstanceHealth field's value.
func (s *InstanceHealthSummary) SetInstanceHealth(v string) *InstanceHealthSummary {
	s.InstanceHealth = &v
	return s
}

// SetInstanceHealthReason sets the InstanceHealthReason field's value.
func (s *InstanceHealthSummary) SetInstanceHealthReason(v string) *InstanceHealthSummary {
	s.InstanceHealthReason = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *InstanceHealthSummary) SetInstanceName(v string) *InstanceHealthSummary {
	s.InstanceName = &v
	return s
}

// The metadata options for the instance.
type InstanceMetadataOptions struct {
	_ struct{} `type:"structure"`

	// Indicates whether the HTTP metadata endpoint on your instances is enabled
	// or disabled.
	//
	// If the value is disabled, you cannot access your instance metadata.
	HttpEndpoint *string `locationName:"httpEndpoint" type:"string" enum:"HttpEndpoint"`

	// Indicates whether the IPv6 endpoint for the instance metadata service is
	// enabled or disabled.
	HttpProtocolIpv6 *string `locationName:"httpProtocolIpv6" type:"string" enum:"HttpProtocolIpv6"`

	// The desired HTTP PUT response hop limit for instance metadata requests. A
	// larger number means that the instance metadata requests can travel farther.
	HttpPutResponseHopLimit *int64 `locationName:"httpPutResponseHopLimit" type:"integer"`

	// The state of token usage for your instance metadata requests.
	//
	// If the state is optional, you can choose whether to retrieve instance metadata
	// with a signed token header on your request. If you retrieve the IAM role
	// credentials without a token, the version 1.0 role credentials are returned.
	// If you retrieve the IAM role credentials by using a valid signed token, the
	// version 2.0 role credentials are returned.
	//
	// If the state is required, you must send a signed token header with all instance
	// metadata retrieval requests. In this state, retrieving the IAM role credential
	// always returns the version 2.0 credentials. The version 1.0 credentials are
	// not available.
	//
	// Not all instance blueprints in Lightsail support version 2.0 credentials.
	// Use the MetadataNoToken instance metric to track the number of calls to the
	// instance metadata service that are using version 1.0 credentials. For more
	// information, see Viewing instance metrics in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-instance-health-metrics)
	// in the Amazon Lightsail Developer Guide.
	HttpTokens *string `locationName:"httpTokens" type:"string" enum:"HttpTokens"`

	// The state of the metadata option changes.
	//
	// The following states are possible:
	//
	//    * pending - The metadata options are being updated. The instance is not
	//    yet ready to process metadata traffic with the new selection.
	//
	//    * applied - The metadata options have been successfully applied to the
	//    instance.
	State *string `locationName:"state" type:"string" enum:"InstanceMetadataState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceMetadataOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceMetadataOptions) GoString() string {
	return s.String()
}

// SetHttpEndpoint sets the HttpEndpoint field's value.
func (s *InstanceMetadataOptions) SetHttpEndpoint(v string) *InstanceMetadataOptions {
	s.HttpEndpoint = &v
	return s
}

// SetHttpProtocolIpv6 sets the HttpProtocolIpv6 field's value.
func (s *InstanceMetadataOptions) SetHttpProtocolIpv6(v string) *InstanceMetadataOptions {
	s.HttpProtocolIpv6 = &v
	return s
}

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *InstanceMetadataOptions) SetHttpPutResponseHopLimit(v int64) *InstanceMetadataOptions {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *InstanceMetadataOptions) SetHttpTokens(v string) *InstanceMetadataOptions {
	s.HttpTokens = &v
	return s
}

// SetState sets the State field's value.
func (s *InstanceMetadataOptions) SetState(v string) *InstanceMetadataOptions {
	s.State = &v
	return s
}

// Describes monthly data transfer rates and port information for an instance.
type InstanceNetworking struct {
	_ struct{} `type:"structure"`

	// The amount of data in GB allocated for monthly data transfers.
	MonthlyTransfer *MonthlyTransfer `locationName:"monthlyTransfer" type:"structure"`

	// An array of key-value pairs containing information about the ports on the
	// instance.
	Ports []*InstancePortInfo `locationName:"ports" 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 InstanceNetworking) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceNetworking) GoString() string {
	return s.String()
}

// SetMonthlyTransfer sets the MonthlyTransfer field's value.
func (s *InstanceNetworking) SetMonthlyTransfer(v *MonthlyTransfer) *InstanceNetworking {
	s.MonthlyTransfer = v
	return s
}

// SetPorts sets the Ports field's value.
func (s *InstanceNetworking) SetPorts(v []*InstancePortInfo) *InstanceNetworking {
	s.Ports = v
	return s
}

// Describes information about ports for an Amazon Lightsail instance.
type InstancePortInfo struct {
	_ struct{} `type:"structure"`

	// The access direction (inbound or outbound).
	//
	// Lightsail currently supports only inbound access direction.
	AccessDirection *string `locationName:"accessDirection" type:"string" enum:"AccessDirection"`

	// The location from which access is allowed. For example, Anywhere (0.0.0.0/0),
	// or Custom if a specific IP address or range of IP addresses is allowed.
	AccessFrom *string `locationName:"accessFrom" type:"string"`

	// The type of access (Public or Private).
	AccessType *string `locationName:"accessType" type:"string" enum:"PortAccessType"`

	// An alias that defines access for a preconfigured range of IP addresses.
	//
	// The only alias currently supported is lightsail-connect, which allows IP
	// addresses of the browser-based RDP/SSH client in the Lightsail console to
	// connect to your instance.
	CidrListAliases []*string `locationName:"cidrListAliases" type:"list"`

	// The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol.
	//
	// The ipv6Cidrs parameter lists the IPv6 addresses that are allowed to connect
	// to an instance.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Cidrs []*string `locationName:"cidrs" type:"list"`

	// The common name of the port information.
	CommonName *string `locationName:"commonName" type:"string"`

	// The first port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP type for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP type for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	FromPort *int64 `locationName:"fromPort" type:"integer"`

	// The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol. Only
	// devices with an IPv6 address can connect to an instance through IPv6; otherwise,
	// IPv4 should be used.
	//
	// The cidrs parameter lists the IPv4 addresses that are allowed to connect
	// to an instance.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Ipv6Cidrs []*string `locationName:"ipv6Cidrs" type:"list"`

	// The IP protocol name.
	//
	// The name can be one of the following:
	//
	//    * tcp - Transmission Control Protocol (TCP) provides reliable, ordered,
	//    and error-checked delivery of streamed data between applications running
	//    on hosts communicating by an IP network. If you have an application that
	//    doesn't require reliable data stream service, use UDP instead.
	//
	//    * all - All transport layer protocol types. For more general information,
	//    see Transport layer (https://en.wikipedia.org/wiki/Transport_layer) on
	//    Wikipedia.
	//
	//    * udp - With User Datagram Protocol (UDP), computer applications can send
	//    messages (or datagrams) to other hosts on an Internet Protocol (IP) network.
	//    Prior communications are not required to set up transmission channels
	//    or data paths. Applications that don't require reliable data stream service
	//    can use UDP, which provides a connectionless datagram service that emphasizes
	//    reduced latency over reliability. If you do require reliable data stream
	//    service, use TCP instead.
	//
	//    * icmp - Internet Control Message Protocol (ICMP) is used to send error
	//    messages and operational information indicating success or failure when
	//    communicating with an instance. For example, an error is indicated when
	//    an instance could not be reached. When you specify icmp as the protocol,
	//    you must specify the ICMP type using the fromPort parameter, and ICMP
	//    code using the toPort parameter.
	Protocol *string `locationName:"protocol" type:"string" enum:"NetworkProtocol"`

	// The last port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP code for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP code for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	ToPort *int64 `locationName:"toPort" 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 InstancePortInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstancePortInfo) GoString() string {
	return s.String()
}

// SetAccessDirection sets the AccessDirection field's value.
func (s *InstancePortInfo) SetAccessDirection(v string) *InstancePortInfo {
	s.AccessDirection = &v
	return s
}

// SetAccessFrom sets the AccessFrom field's value.
func (s *InstancePortInfo) SetAccessFrom(v string) *InstancePortInfo {
	s.AccessFrom = &v
	return s
}

// SetAccessType sets the AccessType field's value.
func (s *InstancePortInfo) SetAccessType(v string) *InstancePortInfo {
	s.AccessType = &v
	return s
}

// SetCidrListAliases sets the CidrListAliases field's value.
func (s *InstancePortInfo) SetCidrListAliases(v []*string) *InstancePortInfo {
	s.CidrListAliases = v
	return s
}

// SetCidrs sets the Cidrs field's value.
func (s *InstancePortInfo) SetCidrs(v []*string) *InstancePortInfo {
	s.Cidrs = v
	return s
}

// SetCommonName sets the CommonName field's value.
func (s *InstancePortInfo) SetCommonName(v string) *InstancePortInfo {
	s.CommonName = &v
	return s
}

// SetFromPort sets the FromPort field's value.
func (s *InstancePortInfo) SetFromPort(v int64) *InstancePortInfo {
	s.FromPort = &v
	return s
}

// SetIpv6Cidrs sets the Ipv6Cidrs field's value.
func (s *InstancePortInfo) SetIpv6Cidrs(v []*string) *InstancePortInfo {
	s.Ipv6Cidrs = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *InstancePortInfo) SetProtocol(v string) *InstancePortInfo {
	s.Protocol = &v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *InstancePortInfo) SetToPort(v int64) *InstancePortInfo {
	s.ToPort = &v
	return s
}

// Describes open ports on an instance, the IP addresses allowed to connect
// to the instance through the ports, and the protocol.
type InstancePortState struct {
	_ struct{} `type:"structure"`

	// An alias that defines access for a preconfigured range of IP addresses.
	//
	// The only alias currently supported is lightsail-connect, which allows IP
	// addresses of the browser-based RDP/SSH client in the Lightsail console to
	// connect to your instance.
	CidrListAliases []*string `locationName:"cidrListAliases" type:"list"`

	// The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol.
	//
	// The ipv6Cidrs parameter lists the IPv6 addresses that are allowed to connect
	// to an instance.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Cidrs []*string `locationName:"cidrs" type:"list"`

	// The first port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP type for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP type for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	FromPort *int64 `locationName:"fromPort" type:"integer"`

	// The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol. Only
	// devices with an IPv6 address can connect to an instance through IPv6; otherwise,
	// IPv4 should be used.
	//
	// The cidrs parameter lists the IPv4 addresses that are allowed to connect
	// to an instance.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Ipv6Cidrs []*string `locationName:"ipv6Cidrs" type:"list"`

	// The IP protocol name.
	//
	// The name can be one of the following:
	//
	//    * tcp - Transmission Control Protocol (TCP) provides reliable, ordered,
	//    and error-checked delivery of streamed data between applications running
	//    on hosts communicating by an IP network. If you have an application that
	//    doesn't require reliable data stream service, use UDP instead.
	//
	//    * all - All transport layer protocol types. For more general information,
	//    see Transport layer (https://en.wikipedia.org/wiki/Transport_layer) on
	//    Wikipedia.
	//
	//    * udp - With User Datagram Protocol (UDP), computer applications can send
	//    messages (or datagrams) to other hosts on an Internet Protocol (IP) network.
	//    Prior communications are not required to set up transmission channels
	//    or data paths. Applications that don't require reliable data stream service
	//    can use UDP, which provides a connectionless datagram service that emphasizes
	//    reduced latency over reliability. If you do require reliable data stream
	//    service, use TCP instead.
	//
	//    * icmp - Internet Control Message Protocol (ICMP) is used to send error
	//    messages and operational information indicating success or failure when
	//    communicating with an instance. For example, an error is indicated when
	//    an instance could not be reached. When you specify icmp as the protocol,
	//    you must specify the ICMP type using the fromPort parameter, and ICMP
	//    code using the toPort parameter.
	Protocol *string `locationName:"protocol" type:"string" enum:"NetworkProtocol"`

	// Specifies whether the instance port is open or closed.
	//
	// The port state for Lightsail instances is always open.
	State *string `locationName:"state" type:"string" enum:"PortState"`

	// The last port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP code for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP code for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	ToPort *int64 `locationName:"toPort" 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 InstancePortState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstancePortState) GoString() string {
	return s.String()
}

// SetCidrListAliases sets the CidrListAliases field's value.
func (s *InstancePortState) SetCidrListAliases(v []*string) *InstancePortState {
	s.CidrListAliases = v
	return s
}

// SetCidrs sets the Cidrs field's value.
func (s *InstancePortState) SetCidrs(v []*string) *InstancePortState {
	s.Cidrs = v
	return s
}

// SetFromPort sets the FromPort field's value.
func (s *InstancePortState) SetFromPort(v int64) *InstancePortState {
	s.FromPort = &v
	return s
}

// SetIpv6Cidrs sets the Ipv6Cidrs field's value.
func (s *InstancePortState) SetIpv6Cidrs(v []*string) *InstancePortState {
	s.Ipv6Cidrs = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *InstancePortState) SetProtocol(v string) *InstancePortState {
	s.Protocol = &v
	return s
}

// SetState sets the State field's value.
func (s *InstancePortState) SetState(v string) *InstancePortState {
	s.State = &v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *InstancePortState) SetToPort(v int64) *InstancePortState {
	s.ToPort = &v
	return s
}

// Describes an instance snapshot.
type InstanceSnapshot struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the snapshot (arn:aws:lightsail:us-east-2:123456789101:InstanceSnapshot/d23b5706-3322-4d83-81e5-12345EXAMPLE).
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when the snapshot was created (1479907467.024).
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// An array of disk objects containing information about all block storage disks.
	FromAttachedDisks []*Disk `locationName:"fromAttachedDisks" type:"list"`

	// The blueprint ID from which you created the snapshot (os_debian_8_3). A blueprint
	// is a virtual private server (or instance) image used to create instances
	// quickly.
	FromBlueprintId *string `locationName:"fromBlueprintId" type:"string"`

	// The bundle ID from which you created the snapshot (micro_1_0).
	FromBundleId *string `locationName:"fromBundleId" type:"string"`

	// The Amazon Resource Name (ARN) of the instance from which the snapshot was
	// created (arn:aws:lightsail:us-east-2:123456789101:Instance/64b8404c-ccb1-430b-8daf-12345EXAMPLE).
	FromInstanceArn *string `locationName:"fromInstanceArn" type:"string"`

	// The instance from which the snapshot was created.
	FromInstanceName *string `locationName:"fromInstanceName" type:"string"`

	// A Boolean value indicating whether the snapshot was created from an automatic
	// snapshot.
	IsFromAutoSnapshot *bool `locationName:"isFromAutoSnapshot" type:"boolean"`

	// The region name and Availability Zone where you created the snapshot.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the snapshot.
	Name *string `locationName:"name" type:"string"`

	// The progress of the snapshot.
	//
	// This is populated only for disk snapshots, and is null for instance snapshots.
	Progress *string `locationName:"progress" type:"string"`

	// The type of resource (usually InstanceSnapshot).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The size in GB of the SSD.
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer"`

	// The state the snapshot is in.
	State *string `locationName:"state" type:"string" enum:"InstanceSnapshotState"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 InstanceSnapshot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSnapshot) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *InstanceSnapshot) SetArn(v string) *InstanceSnapshot {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *InstanceSnapshot) SetCreatedAt(v time.Time) *InstanceSnapshot {
	s.CreatedAt = &v
	return s
}

// SetFromAttachedDisks sets the FromAttachedDisks field's value.
func (s *InstanceSnapshot) SetFromAttachedDisks(v []*Disk) *InstanceSnapshot {
	s.FromAttachedDisks = v
	return s
}

// SetFromBlueprintId sets the FromBlueprintId field's value.
func (s *InstanceSnapshot) SetFromBlueprintId(v string) *InstanceSnapshot {
	s.FromBlueprintId = &v
	return s
}

// SetFromBundleId sets the FromBundleId field's value.
func (s *InstanceSnapshot) SetFromBundleId(v string) *InstanceSnapshot {
	s.FromBundleId = &v
	return s
}

// SetFromInstanceArn sets the FromInstanceArn field's value.
func (s *InstanceSnapshot) SetFromInstanceArn(v string) *InstanceSnapshot {
	s.FromInstanceArn = &v
	return s
}

// SetFromInstanceName sets the FromInstanceName field's value.
func (s *InstanceSnapshot) SetFromInstanceName(v string) *InstanceSnapshot {
	s.FromInstanceName = &v
	return s
}

// SetIsFromAutoSnapshot sets the IsFromAutoSnapshot field's value.
func (s *InstanceSnapshot) SetIsFromAutoSnapshot(v bool) *InstanceSnapshot {
	s.IsFromAutoSnapshot = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *InstanceSnapshot) SetLocation(v *ResourceLocation) *InstanceSnapshot {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *InstanceSnapshot) SetName(v string) *InstanceSnapshot {
	s.Name = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *InstanceSnapshot) SetProgress(v string) *InstanceSnapshot {
	s.Progress = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *InstanceSnapshot) SetResourceType(v string) *InstanceSnapshot {
	s.ResourceType = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *InstanceSnapshot) SetSizeInGb(v int64) *InstanceSnapshot {
	s.SizeInGb = &v
	return s
}

// SetState sets the State field's value.
func (s *InstanceSnapshot) SetState(v string) *InstanceSnapshot {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *InstanceSnapshot) SetSupportCode(v string) *InstanceSnapshot {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *InstanceSnapshot) SetTags(v []*Tag) *InstanceSnapshot {
	s.Tags = v
	return s
}

// Describes an instance snapshot.
type InstanceSnapshotInfo struct {
	_ struct{} `type:"structure"`

	// The blueprint ID from which the source instance (os_debian_8_3).
	FromBlueprintId *string `locationName:"fromBlueprintId" type:"string"`

	// The bundle ID from which the source instance was created (micro_1_0).
	FromBundleId *string `locationName:"fromBundleId" type:"string"`

	// A list of objects describing the disks that were attached to the source instance.
	FromDiskInfo []*DiskInfo `locationName:"fromDiskInfo" 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 InstanceSnapshotInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSnapshotInfo) GoString() string {
	return s.String()
}

// SetFromBlueprintId sets the FromBlueprintId field's value.
func (s *InstanceSnapshotInfo) SetFromBlueprintId(v string) *InstanceSnapshotInfo {
	s.FromBlueprintId = &v
	return s
}

// SetFromBundleId sets the FromBundleId field's value.
func (s *InstanceSnapshotInfo) SetFromBundleId(v string) *InstanceSnapshotInfo {
	s.FromBundleId = &v
	return s
}

// SetFromDiskInfo sets the FromDiskInfo field's value.
func (s *InstanceSnapshotInfo) SetFromDiskInfo(v []*DiskInfo) *InstanceSnapshotInfo {
	s.FromDiskInfo = v
	return s
}

// Describes the virtual private server (or instance) status.
type InstanceState struct {
	_ struct{} `type:"structure"`

	// The status code for the instance.
	Code *int64 `locationName:"code" type:"integer"`

	// The state of the instance (running or pending).
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *InstanceState) SetCode(v int64) *InstanceState {
	s.Code = &v
	return s
}

// SetName sets the Name field's value.
func (s *InstanceState) SetName(v string) *InstanceState {
	s.Name = &v
	return s
}

// Lightsail throws this exception when user input does not conform to the validation
// rules of an input field.
//
// Domain and distribution APIs are only available in the N. Virginia (us-east-1)
// Amazon Web Services Region. Please set your Amazon Web Services Region configuration
// to us-east-1 to create, view, or edit these resources.
type InvalidInputException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

	Message_ *string `locationName:"message" type:"string"`

	Tip *string `locationName:"tip" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) GoString() string {
	return s.String()
}

func newErrorInvalidInputException(v protocol.ResponseMetadata) error {
	return &InvalidInputException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidInputException) Code() string {
	return "InvalidInputException"
}

// Message returns the exception's message.
func (s *InvalidInputException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidInputException) OrigErr() error {
	return nil
}

func (s *InvalidInputException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidInputException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidInputException) RequestID() string {
	return s.RespMetadata.RequestID
}

type IsVpcPeeredInput 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 IsVpcPeeredInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IsVpcPeeredInput) GoString() string {
	return s.String()
}

type IsVpcPeeredOutput struct {
	_ struct{} `type:"structure"`

	// Returns true if the Lightsail VPC is peered; otherwise, false.
	IsPeered *bool `locationName:"isPeered" 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 IsVpcPeeredOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IsVpcPeeredOutput) GoString() string {
	return s.String()
}

// SetIsPeered sets the IsPeered field's value.
func (s *IsVpcPeeredOutput) SetIsPeered(v bool) *IsVpcPeeredOutput {
	s.IsPeered = &v
	return s
}

// Describes an SSH key pair.
type KeyPair struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the key pair (arn:aws:lightsail:us-east-2:123456789101:KeyPair/05859e3d-331d-48ba-9034-12345EXAMPLE).
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when the key pair was created (1479816991.349).
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The RSA fingerprint of the key pair.
	Fingerprint *string `locationName:"fingerprint" type:"string"`

	// The region name and Availability Zone where the key pair was created.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The friendly name of the SSH key pair.
	Name *string `locationName:"name" type:"string"`

	// The resource type (usually KeyPair).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 KeyPair) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KeyPair) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *KeyPair) SetArn(v string) *KeyPair {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *KeyPair) SetCreatedAt(v time.Time) *KeyPair {
	s.CreatedAt = &v
	return s
}

// SetFingerprint sets the Fingerprint field's value.
func (s *KeyPair) SetFingerprint(v string) *KeyPair {
	s.Fingerprint = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *KeyPair) SetLocation(v *ResourceLocation) *KeyPair {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *KeyPair) SetName(v string) *KeyPair {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *KeyPair) SetResourceType(v string) *KeyPair {
	s.ResourceType = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *KeyPair) SetSupportCode(v string) *KeyPair {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *KeyPair) SetTags(v []*Tag) *KeyPair {
	s.Tags = v
	return s
}

// Describes an Amazon Lightsail content delivery network (CDN) distribution.
type LightsailDistribution struct {
	_ struct{} `type:"structure"`

	// Indicates whether the bundle that is currently applied to your distribution,
	// specified using the distributionName parameter, can be changed to another
	// bundle.
	//
	// Use the UpdateDistributionBundle action to change your distribution's bundle.
	AbleToUpdateBundle *bool `locationName:"ableToUpdateBundle" type:"boolean"`

	// The alternate domain names of the distribution.
	AlternativeDomainNames []*string `locationName:"alternativeDomainNames" type:"list"`

	// The Amazon Resource Name (ARN) of the distribution.
	Arn *string `locationName:"arn" type:"string"`

	// The ID of the bundle currently applied to the distribution.
	BundleId *string `locationName:"bundleId" type:"string"`

	// An object that describes the cache behavior settings of the distribution.
	CacheBehaviorSettings *CacheSettings `locationName:"cacheBehaviorSettings" type:"structure"`

	// An array of objects that describe the per-path cache behavior of the distribution.
	CacheBehaviors []*CacheBehaviorPerPath `locationName:"cacheBehaviors" type:"list"`

	// The name of the SSL/TLS certificate attached to the distribution, if any.
	CertificateName *string `locationName:"certificateName" type:"string"`

	// The timestamp when the distribution was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// An object that describes the default cache behavior of the distribution.
	DefaultCacheBehavior *CacheBehavior `locationName:"defaultCacheBehavior" type:"structure"`

	// The domain name of the distribution.
	DomainName *string `locationName:"domainName" type:"string"`

	// The IP address type of the distribution.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// Indicates whether the distribution is enabled.
	IsEnabled *bool `locationName:"isEnabled" type:"boolean"`

	// An object that describes the location of the distribution, such as the Amazon
	// Web Services Region and Availability Zone.
	//
	// Lightsail distributions are global resources that can reference an origin
	// in any Amazon Web Services Region, and distribute its content globally. However,
	// all distributions are located in the us-east-1 Region.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the distribution.
	Name *string `locationName:"name" type:"string"`

	// An object that describes the origin resource of the distribution, such as
	// a Lightsail instance, bucket, or load balancer.
	//
	// The distribution pulls, caches, and serves content from the origin.
	Origin *Origin `locationName:"origin" type:"structure"`

	// The public DNS of the origin.
	OriginPublicDNS *string `locationName:"originPublicDNS" type:"string"`

	// The Lightsail resource type (Distribution).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The status of the distribution.
	Status *string `locationName:"status" type:"string"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail distribution. This code enables our support
	// team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 LightsailDistribution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LightsailDistribution) GoString() string {
	return s.String()
}

// SetAbleToUpdateBundle sets the AbleToUpdateBundle field's value.
func (s *LightsailDistribution) SetAbleToUpdateBundle(v bool) *LightsailDistribution {
	s.AbleToUpdateBundle = &v
	return s
}

// SetAlternativeDomainNames sets the AlternativeDomainNames field's value.
func (s *LightsailDistribution) SetAlternativeDomainNames(v []*string) *LightsailDistribution {
	s.AlternativeDomainNames = v
	return s
}

// SetArn sets the Arn field's value.
func (s *LightsailDistribution) SetArn(v string) *LightsailDistribution {
	s.Arn = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *LightsailDistribution) SetBundleId(v string) *LightsailDistribution {
	s.BundleId = &v
	return s
}

// SetCacheBehaviorSettings sets the CacheBehaviorSettings field's value.
func (s *LightsailDistribution) SetCacheBehaviorSettings(v *CacheSettings) *LightsailDistribution {
	s.CacheBehaviorSettings = v
	return s
}

// SetCacheBehaviors sets the CacheBehaviors field's value.
func (s *LightsailDistribution) SetCacheBehaviors(v []*CacheBehaviorPerPath) *LightsailDistribution {
	s.CacheBehaviors = v
	return s
}

// SetCertificateName sets the CertificateName field's value.
func (s *LightsailDistribution) SetCertificateName(v string) *LightsailDistribution {
	s.CertificateName = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *LightsailDistribution) SetCreatedAt(v time.Time) *LightsailDistribution {
	s.CreatedAt = &v
	return s
}

// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
func (s *LightsailDistribution) SetDefaultCacheBehavior(v *CacheBehavior) *LightsailDistribution {
	s.DefaultCacheBehavior = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *LightsailDistribution) SetDomainName(v string) *LightsailDistribution {
	s.DomainName = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *LightsailDistribution) SetIpAddressType(v string) *LightsailDistribution {
	s.IpAddressType = &v
	return s
}

// SetIsEnabled sets the IsEnabled field's value.
func (s *LightsailDistribution) SetIsEnabled(v bool) *LightsailDistribution {
	s.IsEnabled = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *LightsailDistribution) SetLocation(v *ResourceLocation) *LightsailDistribution {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *LightsailDistribution) SetName(v string) *LightsailDistribution {
	s.Name = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *LightsailDistribution) SetOrigin(v *Origin) *LightsailDistribution {
	s.Origin = v
	return s
}

// SetOriginPublicDNS sets the OriginPublicDNS field's value.
func (s *LightsailDistribution) SetOriginPublicDNS(v string) *LightsailDistribution {
	s.OriginPublicDNS = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *LightsailDistribution) SetResourceType(v string) *LightsailDistribution {
	s.ResourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *LightsailDistribution) SetStatus(v string) *LightsailDistribution {
	s.Status = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *LightsailDistribution) SetSupportCode(v string) *LightsailDistribution {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *LightsailDistribution) SetTags(v []*Tag) *LightsailDistribution {
	s.Tags = v
	return s
}

// Describes a load balancer.
type LoadBalancer struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the load balancer.
	Arn *string `locationName:"arn" type:"string"`

	// A string to string map of the configuration options for your load balancer.
	// Valid values are listed below.
	ConfigurationOptions map[string]*string `locationName:"configurationOptions" type:"map"`

	// The date when your load balancer was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The DNS name of your Lightsail load balancer.
	DnsName *string `locationName:"dnsName" type:"string"`

	// The path you specified to perform your health checks. If no path is specified,
	// the load balancer tries to make a request to the default (root) page.
	HealthCheckPath *string `locationName:"healthCheckPath" type:"string"`

	// A Boolean value that indicates whether HTTPS redirection is enabled for the
	// load balancer.
	HttpsRedirectionEnabled *bool `locationName:"httpsRedirectionEnabled" type:"boolean"`

	// An array of InstanceHealthSummary objects describing the health of the load
	// balancer.
	InstanceHealthSummary []*InstanceHealthSummary `locationName:"instanceHealthSummary" type:"list"`

	// The port where the load balancer will direct traffic to your Lightsail instances.
	// For HTTP traffic, it's port 80. For HTTPS traffic, it's port 443.
	InstancePort *int64 `locationName:"instancePort" type:"integer"`

	// The IP address type of the load balancer.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	IpAddressType *string `locationName:"ipAddressType" type:"string" enum:"IpAddressType"`

	// The AWS Region where your load balancer was created (us-east-2a). Lightsail
	// automatically creates your load balancer across Availability Zones.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the load balancer (my-load-balancer).
	Name *string `locationName:"name" type:"string"`

	// The protocol you have enabled for your load balancer. Valid values are below.
	//
	// You can't just have HTTP_HTTPS, but you can have just HTTP.
	Protocol *string `locationName:"protocol" type:"string" enum:"LoadBalancerProtocol"`

	// An array of public port settings for your load balancer. For HTTP, use port
	// 80. For HTTPS, use port 443.
	PublicPorts []*int64 `locationName:"publicPorts" type:"list"`

	// The resource type (LoadBalancer.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The status of your load balancer. Valid values are below.
	State *string `locationName:"state" type:"string" enum:"LoadBalancerState"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail load balancer. This code enables our support
	// team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" type:"list"`

	// An array of LoadBalancerTlsCertificateSummary objects that provide additional
	// information about the SSL/TLS certificates. For example, if true, the certificate
	// is attached to the load balancer.
	TlsCertificateSummaries []*LoadBalancerTlsCertificateSummary `locationName:"tlsCertificateSummaries" type:"list"`

	// The name of the TLS security policy for the load balancer.
	TlsPolicyName *string `locationName:"tlsPolicyName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancer) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *LoadBalancer) SetArn(v string) *LoadBalancer {
	s.Arn = &v
	return s
}

// SetConfigurationOptions sets the ConfigurationOptions field's value.
func (s *LoadBalancer) SetConfigurationOptions(v map[string]*string) *LoadBalancer {
	s.ConfigurationOptions = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *LoadBalancer) SetCreatedAt(v time.Time) *LoadBalancer {
	s.CreatedAt = &v
	return s
}

// SetDnsName sets the DnsName field's value.
func (s *LoadBalancer) SetDnsName(v string) *LoadBalancer {
	s.DnsName = &v
	return s
}

// SetHealthCheckPath sets the HealthCheckPath field's value.
func (s *LoadBalancer) SetHealthCheckPath(v string) *LoadBalancer {
	s.HealthCheckPath = &v
	return s
}

// SetHttpsRedirectionEnabled sets the HttpsRedirectionEnabled field's value.
func (s *LoadBalancer) SetHttpsRedirectionEnabled(v bool) *LoadBalancer {
	s.HttpsRedirectionEnabled = &v
	return s
}

// SetInstanceHealthSummary sets the InstanceHealthSummary field's value.
func (s *LoadBalancer) SetInstanceHealthSummary(v []*InstanceHealthSummary) *LoadBalancer {
	s.InstanceHealthSummary = v
	return s
}

// SetInstancePort sets the InstancePort field's value.
func (s *LoadBalancer) SetInstancePort(v int64) *LoadBalancer {
	s.InstancePort = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *LoadBalancer) SetIpAddressType(v string) *LoadBalancer {
	s.IpAddressType = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *LoadBalancer) SetLocation(v *ResourceLocation) *LoadBalancer {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *LoadBalancer) SetName(v string) *LoadBalancer {
	s.Name = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *LoadBalancer) SetProtocol(v string) *LoadBalancer {
	s.Protocol = &v
	return s
}

// SetPublicPorts sets the PublicPorts field's value.
func (s *LoadBalancer) SetPublicPorts(v []*int64) *LoadBalancer {
	s.PublicPorts = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *LoadBalancer) SetResourceType(v string) *LoadBalancer {
	s.ResourceType = &v
	return s
}

// SetState sets the State field's value.
func (s *LoadBalancer) SetState(v string) *LoadBalancer {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *LoadBalancer) SetSupportCode(v string) *LoadBalancer {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *LoadBalancer) SetTags(v []*Tag) *LoadBalancer {
	s.Tags = v
	return s
}

// SetTlsCertificateSummaries sets the TlsCertificateSummaries field's value.
func (s *LoadBalancer) SetTlsCertificateSummaries(v []*LoadBalancerTlsCertificateSummary) *LoadBalancer {
	s.TlsCertificateSummaries = v
	return s
}

// SetTlsPolicyName sets the TlsPolicyName field's value.
func (s *LoadBalancer) SetTlsPolicyName(v string) *LoadBalancer {
	s.TlsPolicyName = &v
	return s
}

// Describes a load balancer SSL/TLS certificate.
//
// TLS is just an updated, more secure version of Secure Socket Layer (SSL).
type LoadBalancerTlsCertificate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the SSL/TLS certificate.
	Arn *string `locationName:"arn" type:"string"`

	// The time when you created your SSL/TLS certificate.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The domain name for your SSL/TLS certificate.
	DomainName *string `locationName:"domainName" type:"string"`

	// An array of LoadBalancerTlsCertificateDomainValidationRecord objects describing
	// the records.
	DomainValidationRecords []*LoadBalancerTlsCertificateDomainValidationRecord `locationName:"domainValidationRecords" type:"list"`

	// The validation failure reason, if any, of the certificate.
	//
	// The following failure reasons are possible:
	//
	//    * NO_AVAILABLE_CONTACTS - This failure applies to email validation, which
	//    is not available for Lightsail certificates.
	//
	//    * ADDITIONAL_VERIFICATION_REQUIRED - Lightsail requires additional information
	//    to process this certificate request. This can happen as a fraud-protection
	//    measure, such as when the domain ranks within the Alexa top 1000 websites.
	//    To provide the required information, use the AWS Support Center (https://console.aws.amazon.com/support/home)
	//    to contact AWS Support. You cannot request a certificate for Amazon-owned
	//    domain names such as those ending in amazonaws.com, cloudfront.net, or
	//    elasticbeanstalk.com.
	//
	//    * DOMAIN_NOT_ALLOWED - One or more of the domain names in the certificate
	//    request was reported as an unsafe domain by VirusTotal (https://www.virustotal.com/gui/home/url).
	//    To correct the problem, search for your domain name on the VirusTotal
	//    (https://www.virustotal.com/gui/home/url) website. If your domain is reported
	//    as suspicious, see Google Help for Hacked Websites (https://developers.google.com/web/fundamentals/security/hacked)
	//    to learn what you can do. If you believe that the result is a false positive,
	//    notify the organization that is reporting the domain. VirusTotal is an
	//    aggregate of several antivirus and URL scanners and cannot remove your
	//    domain from a block list itself. After you correct the problem and the
	//    VirusTotal registry has been updated, request a new certificate. If you
	//    see this error and your domain is not included in the VirusTotal list,
	//    visit the AWS Support Center (https://console.aws.amazon.com/support/home)
	//    and create a case.
	//
	//    * INVALID_PUBLIC_DOMAIN - One or more of the domain names in the certificate
	//    request is not valid. Typically, this is because a domain name in the
	//    request is not a valid top-level domain. Try to request a certificate
	//    again, correcting any spelling errors or typos that were in the failed
	//    request, and ensure that all domain names in the request are for valid
	//    top-level domains. For example, you cannot request a certificate for example.invalidpublicdomain
	//    because invalidpublicdomain is not a valid top-level domain.
	//
	//    * OTHER - Typically, this failure occurs when there is a typographical
	//    error in one or more of the domain names in the certificate request. Try
	//    to request a certificate again, correcting any spelling errors or typos
	//    that were in the failed request.
	FailureReason *string `locationName:"failureReason" type:"string" enum:"LoadBalancerTlsCertificateFailureReason"`

	// When true, the SSL/TLS certificate is attached to the Lightsail load balancer.
	IsAttached *bool `locationName:"isAttached" type:"boolean"`

	// The time when the SSL/TLS certificate was issued.
	IssuedAt *time.Time `locationName:"issuedAt" type:"timestamp"`

	// The issuer of the certificate.
	Issuer *string `locationName:"issuer" type:"string"`

	// The algorithm used to generate the key pair (the public and private key).
	KeyAlgorithm *string `locationName:"keyAlgorithm" type:"string"`

	// The load balancer name where your SSL/TLS certificate is attached.
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string"`

	// The Amazon Web Services Region and Availability Zone where you created your
	// certificate.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the SSL/TLS certificate (my-certificate).
	Name *string `locationName:"name" type:"string"`

	// The timestamp when the SSL/TLS certificate expires.
	NotAfter *time.Time `locationName:"notAfter" type:"timestamp"`

	// The timestamp when the SSL/TLS certificate is first valid.
	NotBefore *time.Time `locationName:"notBefore" type:"timestamp"`

	// An object that describes the status of the certificate renewal managed by
	// Lightsail.
	RenewalSummary *LoadBalancerTlsCertificateRenewalSummary `locationName:"renewalSummary" type:"structure"`

	// The resource type (LoadBalancerTlsCertificate).
	//
	//    * Instance - A Lightsail instance (a virtual private server)
	//
	//    * StaticIp - A static IP address
	//
	//    * KeyPair - The key pair used to connect to a Lightsail instance
	//
	//    * InstanceSnapshot - A Lightsail instance snapshot
	//
	//    * Domain - A DNS zone
	//
	//    * PeeredVpc - A peered VPC
	//
	//    * LoadBalancer - A Lightsail load balancer
	//
	//    * LoadBalancerTlsCertificate - An SSL/TLS certificate associated with
	//    a Lightsail load balancer
	//
	//    * Disk - A Lightsail block storage disk
	//
	//    * DiskSnapshot - A block storage disk snapshot
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The reason the certificate was revoked. This value is present only when the
	// certificate status is REVOKED.
	RevocationReason *string `locationName:"revocationReason" type:"string" enum:"LoadBalancerTlsCertificateRevocationReason"`

	// The timestamp when the certificate was revoked. This value is present only
	// when the certificate status is REVOKED.
	RevokedAt *time.Time `locationName:"revokedAt" type:"timestamp"`

	// The serial number of the certificate.
	Serial *string `locationName:"serial" type:"string"`

	// The algorithm that was used to sign the certificate.
	SignatureAlgorithm *string `locationName:"signatureAlgorithm" type:"string"`

	// The validation status of the SSL/TLS certificate. Valid values are below.
	Status *string `locationName:"status" type:"string" enum:"LoadBalancerTlsCertificateStatus"`

	// The name of the entity that is associated with the public key contained in
	// the certificate.
	Subject *string `locationName:"subject" type:"string"`

	// An array of strings that specify the alternate domains (example2.com) and
	// subdomains (blog.example.com) for the certificate.
	SubjectAlternativeNames []*string `locationName:"subjectAlternativeNames" type:"list"`

	// The support code. Include this code in your email to support when you have
	// questions about your Lightsail load balancer or SSL/TLS certificate. This
	// code enables our support team to look up your Lightsail information more
	// easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 LoadBalancerTlsCertificate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificate) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *LoadBalancerTlsCertificate) SetArn(v string) *LoadBalancerTlsCertificate {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *LoadBalancerTlsCertificate) SetCreatedAt(v time.Time) *LoadBalancerTlsCertificate {
	s.CreatedAt = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *LoadBalancerTlsCertificate) SetDomainName(v string) *LoadBalancerTlsCertificate {
	s.DomainName = &v
	return s
}

// SetDomainValidationRecords sets the DomainValidationRecords field's value.
func (s *LoadBalancerTlsCertificate) SetDomainValidationRecords(v []*LoadBalancerTlsCertificateDomainValidationRecord) *LoadBalancerTlsCertificate {
	s.DomainValidationRecords = v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *LoadBalancerTlsCertificate) SetFailureReason(v string) *LoadBalancerTlsCertificate {
	s.FailureReason = &v
	return s
}

// SetIsAttached sets the IsAttached field's value.
func (s *LoadBalancerTlsCertificate) SetIsAttached(v bool) *LoadBalancerTlsCertificate {
	s.IsAttached = &v
	return s
}

// SetIssuedAt sets the IssuedAt field's value.
func (s *LoadBalancerTlsCertificate) SetIssuedAt(v time.Time) *LoadBalancerTlsCertificate {
	s.IssuedAt = &v
	return s
}

// SetIssuer sets the Issuer field's value.
func (s *LoadBalancerTlsCertificate) SetIssuer(v string) *LoadBalancerTlsCertificate {
	s.Issuer = &v
	return s
}

// SetKeyAlgorithm sets the KeyAlgorithm field's value.
func (s *LoadBalancerTlsCertificate) SetKeyAlgorithm(v string) *LoadBalancerTlsCertificate {
	s.KeyAlgorithm = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *LoadBalancerTlsCertificate) SetLoadBalancerName(v string) *LoadBalancerTlsCertificate {
	s.LoadBalancerName = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *LoadBalancerTlsCertificate) SetLocation(v *ResourceLocation) *LoadBalancerTlsCertificate {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *LoadBalancerTlsCertificate) SetName(v string) *LoadBalancerTlsCertificate {
	s.Name = &v
	return s
}

// SetNotAfter sets the NotAfter field's value.
func (s *LoadBalancerTlsCertificate) SetNotAfter(v time.Time) *LoadBalancerTlsCertificate {
	s.NotAfter = &v
	return s
}

// SetNotBefore sets the NotBefore field's value.
func (s *LoadBalancerTlsCertificate) SetNotBefore(v time.Time) *LoadBalancerTlsCertificate {
	s.NotBefore = &v
	return s
}

// SetRenewalSummary sets the RenewalSummary field's value.
func (s *LoadBalancerTlsCertificate) SetRenewalSummary(v *LoadBalancerTlsCertificateRenewalSummary) *LoadBalancerTlsCertificate {
	s.RenewalSummary = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *LoadBalancerTlsCertificate) SetResourceType(v string) *LoadBalancerTlsCertificate {
	s.ResourceType = &v
	return s
}

// SetRevocationReason sets the RevocationReason field's value.
func (s *LoadBalancerTlsCertificate) SetRevocationReason(v string) *LoadBalancerTlsCertificate {
	s.RevocationReason = &v
	return s
}

// SetRevokedAt sets the RevokedAt field's value.
func (s *LoadBalancerTlsCertificate) SetRevokedAt(v time.Time) *LoadBalancerTlsCertificate {
	s.RevokedAt = &v
	return s
}

// SetSerial sets the Serial field's value.
func (s *LoadBalancerTlsCertificate) SetSerial(v string) *LoadBalancerTlsCertificate {
	s.Serial = &v
	return s
}

// SetSignatureAlgorithm sets the SignatureAlgorithm field's value.
func (s *LoadBalancerTlsCertificate) SetSignatureAlgorithm(v string) *LoadBalancerTlsCertificate {
	s.SignatureAlgorithm = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *LoadBalancerTlsCertificate) SetStatus(v string) *LoadBalancerTlsCertificate {
	s.Status = &v
	return s
}

// SetSubject sets the Subject field's value.
func (s *LoadBalancerTlsCertificate) SetSubject(v string) *LoadBalancerTlsCertificate {
	s.Subject = &v
	return s
}

// SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
func (s *LoadBalancerTlsCertificate) SetSubjectAlternativeNames(v []*string) *LoadBalancerTlsCertificate {
	s.SubjectAlternativeNames = v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *LoadBalancerTlsCertificate) SetSupportCode(v string) *LoadBalancerTlsCertificate {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *LoadBalancerTlsCertificate) SetTags(v []*Tag) *LoadBalancerTlsCertificate {
	s.Tags = v
	return s
}

// An object that describes the state of the canonical name (CNAME) records
// that are automatically added by Lightsail to the DNS of the domain to validate
// domain ownership.
type LoadBalancerTlsCertificateDnsRecordCreationState struct {
	_ struct{} `type:"structure"`

	// The status code for the automated DNS record creation.
	//
	// Following are the possible values:
	//
	//    * SUCCEEDED - The validation records were successfully added.
	//
	//    * STARTED - The automatic DNS record creation has started.
	//
	//    * FAILED - The validation record addition failed.
	Code *string `locationName:"code" type:"string" enum:"LoadBalancerTlsCertificateDnsRecordCreationStateCode"`

	// The message that describes the reason for the status code.
	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 LoadBalancerTlsCertificateDnsRecordCreationState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateDnsRecordCreationState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *LoadBalancerTlsCertificateDnsRecordCreationState) SetCode(v string) *LoadBalancerTlsCertificateDnsRecordCreationState {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *LoadBalancerTlsCertificateDnsRecordCreationState) SetMessage(v string) *LoadBalancerTlsCertificateDnsRecordCreationState {
	s.Message = &v
	return s
}

// Contains information about the domain names on an SSL/TLS certificate that
// you will use to validate domain ownership.
type LoadBalancerTlsCertificateDomainValidationOption struct {
	_ struct{} `type:"structure"`

	// The fully qualified domain name in the certificate request.
	DomainName *string `locationName:"domainName" type:"string"`

	// The status of the domain validation. Valid values are listed below.
	ValidationStatus *string `locationName:"validationStatus" type:"string" enum:"LoadBalancerTlsCertificateDomainStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateDomainValidationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateDomainValidationOption) GoString() string {
	return s.String()
}

// SetDomainName sets the DomainName field's value.
func (s *LoadBalancerTlsCertificateDomainValidationOption) SetDomainName(v string) *LoadBalancerTlsCertificateDomainValidationOption {
	s.DomainName = &v
	return s
}

// SetValidationStatus sets the ValidationStatus field's value.
func (s *LoadBalancerTlsCertificateDomainValidationOption) SetValidationStatus(v string) *LoadBalancerTlsCertificateDomainValidationOption {
	s.ValidationStatus = &v
	return s
}

// Describes the validation record of each domain name in the SSL/TLS certificate.
type LoadBalancerTlsCertificateDomainValidationRecord struct {
	_ struct{} `type:"structure"`

	// An object that describes the state of the canonical name (CNAME) records
	// that are automatically added by Lightsail to the DNS of a domain to validate
	// domain ownership.
	DnsRecordCreationState *LoadBalancerTlsCertificateDnsRecordCreationState `locationName:"dnsRecordCreationState" type:"structure"`

	// The domain name against which your SSL/TLS certificate was validated.
	DomainName *string `locationName:"domainName" type:"string"`

	// A fully qualified domain name in the certificate. For example, example.com.
	Name *string `locationName:"name" type:"string"`

	// The type of validation record. For example, CNAME for domain validation.
	Type *string `locationName:"type" type:"string"`

	// The validation status. Valid values are listed below.
	ValidationStatus *string `locationName:"validationStatus" type:"string" enum:"LoadBalancerTlsCertificateDomainStatus"`

	// The value for that type.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateDomainValidationRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateDomainValidationRecord) GoString() string {
	return s.String()
}

// SetDnsRecordCreationState sets the DnsRecordCreationState field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetDnsRecordCreationState(v *LoadBalancerTlsCertificateDnsRecordCreationState) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.DnsRecordCreationState = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetDomainName(v string) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.DomainName = &v
	return s
}

// SetName sets the Name field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetName(v string) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetType(v string) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.Type = &v
	return s
}

// SetValidationStatus sets the ValidationStatus field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetValidationStatus(v string) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.ValidationStatus = &v
	return s
}

// SetValue sets the Value field's value.
func (s *LoadBalancerTlsCertificateDomainValidationRecord) SetValue(v string) *LoadBalancerTlsCertificateDomainValidationRecord {
	s.Value = &v
	return s
}

// Contains information about the status of Lightsail's managed renewal for
// the certificate.
//
// The renewal status of the certificate.
//
// The following renewal status are possible:
//
//   - PendingAutoRenewal - Lightsail is attempting to automatically validate
//     the domain names in the certificate. No further action is required.
//
//   - PendingValidation - Lightsail couldn't automatically validate one or
//     more domain names in the certificate. You must take action to validate
//     these domain names or the certificate won't be renewed. If you used DNS
//     validation, check to make sure your certificate's domain validation records
//     exist in your domain's DNS, and that your certificate remains in use.
//
//   - Success - All domain names in the certificate are validated, and Lightsail
//     renewed the certificate. No further action is required.
//
//   - Failed - One or more domain names were not validated before the certificate
//     expired, and Lightsail did not renew the certificate. You can request
//     a new certificate using the CreateCertificate action.
type LoadBalancerTlsCertificateRenewalSummary struct {
	_ struct{} `type:"structure"`

	// Contains information about the validation of each domain name in the certificate,
	// as it pertains to Lightsail's managed renewal. This is different from the
	// initial validation that occurs as a result of the RequestCertificate request.
	DomainValidationOptions []*LoadBalancerTlsCertificateDomainValidationOption `locationName:"domainValidationOptions" type:"list"`

	// The renewal status of the certificate.
	//
	// The following renewal status are possible:
	//
	//    * PendingAutoRenewal - Lightsail is attempting to automatically validate
	//    the domain names of the certificate. No further action is required.
	//
	//    * PendingValidation - Lightsail couldn't automatically validate one or
	//    more domain names of the certificate. You must take action to validate
	//    these domain names or the certificate won't be renewed. Check to make
	//    sure your certificate's domain validation records exist in your domain's
	//    DNS, and that your certificate remains in use.
	//
	//    * Success - All domain names in the certificate are validated, and Lightsail
	//    renewed the certificate. No further action is required.
	//
	//    * Failed - One or more domain names were not validated before the certificate
	//    expired, and Lightsail did not renew the certificate. You can request
	//    a new certificate using the CreateCertificate action.
	RenewalStatus *string `locationName:"renewalStatus" type:"string" enum:"LoadBalancerTlsCertificateRenewalStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateRenewalSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateRenewalSummary) GoString() string {
	return s.String()
}

// SetDomainValidationOptions sets the DomainValidationOptions field's value.
func (s *LoadBalancerTlsCertificateRenewalSummary) SetDomainValidationOptions(v []*LoadBalancerTlsCertificateDomainValidationOption) *LoadBalancerTlsCertificateRenewalSummary {
	s.DomainValidationOptions = v
	return s
}

// SetRenewalStatus sets the RenewalStatus field's value.
func (s *LoadBalancerTlsCertificateRenewalSummary) SetRenewalStatus(v string) *LoadBalancerTlsCertificateRenewalSummary {
	s.RenewalStatus = &v
	return s
}

// Provides a summary of SSL/TLS certificate metadata.
type LoadBalancerTlsCertificateSummary struct {
	_ struct{} `type:"structure"`

	// When true, the SSL/TLS certificate is attached to the Lightsail load balancer.
	IsAttached *bool `locationName:"isAttached" type:"boolean"`

	// The name of the SSL/TLS certificate.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsCertificateSummary) GoString() string {
	return s.String()
}

// SetIsAttached sets the IsAttached field's value.
func (s *LoadBalancerTlsCertificateSummary) SetIsAttached(v bool) *LoadBalancerTlsCertificateSummary {
	s.IsAttached = &v
	return s
}

// SetName sets the Name field's value.
func (s *LoadBalancerTlsCertificateSummary) SetName(v string) *LoadBalancerTlsCertificateSummary {
	s.Name = &v
	return s
}

// Describes the TLS security policies that are available for Lightsail load
// balancers.
//
// For more information about load balancer TLS security policies, see Configuring
// TLS security policies on your Amazon Lightsail load balancers (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy)
// in the Amazon Lightsail Developer Guide.
type LoadBalancerTlsPolicy struct {
	_ struct{} `type:"structure"`

	// The ciphers used by the TLS security policy.
	//
	// The ciphers are listed in order of preference.
	Ciphers []*string `locationName:"ciphers" type:"list"`

	// The description of the TLS security policy.
	Description *string `locationName:"description" type:"string"`

	// A Boolean value that indicates whether the TLS security policy is the default.
	IsDefault *bool `locationName:"isDefault" type:"boolean"`

	// The name of the TLS security policy.
	Name *string `locationName:"name" type:"string"`

	// The protocols used in a given TLS security policy.
	Protocols []*string `locationName:"protocols" 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 LoadBalancerTlsPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerTlsPolicy) GoString() string {
	return s.String()
}

// SetCiphers sets the Ciphers field's value.
func (s *LoadBalancerTlsPolicy) SetCiphers(v []*string) *LoadBalancerTlsPolicy {
	s.Ciphers = v
	return s
}

// SetDescription sets the Description field's value.
func (s *LoadBalancerTlsPolicy) SetDescription(v string) *LoadBalancerTlsPolicy {
	s.Description = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *LoadBalancerTlsPolicy) SetIsDefault(v bool) *LoadBalancerTlsPolicy {
	s.IsDefault = &v
	return s
}

// SetName sets the Name field's value.
func (s *LoadBalancerTlsPolicy) SetName(v string) *LoadBalancerTlsPolicy {
	s.Name = &v
	return s
}

// SetProtocols sets the Protocols field's value.
func (s *LoadBalancerTlsPolicy) SetProtocols(v []*string) *LoadBalancerTlsPolicy {
	s.Protocols = v
	return s
}

// Describes a database log event.
type LogEvent struct {
	_ struct{} `type:"structure"`

	// The timestamp when the database log event was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The message of the database log event.
	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 LogEvent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LogEvent) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *LogEvent) SetCreatedAt(v time.Time) *LogEvent {
	s.CreatedAt = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *LogEvent) SetMessage(v string) *LogEvent {
	s.Message = &v
	return s
}

// Describes the metric data point.
type MetricDatapoint struct {
	_ struct{} `type:"structure"`

	// The average.
	Average *float64 `locationName:"average" type:"double"`

	// The maximum.
	Maximum *float64 `locationName:"maximum" type:"double"`

	// The minimum.
	Minimum *float64 `locationName:"minimum" type:"double"`

	// The sample count.
	SampleCount *float64 `locationName:"sampleCount" type:"double"`

	// The sum.
	Sum *float64 `locationName:"sum" type:"double"`

	// The timestamp (1479816991.349).
	Timestamp *time.Time `locationName:"timestamp" type:"timestamp"`

	// The unit.
	Unit *string `locationName:"unit" type:"string" enum:"MetricUnit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricDatapoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricDatapoint) GoString() string {
	return s.String()
}

// SetAverage sets the Average field's value.
func (s *MetricDatapoint) SetAverage(v float64) *MetricDatapoint {
	s.Average = &v
	return s
}

// SetMaximum sets the Maximum field's value.
func (s *MetricDatapoint) SetMaximum(v float64) *MetricDatapoint {
	s.Maximum = &v
	return s
}

// SetMinimum sets the Minimum field's value.
func (s *MetricDatapoint) SetMinimum(v float64) *MetricDatapoint {
	s.Minimum = &v
	return s
}

// SetSampleCount sets the SampleCount field's value.
func (s *MetricDatapoint) SetSampleCount(v float64) *MetricDatapoint {
	s.SampleCount = &v
	return s
}

// SetSum sets the Sum field's value.
func (s *MetricDatapoint) SetSum(v float64) *MetricDatapoint {
	s.Sum = &v
	return s
}

// SetTimestamp sets the Timestamp field's value.
func (s *MetricDatapoint) SetTimestamp(v time.Time) *MetricDatapoint {
	s.Timestamp = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *MetricDatapoint) SetUnit(v string) *MetricDatapoint {
	s.Unit = &v
	return s
}

// Describes resource being monitored by an alarm.
//
// An alarm is a way to monitor your Amazon Lightsail resource metrics. For
// more information, see Alarms in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-alarms).
type MonitoredResourceInfo struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource being monitored.
	Arn *string `locationName:"arn" type:"string"`

	// The name of the Lightsail resource being monitored.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type of the resource being monitored.
	//
	// Instances, load balancers, and relational databases are the only Lightsail
	// resources that can currently be monitored by alarms.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonitoredResourceInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonitoredResourceInfo) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *MonitoredResourceInfo) SetArn(v string) *MonitoredResourceInfo {
	s.Arn = &v
	return s
}

// SetName sets the Name field's value.
func (s *MonitoredResourceInfo) SetName(v string) *MonitoredResourceInfo {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *MonitoredResourceInfo) SetResourceType(v string) *MonitoredResourceInfo {
	s.ResourceType = &v
	return s
}

// Describes the monthly data transfer in and out of your virtual private server
// (or instance).
type MonthlyTransfer struct {
	_ struct{} `type:"structure"`

	// The amount allocated per month (in GB).
	GbPerMonthAllocated *int64 `locationName:"gbPerMonthAllocated" 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 MonthlyTransfer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonthlyTransfer) GoString() string {
	return s.String()
}

// SetGbPerMonthAllocated sets the GbPerMonthAllocated field's value.
func (s *MonthlyTransfer) SetGbPerMonthAllocated(v int64) *MonthlyTransfer {
	s.GbPerMonthAllocated = &v
	return s
}

// Describes the state of the name server records update made by Amazon Lightsail
// to an Amazon Route 53 registered domain.
//
// For more information, see DNS in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/understanding-dns-in-amazon-lightsail)
// in the Amazon Lightsail Developer Guide.
type NameServersUpdateState struct {
	_ struct{} `type:"structure"`

	// The status code for the name servers update.
	//
	// Following are the possible values:
	//
	//    * SUCCEEDED - The name server records were successfully updated.
	//
	//    * PENDING - The name server record update is in progress.
	//
	//    * FAILED - The name server record update failed.
	//
	//    * STARTED - The automatic name server record update started.
	Code *string `locationName:"code" type:"string" enum:"NameServersUpdateStateCode"`

	// The message that describes the reason for the status code.
	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 NameServersUpdateState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NameServersUpdateState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *NameServersUpdateState) SetCode(v string) *NameServersUpdateState {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *NameServersUpdateState) SetMessage(v string) *NameServersUpdateState {
	s.Message = &v
	return s
}

// Lightsail throws this exception when it cannot find a resource.
type NotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

	Message_ *string `locationName:"message" type:"string"`

	Tip *string `locationName:"tip" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotFoundException) GoString() string {
	return s.String()
}

func newErrorNotFoundException(v protocol.ResponseMetadata) error {
	return &NotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *NotFoundException) Code() string {
	return "NotFoundException"
}

// Message returns the exception's message.
func (s *NotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *NotFoundException) OrigErr() error {
	return nil
}

func (s *NotFoundException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *NotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *NotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

type OpenInstancePublicPortsInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance for which to open ports.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// An object to describe the ports to open for the specified instance.
	//
	// PortInfo is a required field
	PortInfo *PortInfo `locationName:"portInfo" 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 OpenInstancePublicPortsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OpenInstancePublicPortsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OpenInstancePublicPortsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OpenInstancePublicPortsInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}
	if s.PortInfo == nil {
		invalidParams.Add(request.NewErrParamRequired("PortInfo"))
	}
	if s.PortInfo != nil {
		if err := s.PortInfo.Validate(); err != nil {
			invalidParams.AddNested("PortInfo", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *OpenInstancePublicPortsInput) SetInstanceName(v string) *OpenInstancePublicPortsInput {
	s.InstanceName = &v
	return s
}

// SetPortInfo sets the PortInfo field's value.
func (s *OpenInstancePublicPortsInput) SetPortInfo(v *PortInfo) *OpenInstancePublicPortsInput {
	s.PortInfo = v
	return s
}

type OpenInstancePublicPortsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OpenInstancePublicPortsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OpenInstancePublicPortsOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *OpenInstancePublicPortsOutput) SetOperation(v *Operation) *OpenInstancePublicPortsOutput {
	s.Operation = v
	return s
}

// Describes the API operation.
type Operation struct {
	_ struct{} `type:"structure"`

	// The timestamp when the operation was initialized (1479816991.349).
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The error code.
	ErrorCode *string `locationName:"errorCode" type:"string"`

	// The error details.
	ErrorDetails *string `locationName:"errorDetails" type:"string"`

	// The ID of the operation.
	Id *string `locationName:"id" type:"string"`

	// A Boolean value indicating whether the operation is terminal.
	IsTerminal *bool `locationName:"isTerminal" type:"boolean"`

	// The Amazon Web Services Region and Availability Zone.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// Details about the operation (Debian-1GB-Ohio-1).
	OperationDetails *string `locationName:"operationDetails" type:"string"`

	// The type of operation.
	OperationType *string `locationName:"operationType" type:"string" enum:"OperationType"`

	// The resource name.
	ResourceName *string `locationName:"resourceName" type:"string"`

	// The resource type.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The status of the operation.
	Status *string `locationName:"status" type:"string" enum:"OperationStatus"`

	// The timestamp when the status was changed (1479816991.349).
	StatusChangedAt *time.Time `locationName:"statusChangedAt" 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 Operation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Operation) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Operation) SetCreatedAt(v time.Time) *Operation {
	s.CreatedAt = &v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *Operation) SetErrorCode(v string) *Operation {
	s.ErrorCode = &v
	return s
}

// SetErrorDetails sets the ErrorDetails field's value.
func (s *Operation) SetErrorDetails(v string) *Operation {
	s.ErrorDetails = &v
	return s
}

// SetId sets the Id field's value.
func (s *Operation) SetId(v string) *Operation {
	s.Id = &v
	return s
}

// SetIsTerminal sets the IsTerminal field's value.
func (s *Operation) SetIsTerminal(v bool) *Operation {
	s.IsTerminal = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *Operation) SetLocation(v *ResourceLocation) *Operation {
	s.Location = v
	return s
}

// SetOperationDetails sets the OperationDetails field's value.
func (s *Operation) SetOperationDetails(v string) *Operation {
	s.OperationDetails = &v
	return s
}

// SetOperationType sets the OperationType field's value.
func (s *Operation) SetOperationType(v string) *Operation {
	s.OperationType = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *Operation) SetResourceName(v string) *Operation {
	s.ResourceName = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Operation) SetResourceType(v string) *Operation {
	s.ResourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Operation) SetStatus(v string) *Operation {
	s.Status = &v
	return s
}

// SetStatusChangedAt sets the StatusChangedAt field's value.
func (s *Operation) SetStatusChangedAt(v time.Time) *Operation {
	s.StatusChangedAt = &v
	return s
}

// Lightsail throws this exception when an operation fails to execute.
type OperationFailureException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

	Message_ *string `locationName:"message" type:"string"`

	Tip *string `locationName:"tip" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationFailureException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationFailureException) GoString() string {
	return s.String()
}

func newErrorOperationFailureException(v protocol.ResponseMetadata) error {
	return &OperationFailureException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OperationFailureException) Code() string {
	return "OperationFailureException"
}

// Message returns the exception's message.
func (s *OperationFailureException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OperationFailureException) OrigErr() error {
	return nil
}

func (s *OperationFailureException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *OperationFailureException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OperationFailureException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes the origin resource of an Amazon Lightsail content delivery network
// (CDN) distribution.
//
// An origin can be a Lightsail instance, bucket, or load balancer. A distribution
// pulls content from an origin, caches it, and serves it to viewers via a worldwide
// network of edge servers.
type Origin struct {
	_ struct{} `type:"structure"`

	// The name of the origin resource.
	Name *string `locationName:"name" type:"string"`

	// The protocol that your Amazon Lightsail distribution uses when establishing
	// a connection with your origin to pull content.
	ProtocolPolicy *string `locationName:"protocolPolicy" type:"string" enum:"OriginProtocolPolicyEnum"`

	// The AWS Region name of the origin resource.
	RegionName *string `locationName:"regionName" type:"string" enum:"RegionName"`

	// The resource type of the origin resource (Instance).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Origin) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Origin) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Origin) SetName(v string) *Origin {
	s.Name = &v
	return s
}

// SetProtocolPolicy sets the ProtocolPolicy field's value.
func (s *Origin) SetProtocolPolicy(v string) *Origin {
	s.ProtocolPolicy = &v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *Origin) SetRegionName(v string) *Origin {
	s.RegionName = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Origin) SetResourceType(v string) *Origin {
	s.ResourceType = &v
	return s
}

// The password data for the Windows Server-based instance, including the ciphertext
// and the key pair name.
type PasswordData struct {
	_ struct{} `type:"structure"`

	// The encrypted password. Ciphertext will be an empty string if access to your
	// new instance is not ready yet. When you create an instance, it can take up
	// to 15 minutes for the instance to be ready.
	//
	// If you use the default key pair (LightsailDefaultKeyPair), the decrypted
	// password will be available in the password field.
	//
	// If you are using a custom key pair, you need to use your own means of decryption.
	//
	// If you change the Administrator password on the instance, Lightsail will
	// continue to return the original ciphertext value. When accessing the instance
	// using RDP, you need to manually enter the Administrator password after changing
	// it from the default.
	Ciphertext *string `locationName:"ciphertext" type:"string"`

	// The name of the key pair that you used when creating your instance. If no
	// key pair name was specified when creating the instance, Lightsail uses the
	// default key pair (LightsailDefaultKeyPair).
	//
	// If you are using a custom key pair, you need to use your own means of decrypting
	// your password using the ciphertext. Lightsail creates the ciphertext by encrypting
	// your password with the public key part of this key pair.
	KeyPairName *string `locationName:"keyPairName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PasswordData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PasswordData) GoString() string {
	return s.String()
}

// SetCiphertext sets the Ciphertext field's value.
func (s *PasswordData) SetCiphertext(v string) *PasswordData {
	s.Ciphertext = &v
	return s
}

// SetKeyPairName sets the KeyPairName field's value.
func (s *PasswordData) SetKeyPairName(v string) *PasswordData {
	s.KeyPairName = &v
	return s
}

type PeerVpcInput 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 PeerVpcInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PeerVpcInput) GoString() string {
	return s.String()
}

type PeerVpcOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PeerVpcOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PeerVpcOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *PeerVpcOutput) SetOperation(v *Operation) *PeerVpcOutput {
	s.Operation = v
	return s
}

// Describes a pending database maintenance action.
type PendingMaintenanceAction struct {
	_ struct{} `type:"structure"`

	// The type of pending database maintenance action.
	Action *string `locationName:"action" type:"string"`

	// The effective date of the pending database maintenance action.
	CurrentApplyDate *time.Time `locationName:"currentApplyDate" type:"timestamp"`

	// Additional detail about the pending database maintenance action.
	Description *string `locationName:"description" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingMaintenanceAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingMaintenanceAction) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *PendingMaintenanceAction) SetAction(v string) *PendingMaintenanceAction {
	s.Action = &v
	return s
}

// SetCurrentApplyDate sets the CurrentApplyDate field's value.
func (s *PendingMaintenanceAction) SetCurrentApplyDate(v time.Time) *PendingMaintenanceAction {
	s.CurrentApplyDate = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *PendingMaintenanceAction) SetDescription(v string) *PendingMaintenanceAction {
	s.Description = &v
	return s
}

// Describes a pending database value modification.
type PendingModifiedRelationalDatabaseValues struct {
	_ struct{} `type:"structure"`

	// A Boolean value indicating whether automated backup retention is enabled.
	BackupRetentionEnabled *bool `locationName:"backupRetentionEnabled" type:"boolean"`

	// The database engine version.
	EngineVersion *string `locationName:"engineVersion" type:"string"`

	// The password for the master user of the database.
	MasterUserPassword *string `locationName:"masterUserPassword" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingModifiedRelationalDatabaseValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingModifiedRelationalDatabaseValues) GoString() string {
	return s.String()
}

// SetBackupRetentionEnabled sets the BackupRetentionEnabled field's value.
func (s *PendingModifiedRelationalDatabaseValues) SetBackupRetentionEnabled(v bool) *PendingModifiedRelationalDatabaseValues {
	s.BackupRetentionEnabled = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *PendingModifiedRelationalDatabaseValues) SetEngineVersion(v string) *PendingModifiedRelationalDatabaseValues {
	s.EngineVersion = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *PendingModifiedRelationalDatabaseValues) SetMasterUserPassword(v string) *PendingModifiedRelationalDatabaseValues {
	s.MasterUserPassword = &v
	return s
}

// Describes ports to open on an instance, the IP addresses allowed to connect
// to the instance through the ports, and the protocol.
type PortInfo struct {
	_ struct{} `type:"structure"`

	// An alias that defines access for a preconfigured range of IP addresses.
	//
	// The only alias currently supported is lightsail-connect, which allows IP
	// addresses of the browser-based RDP/SSH client in the Lightsail console to
	// connect to your instance.
	CidrListAliases []*string `locationName:"cidrListAliases" type:"list"`

	// The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol.
	//
	// The ipv6Cidrs parameter lists the IPv6 addresses that are allowed to connect
	// to an instance.
	//
	// Examples:
	//
	//    * To allow the IP address 192.0.2.44, specify 192.0.2.44 or 192.0.2.44/32.
	//
	//    * To allow the IP addresses 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Cidrs []*string `locationName:"cidrs" type:"list"`

	// The first port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP type for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP type for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	FromPort *int64 `locationName:"fromPort" type:"integer"`

	// The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are
	// allowed to connect to an instance through the ports, and the protocol. Only
	// devices with an IPv6 address can connect to an instance through IPv6; otherwise,
	// IPv4 should be used.
	//
	// The cidrs parameter lists the IPv4 addresses that are allowed to connect
	// to an instance.
	//
	// For more information about CIDR block notation, see Classless Inter-Domain
	// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)
	// on Wikipedia.
	Ipv6Cidrs []*string `locationName:"ipv6Cidrs" type:"list"`

	// The IP protocol name.
	//
	// The name can be one of the following:
	//
	//    * tcp - Transmission Control Protocol (TCP) provides reliable, ordered,
	//    and error-checked delivery of streamed data between applications running
	//    on hosts communicating by an IP network. If you have an application that
	//    doesn't require reliable data stream service, use UDP instead.
	//
	//    * all - All transport layer protocol types. For more general information,
	//    see Transport layer (https://en.wikipedia.org/wiki/Transport_layer) on
	//    Wikipedia.
	//
	//    * udp - With User Datagram Protocol (UDP), computer applications can send
	//    messages (or datagrams) to other hosts on an Internet Protocol (IP) network.
	//    Prior communications are not required to set up transmission channels
	//    or data paths. Applications that don't require reliable data stream service
	//    can use UDP, which provides a connectionless datagram service that emphasizes
	//    reduced latency over reliability. If you do require reliable data stream
	//    service, use TCP instead.
	//
	//    * icmp - Internet Control Message Protocol (ICMP) is used to send error
	//    messages and operational information indicating success or failure when
	//    communicating with an instance. For example, an error is indicated when
	//    an instance could not be reached. When you specify icmp as the protocol,
	//    you must specify the ICMP type using the fromPort parameter, and ICMP
	//    code using the toPort parameter.
	Protocol *string `locationName:"protocol" type:"string" enum:"NetworkProtocol"`

	// The last port in a range of open ports on an instance.
	//
	// Allowed ports:
	//
	//    * TCP and UDP - 0 to 65535
	//
	//    * ICMP - The ICMP code for IPv4 addresses. For example, specify 8 as the
	//    fromPort (ICMP type), and -1 as the toPort (ICMP code), to enable ICMP
	//    Ping. For more information, see Control Messages (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages)
	//    on Wikipedia.
	//
	//    * ICMPv6 - The ICMP code for IPv6 addresses. For example, specify 128
	//    as the fromPort (ICMPv6 type), and 0 as toPort (ICMPv6 code). For more
	//    information, see Internet Control Message Protocol for IPv6 (https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6).
	ToPort *int64 `locationName:"toPort" 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 PortInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PortInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PortInfo"}
	if s.FromPort != nil && *s.FromPort < -1 {
		invalidParams.Add(request.NewErrParamMinValue("FromPort", -1))
	}
	if s.ToPort != nil && *s.ToPort < -1 {
		invalidParams.Add(request.NewErrParamMinValue("ToPort", -1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCidrListAliases sets the CidrListAliases field's value.
func (s *PortInfo) SetCidrListAliases(v []*string) *PortInfo {
	s.CidrListAliases = v
	return s
}

// SetCidrs sets the Cidrs field's value.
func (s *PortInfo) SetCidrs(v []*string) *PortInfo {
	s.Cidrs = v
	return s
}

// SetFromPort sets the FromPort field's value.
func (s *PortInfo) SetFromPort(v int64) *PortInfo {
	s.FromPort = &v
	return s
}

// SetIpv6Cidrs sets the Ipv6Cidrs field's value.
func (s *PortInfo) SetIpv6Cidrs(v []*string) *PortInfo {
	s.Ipv6Cidrs = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *PortInfo) SetProtocol(v string) *PortInfo {
	s.Protocol = &v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *PortInfo) SetToPort(v int64) *PortInfo {
	s.ToPort = &v
	return s
}

// Describes the configuration for an Amazon Lightsail container service to
// access private container image repositories, such as Amazon Elastic Container
// Registry (Amazon ECR) private repositories.
//
// For more information, see Configuring access to an Amazon ECR private repository
// for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
// in the Amazon Lightsail Developer Guide.
type PrivateRegistryAccess struct {
	_ struct{} `type:"structure"`

	// An object that describes the activation status of the role that you can use
	// to grant a Lightsail container service access to Amazon ECR private repositories.
	// If the role is activated, the Amazon Resource Name (ARN) of the role is also
	// listed.
	EcrImagePullerRole *ContainerServiceECRImagePullerRole `locationName:"ecrImagePullerRole" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateRegistryAccess) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateRegistryAccess) GoString() string {
	return s.String()
}

// SetEcrImagePullerRole sets the EcrImagePullerRole field's value.
func (s *PrivateRegistryAccess) SetEcrImagePullerRole(v *ContainerServiceECRImagePullerRole) *PrivateRegistryAccess {
	s.EcrImagePullerRole = v
	return s
}

// Describes a request to configure an Amazon Lightsail container service to
// access private container image repositories, such as Amazon Elastic Container
// Registry (Amazon ECR) private repositories.
//
// For more information, see Configuring access to an Amazon ECR private repository
// for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
// in the Amazon Lightsail Developer Guide.
type PrivateRegistryAccessRequest struct {
	_ struct{} `type:"structure"`

	// An object to describe a request to activate or deactivate the role that you
	// can use to grant an Amazon Lightsail container service access to Amazon Elastic
	// Container Registry (Amazon ECR) private repositories.
	EcrImagePullerRole *ContainerServiceECRImagePullerRoleRequest `locationName:"ecrImagePullerRole" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateRegistryAccessRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateRegistryAccessRequest) GoString() string {
	return s.String()
}

// SetEcrImagePullerRole sets the EcrImagePullerRole field's value.
func (s *PrivateRegistryAccessRequest) SetEcrImagePullerRole(v *ContainerServiceECRImagePullerRoleRequest) *PrivateRegistryAccessRequest {
	s.EcrImagePullerRole = v
	return s
}

type PutAlarmInput struct {
	_ struct{} `type:"structure"`

	// The name for the alarm. Specify the name of an existing alarm to update,
	// and overwrite the previous configuration of the alarm.
	//
	// AlarmName is a required field
	AlarmName *string `locationName:"alarmName" type:"string" required:"true"`

	// The arithmetic operation to use when comparing the specified statistic to
	// the threshold. The specified statistic value is used as the first operand.
	//
	// ComparisonOperator is a required field
	ComparisonOperator *string `locationName:"comparisonOperator" type:"string" required:"true" enum:"ComparisonOperator"`

	// The contact protocols to use for the alarm, such as Email, SMS (text messaging),
	// or both.
	//
	// A notification is sent via the specified contact protocol if notifications
	// are enabled for the alarm, and when the alarm is triggered.
	//
	// A notification is not sent if a contact protocol is not specified, if the
	// specified contact protocol is not configured in the Amazon Web Services Region,
	// or if notifications are not enabled for the alarm using the notificationEnabled
	// paramater.
	//
	// Use the CreateContactMethod action to configure a contact protocol in an
	// Amazon Web Services Region.
	ContactProtocols []*string `locationName:"contactProtocols" type:"list" enum:"ContactProtocol"`

	// The number of data points that must be not within the specified threshold
	// to trigger the alarm. If you are setting an "M out of N" alarm, this value
	// (datapointsToAlarm) is the M.
	DatapointsToAlarm *int64 `locationName:"datapointsToAlarm" type:"integer"`

	// The number of most recent periods over which data is compared to the specified
	// threshold. If you are setting an "M out of N" alarm, this value (evaluationPeriods)
	// is the N.
	//
	// If you are setting an alarm that requires that a number of consecutive data
	// points be breaching to trigger the alarm, this value specifies the rolling
	// period of time in which data points are evaluated.
	//
	// Each evaluation period is five minutes long. For example, specify an evaluation
	// period of 24 to evaluate a metric over a rolling period of two hours.
	//
	// You can specify a minimum valuation period of 1 (5 minutes), and a maximum
	// evaluation period of 288 (24 hours).
	//
	// EvaluationPeriods is a required field
	EvaluationPeriods *int64 `locationName:"evaluationPeriods" type:"integer" required:"true"`

	// The name of the metric to associate with the alarm.
	//
	// You can configure up to two alarms per metric.
	//
	// The following metrics are available for each resource type:
	//
	//    * Instances: BurstCapacityPercentage, BurstCapacityTime, CPUUtilization,
	//    NetworkIn, NetworkOut, StatusCheckFailed, StatusCheckFailed_Instance,
	//    and StatusCheckFailed_System.
	//
	//    * Load balancers: ClientTLSNegotiationErrorCount, HealthyHostCount, UnhealthyHostCount,
	//    HTTPCode_LB_4XX_Count, HTTPCode_LB_5XX_Count, HTTPCode_Instance_2XX_Count,
	//    HTTPCode_Instance_3XX_Count, HTTPCode_Instance_4XX_Count, HTTPCode_Instance_5XX_Count,
	//    InstanceResponseTime, RejectedConnectionCount, and RequestCount.
	//
	//    * Relational databases: CPUUtilization, DatabaseConnections, DiskQueueDepth,
	//    FreeStorageSpace, NetworkReceiveThroughput, and NetworkTransmitThroughput.
	//
	// For more information about these metrics, see Metrics available in Lightsail
	// (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-resource-health-metrics#available-metrics).
	//
	// MetricName is a required field
	MetricName *string `locationName:"metricName" type:"string" required:"true" enum:"MetricName"`

	// The name of the Lightsail resource that will be monitored.
	//
	// Instances, load balancers, and relational databases are the only Lightsail
	// resources that can currently be monitored by alarms.
	//
	// MonitoredResourceName is a required field
	MonitoredResourceName *string `locationName:"monitoredResourceName" type:"string" required:"true"`

	// Indicates whether the alarm is enabled.
	//
	// Notifications are enabled by default if you don't specify this parameter.
	NotificationEnabled *bool `locationName:"notificationEnabled" type:"boolean"`

	// The alarm states that trigger a notification.
	//
	// An alarm has the following possible states:
	//
	//    * ALARM - The metric is outside of the defined threshold.
	//
	//    * INSUFFICIENT_DATA - The alarm has just started, the metric is not available,
	//    or not enough data is available for the metric to determine the alarm
	//    state.
	//
	//    * OK - The metric is within the defined threshold.
	//
	// When you specify a notification trigger, the ALARM state must be specified.
	// The INSUFFICIENT_DATA and OK states can be specified in addition to the ALARM
	// state.
	//
	//    * If you specify OK as an alarm trigger, a notification is sent when the
	//    alarm switches from an ALARM or INSUFFICIENT_DATA alarm state to an OK
	//    state. This can be thought of as an all clear alarm notification.
	//
	//    * If you specify INSUFFICIENT_DATA as the alarm trigger, a notification
	//    is sent when the alarm switches from an OK or ALARM alarm state to an
	//    INSUFFICIENT_DATA state.
	//
	// The notification trigger defaults to ALARM if you don't specify this parameter.
	NotificationTriggers []*string `locationName:"notificationTriggers" type:"list" enum:"AlarmState"`

	// The value against which the specified statistic is compared.
	//
	// Threshold is a required field
	Threshold *float64 `locationName:"threshold" type:"double" required:"true"`

	// Sets how this alarm will handle missing data points.
	//
	// An alarm can treat missing data in the following ways:
	//
	//    * breaching - Assume the missing data is not within the threshold. Missing
	//    data counts towards the number of times the metric is not within the threshold.
	//
	//    * notBreaching - Assume the missing data is within the threshold. Missing
	//    data does not count towards the number of times the metric is not within
	//    the threshold.
	//
	//    * ignore - Ignore the missing data. Maintains the current alarm state.
	//
	//    * missing - Missing data is treated as missing.
	//
	// If treatMissingData is not specified, the default behavior of missing is
	// used.
	TreatMissingData *string `locationName:"treatMissingData" type:"string" enum:"TreatMissingData"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutAlarmInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutAlarmInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutAlarmInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutAlarmInput"}
	if s.AlarmName == nil {
		invalidParams.Add(request.NewErrParamRequired("AlarmName"))
	}
	if s.ComparisonOperator == nil {
		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
	}
	if s.EvaluationPeriods == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationPeriods"))
	}
	if s.MetricName == nil {
		invalidParams.Add(request.NewErrParamRequired("MetricName"))
	}
	if s.MonitoredResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("MonitoredResourceName"))
	}
	if s.Threshold == nil {
		invalidParams.Add(request.NewErrParamRequired("Threshold"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlarmName sets the AlarmName field's value.
func (s *PutAlarmInput) SetAlarmName(v string) *PutAlarmInput {
	s.AlarmName = &v
	return s
}

// SetComparisonOperator sets the ComparisonOperator field's value.
func (s *PutAlarmInput) SetComparisonOperator(v string) *PutAlarmInput {
	s.ComparisonOperator = &v
	return s
}

// SetContactProtocols sets the ContactProtocols field's value.
func (s *PutAlarmInput) SetContactProtocols(v []*string) *PutAlarmInput {
	s.ContactProtocols = v
	return s
}

// SetDatapointsToAlarm sets the DatapointsToAlarm field's value.
func (s *PutAlarmInput) SetDatapointsToAlarm(v int64) *PutAlarmInput {
	s.DatapointsToAlarm = &v
	return s
}

// SetEvaluationPeriods sets the EvaluationPeriods field's value.
func (s *PutAlarmInput) SetEvaluationPeriods(v int64) *PutAlarmInput {
	s.EvaluationPeriods = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *PutAlarmInput) SetMetricName(v string) *PutAlarmInput {
	s.MetricName = &v
	return s
}

// SetMonitoredResourceName sets the MonitoredResourceName field's value.
func (s *PutAlarmInput) SetMonitoredResourceName(v string) *PutAlarmInput {
	s.MonitoredResourceName = &v
	return s
}

// SetNotificationEnabled sets the NotificationEnabled field's value.
func (s *PutAlarmInput) SetNotificationEnabled(v bool) *PutAlarmInput {
	s.NotificationEnabled = &v
	return s
}

// SetNotificationTriggers sets the NotificationTriggers field's value.
func (s *PutAlarmInput) SetNotificationTriggers(v []*string) *PutAlarmInput {
	s.NotificationTriggers = v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *PutAlarmInput) SetThreshold(v float64) *PutAlarmInput {
	s.Threshold = &v
	return s
}

// SetTreatMissingData sets the TreatMissingData field's value.
func (s *PutAlarmInput) SetTreatMissingData(v string) *PutAlarmInput {
	s.TreatMissingData = &v
	return s
}

type PutAlarmOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 PutAlarmOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutAlarmOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *PutAlarmOutput) SetOperations(v []*Operation) *PutAlarmOutput {
	s.Operations = v
	return s
}

type PutInstancePublicPortsInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance for which to open ports.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`

	// An array of objects to describe the ports to open for the specified instance.
	//
	// PortInfos is a required field
	PortInfos []*PortInfo `locationName:"portInfos" 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 PutInstancePublicPortsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutInstancePublicPortsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutInstancePublicPortsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutInstancePublicPortsInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}
	if s.PortInfos == nil {
		invalidParams.Add(request.NewErrParamRequired("PortInfos"))
	}
	if s.PortInfos != nil {
		for i, v := range s.PortInfos {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PortInfos", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *PutInstancePublicPortsInput) SetInstanceName(v string) *PutInstancePublicPortsInput {
	s.InstanceName = &v
	return s
}

// SetPortInfos sets the PortInfos field's value.
func (s *PutInstancePublicPortsInput) SetPortInfos(v []*PortInfo) *PutInstancePublicPortsInput {
	s.PortInfos = v
	return s
}

type PutInstancePublicPortsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutInstancePublicPortsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutInstancePublicPortsOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *PutInstancePublicPortsOutput) SetOperation(v *Operation) *PutInstancePublicPortsOutput {
	s.Operation = v
	return s
}

// Describes the query string parameters that an Amazon Lightsail content delivery
// network (CDN) distribution to bases caching on.
//
// For the query strings that you specify, your distribution caches separate
// versions of the specified content based on the query string values in viewer
// requests.
type QueryStringObject struct {
	_ struct{} `type:"structure"`

	// Indicates whether the distribution forwards and caches based on query strings.
	Option *bool `locationName:"option" type:"boolean"`

	// The specific query strings that the distribution forwards to the origin.
	//
	// Your distribution will cache content based on the specified query strings.
	//
	// If the option parameter is true, then your distribution forwards all query
	// strings, regardless of what you specify using the queryStringsAllowList parameter.
	QueryStringsAllowList []*string `locationName:"queryStringsAllowList" 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 QueryStringObject) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueryStringObject) GoString() string {
	return s.String()
}

// SetOption sets the Option field's value.
func (s *QueryStringObject) SetOption(v bool) *QueryStringObject {
	s.Option = &v
	return s
}

// SetQueryStringsAllowList sets the QueryStringsAllowList field's value.
func (s *QueryStringObject) SetQueryStringsAllowList(v []*string) *QueryStringObject {
	s.QueryStringsAllowList = v
	return s
}

// Describes the deletion state of an Amazon Route 53 hosted zone for a domain
// that is being automatically delegated to an Amazon Lightsail DNS zone.
type R53HostedZoneDeletionState struct {
	_ struct{} `type:"structure"`

	// The status code for the deletion state.
	//
	// Following are the possible values:
	//
	//    * SUCCEEDED - The hosted zone was successfully deleted.
	//
	//    * PENDING - The hosted zone deletion is in progress.
	//
	//    * FAILED - The hosted zone deletion failed.
	//
	//    * STARTED - The hosted zone deletion started.
	Code *string `locationName:"code" type:"string" enum:"R53HostedZoneDeletionStateCode"`

	// The message that describes the reason for the status code.
	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 R53HostedZoneDeletionState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s R53HostedZoneDeletionState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *R53HostedZoneDeletionState) SetCode(v string) *R53HostedZoneDeletionState {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *R53HostedZoneDeletionState) SetMessage(v string) *R53HostedZoneDeletionState {
	s.Message = &v
	return s
}

type RebootInstanceInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance to reboot.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RebootInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RebootInstanceInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *RebootInstanceInput) SetInstanceName(v string) *RebootInstanceInput {
	s.InstanceName = &v
	return s
}

type RebootInstanceOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 RebootInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootInstanceOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *RebootInstanceOutput) SetOperations(v []*Operation) *RebootInstanceOutput {
	s.Operations = v
	return s
}

type RebootRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The name of your database to reboot.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RebootRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RebootRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *RebootRelationalDatabaseInput) SetRelationalDatabaseName(v string) *RebootRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

type RebootRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 RebootRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RebootRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *RebootRelationalDatabaseOutput) SetOperations(v []*Operation) *RebootRelationalDatabaseOutput {
	s.Operations = v
	return s
}

// Describes the Amazon Web Services Region.
type Region struct {
	_ struct{} `type:"structure"`

	// The Availability Zones. Follows the format us-east-2a (case-sensitive).
	AvailabilityZones []*AvailabilityZone `locationName:"availabilityZones" type:"list"`

	// The continent code (NA, meaning North America).
	ContinentCode *string `locationName:"continentCode" type:"string"`

	// The description of the Amazon Web Services Region (This region is recommended
	// to serve users in the eastern United States and eastern Canada).
	Description *string `locationName:"description" type:"string"`

	// The display name (Ohio).
	DisplayName *string `locationName:"displayName" type:"string"`

	// The region name (us-east-2).
	Name *string `locationName:"name" type:"string" enum:"RegionName"`

	// The Availability Zones for databases. Follows the format us-east-2a (case-sensitive).
	RelationalDatabaseAvailabilityZones []*AvailabilityZone `locationName:"relationalDatabaseAvailabilityZones" 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 Region) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Region) GoString() string {
	return s.String()
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *Region) SetAvailabilityZones(v []*AvailabilityZone) *Region {
	s.AvailabilityZones = v
	return s
}

// SetContinentCode sets the ContinentCode field's value.
func (s *Region) SetContinentCode(v string) *Region {
	s.ContinentCode = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Region) SetDescription(v string) *Region {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *Region) SetDisplayName(v string) *Region {
	s.DisplayName = &v
	return s
}

// SetName sets the Name field's value.
func (s *Region) SetName(v string) *Region {
	s.Name = &v
	return s
}

// SetRelationalDatabaseAvailabilityZones sets the RelationalDatabaseAvailabilityZones field's value.
func (s *Region) SetRelationalDatabaseAvailabilityZones(v []*AvailabilityZone) *Region {
	s.RelationalDatabaseAvailabilityZones = v
	return s
}

type RegisterContainerImageInput struct {
	_ struct{} `type:"structure"`

	// The digest of the container image to be registered.
	//
	// Digest is a required field
	Digest *string `locationName:"digest" type:"string" required:"true"`

	// The label for the container image when it's registered to the container service.
	//
	// Use a descriptive label that you can use to track the different versions
	// of your registered container images.
	//
	// Use the GetContainerImages action to return the container images registered
	// to a Lightsail container service. The label is the <imagelabel> portion of
	// the following image name example:
	//
	//    * :container-service-1.<imagelabel>.1
	//
	// If the name of your container service is mycontainerservice, and the label
	// that you specify is mystaticwebsite, then the name of the registered container
	// image will be :mycontainerservice.mystaticwebsite.1.
	//
	// The number at the end of these image name examples represents the version
	// of the registered container image. If you push and register another container
	// image to the same Lightsail container service, with the same label, then
	// the version number for the new registered container image will be 2. If you
	// push and register another container image, the version number will be 3,
	// and so on.
	//
	// Label is a required field
	Label *string `locationName:"label" min:"1" type:"string" required:"true"`

	// The name of the container service for which to register a container image.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterContainerImageInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterContainerImageInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterContainerImageInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterContainerImageInput"}
	if s.Digest == nil {
		invalidParams.Add(request.NewErrParamRequired("Digest"))
	}
	if s.Label == nil {
		invalidParams.Add(request.NewErrParamRequired("Label"))
	}
	if s.Label != nil && len(*s.Label) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Label", 1))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDigest sets the Digest field's value.
func (s *RegisterContainerImageInput) SetDigest(v string) *RegisterContainerImageInput {
	s.Digest = &v
	return s
}

// SetLabel sets the Label field's value.
func (s *RegisterContainerImageInput) SetLabel(v string) *RegisterContainerImageInput {
	s.Label = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *RegisterContainerImageInput) SetServiceName(v string) *RegisterContainerImageInput {
	s.ServiceName = &v
	return s
}

type RegisterContainerImageOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes a container image that is registered to a Lightsail
	// container service
	ContainerImage *ContainerImage `locationName:"containerImage" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterContainerImageOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterContainerImageOutput) GoString() string {
	return s.String()
}

// SetContainerImage sets the ContainerImage field's value.
func (s *RegisterContainerImageOutput) SetContainerImage(v *ContainerImage) *RegisterContainerImageOutput {
	s.ContainerImage = v
	return s
}

// Describes the delegation state of an Amazon Route 53 registered domain to
// Amazon Lightsail.
//
// When you delegate an Amazon Route 53 registered domain to Lightsail, you
// can manage the DNS of the domain using a Lightsail DNS zone. You no longer
// use the Route 53 hosted zone to manage the DNS of the domain. To delegate
// the domain, Lightsail automatically updates the domain's name servers in
// Route 53 to the name servers of the Lightsail DNS zone. Then, Lightsail automatically
// deletes the Route 53 hosted zone for the domain.
//
// All of the following conditions must be true for automatic domain delegation
// to be successful:
//
//   - The registered domain must be in the same Amazon Web Services account
//     as the Lightsail account making the request.
//
//   - The user or entity making the request must have permission to manage
//     domains in Route 53.
//
//   - The Route 53 hosted zone for the domain must be empty. It cannot contain
//     DNS records other than start of authority (SOA) and name server records.
//
// If automatic domain delegation fails, or if you manage the DNS of your domain
// using a service other than Route 53, then you must manually add the Lightsail
// DNS zone name servers to your domain in order to delegate management of its
// DNS to Lightsail. For more information, see Creating a DNS zone to manage
// your domain’s records in Amazon Lightsail (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-how-to-create-dns-entry)
// in the Amazon Lightsail Developer Guide.
type RegisteredDomainDelegationInfo struct {
	_ struct{} `type:"structure"`

	// An object that describes the state of the name server records that are automatically
	// added to the Route 53 domain by Lightsail.
	NameServersUpdateState *NameServersUpdateState `locationName:"nameServersUpdateState" type:"structure"`

	// Describes the deletion state of an Amazon Route 53 hosted zone for a domain
	// that is being automatically delegated to an Amazon Lightsail DNS zone.
	R53HostedZoneDeletionState *R53HostedZoneDeletionState `locationName:"r53HostedZoneDeletionState" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredDomainDelegationInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredDomainDelegationInfo) GoString() string {
	return s.String()
}

// SetNameServersUpdateState sets the NameServersUpdateState field's value.
func (s *RegisteredDomainDelegationInfo) SetNameServersUpdateState(v *NameServersUpdateState) *RegisteredDomainDelegationInfo {
	s.NameServersUpdateState = v
	return s
}

// SetR53HostedZoneDeletionState sets the R53HostedZoneDeletionState field's value.
func (s *RegisteredDomainDelegationInfo) SetR53HostedZoneDeletionState(v *R53HostedZoneDeletionState) *RegisteredDomainDelegationInfo {
	s.R53HostedZoneDeletionState = v
	return s
}

// Describes a database.
type RelationalDatabase struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the database.
	Arn *string `locationName:"arn" type:"string"`

	// A Boolean value indicating whether automated backup retention is enabled
	// for the database.
	BackupRetentionEnabled *bool `locationName:"backupRetentionEnabled" type:"boolean"`

	// The certificate associated with the database.
	CaCertificateIdentifier *string `locationName:"caCertificateIdentifier" type:"string"`

	// The timestamp when the database was created. Formatted in Unix time.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The database software (for example, MySQL).
	Engine *string `locationName:"engine" type:"string"`

	// The database engine version (for example, 5.7.23).
	EngineVersion *string `locationName:"engineVersion" type:"string"`

	// Describes the hardware of the database.
	Hardware *RelationalDatabaseHardware `locationName:"hardware" type:"structure"`

	// The latest point in time to which the database can be restored. Formatted
	// in Unix time.
	LatestRestorableTime *time.Time `locationName:"latestRestorableTime" type:"timestamp"`

	// The Region name and Availability Zone where the database is located.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the master database created when the Lightsail database resource
	// is created.
	MasterDatabaseName *string `locationName:"masterDatabaseName" type:"string"`

	// The master endpoint for the database.
	MasterEndpoint *RelationalDatabaseEndpoint `locationName:"masterEndpoint" type:"structure"`

	// The master user name of the database.
	MasterUsername *string `locationName:"masterUsername" type:"string"`

	// The unique name of the database resource in Lightsail.
	Name *string `locationName:"name" type:"string"`

	// The status of parameter updates for the database.
	ParameterApplyStatus *string `locationName:"parameterApplyStatus" type:"string"`

	// Describes the pending maintenance actions for the database.
	PendingMaintenanceActions []*PendingMaintenanceAction `locationName:"pendingMaintenanceActions" type:"list"`

	// Describes pending database value modifications.
	PendingModifiedValues *PendingModifiedRelationalDatabaseValues `locationName:"pendingModifiedValues" type:"structure"`

	// The daily time range during which automated backups are created for the database
	// (for example, 16:00-16:30).
	PreferredBackupWindow *string `locationName:"preferredBackupWindow" type:"string"`

	// The weekly time range during which system maintenance can occur on the database.
	//
	// In the format ddd:hh24:mi-ddd:hh24:mi. For example, Tue:17:00-Tue:17:30.
	PreferredMaintenanceWindow *string `locationName:"preferredMaintenanceWindow" type:"string"`

	// A Boolean value indicating whether the database is publicly accessible.
	PubliclyAccessible *bool `locationName:"publiclyAccessible" type:"boolean"`

	// The blueprint ID for the database. A blueprint describes the major engine
	// version of a database.
	RelationalDatabaseBlueprintId *string `locationName:"relationalDatabaseBlueprintId" type:"string"`

	// The bundle ID for the database. A bundle describes the performance specifications
	// for your database.
	RelationalDatabaseBundleId *string `locationName:"relationalDatabaseBundleId" type:"string"`

	// The Lightsail resource type for the database (for example, RelationalDatabase).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// Describes the secondary Availability Zone of a high availability database.
	//
	// The secondary database is used for failover support of a high availability
	// database.
	SecondaryAvailabilityZone *string `locationName:"secondaryAvailabilityZone" type:"string"`

	// Describes the current state of the database.
	State *string `locationName:"state" type:"string"`

	// The support code for the database. Include this code in your email to support
	// when you have questions about a database in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 RelationalDatabase) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabase) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *RelationalDatabase) SetArn(v string) *RelationalDatabase {
	s.Arn = &v
	return s
}

// SetBackupRetentionEnabled sets the BackupRetentionEnabled field's value.
func (s *RelationalDatabase) SetBackupRetentionEnabled(v bool) *RelationalDatabase {
	s.BackupRetentionEnabled = &v
	return s
}

// SetCaCertificateIdentifier sets the CaCertificateIdentifier field's value.
func (s *RelationalDatabase) SetCaCertificateIdentifier(v string) *RelationalDatabase {
	s.CaCertificateIdentifier = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *RelationalDatabase) SetCreatedAt(v time.Time) *RelationalDatabase {
	s.CreatedAt = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RelationalDatabase) SetEngine(v string) *RelationalDatabase {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RelationalDatabase) SetEngineVersion(v string) *RelationalDatabase {
	s.EngineVersion = &v
	return s
}

// SetHardware sets the Hardware field's value.
func (s *RelationalDatabase) SetHardware(v *RelationalDatabaseHardware) *RelationalDatabase {
	s.Hardware = v
	return s
}

// SetLatestRestorableTime sets the LatestRestorableTime field's value.
func (s *RelationalDatabase) SetLatestRestorableTime(v time.Time) *RelationalDatabase {
	s.LatestRestorableTime = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *RelationalDatabase) SetLocation(v *ResourceLocation) *RelationalDatabase {
	s.Location = v
	return s
}

// SetMasterDatabaseName sets the MasterDatabaseName field's value.
func (s *RelationalDatabase) SetMasterDatabaseName(v string) *RelationalDatabase {
	s.MasterDatabaseName = &v
	return s
}

// SetMasterEndpoint sets the MasterEndpoint field's value.
func (s *RelationalDatabase) SetMasterEndpoint(v *RelationalDatabaseEndpoint) *RelationalDatabase {
	s.MasterEndpoint = v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *RelationalDatabase) SetMasterUsername(v string) *RelationalDatabase {
	s.MasterUsername = &v
	return s
}

// SetName sets the Name field's value.
func (s *RelationalDatabase) SetName(v string) *RelationalDatabase {
	s.Name = &v
	return s
}

// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
func (s *RelationalDatabase) SetParameterApplyStatus(v string) *RelationalDatabase {
	s.ParameterApplyStatus = &v
	return s
}

// SetPendingMaintenanceActions sets the PendingMaintenanceActions field's value.
func (s *RelationalDatabase) SetPendingMaintenanceActions(v []*PendingMaintenanceAction) *RelationalDatabase {
	s.PendingMaintenanceActions = v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *RelationalDatabase) SetPendingModifiedValues(v *PendingModifiedRelationalDatabaseValues) *RelationalDatabase {
	s.PendingModifiedValues = v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *RelationalDatabase) SetPreferredBackupWindow(v string) *RelationalDatabase {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *RelationalDatabase) SetPreferredMaintenanceWindow(v string) *RelationalDatabase {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RelationalDatabase) SetPubliclyAccessible(v bool) *RelationalDatabase {
	s.PubliclyAccessible = &v
	return s
}

// SetRelationalDatabaseBlueprintId sets the RelationalDatabaseBlueprintId field's value.
func (s *RelationalDatabase) SetRelationalDatabaseBlueprintId(v string) *RelationalDatabase {
	s.RelationalDatabaseBlueprintId = &v
	return s
}

// SetRelationalDatabaseBundleId sets the RelationalDatabaseBundleId field's value.
func (s *RelationalDatabase) SetRelationalDatabaseBundleId(v string) *RelationalDatabase {
	s.RelationalDatabaseBundleId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RelationalDatabase) SetResourceType(v string) *RelationalDatabase {
	s.ResourceType = &v
	return s
}

// SetSecondaryAvailabilityZone sets the SecondaryAvailabilityZone field's value.
func (s *RelationalDatabase) SetSecondaryAvailabilityZone(v string) *RelationalDatabase {
	s.SecondaryAvailabilityZone = &v
	return s
}

// SetState sets the State field's value.
func (s *RelationalDatabase) SetState(v string) *RelationalDatabase {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *RelationalDatabase) SetSupportCode(v string) *RelationalDatabase {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RelationalDatabase) SetTags(v []*Tag) *RelationalDatabase {
	s.Tags = v
	return s
}

// Describes a database image, or blueprint. A blueprint describes the major
// engine version of a database.
type RelationalDatabaseBlueprint struct {
	_ struct{} `type:"structure"`

	// The ID for the database blueprint.
	BlueprintId *string `locationName:"blueprintId" type:"string"`

	// The database software of the database blueprint (for example, MySQL).
	Engine *string `locationName:"engine" type:"string" enum:"RelationalDatabaseEngine"`

	// The description of the database engine for the database blueprint.
	EngineDescription *string `locationName:"engineDescription" type:"string"`

	// The database engine version for the database blueprint (for example, 5.7.23).
	EngineVersion *string `locationName:"engineVersion" type:"string"`

	// The description of the database engine version for the database blueprint.
	EngineVersionDescription *string `locationName:"engineVersionDescription" type:"string"`

	// A Boolean value indicating whether the engine version is the default for
	// the database blueprint.
	IsEngineDefault *bool `locationName:"isEngineDefault" 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 RelationalDatabaseBlueprint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseBlueprint) GoString() string {
	return s.String()
}

// SetBlueprintId sets the BlueprintId field's value.
func (s *RelationalDatabaseBlueprint) SetBlueprintId(v string) *RelationalDatabaseBlueprint {
	s.BlueprintId = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RelationalDatabaseBlueprint) SetEngine(v string) *RelationalDatabaseBlueprint {
	s.Engine = &v
	return s
}

// SetEngineDescription sets the EngineDescription field's value.
func (s *RelationalDatabaseBlueprint) SetEngineDescription(v string) *RelationalDatabaseBlueprint {
	s.EngineDescription = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RelationalDatabaseBlueprint) SetEngineVersion(v string) *RelationalDatabaseBlueprint {
	s.EngineVersion = &v
	return s
}

// SetEngineVersionDescription sets the EngineVersionDescription field's value.
func (s *RelationalDatabaseBlueprint) SetEngineVersionDescription(v string) *RelationalDatabaseBlueprint {
	s.EngineVersionDescription = &v
	return s
}

// SetIsEngineDefault sets the IsEngineDefault field's value.
func (s *RelationalDatabaseBlueprint) SetIsEngineDefault(v bool) *RelationalDatabaseBlueprint {
	s.IsEngineDefault = &v
	return s
}

// Describes a database bundle. A bundle describes the performance specifications
// of the database.
type RelationalDatabaseBundle struct {
	_ struct{} `type:"structure"`

	// The ID for the database bundle.
	BundleId *string `locationName:"bundleId" type:"string"`

	// The number of virtual CPUs (vCPUs) for the database bundle.
	CpuCount *int64 `locationName:"cpuCount" type:"integer"`

	// The size of the disk for the database bundle.
	DiskSizeInGb *int64 `locationName:"diskSizeInGb" type:"integer"`

	// A Boolean value indicating whether the database bundle is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// A Boolean value indicating whether the database bundle is encrypted.
	IsEncrypted *bool `locationName:"isEncrypted" type:"boolean"`

	// The name for the database bundle.
	Name *string `locationName:"name" type:"string"`

	// The cost of the database bundle in US currency.
	Price *float64 `locationName:"price" type:"float"`

	// The amount of RAM in GB (for example, 2.0) for the database bundle.
	RamSizeInGb *float64 `locationName:"ramSizeInGb" type:"float"`

	// The data transfer rate per month in GB for the database bundle.
	TransferPerMonthInGb *int64 `locationName:"transferPerMonthInGb" 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 RelationalDatabaseBundle) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseBundle) GoString() string {
	return s.String()
}

// SetBundleId sets the BundleId field's value.
func (s *RelationalDatabaseBundle) SetBundleId(v string) *RelationalDatabaseBundle {
	s.BundleId = &v
	return s
}

// SetCpuCount sets the CpuCount field's value.
func (s *RelationalDatabaseBundle) SetCpuCount(v int64) *RelationalDatabaseBundle {
	s.CpuCount = &v
	return s
}

// SetDiskSizeInGb sets the DiskSizeInGb field's value.
func (s *RelationalDatabaseBundle) SetDiskSizeInGb(v int64) *RelationalDatabaseBundle {
	s.DiskSizeInGb = &v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *RelationalDatabaseBundle) SetIsActive(v bool) *RelationalDatabaseBundle {
	s.IsActive = &v
	return s
}

// SetIsEncrypted sets the IsEncrypted field's value.
func (s *RelationalDatabaseBundle) SetIsEncrypted(v bool) *RelationalDatabaseBundle {
	s.IsEncrypted = &v
	return s
}

// SetName sets the Name field's value.
func (s *RelationalDatabaseBundle) SetName(v string) *RelationalDatabaseBundle {
	s.Name = &v
	return s
}

// SetPrice sets the Price field's value.
func (s *RelationalDatabaseBundle) SetPrice(v float64) *RelationalDatabaseBundle {
	s.Price = &v
	return s
}

// SetRamSizeInGb sets the RamSizeInGb field's value.
func (s *RelationalDatabaseBundle) SetRamSizeInGb(v float64) *RelationalDatabaseBundle {
	s.RamSizeInGb = &v
	return s
}

// SetTransferPerMonthInGb sets the TransferPerMonthInGb field's value.
func (s *RelationalDatabaseBundle) SetTransferPerMonthInGb(v int64) *RelationalDatabaseBundle {
	s.TransferPerMonthInGb = &v
	return s
}

// Describes an endpoint for a database.
type RelationalDatabaseEndpoint struct {
	_ struct{} `type:"structure"`

	// Specifies the DNS address of the database.
	Address *string `locationName:"address" type:"string"`

	// Specifies the port that the database is listening on.
	Port *int64 `locationName:"port" 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 RelationalDatabaseEndpoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseEndpoint) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *RelationalDatabaseEndpoint) SetAddress(v string) *RelationalDatabaseEndpoint {
	s.Address = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RelationalDatabaseEndpoint) SetPort(v int64) *RelationalDatabaseEndpoint {
	s.Port = &v
	return s
}

// Describes an event for a database.
type RelationalDatabaseEvent struct {
	_ struct{} `type:"structure"`

	// The timestamp when the database event was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The category that the database event belongs to.
	EventCategories []*string `locationName:"eventCategories" type:"list"`

	// The message of the database event.
	Message *string `locationName:"message" type:"string"`

	// The database that the database event relates to.
	Resource *string `locationName:"resource" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseEvent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseEvent) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *RelationalDatabaseEvent) SetCreatedAt(v time.Time) *RelationalDatabaseEvent {
	s.CreatedAt = &v
	return s
}

// SetEventCategories sets the EventCategories field's value.
func (s *RelationalDatabaseEvent) SetEventCategories(v []*string) *RelationalDatabaseEvent {
	s.EventCategories = v
	return s
}

// SetMessage sets the Message field's value.
func (s *RelationalDatabaseEvent) SetMessage(v string) *RelationalDatabaseEvent {
	s.Message = &v
	return s
}

// SetResource sets the Resource field's value.
func (s *RelationalDatabaseEvent) SetResource(v string) *RelationalDatabaseEvent {
	s.Resource = &v
	return s
}

// Describes the hardware of a database.
type RelationalDatabaseHardware struct {
	_ struct{} `type:"structure"`

	// The number of vCPUs for the database.
	CpuCount *int64 `locationName:"cpuCount" type:"integer"`

	// The size of the disk for the database.
	DiskSizeInGb *int64 `locationName:"diskSizeInGb" type:"integer"`

	// The amount of RAM in GB for the database.
	RamSizeInGb *float64 `locationName:"ramSizeInGb" type:"float"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseHardware) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseHardware) GoString() string {
	return s.String()
}

// SetCpuCount sets the CpuCount field's value.
func (s *RelationalDatabaseHardware) SetCpuCount(v int64) *RelationalDatabaseHardware {
	s.CpuCount = &v
	return s
}

// SetDiskSizeInGb sets the DiskSizeInGb field's value.
func (s *RelationalDatabaseHardware) SetDiskSizeInGb(v int64) *RelationalDatabaseHardware {
	s.DiskSizeInGb = &v
	return s
}

// SetRamSizeInGb sets the RamSizeInGb field's value.
func (s *RelationalDatabaseHardware) SetRamSizeInGb(v float64) *RelationalDatabaseHardware {
	s.RamSizeInGb = &v
	return s
}

// Describes the parameters of a database.
type RelationalDatabaseParameter struct {
	_ struct{} `type:"structure"`

	// Specifies the valid range of values for the parameter.
	AllowedValues *string `locationName:"allowedValues" type:"string"`

	// Indicates when parameter updates are applied.
	//
	// Can be immediate or pending-reboot.
	ApplyMethod *string `locationName:"applyMethod" type:"string"`

	// Specifies the engine-specific parameter type.
	ApplyType *string `locationName:"applyType" type:"string"`

	// Specifies the valid data type for the parameter.
	DataType *string `locationName:"dataType" type:"string"`

	// Provides a description of the parameter.
	Description *string `locationName:"description" type:"string"`

	// A Boolean value indicating whether the parameter can be modified.
	IsModifiable *bool `locationName:"isModifiable" type:"boolean"`

	// Specifies the name of the parameter.
	ParameterName *string `locationName:"parameterName" type:"string"`

	// Specifies the value of the parameter.
	ParameterValue *string `locationName:"parameterValue" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseParameter) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *RelationalDatabaseParameter) SetAllowedValues(v string) *RelationalDatabaseParameter {
	s.AllowedValues = &v
	return s
}

// SetApplyMethod sets the ApplyMethod field's value.
func (s *RelationalDatabaseParameter) SetApplyMethod(v string) *RelationalDatabaseParameter {
	s.ApplyMethod = &v
	return s
}

// SetApplyType sets the ApplyType field's value.
func (s *RelationalDatabaseParameter) SetApplyType(v string) *RelationalDatabaseParameter {
	s.ApplyType = &v
	return s
}

// SetDataType sets the DataType field's value.
func (s *RelationalDatabaseParameter) SetDataType(v string) *RelationalDatabaseParameter {
	s.DataType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *RelationalDatabaseParameter) SetDescription(v string) *RelationalDatabaseParameter {
	s.Description = &v
	return s
}

// SetIsModifiable sets the IsModifiable field's value.
func (s *RelationalDatabaseParameter) SetIsModifiable(v bool) *RelationalDatabaseParameter {
	s.IsModifiable = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *RelationalDatabaseParameter) SetParameterName(v string) *RelationalDatabaseParameter {
	s.ParameterName = &v
	return s
}

// SetParameterValue sets the ParameterValue field's value.
func (s *RelationalDatabaseParameter) SetParameterValue(v string) *RelationalDatabaseParameter {
	s.ParameterValue = &v
	return s
}

// Describes a database snapshot.
type RelationalDatabaseSnapshot struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the database snapshot.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when the database snapshot was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The software of the database snapshot (for example, MySQL)
	Engine *string `locationName:"engine" type:"string"`

	// The database engine version for the database snapshot (for example, 5.7.23).
	EngineVersion *string `locationName:"engineVersion" type:"string"`

	// The Amazon Resource Name (ARN) of the database from which the database snapshot
	// was created.
	FromRelationalDatabaseArn *string `locationName:"fromRelationalDatabaseArn" type:"string"`

	// The blueprint ID of the database from which the database snapshot was created.
	// A blueprint describes the major engine version of a database.
	FromRelationalDatabaseBlueprintId *string `locationName:"fromRelationalDatabaseBlueprintId" type:"string"`

	// The bundle ID of the database from which the database snapshot was created.
	FromRelationalDatabaseBundleId *string `locationName:"fromRelationalDatabaseBundleId" type:"string"`

	// The name of the source database from which the database snapshot was created.
	FromRelationalDatabaseName *string `locationName:"fromRelationalDatabaseName" type:"string"`

	// The Region name and Availability Zone where the database snapshot is located.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the database snapshot.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The size of the disk in GB (for example, 32) for the database snapshot.
	SizeInGb *int64 `locationName:"sizeInGb" type:"integer"`

	// The state of the database snapshot.
	State *string `locationName:"state" type:"string"`

	// The support code for the database snapshot. Include this code in your email
	// to support when you have questions about a database snapshot in Lightsail.
	// This code enables our support team to look up your Lightsail information
	// more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`

	// The tag keys and optional values for the resource. For more information about
	// tags in Lightsail, see the Amazon Lightsail Developer Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
	Tags []*Tag `locationName:"tags" 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 RelationalDatabaseSnapshot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalDatabaseSnapshot) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *RelationalDatabaseSnapshot) SetArn(v string) *RelationalDatabaseSnapshot {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *RelationalDatabaseSnapshot) SetCreatedAt(v time.Time) *RelationalDatabaseSnapshot {
	s.CreatedAt = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RelationalDatabaseSnapshot) SetEngine(v string) *RelationalDatabaseSnapshot {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RelationalDatabaseSnapshot) SetEngineVersion(v string) *RelationalDatabaseSnapshot {
	s.EngineVersion = &v
	return s
}

// SetFromRelationalDatabaseArn sets the FromRelationalDatabaseArn field's value.
func (s *RelationalDatabaseSnapshot) SetFromRelationalDatabaseArn(v string) *RelationalDatabaseSnapshot {
	s.FromRelationalDatabaseArn = &v
	return s
}

// SetFromRelationalDatabaseBlueprintId sets the FromRelationalDatabaseBlueprintId field's value.
func (s *RelationalDatabaseSnapshot) SetFromRelationalDatabaseBlueprintId(v string) *RelationalDatabaseSnapshot {
	s.FromRelationalDatabaseBlueprintId = &v
	return s
}

// SetFromRelationalDatabaseBundleId sets the FromRelationalDatabaseBundleId field's value.
func (s *RelationalDatabaseSnapshot) SetFromRelationalDatabaseBundleId(v string) *RelationalDatabaseSnapshot {
	s.FromRelationalDatabaseBundleId = &v
	return s
}

// SetFromRelationalDatabaseName sets the FromRelationalDatabaseName field's value.
func (s *RelationalDatabaseSnapshot) SetFromRelationalDatabaseName(v string) *RelationalDatabaseSnapshot {
	s.FromRelationalDatabaseName = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *RelationalDatabaseSnapshot) SetLocation(v *ResourceLocation) *RelationalDatabaseSnapshot {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *RelationalDatabaseSnapshot) SetName(v string) *RelationalDatabaseSnapshot {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RelationalDatabaseSnapshot) SetResourceType(v string) *RelationalDatabaseSnapshot {
	s.ResourceType = &v
	return s
}

// SetSizeInGb sets the SizeInGb field's value.
func (s *RelationalDatabaseSnapshot) SetSizeInGb(v int64) *RelationalDatabaseSnapshot {
	s.SizeInGb = &v
	return s
}

// SetState sets the State field's value.
func (s *RelationalDatabaseSnapshot) SetState(v string) *RelationalDatabaseSnapshot {
	s.State = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *RelationalDatabaseSnapshot) SetSupportCode(v string) *RelationalDatabaseSnapshot {
	s.SupportCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RelationalDatabaseSnapshot) SetTags(v []*Tag) *RelationalDatabaseSnapshot {
	s.Tags = v
	return s
}

type ReleaseStaticIpInput struct {
	_ struct{} `type:"structure"`

	// The name of the static IP to delete.
	//
	// StaticIpName is a required field
	StaticIpName *string `locationName:"staticIpName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReleaseStaticIpInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReleaseStaticIpInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReleaseStaticIpInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReleaseStaticIpInput"}
	if s.StaticIpName == nil {
		invalidParams.Add(request.NewErrParamRequired("StaticIpName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStaticIpName sets the StaticIpName field's value.
func (s *ReleaseStaticIpInput) SetStaticIpName(v string) *ReleaseStaticIpInput {
	s.StaticIpName = &v
	return s
}

type ReleaseStaticIpOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 ReleaseStaticIpOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReleaseStaticIpOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *ReleaseStaticIpOutput) SetOperations(v []*Operation) *ReleaseStaticIpOutput {
	s.Operations = v
	return s
}

// Describes the status of a SSL/TLS certificate renewal managed by Amazon Lightsail.
type RenewalSummary struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the domain validation records of the certificate.
	DomainValidationRecords []*DomainValidationRecord `locationName:"domainValidationRecords" type:"list"`

	// The renewal status of the certificate.
	//
	// The following renewal status are possible:
	//
	//    * PendingAutoRenewal - Lightsail is attempting to automatically validate
	//    the domain names of the certificate. No further action is required.
	//
	//    * PendingValidation - Lightsail couldn't automatically validate one or
	//    more domain names of the certificate. You must take action to validate
	//    these domain names or the certificate won't be renewed. Check to make
	//    sure your certificate's domain validation records exist in your domain's
	//    DNS, and that your certificate remains in use.
	//
	//    * Success - All domain names in the certificate are validated, and Lightsail
	//    renewed the certificate. No further action is required.
	//
	//    * Failed - One or more domain names were not validated before the certificate
	//    expired, and Lightsail did not renew the certificate. You can request
	//    a new certificate using the CreateCertificate action.
	RenewalStatus *string `locationName:"renewalStatus" type:"string" enum:"RenewalStatus"`

	// The reason for the renewal status of the certificate.
	RenewalStatusReason *string `locationName:"renewalStatusReason" type:"string"`

	// The timestamp when the certificate was last updated.
	UpdatedAt *time.Time `locationName:"updatedAt" 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 RenewalSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RenewalSummary) GoString() string {
	return s.String()
}

// SetDomainValidationRecords sets the DomainValidationRecords field's value.
func (s *RenewalSummary) SetDomainValidationRecords(v []*DomainValidationRecord) *RenewalSummary {
	s.DomainValidationRecords = v
	return s
}

// SetRenewalStatus sets the RenewalStatus field's value.
func (s *RenewalSummary) SetRenewalStatus(v string) *RenewalSummary {
	s.RenewalStatus = &v
	return s
}

// SetRenewalStatusReason sets the RenewalStatusReason field's value.
func (s *RenewalSummary) SetRenewalStatusReason(v string) *RenewalSummary {
	s.RenewalStatusReason = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *RenewalSummary) SetUpdatedAt(v time.Time) *RenewalSummary {
	s.UpdatedAt = &v
	return s
}

type ResetDistributionCacheInput struct {
	_ struct{} `type:"structure"`

	// The name of the distribution for which to reset cache.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	DistributionName *string `locationName:"distributionName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetDistributionCacheInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetDistributionCacheInput) GoString() string {
	return s.String()
}

// SetDistributionName sets the DistributionName field's value.
func (s *ResetDistributionCacheInput) SetDistributionName(v string) *ResetDistributionCacheInput {
	s.DistributionName = &v
	return s
}

type ResetDistributionCacheOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of the reset cache request (1479734909.17) in Unix time format.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`

	// The status of the reset cache request.
	Status *string `locationName:"status" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetDistributionCacheOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetDistributionCacheOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *ResetDistributionCacheOutput) SetCreateTime(v time.Time) *ResetDistributionCacheOutput {
	s.CreateTime = &v
	return s
}

// SetOperation sets the Operation field's value.
func (s *ResetDistributionCacheOutput) SetOperation(v *Operation) *ResetDistributionCacheOutput {
	s.Operation = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ResetDistributionCacheOutput) SetStatus(v string) *ResetDistributionCacheOutput {
	s.Status = &v
	return s
}

// Describes the estimated cost or usage that a budget tracks.
type ResourceBudgetEstimate struct {
	_ struct{} `type:"structure"`

	// The cost estimate for the specified budget.
	CostEstimates []*CostEstimate `locationName:"costEstimates" type:"list"`

	// The estimate end time.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// The resource name.
	ResourceName *string `locationName:"resourceName" type:"string"`

	// The type of resource the budget will track.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The estimate start time.
	StartTime *time.Time `locationName:"startTime" 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 ResourceBudgetEstimate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceBudgetEstimate) GoString() string {
	return s.String()
}

// SetCostEstimates sets the CostEstimates field's value.
func (s *ResourceBudgetEstimate) SetCostEstimates(v []*CostEstimate) *ResourceBudgetEstimate {
	s.CostEstimates = v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *ResourceBudgetEstimate) SetEndTime(v time.Time) *ResourceBudgetEstimate {
	s.EndTime = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *ResourceBudgetEstimate) SetResourceName(v string) *ResourceBudgetEstimate {
	s.ResourceName = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ResourceBudgetEstimate) SetResourceType(v string) *ResourceBudgetEstimate {
	s.ResourceType = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *ResourceBudgetEstimate) SetStartTime(v time.Time) *ResourceBudgetEstimate {
	s.StartTime = &v
	return s
}

// Describes the resource location.
type ResourceLocation struct {
	_ struct{} `type:"structure"`

	// The Availability Zone. Follows the format us-east-2a (case-sensitive).
	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`

	// The Amazon Web Services Region name.
	RegionName *string `locationName:"regionName" type:"string" enum:"RegionName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceLocation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceLocation) GoString() string {
	return s.String()
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *ResourceLocation) SetAvailabilityZone(v string) *ResourceLocation {
	s.AvailabilityZone = &v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *ResourceLocation) SetRegionName(v string) *ResourceLocation {
	s.RegionName = &v
	return s
}

// Describes an Amazon Lightsail instance that has access to a Lightsail bucket.
type ResourceReceivingAccess struct {
	_ struct{} `type:"structure"`

	// The name of the Lightsail instance.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type (for example, Instance).
	ResourceType *string `locationName:"resourceType" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceReceivingAccess) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceReceivingAccess) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ResourceReceivingAccess) SetName(v string) *ResourceReceivingAccess {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ResourceReceivingAccess) SetResourceType(v string) *ResourceReceivingAccess {
	s.ResourceType = &v
	return s
}

// Describes the domain name system (DNS) records to add to your domain's DNS
// to validate it for an Amazon Lightsail certificate.
type ResourceRecord struct {
	_ struct{} `type:"structure"`

	// The name of the record.
	Name *string `locationName:"name" type:"string"`

	// The DNS record type.
	Type *string `locationName:"type" type:"string"`

	// The value for the DNS record.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceRecord) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ResourceRecord) SetName(v string) *ResourceRecord {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *ResourceRecord) SetType(v string) *ResourceRecord {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ResourceRecord) SetValue(v string) *ResourceRecord {
	s.Value = &v
	return s
}

type SendContactMethodVerificationInput struct {
	_ struct{} `type:"structure"`

	// The protocol to verify, such as Email or SMS (text messaging).
	//
	// Protocol is a required field
	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"ContactMethodVerificationProtocol"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendContactMethodVerificationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendContactMethodVerificationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SendContactMethodVerificationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SendContactMethodVerificationInput"}
	if s.Protocol == nil {
		invalidParams.Add(request.NewErrParamRequired("Protocol"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetProtocol sets the Protocol field's value.
func (s *SendContactMethodVerificationInput) SetProtocol(v string) *SendContactMethodVerificationInput {
	s.Protocol = &v
	return s
}

type SendContactMethodVerificationOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 SendContactMethodVerificationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendContactMethodVerificationOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *SendContactMethodVerificationOutput) SetOperations(v []*Operation) *SendContactMethodVerificationOutput {
	s.Operations = v
	return s
}

// A general service exception.
type ServiceException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

	Message_ *string `locationName:"message" type:"string"`

	Tip *string `locationName:"tip" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceException) GoString() string {
	return s.String()
}

func newErrorServiceException(v protocol.ResponseMetadata) error {
	return &ServiceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceException) Code() string {
	return "ServiceException"
}

// Message returns the exception's message.
func (s *ServiceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceException) OrigErr() error {
	return nil
}

func (s *ServiceException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServiceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes a web-based, remote graphical user interface (GUI), NICE DCV session.
// The session is used to access a virtual computer’s operating system or
// application.
type Session struct {
	_ struct{} `type:"structure"`

	// When true, this Boolean value indicates the primary session for the specified
	// resource.
	IsPrimary *bool `locationName:"isPrimary" type:"boolean"`

	// The session name.
	Name *string `locationName:"name" type:"string"`

	// The session URL.
	//
	// Url is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Session's
	// String and GoString methods.
	Url *string `locationName:"url" 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 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()
}

// SetIsPrimary sets the IsPrimary field's value.
func (s *Session) SetIsPrimary(v bool) *Session {
	s.IsPrimary = &v
	return s
}

// SetName sets the Name field's value.
func (s *Session) SetName(v string) *Session {
	s.Name = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *Session) SetUrl(v string) *Session {
	s.Url = &v
	return s
}

type SetIpAddressTypeInput struct {
	_ struct{} `type:"structure"`

	// The IP address type to set for the specified resource.
	//
	// The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6.
	//
	// IpAddressType is a required field
	IpAddressType *string `locationName:"ipAddressType" type:"string" required:"true" enum:"IpAddressType"`

	// The name of the resource for which to set the IP address type.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`

	// The resource type.
	//
	// The resource values are Distribution, Instance, and LoadBalancer.
	//
	// Distribution-related APIs are available only in the N. Virginia (us-east-1)
	// Amazon Web Services Region. Set your Amazon Web Services Region configuration
	// to us-east-1 to create, view, or edit distributions.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetIpAddressTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetIpAddressTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SetIpAddressTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SetIpAddressTypeInput"}
	if s.IpAddressType == nil {
		invalidParams.Add(request.NewErrParamRequired("IpAddressType"))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *SetIpAddressTypeInput) SetIpAddressType(v string) *SetIpAddressTypeInput {
	s.IpAddressType = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *SetIpAddressTypeInput) SetResourceName(v string) *SetIpAddressTypeInput {
	s.ResourceName = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *SetIpAddressTypeInput) SetResourceType(v string) *SetIpAddressTypeInput {
	s.ResourceType = &v
	return s
}

type SetIpAddressTypeOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 SetIpAddressTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetIpAddressTypeOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *SetIpAddressTypeOutput) SetOperations(v []*Operation) *SetIpAddressTypeOutput {
	s.Operations = v
	return s
}

type SetResourceAccessForBucketInput struct {
	_ struct{} `type:"structure"`

	// The access setting.
	//
	// The following access settings are available:
	//
	//    * allow - Allows access to the bucket and its objects.
	//
	//    * deny - Denies access to the bucket and its objects. Use this setting
	//    to remove access for a resource previously set to allow.
	//
	// Access is a required field
	Access *string `locationName:"access" type:"string" required:"true" enum:"ResourceBucketAccess"`

	// The name of the bucket for which to set access to another Lightsail resource.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// The name of the Lightsail instance for which to set bucket access. The instance
	// must be in a running or stopped state.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetResourceAccessForBucketInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetResourceAccessForBucketInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SetResourceAccessForBucketInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SetResourceAccessForBucketInput"}
	if s.Access == nil {
		invalidParams.Add(request.NewErrParamRequired("Access"))
	}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccess sets the Access field's value.
func (s *SetResourceAccessForBucketInput) SetAccess(v string) *SetResourceAccessForBucketInput {
	s.Access = &v
	return s
}

// SetBucketName sets the BucketName field's value.
func (s *SetResourceAccessForBucketInput) SetBucketName(v string) *SetResourceAccessForBucketInput {
	s.BucketName = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *SetResourceAccessForBucketInput) SetResourceName(v string) *SetResourceAccessForBucketInput {
	s.ResourceName = &v
	return s
}

type SetResourceAccessForBucketOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 SetResourceAccessForBucketOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetResourceAccessForBucketOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *SetResourceAccessForBucketOutput) SetOperations(v []*Operation) *SetResourceAccessForBucketOutput {
	s.Operations = v
	return s
}

// Returns details about the commands that were run.
type SetupExecutionDetails struct {
	_ struct{} `type:"structure"`

	// The command that was executed.
	Command *string `locationName:"command" type:"string"`

	// The timestamp for when the request was run.
	DateTime *time.Time `locationName:"dateTime" type:"timestamp"`

	// The name of the target resource.
	Name *string `locationName:"name" type:"string"`

	// The text written by the command to stderr.
	StandardError *string `locationName:"standardError" type:"string"`

	// The text written by the command to stdout.
	StandardOutput *string `locationName:"standardOutput" type:"string"`

	// The status of the SetupInstanceHttps request.
	Status *string `locationName:"status" type:"string" enum:"SetupStatus"`

	// The current version of the script..
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupExecutionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupExecutionDetails) GoString() string {
	return s.String()
}

// SetCommand sets the Command field's value.
func (s *SetupExecutionDetails) SetCommand(v string) *SetupExecutionDetails {
	s.Command = &v
	return s
}

// SetDateTime sets the DateTime field's value.
func (s *SetupExecutionDetails) SetDateTime(v time.Time) *SetupExecutionDetails {
	s.DateTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *SetupExecutionDetails) SetName(v string) *SetupExecutionDetails {
	s.Name = &v
	return s
}

// SetStandardError sets the StandardError field's value.
func (s *SetupExecutionDetails) SetStandardError(v string) *SetupExecutionDetails {
	s.StandardError = &v
	return s
}

// SetStandardOutput sets the StandardOutput field's value.
func (s *SetupExecutionDetails) SetStandardOutput(v string) *SetupExecutionDetails {
	s.StandardOutput = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SetupExecutionDetails) SetStatus(v string) *SetupExecutionDetails {
	s.Status = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *SetupExecutionDetails) SetVersion(v string) *SetupExecutionDetails {
	s.Version = &v
	return s
}

// Returns a list of the commands that were ran on the target resource.
//
// The status of each command is also returned.
type SetupHistory struct {
	_ struct{} `type:"structure"`

	// Describes the full details of the request.
	ExecutionDetails []*SetupExecutionDetails `locationName:"executionDetails" type:"list"`

	// A GUID that's used to identify the operation.
	OperationId *string `locationName:"operationId" type:"string"`

	// Information about the specified request.
	Request *SetupRequest `locationName:"request" type:"structure"`

	// The target resource name for the request.
	Resource *SetupHistoryResource `locationName:"resource" type:"structure"`

	// The status of the request.
	Status *string `locationName:"status" type:"string" enum:"SetupStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupHistory) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupHistory) GoString() string {
	return s.String()
}

// SetExecutionDetails sets the ExecutionDetails field's value.
func (s *SetupHistory) SetExecutionDetails(v []*SetupExecutionDetails) *SetupHistory {
	s.ExecutionDetails = v
	return s
}

// SetOperationId sets the OperationId field's value.
func (s *SetupHistory) SetOperationId(v string) *SetupHistory {
	s.OperationId = &v
	return s
}

// SetRequest sets the Request field's value.
func (s *SetupHistory) SetRequest(v *SetupRequest) *SetupHistory {
	s.Request = v
	return s
}

// SetResource sets the Resource field's value.
func (s *SetupHistory) SetResource(v *SetupHistoryResource) *SetupHistory {
	s.Resource = v
	return s
}

// SetStatus sets the Status field's value.
func (s *SetupHistory) SetStatus(v string) *SetupHistory {
	s.Status = &v
	return s
}

// The Lightsail resource that SetupHistory was ran on.
type SetupHistoryResource struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Lightsail resource.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp for when the resource was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// Describes the resource location.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the Lightsail resource.
	Name *string `locationName:"name" type:"string"`

	// The Lightsail resource type. For example, Instance.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupHistoryResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupHistoryResource) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *SetupHistoryResource) SetArn(v string) *SetupHistoryResource {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *SetupHistoryResource) SetCreatedAt(v time.Time) *SetupHistoryResource {
	s.CreatedAt = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *SetupHistoryResource) SetLocation(v *ResourceLocation) *SetupHistoryResource {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *SetupHistoryResource) SetName(v string) *SetupHistoryResource {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *SetupHistoryResource) SetResourceType(v string) *SetupHistoryResource {
	s.ResourceType = &v
	return s
}

type SetupInstanceHttpsInput struct {
	_ struct{} `type:"structure"`

	// The certificate authority that issues the SSL/TLS certificate.
	//
	// CertificateProvider is a required field
	CertificateProvider *string `locationName:"certificateProvider" type:"string" required:"true" enum:"CertificateProvider"`

	// The name of the domain and subdomains that were specified for the SSL/TLS
	// certificate.
	//
	// DomainNames is a required field
	DomainNames []*string `locationName:"domainNames" min:"1" type:"list" required:"true"`

	// The contact method for SSL/TLS certificate renewal alerts. You can enter
	// one email address.
	//
	// EmailAddress is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SetupInstanceHttpsInput's
	// String and GoString methods.
	//
	// EmailAddress is a required field
	EmailAddress *string `locationName:"emailAddress" min:"6" type:"string" required:"true" sensitive:"true"`

	// The name of the Lightsail instance.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupInstanceHttpsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupInstanceHttpsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SetupInstanceHttpsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SetupInstanceHttpsInput"}
	if s.CertificateProvider == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateProvider"))
	}
	if s.DomainNames == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainNames"))
	}
	if s.DomainNames != nil && len(s.DomainNames) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainNames", 1))
	}
	if s.EmailAddress == nil {
		invalidParams.Add(request.NewErrParamRequired("EmailAddress"))
	}
	if s.EmailAddress != nil && len(*s.EmailAddress) < 6 {
		invalidParams.Add(request.NewErrParamMinLen("EmailAddress", 6))
	}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateProvider sets the CertificateProvider field's value.
func (s *SetupInstanceHttpsInput) SetCertificateProvider(v string) *SetupInstanceHttpsInput {
	s.CertificateProvider = &v
	return s
}

// SetDomainNames sets the DomainNames field's value.
func (s *SetupInstanceHttpsInput) SetDomainNames(v []*string) *SetupInstanceHttpsInput {
	s.DomainNames = v
	return s
}

// SetEmailAddress sets the EmailAddress field's value.
func (s *SetupInstanceHttpsInput) SetEmailAddress(v string) *SetupInstanceHttpsInput {
	s.EmailAddress = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *SetupInstanceHttpsInput) SetInstanceName(v string) *SetupInstanceHttpsInput {
	s.InstanceName = &v
	return s
}

type SetupInstanceHttpsOutput struct {
	_ struct{} `type:"structure"`

	// The available API operations for SetupInstanceHttps.
	Operations []*Operation `locationName:"operations" 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 SetupInstanceHttpsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupInstanceHttpsOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *SetupInstanceHttpsOutput) SetOperations(v []*Operation) *SetupInstanceHttpsOutput {
	s.Operations = v
	return s
}

// Returns information that was submitted during the SetupInstanceHttps request.
// Email information is redacted for privacy.
type SetupRequest struct {
	_ struct{} `type:"structure"`

	// The Certificate Authority (CA) that issues the SSL/TLS certificate.
	CertificateProvider *string `locationName:"certificateProvider" type:"string" enum:"CertificateProvider"`

	// The name of the domain and subdomains that the SSL/TLS certificate secures.
	DomainNames []*string `locationName:"domainNames" min:"1" type:"list"`

	// The name of the Lightsail instance.
	InstanceName *string `locationName:"instanceName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SetupRequest) GoString() string {
	return s.String()
}

// SetCertificateProvider sets the CertificateProvider field's value.
func (s *SetupRequest) SetCertificateProvider(v string) *SetupRequest {
	s.CertificateProvider = &v
	return s
}

// SetDomainNames sets the DomainNames field's value.
func (s *SetupRequest) SetDomainNames(v []*string) *SetupRequest {
	s.DomainNames = v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *SetupRequest) SetInstanceName(v string) *SetupRequest {
	s.InstanceName = &v
	return s
}

type StartGUISessionInput struct {
	_ struct{} `type:"structure"`

	// The resource name.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartGUISessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartGUISessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartGUISessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartGUISessionInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceName sets the ResourceName field's value.
func (s *StartGUISessionInput) SetResourceName(v string) *StartGUISessionInput {
	s.ResourceName = &v
	return s
}

type StartGUISessionOutput struct {
	_ struct{} `type:"structure"`

	// The available API operations.
	Operations []*Operation `locationName:"operations" 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 StartGUISessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartGUISessionOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StartGUISessionOutput) SetOperations(v []*Operation) *StartGUISessionOutput {
	s.Operations = v
	return s
}

type StartInstanceInput struct {
	_ struct{} `type:"structure"`

	// The name of the instance (a virtual private server) to start.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartInstanceInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceName sets the InstanceName field's value.
func (s *StartInstanceInput) SetInstanceName(v string) *StartInstanceInput {
	s.InstanceName = &v
	return s
}

type StartInstanceOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 StartInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartInstanceOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StartInstanceOutput) SetOperations(v []*Operation) *StartInstanceOutput {
	s.Operations = v
	return s
}

type StartRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The name of your database to start.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *StartRelationalDatabaseInput) SetRelationalDatabaseName(v string) *StartRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

type StartRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 StartRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StartRelationalDatabaseOutput) SetOperations(v []*Operation) *StartRelationalDatabaseOutput {
	s.Operations = v
	return s
}

// Describes a static IP.
type StaticIp struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the static IP (arn:aws:lightsail:us-east-2:123456789101:StaticIp/9cbb4a9e-f8e3-4dfe-b57e-12345EXAMPLE).
	Arn *string `locationName:"arn" type:"string"`

	// The instance where the static IP is attached (Amazon_Linux-1GB-Ohio-1).
	AttachedTo *string `locationName:"attachedTo" type:"string"`

	// The timestamp when the static IP was created (1479735304.222).
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The static IP address.
	IpAddress *string `locationName:"ipAddress" type:"string"`

	// A Boolean value indicating whether the static IP is attached.
	IsAttached *bool `locationName:"isAttached" type:"boolean"`

	// The region and Availability Zone where the static IP was created.
	Location *ResourceLocation `locationName:"location" type:"structure"`

	// The name of the static IP (StaticIP-Ohio-EXAMPLE).
	Name *string `locationName:"name" type:"string"`

	// The resource type (usually StaticIp).
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The support code. Include this code in your email to support when you have
	// questions about an instance or another resource in Lightsail. This code enables
	// our support team to look up your Lightsail information more easily.
	SupportCode *string `locationName:"supportCode" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StaticIp) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StaticIp) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *StaticIp) SetArn(v string) *StaticIp {
	s.Arn = &v
	return s
}

// SetAttachedTo sets the AttachedTo field's value.
func (s *StaticIp) SetAttachedTo(v string) *StaticIp {
	s.AttachedTo = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *StaticIp) SetCreatedAt(v time.Time) *StaticIp {
	s.CreatedAt = &v
	return s
}

// SetIpAddress sets the IpAddress field's value.
func (s *StaticIp) SetIpAddress(v string) *StaticIp {
	s.IpAddress = &v
	return s
}

// SetIsAttached sets the IsAttached field's value.
func (s *StaticIp) SetIsAttached(v bool) *StaticIp {
	s.IsAttached = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *StaticIp) SetLocation(v *ResourceLocation) *StaticIp {
	s.Location = v
	return s
}

// SetName sets the Name field's value.
func (s *StaticIp) SetName(v string) *StaticIp {
	s.Name = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *StaticIp) SetResourceType(v string) *StaticIp {
	s.ResourceType = &v
	return s
}

// SetSupportCode sets the SupportCode field's value.
func (s *StaticIp) SetSupportCode(v string) *StaticIp {
	s.SupportCode = &v
	return s
}

type StopGUISessionInput struct {
	_ struct{} `type:"structure"`

	// The resource name.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopGUISessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopGUISessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopGUISessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopGUISessionInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceName sets the ResourceName field's value.
func (s *StopGUISessionInput) SetResourceName(v string) *StopGUISessionInput {
	s.ResourceName = &v
	return s
}

type StopGUISessionOutput struct {
	_ struct{} `type:"structure"`

	// The available API operations.
	Operations []*Operation `locationName:"operations" 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 StopGUISessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopGUISessionOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StopGUISessionOutput) SetOperations(v []*Operation) *StopGUISessionOutput {
	s.Operations = v
	return s
}

type StopInstanceInput struct {
	_ struct{} `type:"structure"`

	// When set to True, forces a Lightsail instance that is stuck in a stopping
	// state to stop.
	//
	// Only use the force parameter if your instance is stuck in the stopping state.
	// In any other state, your instance should stop normally without adding this
	// parameter to your API request.
	Force *bool `locationName:"force" type:"boolean"`

	// The name of the instance (a virtual private server) to stop.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopInstanceInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetForce sets the Force field's value.
func (s *StopInstanceInput) SetForce(v bool) *StopInstanceInput {
	s.Force = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *StopInstanceInput) SetInstanceName(v string) *StopInstanceInput {
	s.InstanceName = &v
	return s
}

// Describes a request to create or edit the StopInstanceOnIdle add-on.
//
// This add-on only applies to Lightsail for Research resources.
type StopInstanceOnIdleRequest struct {
	_ struct{} `type:"structure"`

	// The amount of idle time in minutes after which your virtual computer will
	// automatically stop.
	Duration *string `locationName:"duration" type:"string"`

	// The value to compare with the duration.
	Threshold *string `locationName:"threshold" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopInstanceOnIdleRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopInstanceOnIdleRequest) GoString() string {
	return s.String()
}

// SetDuration sets the Duration field's value.
func (s *StopInstanceOnIdleRequest) SetDuration(v string) *StopInstanceOnIdleRequest {
	s.Duration = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *StopInstanceOnIdleRequest) SetThreshold(v string) *StopInstanceOnIdleRequest {
	s.Threshold = &v
	return s
}

type StopInstanceOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 StopInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopInstanceOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StopInstanceOutput) SetOperations(v []*Operation) *StopInstanceOutput {
	s.Operations = v
	return s
}

type StopRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The name of your database to stop.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// The name of your new database snapshot to be created before stopping your
	// database.
	RelationalDatabaseSnapshotName *string `locationName:"relationalDatabaseSnapshotName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *StopRelationalDatabaseInput) SetRelationalDatabaseName(v string) *StopRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetRelationalDatabaseSnapshotName sets the RelationalDatabaseSnapshotName field's value.
func (s *StopRelationalDatabaseInput) SetRelationalDatabaseSnapshotName(v string) *StopRelationalDatabaseInput {
	s.RelationalDatabaseSnapshotName = &v
	return s
}

type StopRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 StopRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *StopRelationalDatabaseOutput) SetOperations(v []*Operation) *StopRelationalDatabaseOutput {
	s.Operations = v
	return s
}

// Describes a tag key and optional value assigned to an Amazon Lightsail resource.
//
// For more information about tags in Lightsail, see the Amazon Lightsail Developer
// Guide (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags).
type Tag struct {
	_ struct{} `type:"structure"`

	// The key of the tag.
	//
	// Constraints: Tag keys accept a maximum of 128 letters, numbers, spaces in
	// UTF-8, or the following characters: + - = . _ : / @
	Key *string `locationName:"key" type:"string"`

	// The value of the tag.
	//
	// Constraints: Tag values accept a maximum of 256 letters, numbers, spaces
	// in UTF-8, or the following characters: + - = . _ : / @
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource to which you want to add a
	// tag.
	ResourceArn *string `locationName:"resourceArn" type:"string"`

	// The name of the resource to which you are adding tags.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`

	// The tag key and optional value.
	//
	// Tags is a required field
	Tags []*Tag `locationName:"tags" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *TagResourceInput) SetResourceName(v string) *TagResourceInput {
	s.ResourceName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 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()
}

// SetOperations sets the Operations field's value.
func (s *TagResourceOutput) SetOperations(v []*Operation) *TagResourceOutput {
	s.Operations = v
	return s
}

type TestAlarmInput struct {
	_ struct{} `type:"structure"`

	// The name of the alarm to test.
	//
	// AlarmName is a required field
	AlarmName *string `locationName:"alarmName" type:"string" required:"true"`

	// The alarm state to test.
	//
	// An alarm has the following possible states that can be tested:
	//
	//    * ALARM - The metric is outside of the defined threshold.
	//
	//    * INSUFFICIENT_DATA - The alarm has just started, the metric is not available,
	//    or not enough data is available for the metric to determine the alarm
	//    state.
	//
	//    * OK - The metric is within the defined threshold.
	//
	// State is a required field
	State *string `locationName:"state" type:"string" required:"true" enum:"AlarmState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestAlarmInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestAlarmInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TestAlarmInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TestAlarmInput"}
	if s.AlarmName == nil {
		invalidParams.Add(request.NewErrParamRequired("AlarmName"))
	}
	if s.State == nil {
		invalidParams.Add(request.NewErrParamRequired("State"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlarmName sets the AlarmName field's value.
func (s *TestAlarmInput) SetAlarmName(v string) *TestAlarmInput {
	s.AlarmName = &v
	return s
}

// SetState sets the State field's value.
func (s *TestAlarmInput) SetState(v string) *TestAlarmInput {
	s.State = &v
	return s
}

type TestAlarmOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 TestAlarmOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestAlarmOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *TestAlarmOutput) SetOperations(v []*Operation) *TestAlarmOutput {
	s.Operations = v
	return s
}

// Sets the start date and end date for retrieving a cost estimate. The start
// date is inclusive, but the end date is exclusive. For example, if start is
// 2017-01-01 and end is 2017-05-01, then the cost and usage data is retrieved
// from 2017-01-01 up to and including 2017-04-30 but not including 2017-05-01.
type TimePeriod struct {
	_ struct{} `type:"structure"`

	// The end of the time period. The end date is exclusive. For example, if end
	// is 2017-05-01, Lightsail for Research retrieves cost and usage data from
	// the start date up to, but not including, 2017-05-01.
	End *time.Time `locationName:"end" type:"timestamp"`

	// The beginning of the time period. The start date is inclusive. For example,
	// if start is 2017-01-01, Lightsail for Research retrieves cost and usage data
	// starting at 2017-01-01 up to the end date. The start date must be equal to
	// or no later than the current date to avoid a validation error.
	Start *time.Time `locationName:"start" 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 TimePeriod) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TimePeriod) GoString() string {
	return s.String()
}

// SetEnd sets the End field's value.
func (s *TimePeriod) SetEnd(v time.Time) *TimePeriod {
	s.End = &v
	return s
}

// SetStart sets the Start field's value.
func (s *TimePeriod) SetStart(v time.Time) *TimePeriod {
	s.Start = &v
	return s
}

// Lightsail throws this exception when the user has not been authenticated.
type UnauthenticatedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"code" type:"string"`

	Docs *string `locationName:"docs" type:"string"`

	Message_ *string `locationName:"message" type:"string"`

	Tip *string `locationName:"tip" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthenticatedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthenticatedException) GoString() string {
	return s.String()
}

func newErrorUnauthenticatedException(v protocol.ResponseMetadata) error {
	return &UnauthenticatedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnauthenticatedException) Code() string {
	return "UnauthenticatedException"
}

// Message returns the exception's message.
func (s *UnauthenticatedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnauthenticatedException) OrigErr() error {
	return nil
}

func (s *UnauthenticatedException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *UnauthenticatedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnauthenticatedException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UnpeerVpcInput 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 UnpeerVpcInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnpeerVpcInput) GoString() string {
	return s.String()
}

type UnpeerVpcOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnpeerVpcOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnpeerVpcOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *UnpeerVpcOutput) SetOperation(v *Operation) *UnpeerVpcOutput {
	s.Operation = v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource from which you want to remove
	// a tag.
	ResourceArn *string `locationName:"resourceArn" type:"string"`

	// The name of the resource from which you are removing a tag.
	//
	// ResourceName is a required field
	ResourceName *string `locationName:"resourceName" type:"string" required:"true"`

	// The tag keys to delete from the specified resource.
	//
	// TagKeys is a required field
	TagKeys []*string `locationName:"tagKeys" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *UntagResourceInput) SetResourceName(v string) *UntagResourceInput {
	s.ResourceName = &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"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 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()
}

// SetOperations sets the Operations field's value.
func (s *UntagResourceOutput) SetOperations(v []*Operation) *UntagResourceOutput {
	s.Operations = v
	return s
}

type UpdateBucketBundleInput struct {
	_ struct{} `type:"structure"`

	// The name of the bucket for which to update the bundle.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// The ID of the new bundle to apply to the bucket.
	//
	// Use the GetBucketBundles (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketBundles.html)
	// action to get a list of bundle IDs that you can specify.
	//
	// BundleId is a required field
	BundleId *string `locationName:"bundleId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketBundleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketBundleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateBucketBundleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateBucketBundleInput"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}
	if s.BundleId == nil {
		invalidParams.Add(request.NewErrParamRequired("BundleId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *UpdateBucketBundleInput) SetBucketName(v string) *UpdateBucketBundleInput {
	s.BucketName = &v
	return s
}

// SetBundleId sets the BundleId field's value.
func (s *UpdateBucketBundleInput) SetBundleId(v string) *UpdateBucketBundleInput {
	s.BundleId = &v
	return s
}

type UpdateBucketBundleOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateBucketBundleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketBundleOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *UpdateBucketBundleOutput) SetOperations(v []*Operation) *UpdateBucketBundleOutput {
	s.Operations = v
	return s
}

type UpdateBucketInput struct {
	_ struct{} `type:"structure"`

	// An object that describes the access log configuration for the bucket.
	AccessLogConfig *BucketAccessLogConfig `locationName:"accessLogConfig" type:"structure"`

	// An object that sets the public accessibility of objects in the specified
	// bucket.
	AccessRules *AccessRules `locationName:"accessRules" type:"structure"`

	// The name of the bucket to update.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// An array of strings to specify the Amazon Web Services account IDs that can
	// access the bucket.
	//
	// You can give a maximum of 10 Amazon Web Services accounts access to a bucket.
	ReadonlyAccessAccounts []*string `locationName:"readonlyAccessAccounts" type:"list"`

	// Specifies whether to enable or suspend versioning of objects in the bucket.
	//
	// The following options can be specified:
	//
	//    * Enabled - Enables versioning of objects in the specified bucket.
	//
	//    * Suspended - Suspends versioning of objects in the specified bucket.
	//    Existing object versions are retained.
	Versioning *string `locationName:"versioning" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateBucketInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateBucketInput"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}
	if s.AccessLogConfig != nil {
		if err := s.AccessLogConfig.Validate(); err != nil {
			invalidParams.AddNested("AccessLogConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessLogConfig sets the AccessLogConfig field's value.
func (s *UpdateBucketInput) SetAccessLogConfig(v *BucketAccessLogConfig) *UpdateBucketInput {
	s.AccessLogConfig = v
	return s
}

// SetAccessRules sets the AccessRules field's value.
func (s *UpdateBucketInput) SetAccessRules(v *AccessRules) *UpdateBucketInput {
	s.AccessRules = v
	return s
}

// SetBucketName sets the BucketName field's value.
func (s *UpdateBucketInput) SetBucketName(v string) *UpdateBucketInput {
	s.BucketName = &v
	return s
}

// SetReadonlyAccessAccounts sets the ReadonlyAccessAccounts field's value.
func (s *UpdateBucketInput) SetReadonlyAccessAccounts(v []*string) *UpdateBucketInput {
	s.ReadonlyAccessAccounts = v
	return s
}

// SetVersioning sets the Versioning field's value.
func (s *UpdateBucketInput) SetVersioning(v string) *UpdateBucketInput {
	s.Versioning = &v
	return s
}

type UpdateBucketOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the bucket that is updated.
	Bucket *Bucket `locationName:"bucket" type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateBucketOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBucketOutput) GoString() string {
	return s.String()
}

// SetBucket sets the Bucket field's value.
func (s *UpdateBucketOutput) SetBucket(v *Bucket) *UpdateBucketOutput {
	s.Bucket = v
	return s
}

// SetOperations sets the Operations field's value.
func (s *UpdateBucketOutput) SetOperations(v []*Operation) *UpdateBucketOutput {
	s.Operations = v
	return s
}

type UpdateContainerServiceInput struct {
	_ struct{} `type:"structure"`

	// A Boolean value to indicate whether the container service is disabled.
	IsDisabled *bool `locationName:"isDisabled" type:"boolean"`

	// The power for the container service.
	//
	// The power specifies the amount of memory, vCPUs, and base monthly cost of
	// each node of the container service. The power and scale of a container service
	// makes up its configured capacity. To determine the monthly price of your
	// container service, multiply the base price of the power with the scale (the
	// number of nodes) of the service.
	//
	// Use the GetContainerServicePowers action to view the specifications of each
	// power option.
	Power *string `locationName:"power" type:"string" enum:"ContainerServicePowerName"`

	// An object to describe the configuration for the container service to access
	// private container image repositories, such as Amazon Elastic Container Registry
	// (Amazon ECR) private repositories.
	//
	// For more information, see Configuring access to an Amazon ECR private repository
	// for an Amazon Lightsail container service (https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-service-ecr-private-repo-access)
	// in the Amazon Lightsail Developer Guide.
	PrivateRegistryAccess *PrivateRegistryAccessRequest `locationName:"privateRegistryAccess" type:"structure"`

	// The public domain names to use with the container service, such as example.com
	// and www.example.com.
	//
	// You can specify up to four public domain names for a container service. The
	// domain names that you specify are used when you create a deployment with
	// a container configured as the public endpoint of your container service.
	//
	// If you don't specify public domain names, then you can use the default domain
	// of the container service.
	//
	// You must create and validate an SSL/TLS certificate before you can use public
	// domain names with your container service. Use the CreateCertificate action
	// to create a certificate for the public domain names you want to use with
	// your container service.
	//
	// You can specify public domain names using a string to array map as shown
	// in the example later on this page.
	PublicDomainNames map[string][]*string `locationName:"publicDomainNames" type:"map"`

	// The scale for the container service.
	//
	// The scale specifies the allocated compute nodes of the container service.
	// The power and scale of a container service makes up its configured capacity.
	// To determine the monthly price of your container service, multiply the base
	// price of the power with the scale (the number of nodes) of the service.
	Scale *int64 `locationName:"scale" min:"1" type:"integer"`

	// The name of the container service to update.
	//
	// ServiceName is a required field
	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContainerServiceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContainerServiceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContainerServiceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContainerServiceInput"}
	if s.Scale != nil && *s.Scale < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Scale", 1))
	}
	if s.ServiceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
	}
	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIsDisabled sets the IsDisabled field's value.
func (s *UpdateContainerServiceInput) SetIsDisabled(v bool) *UpdateContainerServiceInput {
	s.IsDisabled = &v
	return s
}

// SetPower sets the Power field's value.
func (s *UpdateContainerServiceInput) SetPower(v string) *UpdateContainerServiceInput {
	s.Power = &v
	return s
}

// SetPrivateRegistryAccess sets the PrivateRegistryAccess field's value.
func (s *UpdateContainerServiceInput) SetPrivateRegistryAccess(v *PrivateRegistryAccessRequest) *UpdateContainerServiceInput {
	s.PrivateRegistryAccess = v
	return s
}

// SetPublicDomainNames sets the PublicDomainNames field's value.
func (s *UpdateContainerServiceInput) SetPublicDomainNames(v map[string][]*string) *UpdateContainerServiceInput {
	s.PublicDomainNames = v
	return s
}

// SetScale sets the Scale field's value.
func (s *UpdateContainerServiceInput) SetScale(v int64) *UpdateContainerServiceInput {
	s.Scale = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *UpdateContainerServiceInput) SetServiceName(v string) *UpdateContainerServiceInput {
	s.ServiceName = &v
	return s
}

type UpdateContainerServiceOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes a container service.
	ContainerService *ContainerService `locationName:"containerService" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContainerServiceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContainerServiceOutput) GoString() string {
	return s.String()
}

// SetContainerService sets the ContainerService field's value.
func (s *UpdateContainerServiceOutput) SetContainerService(v *ContainerService) *UpdateContainerServiceOutput {
	s.ContainerService = v
	return s
}

type UpdateDistributionBundleInput struct {
	_ struct{} `type:"structure"`

	// The bundle ID of the new bundle to apply to your distribution.
	//
	// Use the GetDistributionBundles action to get a list of distribution bundle
	// IDs that you can specify.
	BundleId *string `locationName:"bundleId" type:"string"`

	// The name of the distribution for which to update the bundle.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	DistributionName *string `locationName:"distributionName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionBundleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionBundleInput) GoString() string {
	return s.String()
}

// SetBundleId sets the BundleId field's value.
func (s *UpdateDistributionBundleInput) SetBundleId(v string) *UpdateDistributionBundleInput {
	s.BundleId = &v
	return s
}

// SetDistributionName sets the DistributionName field's value.
func (s *UpdateDistributionBundleInput) SetDistributionName(v string) *UpdateDistributionBundleInput {
	s.DistributionName = &v
	return s
}

type UpdateDistributionBundleOutput struct {
	_ struct{} `type:"structure"`

	// An object that describes the result of the action, such as the status of
	// the request, the timestamp of the request, and the resources affected by
	// the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionBundleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionBundleOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *UpdateDistributionBundleOutput) SetOperation(v *Operation) *UpdateDistributionBundleOutput {
	s.Operation = v
	return s
}

type UpdateDistributionInput struct {
	_ struct{} `type:"structure"`

	// An object that describes the cache behavior settings for the distribution.
	//
	// The cacheBehaviorSettings specified in your UpdateDistributionRequest will
	// replace your distribution's existing settings.
	CacheBehaviorSettings *CacheSettings `locationName:"cacheBehaviorSettings" type:"structure"`

	// An array of objects that describe the per-path cache behavior for the distribution.
	CacheBehaviors []*CacheBehaviorPerPath `locationName:"cacheBehaviors" type:"list"`

	// An object that describes the default cache behavior for the distribution.
	DefaultCacheBehavior *CacheBehavior `locationName:"defaultCacheBehavior" type:"structure"`

	// The name of the distribution to update.
	//
	// Use the GetDistributions action to get a list of distribution names that
	// you can specify.
	//
	// DistributionName is a required field
	DistributionName *string `locationName:"distributionName" type:"string" required:"true"`

	// Indicates whether to enable the distribution.
	IsEnabled *bool `locationName:"isEnabled" type:"boolean"`

	// An object that describes the origin resource for the distribution, such as
	// a Lightsail instance, bucket, or load balancer.
	//
	// The distribution pulls, caches, and serves content from the origin.
	Origin *InputOrigin `locationName:"origin" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDistributionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDistributionInput"}
	if s.DistributionName == nil {
		invalidParams.Add(request.NewErrParamRequired("DistributionName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCacheBehaviorSettings sets the CacheBehaviorSettings field's value.
func (s *UpdateDistributionInput) SetCacheBehaviorSettings(v *CacheSettings) *UpdateDistributionInput {
	s.CacheBehaviorSettings = v
	return s
}

// SetCacheBehaviors sets the CacheBehaviors field's value.
func (s *UpdateDistributionInput) SetCacheBehaviors(v []*CacheBehaviorPerPath) *UpdateDistributionInput {
	s.CacheBehaviors = v
	return s
}

// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
func (s *UpdateDistributionInput) SetDefaultCacheBehavior(v *CacheBehavior) *UpdateDistributionInput {
	s.DefaultCacheBehavior = v
	return s
}

// SetDistributionName sets the DistributionName field's value.
func (s *UpdateDistributionInput) SetDistributionName(v string) *UpdateDistributionInput {
	s.DistributionName = &v
	return s
}

// SetIsEnabled sets the IsEnabled field's value.
func (s *UpdateDistributionInput) SetIsEnabled(v bool) *UpdateDistributionInput {
	s.IsEnabled = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *UpdateDistributionInput) SetOrigin(v *InputOrigin) *UpdateDistributionInput {
	s.Origin = v
	return s
}

type UpdateDistributionOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDistributionOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *UpdateDistributionOutput) SetOperation(v *Operation) *UpdateDistributionOutput {
	s.Operation = v
	return s
}

type UpdateDomainEntryInput struct {
	_ struct{} `type:"structure"`

	// An array of key-value pairs containing information about the domain entry.
	//
	// DomainEntry is a required field
	DomainEntry *DomainEntry `locationName:"domainEntry" type:"structure" required:"true"`

	// The name of the domain recordset to update.
	//
	// DomainName is a required field
	DomainName *string `locationName:"domainName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainEntryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainEntryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDomainEntryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDomainEntryInput"}
	if s.DomainEntry == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainEntry"))
	}
	if s.DomainName == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainEntry sets the DomainEntry field's value.
func (s *UpdateDomainEntryInput) SetDomainEntry(v *DomainEntry) *UpdateDomainEntryInput {
	s.DomainEntry = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *UpdateDomainEntryInput) SetDomainName(v string) *UpdateDomainEntryInput {
	s.DomainName = &v
	return s
}

type UpdateDomainEntryOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateDomainEntryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainEntryOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *UpdateDomainEntryOutput) SetOperations(v []*Operation) *UpdateDomainEntryOutput {
	s.Operations = v
	return s
}

type UpdateInstanceMetadataOptionsInput struct {
	_ struct{} `type:"structure"`

	// Enables or disables the HTTP metadata endpoint on your instances. If this
	// parameter is not specified, the existing state is maintained.
	//
	// If you specify a value of disabled, you cannot access your instance metadata.
	HttpEndpoint *string `locationName:"httpEndpoint" type:"string" enum:"HttpEndpoint"`

	// Enables or disables the IPv6 endpoint for the instance metadata service.
	// This setting applies only when the HTTP metadata endpoint is enabled.
	//
	// This parameter is available only for instances in the Europe (Stockholm)
	// Amazon Web Services Region (eu-north-1).
	HttpProtocolIpv6 *string `locationName:"httpProtocolIpv6" type:"string" enum:"HttpProtocolIpv6"`

	// The desired HTTP PUT response hop limit for instance metadata requests. A
	// larger number means that the instance metadata requests can travel farther.
	// If no parameter is specified, the existing state is maintained.
	HttpPutResponseHopLimit *int64 `locationName:"httpPutResponseHopLimit" type:"integer"`

	// The state of token usage for your instance metadata requests. If the parameter
	// is not specified in the request, the default state is optional.
	//
	// If the state is optional, you can choose whether to retrieve instance metadata
	// with a signed token header on your request. If you retrieve the IAM role
	// credentials without a token, the version 1.0 role credentials are returned.
	// If you retrieve the IAM role credentials by using a valid signed token, the
	// version 2.0 role credentials are returned.
	//
	// If the state is required, you must send a signed token header with all instance
	// metadata retrieval requests. In this state, retrieving the IAM role credential
	// always returns the version 2.0 credentials. The version 1.0 credentials are
	// not available.
	HttpTokens *string `locationName:"httpTokens" type:"string" enum:"HttpTokens"`

	// The name of the instance for which to update metadata parameters.
	//
	// InstanceName is a required field
	InstanceName *string `locationName:"instanceName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceMetadataOptionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceMetadataOptionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateInstanceMetadataOptionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateInstanceMetadataOptionsInput"}
	if s.InstanceName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHttpEndpoint sets the HttpEndpoint field's value.
func (s *UpdateInstanceMetadataOptionsInput) SetHttpEndpoint(v string) *UpdateInstanceMetadataOptionsInput {
	s.HttpEndpoint = &v
	return s
}

// SetHttpProtocolIpv6 sets the HttpProtocolIpv6 field's value.
func (s *UpdateInstanceMetadataOptionsInput) SetHttpProtocolIpv6(v string) *UpdateInstanceMetadataOptionsInput {
	s.HttpProtocolIpv6 = &v
	return s
}

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *UpdateInstanceMetadataOptionsInput) SetHttpPutResponseHopLimit(v int64) *UpdateInstanceMetadataOptionsInput {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *UpdateInstanceMetadataOptionsInput) SetHttpTokens(v string) *UpdateInstanceMetadataOptionsInput {
	s.HttpTokens = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *UpdateInstanceMetadataOptionsInput) SetInstanceName(v string) *UpdateInstanceMetadataOptionsInput {
	s.InstanceName = &v
	return s
}

type UpdateInstanceMetadataOptionsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operation *Operation `locationName:"operation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceMetadataOptionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceMetadataOptionsOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *UpdateInstanceMetadataOptionsOutput) SetOperation(v *Operation) *UpdateInstanceMetadataOptionsOutput {
	s.Operation = v
	return s
}

type UpdateLoadBalancerAttributeInput struct {
	_ struct{} `type:"structure"`

	// The name of the attribute you want to update.
	//
	// AttributeName is a required field
	AttributeName *string `locationName:"attributeName" type:"string" required:"true" enum:"LoadBalancerAttributeName"`

	// The value that you want to specify for the attribute name.
	//
	// The following values are supported depending on what you specify for the
	// attributeName request parameter:
	//
	//    * If you specify HealthCheckPath for the attributeName request parameter,
	//    then the attributeValue request parameter must be the path to ping on
	//    the target (for example, /weather/us/wa/seattle).
	//
	//    * If you specify SessionStickinessEnabled for the attributeName request
	//    parameter, then the attributeValue request parameter must be true to activate
	//    session stickiness or false to deactivate session stickiness.
	//
	//    * If you specify SessionStickiness_LB_CookieDurationSeconds for the attributeName
	//    request parameter, then the attributeValue request parameter must be an
	//    interger that represents the cookie duration in seconds.
	//
	//    * If you specify HttpsRedirectionEnabled for the attributeName request
	//    parameter, then the attributeValue request parameter must be true to activate
	//    HTTP to HTTPS redirection or false to deactivate HTTP to HTTPS redirection.
	//
	//    * If you specify TlsPolicyName for the attributeName request parameter,
	//    then the attributeValue request parameter must be the name of the TLS
	//    policy. Use the GetLoadBalancerTlsPolicies (https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetLoadBalancerTlsPolicies.html)
	//    action to get a list of TLS policy names that you can specify.
	//
	// AttributeValue is a required field
	AttributeValue *string `locationName:"attributeValue" min:"1" type:"string" required:"true"`

	// The name of the load balancer that you want to modify (my-load-balancer.
	//
	// LoadBalancerName is a required field
	LoadBalancerName *string `locationName:"loadBalancerName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateLoadBalancerAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateLoadBalancerAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateLoadBalancerAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateLoadBalancerAttributeInput"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.AttributeValue == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeValue"))
	}
	if s.AttributeValue != nil && len(*s.AttributeValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeValue", 1))
	}
	if s.LoadBalancerName == nil {
		invalidParams.Add(request.NewErrParamRequired("LoadBalancerName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *UpdateLoadBalancerAttributeInput) SetAttributeName(v string) *UpdateLoadBalancerAttributeInput {
	s.AttributeName = &v
	return s
}

// SetAttributeValue sets the AttributeValue field's value.
func (s *UpdateLoadBalancerAttributeInput) SetAttributeValue(v string) *UpdateLoadBalancerAttributeInput {
	s.AttributeValue = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *UpdateLoadBalancerAttributeInput) SetLoadBalancerName(v string) *UpdateLoadBalancerAttributeInput {
	s.LoadBalancerName = &v
	return s
}

type UpdateLoadBalancerAttributeOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateLoadBalancerAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateLoadBalancerAttributeOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *UpdateLoadBalancerAttributeOutput) SetOperations(v []*Operation) *UpdateLoadBalancerAttributeOutput {
	s.Operations = v
	return s
}

type UpdateRelationalDatabaseInput struct {
	_ struct{} `type:"structure"`

	// When true, applies changes immediately. When false, applies changes during
	// the preferred maintenance window. Some changes may cause an outage.
	//
	// Default: false
	ApplyImmediately *bool `locationName:"applyImmediately" type:"boolean"`

	// Indicates the certificate that needs to be associated with the database.
	CaCertificateIdentifier *string `locationName:"caCertificateIdentifier" type:"string"`

	// When true, disables automated backup retention for your database.
	//
	// Disabling backup retention deletes all automated database backups. Before
	// disabling this, you may want to create a snapshot of your database using
	// the create relational database snapshot operation.
	//
	// Updates are applied during the next maintenance window because this can result
	// in an outage.
	DisableBackupRetention *bool `locationName:"disableBackupRetention" type:"boolean"`

	// When true, enables automated backup retention for your database.
	//
	// Updates are applied during the next maintenance window because this can result
	// in an outage.
	EnableBackupRetention *bool `locationName:"enableBackupRetention" type:"boolean"`

	// The password for the master user. The password can include any printable
	// ASCII character except "/", """, or "@".
	//
	// MySQL
	//
	// Constraints: Must contain from 8 to 41 characters.
	//
	// PostgreSQL
	//
	// Constraints: Must contain from 8 to 128 characters.
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateRelationalDatabaseInput's
	// String and GoString methods.
	MasterUserPassword *string `locationName:"masterUserPassword" type:"string" sensitive:"true"`

	// The daily time range during which automated backups are created for your
	// database if automated backups are enabled.
	//
	// Constraints:
	//
	//    * Must be in the hh24:mi-hh24:mi format. Example: 16:00-16:30
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `locationName:"preferredBackupWindow" type:"string"`

	// The weekly time range during which system maintenance can occur on your database.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region, occurring on a random day of
	// the week.
	//
	// Constraints:
	//
	//    * Must be in the ddd:hh24:mi-ddd:hh24:mi format.
	//
	//    * Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
	//
	//    * Must be at least 30 minutes.
	//
	//    * Specified in Coordinated Universal Time (UTC).
	//
	//    * Example: Tue:17:00-Tue:17:30
	PreferredMaintenanceWindow *string `locationName:"preferredMaintenanceWindow" type:"string"`

	// Specifies the accessibility options for your database. A value of true specifies
	// a database that is available to resources outside of your Lightsail account.
	// A value of false specifies a database that is available only to your Lightsail
	// resources in the same region as your database.
	PubliclyAccessible *bool `locationName:"publiclyAccessible" type:"boolean"`

	// The name of your Lightsail database resource to update.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`

	// When true, the master user password is changed to a new strong password generated
	// by Lightsail.
	//
	// Use the get relational database master user password operation to get the
	// new password.
	RotateMasterUserPassword *bool `locationName:"rotateMasterUserPassword" 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 UpdateRelationalDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRelationalDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRelationalDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRelationalDatabaseInput"}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *UpdateRelationalDatabaseInput) SetApplyImmediately(v bool) *UpdateRelationalDatabaseInput {
	s.ApplyImmediately = &v
	return s
}

// SetCaCertificateIdentifier sets the CaCertificateIdentifier field's value.
func (s *UpdateRelationalDatabaseInput) SetCaCertificateIdentifier(v string) *UpdateRelationalDatabaseInput {
	s.CaCertificateIdentifier = &v
	return s
}

// SetDisableBackupRetention sets the DisableBackupRetention field's value.
func (s *UpdateRelationalDatabaseInput) SetDisableBackupRetention(v bool) *UpdateRelationalDatabaseInput {
	s.DisableBackupRetention = &v
	return s
}

// SetEnableBackupRetention sets the EnableBackupRetention field's value.
func (s *UpdateRelationalDatabaseInput) SetEnableBackupRetention(v bool) *UpdateRelationalDatabaseInput {
	s.EnableBackupRetention = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *UpdateRelationalDatabaseInput) SetMasterUserPassword(v string) *UpdateRelationalDatabaseInput {
	s.MasterUserPassword = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *UpdateRelationalDatabaseInput) SetPreferredBackupWindow(v string) *UpdateRelationalDatabaseInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *UpdateRelationalDatabaseInput) SetPreferredMaintenanceWindow(v string) *UpdateRelationalDatabaseInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *UpdateRelationalDatabaseInput) SetPubliclyAccessible(v bool) *UpdateRelationalDatabaseInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *UpdateRelationalDatabaseInput) SetRelationalDatabaseName(v string) *UpdateRelationalDatabaseInput {
	s.RelationalDatabaseName = &v
	return s
}

// SetRotateMasterUserPassword sets the RotateMasterUserPassword field's value.
func (s *UpdateRelationalDatabaseInput) SetRotateMasterUserPassword(v bool) *UpdateRelationalDatabaseInput {
	s.RotateMasterUserPassword = &v
	return s
}

type UpdateRelationalDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateRelationalDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRelationalDatabaseOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *UpdateRelationalDatabaseOutput) SetOperations(v []*Operation) *UpdateRelationalDatabaseOutput {
	s.Operations = v
	return s
}

type UpdateRelationalDatabaseParametersInput struct {
	_ struct{} `type:"structure"`

	// The database parameters to update.
	//
	// Parameters is a required field
	Parameters []*RelationalDatabaseParameter `locationName:"parameters" type:"list" required:"true"`

	// The name of your database for which to update parameters.
	//
	// RelationalDatabaseName is a required field
	RelationalDatabaseName *string `locationName:"relationalDatabaseName" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRelationalDatabaseParametersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRelationalDatabaseParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRelationalDatabaseParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRelationalDatabaseParametersInput"}
	if s.Parameters == nil {
		invalidParams.Add(request.NewErrParamRequired("Parameters"))
	}
	if s.RelationalDatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalDatabaseName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParameters sets the Parameters field's value.
func (s *UpdateRelationalDatabaseParametersInput) SetParameters(v []*RelationalDatabaseParameter) *UpdateRelationalDatabaseParametersInput {
	s.Parameters = v
	return s
}

// SetRelationalDatabaseName sets the RelationalDatabaseName field's value.
func (s *UpdateRelationalDatabaseParametersInput) SetRelationalDatabaseName(v string) *UpdateRelationalDatabaseParametersInput {
	s.RelationalDatabaseName = &v
	return s
}

type UpdateRelationalDatabaseParametersOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the result of the action, such as the status
	// of the request, the timestamp of the request, and the resources affected
	// by the request.
	Operations []*Operation `locationName:"operations" 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 UpdateRelationalDatabaseParametersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRelationalDatabaseParametersOutput) GoString() string {
	return s.String()
}

// SetOperations sets the Operations field's value.
func (s *UpdateRelationalDatabaseParametersOutput) SetOperations(v []*Operation) *UpdateRelationalDatabaseParametersOutput {
	s.Operations = v
	return s
}

const (
	// AccessDirectionInbound is a AccessDirection enum value
	AccessDirectionInbound = "inbound"

	// AccessDirectionOutbound is a AccessDirection enum value
	AccessDirectionOutbound = "outbound"
)

// AccessDirection_Values returns all elements of the AccessDirection enum
func AccessDirection_Values() []string {
	return []string{
		AccessDirectionInbound,
		AccessDirectionOutbound,
	}
}

const (
	// AccessTypePublic is a AccessType enum value
	AccessTypePublic = "public"

	// AccessTypePrivate is a AccessType enum value
	AccessTypePrivate = "private"
)

// AccessType_Values returns all elements of the AccessType enum
func AccessType_Values() []string {
	return []string{
		AccessTypePublic,
		AccessTypePrivate,
	}
}

const (
	// AccountLevelBpaSyncStatusInSync is a AccountLevelBpaSyncStatus enum value
	AccountLevelBpaSyncStatusInSync = "InSync"

	// AccountLevelBpaSyncStatusFailed is a AccountLevelBpaSyncStatus enum value
	AccountLevelBpaSyncStatusFailed = "Failed"

	// AccountLevelBpaSyncStatusNeverSynced is a AccountLevelBpaSyncStatus enum value
	AccountLevelBpaSyncStatusNeverSynced = "NeverSynced"

	// AccountLevelBpaSyncStatusDefaulted is a AccountLevelBpaSyncStatus enum value
	AccountLevelBpaSyncStatusDefaulted = "Defaulted"
)

// AccountLevelBpaSyncStatus_Values returns all elements of the AccountLevelBpaSyncStatus enum
func AccountLevelBpaSyncStatus_Values() []string {
	return []string{
		AccountLevelBpaSyncStatusInSync,
		AccountLevelBpaSyncStatusFailed,
		AccountLevelBpaSyncStatusNeverSynced,
		AccountLevelBpaSyncStatusDefaulted,
	}
}

const (
	// AddOnTypeAutoSnapshot is a AddOnType enum value
	AddOnTypeAutoSnapshot = "AutoSnapshot"

	// AddOnTypeStopInstanceOnIdle is a AddOnType enum value
	AddOnTypeStopInstanceOnIdle = "StopInstanceOnIdle"
)

// AddOnType_Values returns all elements of the AddOnType enum
func AddOnType_Values() []string {
	return []string{
		AddOnTypeAutoSnapshot,
		AddOnTypeStopInstanceOnIdle,
	}
}

const (
	// AlarmStateOk is a AlarmState enum value
	AlarmStateOk = "OK"

	// AlarmStateAlarm is a AlarmState enum value
	AlarmStateAlarm = "ALARM"

	// AlarmStateInsufficientData is a AlarmState enum value
	AlarmStateInsufficientData = "INSUFFICIENT_DATA"
)

// AlarmState_Values returns all elements of the AlarmState enum
func AlarmState_Values() []string {
	return []string{
		AlarmStateOk,
		AlarmStateAlarm,
		AlarmStateInsufficientData,
	}
}

const (
	// AppCategoryLfR is a AppCategory enum value
	AppCategoryLfR = "LfR"
)

// AppCategory_Values returns all elements of the AppCategory enum
func AppCategory_Values() []string {
	return []string{
		AppCategoryLfR,
	}
}

const (
	// AutoMountStatusFailed is a AutoMountStatus enum value
	AutoMountStatusFailed = "Failed"

	// AutoMountStatusPending is a AutoMountStatus enum value
	AutoMountStatusPending = "Pending"

	// AutoMountStatusMounted is a AutoMountStatus enum value
	AutoMountStatusMounted = "Mounted"

	// AutoMountStatusNotMounted is a AutoMountStatus enum value
	AutoMountStatusNotMounted = "NotMounted"
)

// AutoMountStatus_Values returns all elements of the AutoMountStatus enum
func AutoMountStatus_Values() []string {
	return []string{
		AutoMountStatusFailed,
		AutoMountStatusPending,
		AutoMountStatusMounted,
		AutoMountStatusNotMounted,
	}
}

const (
	// AutoSnapshotStatusSuccess is a AutoSnapshotStatus enum value
	AutoSnapshotStatusSuccess = "Success"

	// AutoSnapshotStatusFailed is a AutoSnapshotStatus enum value
	AutoSnapshotStatusFailed = "Failed"

	// AutoSnapshotStatusInProgress is a AutoSnapshotStatus enum value
	AutoSnapshotStatusInProgress = "InProgress"

	// AutoSnapshotStatusNotFound is a AutoSnapshotStatus enum value
	AutoSnapshotStatusNotFound = "NotFound"
)

// AutoSnapshotStatus_Values returns all elements of the AutoSnapshotStatus enum
func AutoSnapshotStatus_Values() []string {
	return []string{
		AutoSnapshotStatusSuccess,
		AutoSnapshotStatusFailed,
		AutoSnapshotStatusInProgress,
		AutoSnapshotStatusNotFound,
	}
}

const (
	// BPAStatusMessageDefaultedForSlrMissing is a BPAStatusMessage enum value
	BPAStatusMessageDefaultedForSlrMissing = "DEFAULTED_FOR_SLR_MISSING"

	// BPAStatusMessageSyncOnHold is a BPAStatusMessage enum value
	BPAStatusMessageSyncOnHold = "SYNC_ON_HOLD"

	// BPAStatusMessageDefaultedForSlrMissingOnHold is a BPAStatusMessage enum value
	BPAStatusMessageDefaultedForSlrMissingOnHold = "DEFAULTED_FOR_SLR_MISSING_ON_HOLD"

	// BPAStatusMessageUnknown is a BPAStatusMessage enum value
	BPAStatusMessageUnknown = "Unknown"
)

// BPAStatusMessage_Values returns all elements of the BPAStatusMessage enum
func BPAStatusMessage_Values() []string {
	return []string{
		BPAStatusMessageDefaultedForSlrMissing,
		BPAStatusMessageSyncOnHold,
		BPAStatusMessageDefaultedForSlrMissingOnHold,
		BPAStatusMessageUnknown,
	}
}

const (
	// BehaviorEnumDontCache is a BehaviorEnum enum value
	BehaviorEnumDontCache = "dont-cache"

	// BehaviorEnumCache is a BehaviorEnum enum value
	BehaviorEnumCache = "cache"
)

// BehaviorEnum_Values returns all elements of the BehaviorEnum enum
func BehaviorEnum_Values() []string {
	return []string{
		BehaviorEnumDontCache,
		BehaviorEnumCache,
	}
}

const (
	// BlueprintTypeOs is a BlueprintType enum value
	BlueprintTypeOs = "os"

	// BlueprintTypeApp is a BlueprintType enum value
	BlueprintTypeApp = "app"
)

// BlueprintType_Values returns all elements of the BlueprintType enum
func BlueprintType_Values() []string {
	return []string{
		BlueprintTypeOs,
		BlueprintTypeApp,
	}
}

const (
	// BucketMetricNameBucketSizeBytes is a BucketMetricName enum value
	BucketMetricNameBucketSizeBytes = "BucketSizeBytes"

	// BucketMetricNameNumberOfObjects is a BucketMetricName enum value
	BucketMetricNameNumberOfObjects = "NumberOfObjects"
)

// BucketMetricName_Values returns all elements of the BucketMetricName enum
func BucketMetricName_Values() []string {
	return []string{
		BucketMetricNameBucketSizeBytes,
		BucketMetricNameNumberOfObjects,
	}
}

const (
	// CertificateDomainValidationStatusPendingValidation is a CertificateDomainValidationStatus enum value
	CertificateDomainValidationStatusPendingValidation = "PENDING_VALIDATION"

	// CertificateDomainValidationStatusFailed is a CertificateDomainValidationStatus enum value
	CertificateDomainValidationStatusFailed = "FAILED"

	// CertificateDomainValidationStatusSuccess is a CertificateDomainValidationStatus enum value
	CertificateDomainValidationStatusSuccess = "SUCCESS"
)

// CertificateDomainValidationStatus_Values returns all elements of the CertificateDomainValidationStatus enum
func CertificateDomainValidationStatus_Values() []string {
	return []string{
		CertificateDomainValidationStatusPendingValidation,
		CertificateDomainValidationStatusFailed,
		CertificateDomainValidationStatusSuccess,
	}
}

const (
	// CertificateProviderLetsEncrypt is a CertificateProvider enum value
	CertificateProviderLetsEncrypt = "LetsEncrypt"
)

// CertificateProvider_Values returns all elements of the CertificateProvider enum
func CertificateProvider_Values() []string {
	return []string{
		CertificateProviderLetsEncrypt,
	}
}

const (
	// CertificateStatusPendingValidation is a CertificateStatus enum value
	CertificateStatusPendingValidation = "PENDING_VALIDATION"

	// CertificateStatusIssued is a CertificateStatus enum value
	CertificateStatusIssued = "ISSUED"

	// CertificateStatusInactive is a CertificateStatus enum value
	CertificateStatusInactive = "INACTIVE"

	// CertificateStatusExpired is a CertificateStatus enum value
	CertificateStatusExpired = "EXPIRED"

	// CertificateStatusValidationTimedOut is a CertificateStatus enum value
	CertificateStatusValidationTimedOut = "VALIDATION_TIMED_OUT"

	// CertificateStatusRevoked is a CertificateStatus enum value
	CertificateStatusRevoked = "REVOKED"

	// CertificateStatusFailed is a CertificateStatus enum value
	CertificateStatusFailed = "FAILED"
)

// CertificateStatus_Values returns all elements of the CertificateStatus enum
func CertificateStatus_Values() []string {
	return []string{
		CertificateStatusPendingValidation,
		CertificateStatusIssued,
		CertificateStatusInactive,
		CertificateStatusExpired,
		CertificateStatusValidationTimedOut,
		CertificateStatusRevoked,
		CertificateStatusFailed,
	}
}

const (
	// CloudFormationStackRecordSourceTypeExportSnapshotRecord is a CloudFormationStackRecordSourceType enum value
	CloudFormationStackRecordSourceTypeExportSnapshotRecord = "ExportSnapshotRecord"
)

// CloudFormationStackRecordSourceType_Values returns all elements of the CloudFormationStackRecordSourceType enum
func CloudFormationStackRecordSourceType_Values() []string {
	return []string{
		CloudFormationStackRecordSourceTypeExportSnapshotRecord,
	}
}

const (
	// ComparisonOperatorGreaterThanOrEqualToThreshold is a ComparisonOperator enum value
	ComparisonOperatorGreaterThanOrEqualToThreshold = "GreaterThanOrEqualToThreshold"

	// ComparisonOperatorGreaterThanThreshold is a ComparisonOperator enum value
	ComparisonOperatorGreaterThanThreshold = "GreaterThanThreshold"

	// ComparisonOperatorLessThanThreshold is a ComparisonOperator enum value
	ComparisonOperatorLessThanThreshold = "LessThanThreshold"

	// ComparisonOperatorLessThanOrEqualToThreshold is a ComparisonOperator enum value
	ComparisonOperatorLessThanOrEqualToThreshold = "LessThanOrEqualToThreshold"
)

// ComparisonOperator_Values returns all elements of the ComparisonOperator enum
func ComparisonOperator_Values() []string {
	return []string{
		ComparisonOperatorGreaterThanOrEqualToThreshold,
		ComparisonOperatorGreaterThanThreshold,
		ComparisonOperatorLessThanThreshold,
		ComparisonOperatorLessThanOrEqualToThreshold,
	}
}

const (
	// ContactMethodStatusPendingVerification is a ContactMethodStatus enum value
	ContactMethodStatusPendingVerification = "PendingVerification"

	// ContactMethodStatusValid is a ContactMethodStatus enum value
	ContactMethodStatusValid = "Valid"

	// ContactMethodStatusInvalid is a ContactMethodStatus enum value
	ContactMethodStatusInvalid = "Invalid"
)

// ContactMethodStatus_Values returns all elements of the ContactMethodStatus enum
func ContactMethodStatus_Values() []string {
	return []string{
		ContactMethodStatusPendingVerification,
		ContactMethodStatusValid,
		ContactMethodStatusInvalid,
	}
}

const (
	// ContactMethodVerificationProtocolEmail is a ContactMethodVerificationProtocol enum value
	ContactMethodVerificationProtocolEmail = "Email"
)

// ContactMethodVerificationProtocol_Values returns all elements of the ContactMethodVerificationProtocol enum
func ContactMethodVerificationProtocol_Values() []string {
	return []string{
		ContactMethodVerificationProtocolEmail,
	}
}

const (
	// ContactProtocolEmail is a ContactProtocol enum value
	ContactProtocolEmail = "Email"

	// ContactProtocolSms is a ContactProtocol enum value
	ContactProtocolSms = "SMS"
)

// ContactProtocol_Values returns all elements of the ContactProtocol enum
func ContactProtocol_Values() []string {
	return []string{
		ContactProtocolEmail,
		ContactProtocolSms,
	}
}

const (
	// ContainerServiceDeploymentStateActivating is a ContainerServiceDeploymentState enum value
	ContainerServiceDeploymentStateActivating = "ACTIVATING"

	// ContainerServiceDeploymentStateActive is a ContainerServiceDeploymentState enum value
	ContainerServiceDeploymentStateActive = "ACTIVE"

	// ContainerServiceDeploymentStateInactive is a ContainerServiceDeploymentState enum value
	ContainerServiceDeploymentStateInactive = "INACTIVE"

	// ContainerServiceDeploymentStateFailed is a ContainerServiceDeploymentState enum value
	ContainerServiceDeploymentStateFailed = "FAILED"
)

// ContainerServiceDeploymentState_Values returns all elements of the ContainerServiceDeploymentState enum
func ContainerServiceDeploymentState_Values() []string {
	return []string{
		ContainerServiceDeploymentStateActivating,
		ContainerServiceDeploymentStateActive,
		ContainerServiceDeploymentStateInactive,
		ContainerServiceDeploymentStateFailed,
	}
}

const (
	// ContainerServiceMetricNameCpuutilization is a ContainerServiceMetricName enum value
	ContainerServiceMetricNameCpuutilization = "CPUUtilization"

	// ContainerServiceMetricNameMemoryUtilization is a ContainerServiceMetricName enum value
	ContainerServiceMetricNameMemoryUtilization = "MemoryUtilization"
)

// ContainerServiceMetricName_Values returns all elements of the ContainerServiceMetricName enum
func ContainerServiceMetricName_Values() []string {
	return []string{
		ContainerServiceMetricNameCpuutilization,
		ContainerServiceMetricNameMemoryUtilization,
	}
}

const (
	// ContainerServicePowerNameNano is a ContainerServicePowerName enum value
	ContainerServicePowerNameNano = "nano"

	// ContainerServicePowerNameMicro is a ContainerServicePowerName enum value
	ContainerServicePowerNameMicro = "micro"

	// ContainerServicePowerNameSmall is a ContainerServicePowerName enum value
	ContainerServicePowerNameSmall = "small"

	// ContainerServicePowerNameMedium is a ContainerServicePowerName enum value
	ContainerServicePowerNameMedium = "medium"

	// ContainerServicePowerNameLarge is a ContainerServicePowerName enum value
	ContainerServicePowerNameLarge = "large"

	// ContainerServicePowerNameXlarge is a ContainerServicePowerName enum value
	ContainerServicePowerNameXlarge = "xlarge"
)

// ContainerServicePowerName_Values returns all elements of the ContainerServicePowerName enum
func ContainerServicePowerName_Values() []string {
	return []string{
		ContainerServicePowerNameNano,
		ContainerServicePowerNameMicro,
		ContainerServicePowerNameSmall,
		ContainerServicePowerNameMedium,
		ContainerServicePowerNameLarge,
		ContainerServicePowerNameXlarge,
	}
}

const (
	// ContainerServiceProtocolHttp is a ContainerServiceProtocol enum value
	ContainerServiceProtocolHttp = "HTTP"

	// ContainerServiceProtocolHttps is a ContainerServiceProtocol enum value
	ContainerServiceProtocolHttps = "HTTPS"

	// ContainerServiceProtocolTcp is a ContainerServiceProtocol enum value
	ContainerServiceProtocolTcp = "TCP"

	// ContainerServiceProtocolUdp is a ContainerServiceProtocol enum value
	ContainerServiceProtocolUdp = "UDP"
)

// ContainerServiceProtocol_Values returns all elements of the ContainerServiceProtocol enum
func ContainerServiceProtocol_Values() []string {
	return []string{
		ContainerServiceProtocolHttp,
		ContainerServiceProtocolHttps,
		ContainerServiceProtocolTcp,
		ContainerServiceProtocolUdp,
	}
}

const (
	// ContainerServiceStatePending is a ContainerServiceState enum value
	ContainerServiceStatePending = "PENDING"

	// ContainerServiceStateReady is a ContainerServiceState enum value
	ContainerServiceStateReady = "READY"

	// ContainerServiceStateRunning is a ContainerServiceState enum value
	ContainerServiceStateRunning = "RUNNING"

	// ContainerServiceStateUpdating is a ContainerServiceState enum value
	ContainerServiceStateUpdating = "UPDATING"

	// ContainerServiceStateDeleting is a ContainerServiceState enum value
	ContainerServiceStateDeleting = "DELETING"

	// ContainerServiceStateDisabled is a ContainerServiceState enum value
	ContainerServiceStateDisabled = "DISABLED"

	// ContainerServiceStateDeploying is a ContainerServiceState enum value
	ContainerServiceStateDeploying = "DEPLOYING"
)

// ContainerServiceState_Values returns all elements of the ContainerServiceState enum
func ContainerServiceState_Values() []string {
	return []string{
		ContainerServiceStatePending,
		ContainerServiceStateReady,
		ContainerServiceStateRunning,
		ContainerServiceStateUpdating,
		ContainerServiceStateDeleting,
		ContainerServiceStateDisabled,
		ContainerServiceStateDeploying,
	}
}

const (
	// ContainerServiceStateDetailCodeCreatingSystemResources is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeCreatingSystemResources = "CREATING_SYSTEM_RESOURCES"

	// ContainerServiceStateDetailCodeCreatingNetworkInfrastructure is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeCreatingNetworkInfrastructure = "CREATING_NETWORK_INFRASTRUCTURE"

	// ContainerServiceStateDetailCodeProvisioningCertificate is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeProvisioningCertificate = "PROVISIONING_CERTIFICATE"

	// ContainerServiceStateDetailCodeProvisioningService is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeProvisioningService = "PROVISIONING_SERVICE"

	// ContainerServiceStateDetailCodeCreatingDeployment is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeCreatingDeployment = "CREATING_DEPLOYMENT"

	// ContainerServiceStateDetailCodeEvaluatingHealthCheck is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeEvaluatingHealthCheck = "EVALUATING_HEALTH_CHECK"

	// ContainerServiceStateDetailCodeActivatingDeployment is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeActivatingDeployment = "ACTIVATING_DEPLOYMENT"

	// ContainerServiceStateDetailCodeCertificateLimitExceeded is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeCertificateLimitExceeded = "CERTIFICATE_LIMIT_EXCEEDED"

	// ContainerServiceStateDetailCodeUnknownError is a ContainerServiceStateDetailCode enum value
	ContainerServiceStateDetailCodeUnknownError = "UNKNOWN_ERROR"
)

// ContainerServiceStateDetailCode_Values returns all elements of the ContainerServiceStateDetailCode enum
func ContainerServiceStateDetailCode_Values() []string {
	return []string{
		ContainerServiceStateDetailCodeCreatingSystemResources,
		ContainerServiceStateDetailCodeCreatingNetworkInfrastructure,
		ContainerServiceStateDetailCodeProvisioningCertificate,
		ContainerServiceStateDetailCodeProvisioningService,
		ContainerServiceStateDetailCodeCreatingDeployment,
		ContainerServiceStateDetailCodeEvaluatingHealthCheck,
		ContainerServiceStateDetailCodeActivatingDeployment,
		ContainerServiceStateDetailCodeCertificateLimitExceeded,
		ContainerServiceStateDetailCodeUnknownError,
	}
}

const (
	// CurrencyUsd is a Currency enum value
	CurrencyUsd = "USD"
)

// Currency_Values returns all elements of the Currency enum
func Currency_Values() []string {
	return []string{
		CurrencyUsd,
	}
}

const (
	// DiskSnapshotStatePending is a DiskSnapshotState enum value
	DiskSnapshotStatePending = "pending"

	// DiskSnapshotStateCompleted is a DiskSnapshotState enum value
	DiskSnapshotStateCompleted = "completed"

	// DiskSnapshotStateError is a DiskSnapshotState enum value
	DiskSnapshotStateError = "error"

	// DiskSnapshotStateUnknown is a DiskSnapshotState enum value
	DiskSnapshotStateUnknown = "unknown"
)

// DiskSnapshotState_Values returns all elements of the DiskSnapshotState enum
func DiskSnapshotState_Values() []string {
	return []string{
		DiskSnapshotStatePending,
		DiskSnapshotStateCompleted,
		DiskSnapshotStateError,
		DiskSnapshotStateUnknown,
	}
}

const (
	// DiskStatePending is a DiskState enum value
	DiskStatePending = "pending"

	// DiskStateError is a DiskState enum value
	DiskStateError = "error"

	// DiskStateAvailable is a DiskState enum value
	DiskStateAvailable = "available"

	// DiskStateInUse is a DiskState enum value
	DiskStateInUse = "in-use"

	// DiskStateUnknown is a DiskState enum value
	DiskStateUnknown = "unknown"
)

// DiskState_Values returns all elements of the DiskState enum
func DiskState_Values() []string {
	return []string{
		DiskStatePending,
		DiskStateError,
		DiskStateAvailable,
		DiskStateInUse,
		DiskStateUnknown,
	}
}

const (
	// DistributionMetricNameRequests is a DistributionMetricName enum value
	DistributionMetricNameRequests = "Requests"

	// DistributionMetricNameBytesDownloaded is a DistributionMetricName enum value
	DistributionMetricNameBytesDownloaded = "BytesDownloaded"

	// DistributionMetricNameBytesUploaded is a DistributionMetricName enum value
	DistributionMetricNameBytesUploaded = "BytesUploaded"

	// DistributionMetricNameTotalErrorRate is a DistributionMetricName enum value
	DistributionMetricNameTotalErrorRate = "TotalErrorRate"

	// DistributionMetricNameHttp4xxErrorRate is a DistributionMetricName enum value
	DistributionMetricNameHttp4xxErrorRate = "Http4xxErrorRate"

	// DistributionMetricNameHttp5xxErrorRate is a DistributionMetricName enum value
	DistributionMetricNameHttp5xxErrorRate = "Http5xxErrorRate"
)

// DistributionMetricName_Values returns all elements of the DistributionMetricName enum
func DistributionMetricName_Values() []string {
	return []string{
		DistributionMetricNameRequests,
		DistributionMetricNameBytesDownloaded,
		DistributionMetricNameBytesUploaded,
		DistributionMetricNameTotalErrorRate,
		DistributionMetricNameHttp4xxErrorRate,
		DistributionMetricNameHttp5xxErrorRate,
	}
}

const (
	// DnsRecordCreationStateCodeSucceeded is a DnsRecordCreationStateCode enum value
	DnsRecordCreationStateCodeSucceeded = "SUCCEEDED"

	// DnsRecordCreationStateCodeStarted is a DnsRecordCreationStateCode enum value
	DnsRecordCreationStateCodeStarted = "STARTED"

	// DnsRecordCreationStateCodeFailed is a DnsRecordCreationStateCode enum value
	DnsRecordCreationStateCodeFailed = "FAILED"
)

// DnsRecordCreationStateCode_Values returns all elements of the DnsRecordCreationStateCode enum
func DnsRecordCreationStateCode_Values() []string {
	return []string{
		DnsRecordCreationStateCodeSucceeded,
		DnsRecordCreationStateCodeStarted,
		DnsRecordCreationStateCodeFailed,
	}
}

const (
	// ExportSnapshotRecordSourceTypeInstanceSnapshot is a ExportSnapshotRecordSourceType enum value
	ExportSnapshotRecordSourceTypeInstanceSnapshot = "InstanceSnapshot"

	// ExportSnapshotRecordSourceTypeDiskSnapshot is a ExportSnapshotRecordSourceType enum value
	ExportSnapshotRecordSourceTypeDiskSnapshot = "DiskSnapshot"
)

// ExportSnapshotRecordSourceType_Values returns all elements of the ExportSnapshotRecordSourceType enum
func ExportSnapshotRecordSourceType_Values() []string {
	return []string{
		ExportSnapshotRecordSourceTypeInstanceSnapshot,
		ExportSnapshotRecordSourceTypeDiskSnapshot,
	}
}

const (
	// ForwardValuesNone is a ForwardValues enum value
	ForwardValuesNone = "none"

	// ForwardValuesAllowList is a ForwardValues enum value
	ForwardValuesAllowList = "allow-list"

	// ForwardValuesAll is a ForwardValues enum value
	ForwardValuesAll = "all"
)

// ForwardValues_Values returns all elements of the ForwardValues enum
func ForwardValues_Values() []string {
	return []string{
		ForwardValuesNone,
		ForwardValuesAllowList,
		ForwardValuesAll,
	}
}

const (
	// HeaderEnumAccept is a HeaderEnum enum value
	HeaderEnumAccept = "Accept"

	// HeaderEnumAcceptCharset is a HeaderEnum enum value
	HeaderEnumAcceptCharset = "Accept-Charset"

	// HeaderEnumAcceptDatetime is a HeaderEnum enum value
	HeaderEnumAcceptDatetime = "Accept-Datetime"

	// HeaderEnumAcceptEncoding is a HeaderEnum enum value
	HeaderEnumAcceptEncoding = "Accept-Encoding"

	// HeaderEnumAcceptLanguage is a HeaderEnum enum value
	HeaderEnumAcceptLanguage = "Accept-Language"

	// HeaderEnumAuthorization is a HeaderEnum enum value
	HeaderEnumAuthorization = "Authorization"

	// HeaderEnumCloudFrontForwardedProto is a HeaderEnum enum value
	HeaderEnumCloudFrontForwardedProto = "CloudFront-Forwarded-Proto"

	// HeaderEnumCloudFrontIsDesktopViewer is a HeaderEnum enum value
	HeaderEnumCloudFrontIsDesktopViewer = "CloudFront-Is-Desktop-Viewer"

	// HeaderEnumCloudFrontIsMobileViewer is a HeaderEnum enum value
	HeaderEnumCloudFrontIsMobileViewer = "CloudFront-Is-Mobile-Viewer"

	// HeaderEnumCloudFrontIsSmartTvViewer is a HeaderEnum enum value
	HeaderEnumCloudFrontIsSmartTvViewer = "CloudFront-Is-SmartTV-Viewer"

	// HeaderEnumCloudFrontIsTabletViewer is a HeaderEnum enum value
	HeaderEnumCloudFrontIsTabletViewer = "CloudFront-Is-Tablet-Viewer"

	// HeaderEnumCloudFrontViewerCountry is a HeaderEnum enum value
	HeaderEnumCloudFrontViewerCountry = "CloudFront-Viewer-Country"

	// HeaderEnumHost is a HeaderEnum enum value
	HeaderEnumHost = "Host"

	// HeaderEnumOrigin is a HeaderEnum enum value
	HeaderEnumOrigin = "Origin"

	// HeaderEnumReferer is a HeaderEnum enum value
	HeaderEnumReferer = "Referer"
)

// HeaderEnum_Values returns all elements of the HeaderEnum enum
func HeaderEnum_Values() []string {
	return []string{
		HeaderEnumAccept,
		HeaderEnumAcceptCharset,
		HeaderEnumAcceptDatetime,
		HeaderEnumAcceptEncoding,
		HeaderEnumAcceptLanguage,
		HeaderEnumAuthorization,
		HeaderEnumCloudFrontForwardedProto,
		HeaderEnumCloudFrontIsDesktopViewer,
		HeaderEnumCloudFrontIsMobileViewer,
		HeaderEnumCloudFrontIsSmartTvViewer,
		HeaderEnumCloudFrontIsTabletViewer,
		HeaderEnumCloudFrontViewerCountry,
		HeaderEnumHost,
		HeaderEnumOrigin,
		HeaderEnumReferer,
	}
}

const (
	// HttpEndpointDisabled is a HttpEndpoint enum value
	HttpEndpointDisabled = "disabled"

	// HttpEndpointEnabled is a HttpEndpoint enum value
	HttpEndpointEnabled = "enabled"
)

// HttpEndpoint_Values returns all elements of the HttpEndpoint enum
func HttpEndpoint_Values() []string {
	return []string{
		HttpEndpointDisabled,
		HttpEndpointEnabled,
	}
}

const (
	// HttpProtocolIpv6Disabled is a HttpProtocolIpv6 enum value
	HttpProtocolIpv6Disabled = "disabled"

	// HttpProtocolIpv6Enabled is a HttpProtocolIpv6 enum value
	HttpProtocolIpv6Enabled = "enabled"
)

// HttpProtocolIpv6_Values returns all elements of the HttpProtocolIpv6 enum
func HttpProtocolIpv6_Values() []string {
	return []string{
		HttpProtocolIpv6Disabled,
		HttpProtocolIpv6Enabled,
	}
}

const (
	// HttpTokensOptional is a HttpTokens enum value
	HttpTokensOptional = "optional"

	// HttpTokensRequired is a HttpTokens enum value
	HttpTokensRequired = "required"
)

// HttpTokens_Values returns all elements of the HttpTokens enum
func HttpTokens_Values() []string {
	return []string{
		HttpTokensOptional,
		HttpTokensRequired,
	}
}

const (
	// InstanceAccessProtocolSsh is a InstanceAccessProtocol enum value
	InstanceAccessProtocolSsh = "ssh"

	// InstanceAccessProtocolRdp is a InstanceAccessProtocol enum value
	InstanceAccessProtocolRdp = "rdp"
)

// InstanceAccessProtocol_Values returns all elements of the InstanceAccessProtocol enum
func InstanceAccessProtocol_Values() []string {
	return []string{
		InstanceAccessProtocolSsh,
		InstanceAccessProtocolRdp,
	}
}

const (
	// InstanceHealthReasonLbRegistrationInProgress is a InstanceHealthReason enum value
	InstanceHealthReasonLbRegistrationInProgress = "Lb.RegistrationInProgress"

	// InstanceHealthReasonLbInitialHealthChecking is a InstanceHealthReason enum value
	InstanceHealthReasonLbInitialHealthChecking = "Lb.InitialHealthChecking"

	// InstanceHealthReasonLbInternalError is a InstanceHealthReason enum value
	InstanceHealthReasonLbInternalError = "Lb.InternalError"

	// InstanceHealthReasonInstanceResponseCodeMismatch is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceResponseCodeMismatch = "Instance.ResponseCodeMismatch"

	// InstanceHealthReasonInstanceTimeout is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceTimeout = "Instance.Timeout"

	// InstanceHealthReasonInstanceFailedHealthChecks is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceFailedHealthChecks = "Instance.FailedHealthChecks"

	// InstanceHealthReasonInstanceNotRegistered is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceNotRegistered = "Instance.NotRegistered"

	// InstanceHealthReasonInstanceNotInUse is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceNotInUse = "Instance.NotInUse"

	// InstanceHealthReasonInstanceDeregistrationInProgress is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceDeregistrationInProgress = "Instance.DeregistrationInProgress"

	// InstanceHealthReasonInstanceInvalidState is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceInvalidState = "Instance.InvalidState"

	// InstanceHealthReasonInstanceIpUnusable is a InstanceHealthReason enum value
	InstanceHealthReasonInstanceIpUnusable = "Instance.IpUnusable"
)

// InstanceHealthReason_Values returns all elements of the InstanceHealthReason enum
func InstanceHealthReason_Values() []string {
	return []string{
		InstanceHealthReasonLbRegistrationInProgress,
		InstanceHealthReasonLbInitialHealthChecking,
		InstanceHealthReasonLbInternalError,
		InstanceHealthReasonInstanceResponseCodeMismatch,
		InstanceHealthReasonInstanceTimeout,
		InstanceHealthReasonInstanceFailedHealthChecks,
		InstanceHealthReasonInstanceNotRegistered,
		InstanceHealthReasonInstanceNotInUse,
		InstanceHealthReasonInstanceDeregistrationInProgress,
		InstanceHealthReasonInstanceInvalidState,
		InstanceHealthReasonInstanceIpUnusable,
	}
}

const (
	// InstanceHealthStateInitial is a InstanceHealthState enum value
	InstanceHealthStateInitial = "initial"

	// InstanceHealthStateHealthy is a InstanceHealthState enum value
	InstanceHealthStateHealthy = "healthy"

	// InstanceHealthStateUnhealthy is a InstanceHealthState enum value
	InstanceHealthStateUnhealthy = "unhealthy"

	// InstanceHealthStateUnused is a InstanceHealthState enum value
	InstanceHealthStateUnused = "unused"

	// InstanceHealthStateDraining is a InstanceHealthState enum value
	InstanceHealthStateDraining = "draining"

	// InstanceHealthStateUnavailable is a InstanceHealthState enum value
	InstanceHealthStateUnavailable = "unavailable"
)

// InstanceHealthState_Values returns all elements of the InstanceHealthState enum
func InstanceHealthState_Values() []string {
	return []string{
		InstanceHealthStateInitial,
		InstanceHealthStateHealthy,
		InstanceHealthStateUnhealthy,
		InstanceHealthStateUnused,
		InstanceHealthStateDraining,
		InstanceHealthStateUnavailable,
	}
}

const (
	// InstanceMetadataStatePending is a InstanceMetadataState enum value
	InstanceMetadataStatePending = "pending"

	// InstanceMetadataStateApplied is a InstanceMetadataState enum value
	InstanceMetadataStateApplied = "applied"
)

// InstanceMetadataState_Values returns all elements of the InstanceMetadataState enum
func InstanceMetadataState_Values() []string {
	return []string{
		InstanceMetadataStatePending,
		InstanceMetadataStateApplied,
	}
}

const (
	// InstanceMetricNameCpuutilization is a InstanceMetricName enum value
	InstanceMetricNameCpuutilization = "CPUUtilization"

	// InstanceMetricNameNetworkIn is a InstanceMetricName enum value
	InstanceMetricNameNetworkIn = "NetworkIn"

	// InstanceMetricNameNetworkOut is a InstanceMetricName enum value
	InstanceMetricNameNetworkOut = "NetworkOut"

	// InstanceMetricNameStatusCheckFailed is a InstanceMetricName enum value
	InstanceMetricNameStatusCheckFailed = "StatusCheckFailed"

	// InstanceMetricNameStatusCheckFailedInstance is a InstanceMetricName enum value
	InstanceMetricNameStatusCheckFailedInstance = "StatusCheckFailed_Instance"

	// InstanceMetricNameStatusCheckFailedSystem is a InstanceMetricName enum value
	InstanceMetricNameStatusCheckFailedSystem = "StatusCheckFailed_System"

	// InstanceMetricNameBurstCapacityTime is a InstanceMetricName enum value
	InstanceMetricNameBurstCapacityTime = "BurstCapacityTime"

	// InstanceMetricNameBurstCapacityPercentage is a InstanceMetricName enum value
	InstanceMetricNameBurstCapacityPercentage = "BurstCapacityPercentage"

	// InstanceMetricNameMetadataNoToken is a InstanceMetricName enum value
	InstanceMetricNameMetadataNoToken = "MetadataNoToken"
)

// InstanceMetricName_Values returns all elements of the InstanceMetricName enum
func InstanceMetricName_Values() []string {
	return []string{
		InstanceMetricNameCpuutilization,
		InstanceMetricNameNetworkIn,
		InstanceMetricNameNetworkOut,
		InstanceMetricNameStatusCheckFailed,
		InstanceMetricNameStatusCheckFailedInstance,
		InstanceMetricNameStatusCheckFailedSystem,
		InstanceMetricNameBurstCapacityTime,
		InstanceMetricNameBurstCapacityPercentage,
		InstanceMetricNameMetadataNoToken,
	}
}

const (
	// InstancePlatformLinuxUnix is a InstancePlatform enum value
	InstancePlatformLinuxUnix = "LINUX_UNIX"

	// InstancePlatformWindows is a InstancePlatform enum value
	InstancePlatformWindows = "WINDOWS"
)

// InstancePlatform_Values returns all elements of the InstancePlatform enum
func InstancePlatform_Values() []string {
	return []string{
		InstancePlatformLinuxUnix,
		InstancePlatformWindows,
	}
}

const (
	// InstanceSnapshotStatePending is a InstanceSnapshotState enum value
	InstanceSnapshotStatePending = "pending"

	// InstanceSnapshotStateError is a InstanceSnapshotState enum value
	InstanceSnapshotStateError = "error"

	// InstanceSnapshotStateAvailable is a InstanceSnapshotState enum value
	InstanceSnapshotStateAvailable = "available"
)

// InstanceSnapshotState_Values returns all elements of the InstanceSnapshotState enum
func InstanceSnapshotState_Values() []string {
	return []string{
		InstanceSnapshotStatePending,
		InstanceSnapshotStateError,
		InstanceSnapshotStateAvailable,
	}
}

const (
	// IpAddressTypeDualstack is a IpAddressType enum value
	IpAddressTypeDualstack = "dualstack"

	// IpAddressTypeIpv4 is a IpAddressType enum value
	IpAddressTypeIpv4 = "ipv4"
)

// IpAddressType_Values returns all elements of the IpAddressType enum
func IpAddressType_Values() []string {
	return []string{
		IpAddressTypeDualstack,
		IpAddressTypeIpv4,
	}
}

const (
	// LoadBalancerAttributeNameHealthCheckPath is a LoadBalancerAttributeName enum value
	LoadBalancerAttributeNameHealthCheckPath = "HealthCheckPath"

	// LoadBalancerAttributeNameSessionStickinessEnabled is a LoadBalancerAttributeName enum value
	LoadBalancerAttributeNameSessionStickinessEnabled = "SessionStickinessEnabled"

	// LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds is a LoadBalancerAttributeName enum value
	LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds = "SessionStickiness_LB_CookieDurationSeconds"

	// LoadBalancerAttributeNameHttpsRedirectionEnabled is a LoadBalancerAttributeName enum value
	LoadBalancerAttributeNameHttpsRedirectionEnabled = "HttpsRedirectionEnabled"

	// LoadBalancerAttributeNameTlsPolicyName is a LoadBalancerAttributeName enum value
	LoadBalancerAttributeNameTlsPolicyName = "TlsPolicyName"
)

// LoadBalancerAttributeName_Values returns all elements of the LoadBalancerAttributeName enum
func LoadBalancerAttributeName_Values() []string {
	return []string{
		LoadBalancerAttributeNameHealthCheckPath,
		LoadBalancerAttributeNameSessionStickinessEnabled,
		LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds,
		LoadBalancerAttributeNameHttpsRedirectionEnabled,
		LoadBalancerAttributeNameTlsPolicyName,
	}
}

const (
	// LoadBalancerMetricNameClientTlsnegotiationErrorCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameClientTlsnegotiationErrorCount = "ClientTLSNegotiationErrorCount"

	// LoadBalancerMetricNameHealthyHostCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHealthyHostCount = "HealthyHostCount"

	// LoadBalancerMetricNameUnhealthyHostCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameUnhealthyHostCount = "UnhealthyHostCount"

	// LoadBalancerMetricNameHttpcodeLb4xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeLb4xxCount = "HTTPCode_LB_4XX_Count"

	// LoadBalancerMetricNameHttpcodeLb5xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeLb5xxCount = "HTTPCode_LB_5XX_Count"

	// LoadBalancerMetricNameHttpcodeInstance2xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeInstance2xxCount = "HTTPCode_Instance_2XX_Count"

	// LoadBalancerMetricNameHttpcodeInstance3xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeInstance3xxCount = "HTTPCode_Instance_3XX_Count"

	// LoadBalancerMetricNameHttpcodeInstance4xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeInstance4xxCount = "HTTPCode_Instance_4XX_Count"

	// LoadBalancerMetricNameHttpcodeInstance5xxCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameHttpcodeInstance5xxCount = "HTTPCode_Instance_5XX_Count"

	// LoadBalancerMetricNameInstanceResponseTime is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameInstanceResponseTime = "InstanceResponseTime"

	// LoadBalancerMetricNameRejectedConnectionCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameRejectedConnectionCount = "RejectedConnectionCount"

	// LoadBalancerMetricNameRequestCount is a LoadBalancerMetricName enum value
	LoadBalancerMetricNameRequestCount = "RequestCount"
)

// LoadBalancerMetricName_Values returns all elements of the LoadBalancerMetricName enum
func LoadBalancerMetricName_Values() []string {
	return []string{
		LoadBalancerMetricNameClientTlsnegotiationErrorCount,
		LoadBalancerMetricNameHealthyHostCount,
		LoadBalancerMetricNameUnhealthyHostCount,
		LoadBalancerMetricNameHttpcodeLb4xxCount,
		LoadBalancerMetricNameHttpcodeLb5xxCount,
		LoadBalancerMetricNameHttpcodeInstance2xxCount,
		LoadBalancerMetricNameHttpcodeInstance3xxCount,
		LoadBalancerMetricNameHttpcodeInstance4xxCount,
		LoadBalancerMetricNameHttpcodeInstance5xxCount,
		LoadBalancerMetricNameInstanceResponseTime,
		LoadBalancerMetricNameRejectedConnectionCount,
		LoadBalancerMetricNameRequestCount,
	}
}

const (
	// LoadBalancerProtocolHttpHttps is a LoadBalancerProtocol enum value
	LoadBalancerProtocolHttpHttps = "HTTP_HTTPS"

	// LoadBalancerProtocolHttp is a LoadBalancerProtocol enum value
	LoadBalancerProtocolHttp = "HTTP"
)

// LoadBalancerProtocol_Values returns all elements of the LoadBalancerProtocol enum
func LoadBalancerProtocol_Values() []string {
	return []string{
		LoadBalancerProtocolHttpHttps,
		LoadBalancerProtocolHttp,
	}
}

const (
	// LoadBalancerStateActive is a LoadBalancerState enum value
	LoadBalancerStateActive = "active"

	// LoadBalancerStateProvisioning is a LoadBalancerState enum value
	LoadBalancerStateProvisioning = "provisioning"

	// LoadBalancerStateActiveImpaired is a LoadBalancerState enum value
	LoadBalancerStateActiveImpaired = "active_impaired"

	// LoadBalancerStateFailed is a LoadBalancerState enum value
	LoadBalancerStateFailed = "failed"

	// LoadBalancerStateUnknown is a LoadBalancerState enum value
	LoadBalancerStateUnknown = "unknown"
)

// LoadBalancerState_Values returns all elements of the LoadBalancerState enum
func LoadBalancerState_Values() []string {
	return []string{
		LoadBalancerStateActive,
		LoadBalancerStateProvisioning,
		LoadBalancerStateActiveImpaired,
		LoadBalancerStateFailed,
		LoadBalancerStateUnknown,
	}
}

const (
	// LoadBalancerTlsCertificateDnsRecordCreationStateCodeSucceeded is a LoadBalancerTlsCertificateDnsRecordCreationStateCode enum value
	LoadBalancerTlsCertificateDnsRecordCreationStateCodeSucceeded = "SUCCEEDED"

	// LoadBalancerTlsCertificateDnsRecordCreationStateCodeStarted is a LoadBalancerTlsCertificateDnsRecordCreationStateCode enum value
	LoadBalancerTlsCertificateDnsRecordCreationStateCodeStarted = "STARTED"

	// LoadBalancerTlsCertificateDnsRecordCreationStateCodeFailed is a LoadBalancerTlsCertificateDnsRecordCreationStateCode enum value
	LoadBalancerTlsCertificateDnsRecordCreationStateCodeFailed = "FAILED"
)

// LoadBalancerTlsCertificateDnsRecordCreationStateCode_Values returns all elements of the LoadBalancerTlsCertificateDnsRecordCreationStateCode enum
func LoadBalancerTlsCertificateDnsRecordCreationStateCode_Values() []string {
	return []string{
		LoadBalancerTlsCertificateDnsRecordCreationStateCodeSucceeded,
		LoadBalancerTlsCertificateDnsRecordCreationStateCodeStarted,
		LoadBalancerTlsCertificateDnsRecordCreationStateCodeFailed,
	}
}

const (
	// LoadBalancerTlsCertificateDomainStatusPendingValidation is a LoadBalancerTlsCertificateDomainStatus enum value
	LoadBalancerTlsCertificateDomainStatusPendingValidation = "PENDING_VALIDATION"

	// LoadBalancerTlsCertificateDomainStatusFailed is a LoadBalancerTlsCertificateDomainStatus enum value
	LoadBalancerTlsCertificateDomainStatusFailed = "FAILED"

	// LoadBalancerTlsCertificateDomainStatusSuccess is a LoadBalancerTlsCertificateDomainStatus enum value
	LoadBalancerTlsCertificateDomainStatusSuccess = "SUCCESS"
)

// LoadBalancerTlsCertificateDomainStatus_Values returns all elements of the LoadBalancerTlsCertificateDomainStatus enum
func LoadBalancerTlsCertificateDomainStatus_Values() []string {
	return []string{
		LoadBalancerTlsCertificateDomainStatusPendingValidation,
		LoadBalancerTlsCertificateDomainStatusFailed,
		LoadBalancerTlsCertificateDomainStatusSuccess,
	}
}

const (
	// LoadBalancerTlsCertificateFailureReasonNoAvailableContacts is a LoadBalancerTlsCertificateFailureReason enum value
	LoadBalancerTlsCertificateFailureReasonNoAvailableContacts = "NO_AVAILABLE_CONTACTS"

	// LoadBalancerTlsCertificateFailureReasonAdditionalVerificationRequired is a LoadBalancerTlsCertificateFailureReason enum value
	LoadBalancerTlsCertificateFailureReasonAdditionalVerificationRequired = "ADDITIONAL_VERIFICATION_REQUIRED"

	// LoadBalancerTlsCertificateFailureReasonDomainNotAllowed is a LoadBalancerTlsCertificateFailureReason enum value
	LoadBalancerTlsCertificateFailureReasonDomainNotAllowed = "DOMAIN_NOT_ALLOWED"

	// LoadBalancerTlsCertificateFailureReasonInvalidPublicDomain is a LoadBalancerTlsCertificateFailureReason enum value
	LoadBalancerTlsCertificateFailureReasonInvalidPublicDomain = "INVALID_PUBLIC_DOMAIN"

	// LoadBalancerTlsCertificateFailureReasonOther is a LoadBalancerTlsCertificateFailureReason enum value
	LoadBalancerTlsCertificateFailureReasonOther = "OTHER"
)

// LoadBalancerTlsCertificateFailureReason_Values returns all elements of the LoadBalancerTlsCertificateFailureReason enum
func LoadBalancerTlsCertificateFailureReason_Values() []string {
	return []string{
		LoadBalancerTlsCertificateFailureReasonNoAvailableContacts,
		LoadBalancerTlsCertificateFailureReasonAdditionalVerificationRequired,
		LoadBalancerTlsCertificateFailureReasonDomainNotAllowed,
		LoadBalancerTlsCertificateFailureReasonInvalidPublicDomain,
		LoadBalancerTlsCertificateFailureReasonOther,
	}
}

const (
	// LoadBalancerTlsCertificateRenewalStatusPendingAutoRenewal is a LoadBalancerTlsCertificateRenewalStatus enum value
	LoadBalancerTlsCertificateRenewalStatusPendingAutoRenewal = "PENDING_AUTO_RENEWAL"

	// LoadBalancerTlsCertificateRenewalStatusPendingValidation is a LoadBalancerTlsCertificateRenewalStatus enum value
	LoadBalancerTlsCertificateRenewalStatusPendingValidation = "PENDING_VALIDATION"

	// LoadBalancerTlsCertificateRenewalStatusSuccess is a LoadBalancerTlsCertificateRenewalStatus enum value
	LoadBalancerTlsCertificateRenewalStatusSuccess = "SUCCESS"

	// LoadBalancerTlsCertificateRenewalStatusFailed is a LoadBalancerTlsCertificateRenewalStatus enum value
	LoadBalancerTlsCertificateRenewalStatusFailed = "FAILED"
)

// LoadBalancerTlsCertificateRenewalStatus_Values returns all elements of the LoadBalancerTlsCertificateRenewalStatus enum
func LoadBalancerTlsCertificateRenewalStatus_Values() []string {
	return []string{
		LoadBalancerTlsCertificateRenewalStatusPendingAutoRenewal,
		LoadBalancerTlsCertificateRenewalStatusPendingValidation,
		LoadBalancerTlsCertificateRenewalStatusSuccess,
		LoadBalancerTlsCertificateRenewalStatusFailed,
	}
}

const (
	// LoadBalancerTlsCertificateRevocationReasonUnspecified is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonUnspecified = "UNSPECIFIED"

	// LoadBalancerTlsCertificateRevocationReasonKeyCompromise is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonKeyCompromise = "KEY_COMPROMISE"

	// LoadBalancerTlsCertificateRevocationReasonCaCompromise is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonCaCompromise = "CA_COMPROMISE"

	// LoadBalancerTlsCertificateRevocationReasonAffiliationChanged is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonAffiliationChanged = "AFFILIATION_CHANGED"

	// LoadBalancerTlsCertificateRevocationReasonSuperceded is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonSuperceded = "SUPERCEDED"

	// LoadBalancerTlsCertificateRevocationReasonCessationOfOperation is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonCessationOfOperation = "CESSATION_OF_OPERATION"

	// LoadBalancerTlsCertificateRevocationReasonCertificateHold is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonCertificateHold = "CERTIFICATE_HOLD"

	// LoadBalancerTlsCertificateRevocationReasonRemoveFromCrl is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonRemoveFromCrl = "REMOVE_FROM_CRL"

	// LoadBalancerTlsCertificateRevocationReasonPrivilegeWithdrawn is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonPrivilegeWithdrawn = "PRIVILEGE_WITHDRAWN"

	// LoadBalancerTlsCertificateRevocationReasonAACompromise is a LoadBalancerTlsCertificateRevocationReason enum value
	LoadBalancerTlsCertificateRevocationReasonAACompromise = "A_A_COMPROMISE"
)

// LoadBalancerTlsCertificateRevocationReason_Values returns all elements of the LoadBalancerTlsCertificateRevocationReason enum
func LoadBalancerTlsCertificateRevocationReason_Values() []string {
	return []string{
		LoadBalancerTlsCertificateRevocationReasonUnspecified,
		LoadBalancerTlsCertificateRevocationReasonKeyCompromise,
		LoadBalancerTlsCertificateRevocationReasonCaCompromise,
		LoadBalancerTlsCertificateRevocationReasonAffiliationChanged,
		LoadBalancerTlsCertificateRevocationReasonSuperceded,
		LoadBalancerTlsCertificateRevocationReasonCessationOfOperation,
		LoadBalancerTlsCertificateRevocationReasonCertificateHold,
		LoadBalancerTlsCertificateRevocationReasonRemoveFromCrl,
		LoadBalancerTlsCertificateRevocationReasonPrivilegeWithdrawn,
		LoadBalancerTlsCertificateRevocationReasonAACompromise,
	}
}

const (
	// LoadBalancerTlsCertificateStatusPendingValidation is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusPendingValidation = "PENDING_VALIDATION"

	// LoadBalancerTlsCertificateStatusIssued is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusIssued = "ISSUED"

	// LoadBalancerTlsCertificateStatusInactive is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusInactive = "INACTIVE"

	// LoadBalancerTlsCertificateStatusExpired is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusExpired = "EXPIRED"

	// LoadBalancerTlsCertificateStatusValidationTimedOut is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusValidationTimedOut = "VALIDATION_TIMED_OUT"

	// LoadBalancerTlsCertificateStatusRevoked is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusRevoked = "REVOKED"

	// LoadBalancerTlsCertificateStatusFailed is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusFailed = "FAILED"

	// LoadBalancerTlsCertificateStatusUnknown is a LoadBalancerTlsCertificateStatus enum value
	LoadBalancerTlsCertificateStatusUnknown = "UNKNOWN"
)

// LoadBalancerTlsCertificateStatus_Values returns all elements of the LoadBalancerTlsCertificateStatus enum
func LoadBalancerTlsCertificateStatus_Values() []string {
	return []string{
		LoadBalancerTlsCertificateStatusPendingValidation,
		LoadBalancerTlsCertificateStatusIssued,
		LoadBalancerTlsCertificateStatusInactive,
		LoadBalancerTlsCertificateStatusExpired,
		LoadBalancerTlsCertificateStatusValidationTimedOut,
		LoadBalancerTlsCertificateStatusRevoked,
		LoadBalancerTlsCertificateStatusFailed,
		LoadBalancerTlsCertificateStatusUnknown,
	}
}

const (
	// MetricNameCpuutilization is a MetricName enum value
	MetricNameCpuutilization = "CPUUtilization"

	// MetricNameNetworkIn is a MetricName enum value
	MetricNameNetworkIn = "NetworkIn"

	// MetricNameNetworkOut is a MetricName enum value
	MetricNameNetworkOut = "NetworkOut"

	// MetricNameStatusCheckFailed is a MetricName enum value
	MetricNameStatusCheckFailed = "StatusCheckFailed"

	// MetricNameStatusCheckFailedInstance is a MetricName enum value
	MetricNameStatusCheckFailedInstance = "StatusCheckFailed_Instance"

	// MetricNameStatusCheckFailedSystem is a MetricName enum value
	MetricNameStatusCheckFailedSystem = "StatusCheckFailed_System"

	// MetricNameClientTlsnegotiationErrorCount is a MetricName enum value
	MetricNameClientTlsnegotiationErrorCount = "ClientTLSNegotiationErrorCount"

	// MetricNameHealthyHostCount is a MetricName enum value
	MetricNameHealthyHostCount = "HealthyHostCount"

	// MetricNameUnhealthyHostCount is a MetricName enum value
	MetricNameUnhealthyHostCount = "UnhealthyHostCount"

	// MetricNameHttpcodeLb4xxCount is a MetricName enum value
	MetricNameHttpcodeLb4xxCount = "HTTPCode_LB_4XX_Count"

	// MetricNameHttpcodeLb5xxCount is a MetricName enum value
	MetricNameHttpcodeLb5xxCount = "HTTPCode_LB_5XX_Count"

	// MetricNameHttpcodeInstance2xxCount is a MetricName enum value
	MetricNameHttpcodeInstance2xxCount = "HTTPCode_Instance_2XX_Count"

	// MetricNameHttpcodeInstance3xxCount is a MetricName enum value
	MetricNameHttpcodeInstance3xxCount = "HTTPCode_Instance_3XX_Count"

	// MetricNameHttpcodeInstance4xxCount is a MetricName enum value
	MetricNameHttpcodeInstance4xxCount = "HTTPCode_Instance_4XX_Count"

	// MetricNameHttpcodeInstance5xxCount is a MetricName enum value
	MetricNameHttpcodeInstance5xxCount = "HTTPCode_Instance_5XX_Count"

	// MetricNameInstanceResponseTime is a MetricName enum value
	MetricNameInstanceResponseTime = "InstanceResponseTime"

	// MetricNameRejectedConnectionCount is a MetricName enum value
	MetricNameRejectedConnectionCount = "RejectedConnectionCount"

	// MetricNameRequestCount is a MetricName enum value
	MetricNameRequestCount = "RequestCount"

	// MetricNameDatabaseConnections is a MetricName enum value
	MetricNameDatabaseConnections = "DatabaseConnections"

	// MetricNameDiskQueueDepth is a MetricName enum value
	MetricNameDiskQueueDepth = "DiskQueueDepth"

	// MetricNameFreeStorageSpace is a MetricName enum value
	MetricNameFreeStorageSpace = "FreeStorageSpace"

	// MetricNameNetworkReceiveThroughput is a MetricName enum value
	MetricNameNetworkReceiveThroughput = "NetworkReceiveThroughput"

	// MetricNameNetworkTransmitThroughput is a MetricName enum value
	MetricNameNetworkTransmitThroughput = "NetworkTransmitThroughput"

	// MetricNameBurstCapacityTime is a MetricName enum value
	MetricNameBurstCapacityTime = "BurstCapacityTime"

	// MetricNameBurstCapacityPercentage is a MetricName enum value
	MetricNameBurstCapacityPercentage = "BurstCapacityPercentage"
)

// MetricName_Values returns all elements of the MetricName enum
func MetricName_Values() []string {
	return []string{
		MetricNameCpuutilization,
		MetricNameNetworkIn,
		MetricNameNetworkOut,
		MetricNameStatusCheckFailed,
		MetricNameStatusCheckFailedInstance,
		MetricNameStatusCheckFailedSystem,
		MetricNameClientTlsnegotiationErrorCount,
		MetricNameHealthyHostCount,
		MetricNameUnhealthyHostCount,
		MetricNameHttpcodeLb4xxCount,
		MetricNameHttpcodeLb5xxCount,
		MetricNameHttpcodeInstance2xxCount,
		MetricNameHttpcodeInstance3xxCount,
		MetricNameHttpcodeInstance4xxCount,
		MetricNameHttpcodeInstance5xxCount,
		MetricNameInstanceResponseTime,
		MetricNameRejectedConnectionCount,
		MetricNameRequestCount,
		MetricNameDatabaseConnections,
		MetricNameDiskQueueDepth,
		MetricNameFreeStorageSpace,
		MetricNameNetworkReceiveThroughput,
		MetricNameNetworkTransmitThroughput,
		MetricNameBurstCapacityTime,
		MetricNameBurstCapacityPercentage,
	}
}

const (
	// MetricStatisticMinimum is a MetricStatistic enum value
	MetricStatisticMinimum = "Minimum"

	// MetricStatisticMaximum is a MetricStatistic enum value
	MetricStatisticMaximum = "Maximum"

	// MetricStatisticSum is a MetricStatistic enum value
	MetricStatisticSum = "Sum"

	// MetricStatisticAverage is a MetricStatistic enum value
	MetricStatisticAverage = "Average"

	// MetricStatisticSampleCount is a MetricStatistic enum value
	MetricStatisticSampleCount = "SampleCount"
)

// MetricStatistic_Values returns all elements of the MetricStatistic enum
func MetricStatistic_Values() []string {
	return []string{
		MetricStatisticMinimum,
		MetricStatisticMaximum,
		MetricStatisticSum,
		MetricStatisticAverage,
		MetricStatisticSampleCount,
	}
}

const (
	// MetricUnitSeconds is a MetricUnit enum value
	MetricUnitSeconds = "Seconds"

	// MetricUnitMicroseconds is a MetricUnit enum value
	MetricUnitMicroseconds = "Microseconds"

	// MetricUnitMilliseconds is a MetricUnit enum value
	MetricUnitMilliseconds = "Milliseconds"

	// MetricUnitBytes is a MetricUnit enum value
	MetricUnitBytes = "Bytes"

	// MetricUnitKilobytes is a MetricUnit enum value
	MetricUnitKilobytes = "Kilobytes"

	// MetricUnitMegabytes is a MetricUnit enum value
	MetricUnitMegabytes = "Megabytes"

	// MetricUnitGigabytes is a MetricUnit enum value
	MetricUnitGigabytes = "Gigabytes"

	// MetricUnitTerabytes is a MetricUnit enum value
	MetricUnitTerabytes = "Terabytes"

	// MetricUnitBits is a MetricUnit enum value
	MetricUnitBits = "Bits"

	// MetricUnitKilobits is a MetricUnit enum value
	MetricUnitKilobits = "Kilobits"

	// MetricUnitMegabits is a MetricUnit enum value
	MetricUnitMegabits = "Megabits"

	// MetricUnitGigabits is a MetricUnit enum value
	MetricUnitGigabits = "Gigabits"

	// MetricUnitTerabits is a MetricUnit enum value
	MetricUnitTerabits = "Terabits"

	// MetricUnitPercent is a MetricUnit enum value
	MetricUnitPercent = "Percent"

	// MetricUnitCount is a MetricUnit enum value
	MetricUnitCount = "Count"

	// MetricUnitBytesSecond is a MetricUnit enum value
	MetricUnitBytesSecond = "Bytes/Second"

	// MetricUnitKilobytesSecond is a MetricUnit enum value
	MetricUnitKilobytesSecond = "Kilobytes/Second"

	// MetricUnitMegabytesSecond is a MetricUnit enum value
	MetricUnitMegabytesSecond = "Megabytes/Second"

	// MetricUnitGigabytesSecond is a MetricUnit enum value
	MetricUnitGigabytesSecond = "Gigabytes/Second"

	// MetricUnitTerabytesSecond is a MetricUnit enum value
	MetricUnitTerabytesSecond = "Terabytes/Second"

	// MetricUnitBitsSecond is a MetricUnit enum value
	MetricUnitBitsSecond = "Bits/Second"

	// MetricUnitKilobitsSecond is a MetricUnit enum value
	MetricUnitKilobitsSecond = "Kilobits/Second"

	// MetricUnitMegabitsSecond is a MetricUnit enum value
	MetricUnitMegabitsSecond = "Megabits/Second"

	// MetricUnitGigabitsSecond is a MetricUnit enum value
	MetricUnitGigabitsSecond = "Gigabits/Second"

	// MetricUnitTerabitsSecond is a MetricUnit enum value
	MetricUnitTerabitsSecond = "Terabits/Second"

	// MetricUnitCountSecond is a MetricUnit enum value
	MetricUnitCountSecond = "Count/Second"

	// MetricUnitNone is a MetricUnit enum value
	MetricUnitNone = "None"
)

// MetricUnit_Values returns all elements of the MetricUnit enum
func MetricUnit_Values() []string {
	return []string{
		MetricUnitSeconds,
		MetricUnitMicroseconds,
		MetricUnitMilliseconds,
		MetricUnitBytes,
		MetricUnitKilobytes,
		MetricUnitMegabytes,
		MetricUnitGigabytes,
		MetricUnitTerabytes,
		MetricUnitBits,
		MetricUnitKilobits,
		MetricUnitMegabits,
		MetricUnitGigabits,
		MetricUnitTerabits,
		MetricUnitPercent,
		MetricUnitCount,
		MetricUnitBytesSecond,
		MetricUnitKilobytesSecond,
		MetricUnitMegabytesSecond,
		MetricUnitGigabytesSecond,
		MetricUnitTerabytesSecond,
		MetricUnitBitsSecond,
		MetricUnitKilobitsSecond,
		MetricUnitMegabitsSecond,
		MetricUnitGigabitsSecond,
		MetricUnitTerabitsSecond,
		MetricUnitCountSecond,
		MetricUnitNone,
	}
}

const (
	// NameServersUpdateStateCodeSucceeded is a NameServersUpdateStateCode enum value
	NameServersUpdateStateCodeSucceeded = "SUCCEEDED"

	// NameServersUpdateStateCodePending is a NameServersUpdateStateCode enum value
	NameServersUpdateStateCodePending = "PENDING"

	// NameServersUpdateStateCodeFailed is a NameServersUpdateStateCode enum value
	NameServersUpdateStateCodeFailed = "FAILED"

	// NameServersUpdateStateCodeStarted is a NameServersUpdateStateCode enum value
	NameServersUpdateStateCodeStarted = "STARTED"
)

// NameServersUpdateStateCode_Values returns all elements of the NameServersUpdateStateCode enum
func NameServersUpdateStateCode_Values() []string {
	return []string{
		NameServersUpdateStateCodeSucceeded,
		NameServersUpdateStateCodePending,
		NameServersUpdateStateCodeFailed,
		NameServersUpdateStateCodeStarted,
	}
}

const (
	// NetworkProtocolTcp is a NetworkProtocol enum value
	NetworkProtocolTcp = "tcp"

	// NetworkProtocolAll is a NetworkProtocol enum value
	NetworkProtocolAll = "all"

	// NetworkProtocolUdp is a NetworkProtocol enum value
	NetworkProtocolUdp = "udp"

	// NetworkProtocolIcmp is a NetworkProtocol enum value
	NetworkProtocolIcmp = "icmp"
)

// NetworkProtocol_Values returns all elements of the NetworkProtocol enum
func NetworkProtocol_Values() []string {
	return []string{
		NetworkProtocolTcp,
		NetworkProtocolAll,
		NetworkProtocolUdp,
		NetworkProtocolIcmp,
	}
}

const (
	// OperationStatusNotStarted is a OperationStatus enum value
	OperationStatusNotStarted = "NotStarted"

	// OperationStatusStarted is a OperationStatus enum value
	OperationStatusStarted = "Started"

	// OperationStatusFailed is a OperationStatus enum value
	OperationStatusFailed = "Failed"

	// OperationStatusCompleted is a OperationStatus enum value
	OperationStatusCompleted = "Completed"

	// OperationStatusSucceeded is a OperationStatus enum value
	OperationStatusSucceeded = "Succeeded"
)

// OperationStatus_Values returns all elements of the OperationStatus enum
func OperationStatus_Values() []string {
	return []string{
		OperationStatusNotStarted,
		OperationStatusStarted,
		OperationStatusFailed,
		OperationStatusCompleted,
		OperationStatusSucceeded,
	}
}

const (
	// OperationTypeDeleteKnownHostKeys is a OperationType enum value
	OperationTypeDeleteKnownHostKeys = "DeleteKnownHostKeys"

	// OperationTypeDeleteInstance is a OperationType enum value
	OperationTypeDeleteInstance = "DeleteInstance"

	// OperationTypeCreateInstance is a OperationType enum value
	OperationTypeCreateInstance = "CreateInstance"

	// OperationTypeStopInstance is a OperationType enum value
	OperationTypeStopInstance = "StopInstance"

	// OperationTypeStartInstance is a OperationType enum value
	OperationTypeStartInstance = "StartInstance"

	// OperationTypeRebootInstance is a OperationType enum value
	OperationTypeRebootInstance = "RebootInstance"

	// OperationTypeOpenInstancePublicPorts is a OperationType enum value
	OperationTypeOpenInstancePublicPorts = "OpenInstancePublicPorts"

	// OperationTypePutInstancePublicPorts is a OperationType enum value
	OperationTypePutInstancePublicPorts = "PutInstancePublicPorts"

	// OperationTypeCloseInstancePublicPorts is a OperationType enum value
	OperationTypeCloseInstancePublicPorts = "CloseInstancePublicPorts"

	// OperationTypeAllocateStaticIp is a OperationType enum value
	OperationTypeAllocateStaticIp = "AllocateStaticIp"

	// OperationTypeReleaseStaticIp is a OperationType enum value
	OperationTypeReleaseStaticIp = "ReleaseStaticIp"

	// OperationTypeAttachStaticIp is a OperationType enum value
	OperationTypeAttachStaticIp = "AttachStaticIp"

	// OperationTypeDetachStaticIp is a OperationType enum value
	OperationTypeDetachStaticIp = "DetachStaticIp"

	// OperationTypeUpdateDomainEntry is a OperationType enum value
	OperationTypeUpdateDomainEntry = "UpdateDomainEntry"

	// OperationTypeDeleteDomainEntry is a OperationType enum value
	OperationTypeDeleteDomainEntry = "DeleteDomainEntry"

	// OperationTypeCreateDomain is a OperationType enum value
	OperationTypeCreateDomain = "CreateDomain"

	// OperationTypeDeleteDomain is a OperationType enum value
	OperationTypeDeleteDomain = "DeleteDomain"

	// OperationTypeCreateInstanceSnapshot is a OperationType enum value
	OperationTypeCreateInstanceSnapshot = "CreateInstanceSnapshot"

	// OperationTypeDeleteInstanceSnapshot is a OperationType enum value
	OperationTypeDeleteInstanceSnapshot = "DeleteInstanceSnapshot"

	// OperationTypeCreateInstancesFromSnapshot is a OperationType enum value
	OperationTypeCreateInstancesFromSnapshot = "CreateInstancesFromSnapshot"

	// OperationTypeCreateLoadBalancer is a OperationType enum value
	OperationTypeCreateLoadBalancer = "CreateLoadBalancer"

	// OperationTypeDeleteLoadBalancer is a OperationType enum value
	OperationTypeDeleteLoadBalancer = "DeleteLoadBalancer"

	// OperationTypeAttachInstancesToLoadBalancer is a OperationType enum value
	OperationTypeAttachInstancesToLoadBalancer = "AttachInstancesToLoadBalancer"

	// OperationTypeDetachInstancesFromLoadBalancer is a OperationType enum value
	OperationTypeDetachInstancesFromLoadBalancer = "DetachInstancesFromLoadBalancer"

	// OperationTypeUpdateLoadBalancerAttribute is a OperationType enum value
	OperationTypeUpdateLoadBalancerAttribute = "UpdateLoadBalancerAttribute"

	// OperationTypeCreateLoadBalancerTlsCertificate is a OperationType enum value
	OperationTypeCreateLoadBalancerTlsCertificate = "CreateLoadBalancerTlsCertificate"

	// OperationTypeDeleteLoadBalancerTlsCertificate is a OperationType enum value
	OperationTypeDeleteLoadBalancerTlsCertificate = "DeleteLoadBalancerTlsCertificate"

	// OperationTypeAttachLoadBalancerTlsCertificate is a OperationType enum value
	OperationTypeAttachLoadBalancerTlsCertificate = "AttachLoadBalancerTlsCertificate"

	// OperationTypeCreateDisk is a OperationType enum value
	OperationTypeCreateDisk = "CreateDisk"

	// OperationTypeDeleteDisk is a OperationType enum value
	OperationTypeDeleteDisk = "DeleteDisk"

	// OperationTypeAttachDisk is a OperationType enum value
	OperationTypeAttachDisk = "AttachDisk"

	// OperationTypeDetachDisk is a OperationType enum value
	OperationTypeDetachDisk = "DetachDisk"

	// OperationTypeCreateDiskSnapshot is a OperationType enum value
	OperationTypeCreateDiskSnapshot = "CreateDiskSnapshot"

	// OperationTypeDeleteDiskSnapshot is a OperationType enum value
	OperationTypeDeleteDiskSnapshot = "DeleteDiskSnapshot"

	// OperationTypeCreateDiskFromSnapshot is a OperationType enum value
	OperationTypeCreateDiskFromSnapshot = "CreateDiskFromSnapshot"

	// OperationTypeCreateRelationalDatabase is a OperationType enum value
	OperationTypeCreateRelationalDatabase = "CreateRelationalDatabase"

	// OperationTypeUpdateRelationalDatabase is a OperationType enum value
	OperationTypeUpdateRelationalDatabase = "UpdateRelationalDatabase"

	// OperationTypeDeleteRelationalDatabase is a OperationType enum value
	OperationTypeDeleteRelationalDatabase = "DeleteRelationalDatabase"

	// OperationTypeCreateRelationalDatabaseFromSnapshot is a OperationType enum value
	OperationTypeCreateRelationalDatabaseFromSnapshot = "CreateRelationalDatabaseFromSnapshot"

	// OperationTypeCreateRelationalDatabaseSnapshot is a OperationType enum value
	OperationTypeCreateRelationalDatabaseSnapshot = "CreateRelationalDatabaseSnapshot"

	// OperationTypeDeleteRelationalDatabaseSnapshot is a OperationType enum value
	OperationTypeDeleteRelationalDatabaseSnapshot = "DeleteRelationalDatabaseSnapshot"

	// OperationTypeUpdateRelationalDatabaseParameters is a OperationType enum value
	OperationTypeUpdateRelationalDatabaseParameters = "UpdateRelationalDatabaseParameters"

	// OperationTypeStartRelationalDatabase is a OperationType enum value
	OperationTypeStartRelationalDatabase = "StartRelationalDatabase"

	// OperationTypeRebootRelationalDatabase is a OperationType enum value
	OperationTypeRebootRelationalDatabase = "RebootRelationalDatabase"

	// OperationTypeStopRelationalDatabase is a OperationType enum value
	OperationTypeStopRelationalDatabase = "StopRelationalDatabase"

	// OperationTypeEnableAddOn is a OperationType enum value
	OperationTypeEnableAddOn = "EnableAddOn"

	// OperationTypeDisableAddOn is a OperationType enum value
	OperationTypeDisableAddOn = "DisableAddOn"

	// OperationTypePutAlarm is a OperationType enum value
	OperationTypePutAlarm = "PutAlarm"

	// OperationTypeGetAlarms is a OperationType enum value
	OperationTypeGetAlarms = "GetAlarms"

	// OperationTypeDeleteAlarm is a OperationType enum value
	OperationTypeDeleteAlarm = "DeleteAlarm"

	// OperationTypeTestAlarm is a OperationType enum value
	OperationTypeTestAlarm = "TestAlarm"

	// OperationTypeCreateContactMethod is a OperationType enum value
	OperationTypeCreateContactMethod = "CreateContactMethod"

	// OperationTypeGetContactMethods is a OperationType enum value
	OperationTypeGetContactMethods = "GetContactMethods"

	// OperationTypeSendContactMethodVerification is a OperationType enum value
	OperationTypeSendContactMethodVerification = "SendContactMethodVerification"

	// OperationTypeDeleteContactMethod is a OperationType enum value
	OperationTypeDeleteContactMethod = "DeleteContactMethod"

	// OperationTypeCreateDistribution is a OperationType enum value
	OperationTypeCreateDistribution = "CreateDistribution"

	// OperationTypeUpdateDistribution is a OperationType enum value
	OperationTypeUpdateDistribution = "UpdateDistribution"

	// OperationTypeDeleteDistribution is a OperationType enum value
	OperationTypeDeleteDistribution = "DeleteDistribution"

	// OperationTypeResetDistributionCache is a OperationType enum value
	OperationTypeResetDistributionCache = "ResetDistributionCache"

	// OperationTypeAttachCertificateToDistribution is a OperationType enum value
	OperationTypeAttachCertificateToDistribution = "AttachCertificateToDistribution"

	// OperationTypeDetachCertificateFromDistribution is a OperationType enum value
	OperationTypeDetachCertificateFromDistribution = "DetachCertificateFromDistribution"

	// OperationTypeUpdateDistributionBundle is a OperationType enum value
	OperationTypeUpdateDistributionBundle = "UpdateDistributionBundle"

	// OperationTypeSetIpAddressType is a OperationType enum value
	OperationTypeSetIpAddressType = "SetIpAddressType"

	// OperationTypeCreateCertificate is a OperationType enum value
	OperationTypeCreateCertificate = "CreateCertificate"

	// OperationTypeDeleteCertificate is a OperationType enum value
	OperationTypeDeleteCertificate = "DeleteCertificate"

	// OperationTypeCreateContainerService is a OperationType enum value
	OperationTypeCreateContainerService = "CreateContainerService"

	// OperationTypeUpdateContainerService is a OperationType enum value
	OperationTypeUpdateContainerService = "UpdateContainerService"

	// OperationTypeDeleteContainerService is a OperationType enum value
	OperationTypeDeleteContainerService = "DeleteContainerService"

	// OperationTypeCreateContainerServiceDeployment is a OperationType enum value
	OperationTypeCreateContainerServiceDeployment = "CreateContainerServiceDeployment"

	// OperationTypeCreateContainerServiceRegistryLogin is a OperationType enum value
	OperationTypeCreateContainerServiceRegistryLogin = "CreateContainerServiceRegistryLogin"

	// OperationTypeRegisterContainerImage is a OperationType enum value
	OperationTypeRegisterContainerImage = "RegisterContainerImage"

	// OperationTypeDeleteContainerImage is a OperationType enum value
	OperationTypeDeleteContainerImage = "DeleteContainerImage"

	// OperationTypeCreateBucket is a OperationType enum value
	OperationTypeCreateBucket = "CreateBucket"

	// OperationTypeDeleteBucket is a OperationType enum value
	OperationTypeDeleteBucket = "DeleteBucket"

	// OperationTypeCreateBucketAccessKey is a OperationType enum value
	OperationTypeCreateBucketAccessKey = "CreateBucketAccessKey"

	// OperationTypeDeleteBucketAccessKey is a OperationType enum value
	OperationTypeDeleteBucketAccessKey = "DeleteBucketAccessKey"

	// OperationTypeUpdateBucketBundle is a OperationType enum value
	OperationTypeUpdateBucketBundle = "UpdateBucketBundle"

	// OperationTypeUpdateBucket is a OperationType enum value
	OperationTypeUpdateBucket = "UpdateBucket"

	// OperationTypeSetResourceAccessForBucket is a OperationType enum value
	OperationTypeSetResourceAccessForBucket = "SetResourceAccessForBucket"

	// OperationTypeUpdateInstanceMetadataOptions is a OperationType enum value
	OperationTypeUpdateInstanceMetadataOptions = "UpdateInstanceMetadataOptions"

	// OperationTypeStartGuisession is a OperationType enum value
	OperationTypeStartGuisession = "StartGUISession"

	// OperationTypeStopGuisession is a OperationType enum value
	OperationTypeStopGuisession = "StopGUISession"

	// OperationTypeSetupInstanceHttps is a OperationType enum value
	OperationTypeSetupInstanceHttps = "SetupInstanceHttps"
)

// OperationType_Values returns all elements of the OperationType enum
func OperationType_Values() []string {
	return []string{
		OperationTypeDeleteKnownHostKeys,
		OperationTypeDeleteInstance,
		OperationTypeCreateInstance,
		OperationTypeStopInstance,
		OperationTypeStartInstance,
		OperationTypeRebootInstance,
		OperationTypeOpenInstancePublicPorts,
		OperationTypePutInstancePublicPorts,
		OperationTypeCloseInstancePublicPorts,
		OperationTypeAllocateStaticIp,
		OperationTypeReleaseStaticIp,
		OperationTypeAttachStaticIp,
		OperationTypeDetachStaticIp,
		OperationTypeUpdateDomainEntry,
		OperationTypeDeleteDomainEntry,
		OperationTypeCreateDomain,
		OperationTypeDeleteDomain,
		OperationTypeCreateInstanceSnapshot,
		OperationTypeDeleteInstanceSnapshot,
		OperationTypeCreateInstancesFromSnapshot,
		OperationTypeCreateLoadBalancer,
		OperationTypeDeleteLoadBalancer,
		OperationTypeAttachInstancesToLoadBalancer,
		OperationTypeDetachInstancesFromLoadBalancer,
		OperationTypeUpdateLoadBalancerAttribute,
		OperationTypeCreateLoadBalancerTlsCertificate,
		OperationTypeDeleteLoadBalancerTlsCertificate,
		OperationTypeAttachLoadBalancerTlsCertificate,
		OperationTypeCreateDisk,
		OperationTypeDeleteDisk,
		OperationTypeAttachDisk,
		OperationTypeDetachDisk,
		OperationTypeCreateDiskSnapshot,
		OperationTypeDeleteDiskSnapshot,
		OperationTypeCreateDiskFromSnapshot,
		OperationTypeCreateRelationalDatabase,
		OperationTypeUpdateRelationalDatabase,
		OperationTypeDeleteRelationalDatabase,
		OperationTypeCreateRelationalDatabaseFromSnapshot,
		OperationTypeCreateRelationalDatabaseSnapshot,
		OperationTypeDeleteRelationalDatabaseSnapshot,
		OperationTypeUpdateRelationalDatabaseParameters,
		OperationTypeStartRelationalDatabase,
		OperationTypeRebootRelationalDatabase,
		OperationTypeStopRelationalDatabase,
		OperationTypeEnableAddOn,
		OperationTypeDisableAddOn,
		OperationTypePutAlarm,
		OperationTypeGetAlarms,
		OperationTypeDeleteAlarm,
		OperationTypeTestAlarm,
		OperationTypeCreateContactMethod,
		OperationTypeGetContactMethods,
		OperationTypeSendContactMethodVerification,
		OperationTypeDeleteContactMethod,
		OperationTypeCreateDistribution,
		OperationTypeUpdateDistribution,
		OperationTypeDeleteDistribution,
		OperationTypeResetDistributionCache,
		OperationTypeAttachCertificateToDistribution,
		OperationTypeDetachCertificateFromDistribution,
		OperationTypeUpdateDistributionBundle,
		OperationTypeSetIpAddressType,
		OperationTypeCreateCertificate,
		OperationTypeDeleteCertificate,
		OperationTypeCreateContainerService,
		OperationTypeUpdateContainerService,
		OperationTypeDeleteContainerService,
		OperationTypeCreateContainerServiceDeployment,
		OperationTypeCreateContainerServiceRegistryLogin,
		OperationTypeRegisterContainerImage,
		OperationTypeDeleteContainerImage,
		OperationTypeCreateBucket,
		OperationTypeDeleteBucket,
		OperationTypeCreateBucketAccessKey,
		OperationTypeDeleteBucketAccessKey,
		OperationTypeUpdateBucketBundle,
		OperationTypeUpdateBucket,
		OperationTypeSetResourceAccessForBucket,
		OperationTypeUpdateInstanceMetadataOptions,
		OperationTypeStartGuisession,
		OperationTypeStopGuisession,
		OperationTypeSetupInstanceHttps,
	}
}

const (
	// OriginProtocolPolicyEnumHttpOnly is a OriginProtocolPolicyEnum enum value
	OriginProtocolPolicyEnumHttpOnly = "http-only"

	// OriginProtocolPolicyEnumHttpsOnly is a OriginProtocolPolicyEnum enum value
	OriginProtocolPolicyEnumHttpsOnly = "https-only"
)

// OriginProtocolPolicyEnum_Values returns all elements of the OriginProtocolPolicyEnum enum
func OriginProtocolPolicyEnum_Values() []string {
	return []string{
		OriginProtocolPolicyEnumHttpOnly,
		OriginProtocolPolicyEnumHttpsOnly,
	}
}

const (
	// PortAccessTypePublic is a PortAccessType enum value
	PortAccessTypePublic = "Public"

	// PortAccessTypePrivate is a PortAccessType enum value
	PortAccessTypePrivate = "Private"
)

// PortAccessType_Values returns all elements of the PortAccessType enum
func PortAccessType_Values() []string {
	return []string{
		PortAccessTypePublic,
		PortAccessTypePrivate,
	}
}

const (
	// PortInfoSourceTypeDefault is a PortInfoSourceType enum value
	PortInfoSourceTypeDefault = "DEFAULT"

	// PortInfoSourceTypeInstance is a PortInfoSourceType enum value
	PortInfoSourceTypeInstance = "INSTANCE"

	// PortInfoSourceTypeNone is a PortInfoSourceType enum value
	PortInfoSourceTypeNone = "NONE"

	// PortInfoSourceTypeClosed is a PortInfoSourceType enum value
	PortInfoSourceTypeClosed = "CLOSED"
)

// PortInfoSourceType_Values returns all elements of the PortInfoSourceType enum
func PortInfoSourceType_Values() []string {
	return []string{
		PortInfoSourceTypeDefault,
		PortInfoSourceTypeInstance,
		PortInfoSourceTypeNone,
		PortInfoSourceTypeClosed,
	}
}

const (
	// PortStateOpen is a PortState enum value
	PortStateOpen = "open"

	// PortStateClosed is a PortState enum value
	PortStateClosed = "closed"
)

// PortState_Values returns all elements of the PortState enum
func PortState_Values() []string {
	return []string{
		PortStateOpen,
		PortStateClosed,
	}
}

const (
	// PricingUnitGb is a PricingUnit enum value
	PricingUnitGb = "GB"

	// PricingUnitHrs is a PricingUnit enum value
	PricingUnitHrs = "Hrs"

	// PricingUnitGbMo is a PricingUnit enum value
	PricingUnitGbMo = "GB-Mo"

	// PricingUnitBundles is a PricingUnit enum value
	PricingUnitBundles = "Bundles"

	// PricingUnitQueries is a PricingUnit enum value
	PricingUnitQueries = "Queries"
)

// PricingUnit_Values returns all elements of the PricingUnit enum
func PricingUnit_Values() []string {
	return []string{
		PricingUnitGb,
		PricingUnitHrs,
		PricingUnitGbMo,
		PricingUnitBundles,
		PricingUnitQueries,
	}
}

const (
	// R53HostedZoneDeletionStateCodeSucceeded is a R53HostedZoneDeletionStateCode enum value
	R53HostedZoneDeletionStateCodeSucceeded = "SUCCEEDED"

	// R53HostedZoneDeletionStateCodePending is a R53HostedZoneDeletionStateCode enum value
	R53HostedZoneDeletionStateCodePending = "PENDING"

	// R53HostedZoneDeletionStateCodeFailed is a R53HostedZoneDeletionStateCode enum value
	R53HostedZoneDeletionStateCodeFailed = "FAILED"

	// R53HostedZoneDeletionStateCodeStarted is a R53HostedZoneDeletionStateCode enum value
	R53HostedZoneDeletionStateCodeStarted = "STARTED"
)

// R53HostedZoneDeletionStateCode_Values returns all elements of the R53HostedZoneDeletionStateCode enum
func R53HostedZoneDeletionStateCode_Values() []string {
	return []string{
		R53HostedZoneDeletionStateCodeSucceeded,
		R53HostedZoneDeletionStateCodePending,
		R53HostedZoneDeletionStateCodeFailed,
		R53HostedZoneDeletionStateCodeStarted,
	}
}

const (
	// RecordStateStarted is a RecordState enum value
	RecordStateStarted = "Started"

	// RecordStateSucceeded is a RecordState enum value
	RecordStateSucceeded = "Succeeded"

	// RecordStateFailed is a RecordState enum value
	RecordStateFailed = "Failed"
)

// RecordState_Values returns all elements of the RecordState enum
func RecordState_Values() []string {
	return []string{
		RecordStateStarted,
		RecordStateSucceeded,
		RecordStateFailed,
	}
}

const (
	// RegionNameUsEast1 is a RegionName enum value
	RegionNameUsEast1 = "us-east-1"

	// RegionNameUsEast2 is a RegionName enum value
	RegionNameUsEast2 = "us-east-2"

	// RegionNameUsWest1 is a RegionName enum value
	RegionNameUsWest1 = "us-west-1"

	// RegionNameUsWest2 is a RegionName enum value
	RegionNameUsWest2 = "us-west-2"

	// RegionNameEuWest1 is a RegionName enum value
	RegionNameEuWest1 = "eu-west-1"

	// RegionNameEuWest2 is a RegionName enum value
	RegionNameEuWest2 = "eu-west-2"

	// RegionNameEuWest3 is a RegionName enum value
	RegionNameEuWest3 = "eu-west-3"

	// RegionNameEuCentral1 is a RegionName enum value
	RegionNameEuCentral1 = "eu-central-1"

	// RegionNameCaCentral1 is a RegionName enum value
	RegionNameCaCentral1 = "ca-central-1"

	// RegionNameApSouth1 is a RegionName enum value
	RegionNameApSouth1 = "ap-south-1"

	// RegionNameApSoutheast1 is a RegionName enum value
	RegionNameApSoutheast1 = "ap-southeast-1"

	// RegionNameApSoutheast2 is a RegionName enum value
	RegionNameApSoutheast2 = "ap-southeast-2"

	// RegionNameApNortheast1 is a RegionName enum value
	RegionNameApNortheast1 = "ap-northeast-1"

	// RegionNameApNortheast2 is a RegionName enum value
	RegionNameApNortheast2 = "ap-northeast-2"

	// RegionNameEuNorth1 is a RegionName enum value
	RegionNameEuNorth1 = "eu-north-1"
)

// RegionName_Values returns all elements of the RegionName enum
func RegionName_Values() []string {
	return []string{
		RegionNameUsEast1,
		RegionNameUsEast2,
		RegionNameUsWest1,
		RegionNameUsWest2,
		RegionNameEuWest1,
		RegionNameEuWest2,
		RegionNameEuWest3,
		RegionNameEuCentral1,
		RegionNameCaCentral1,
		RegionNameApSouth1,
		RegionNameApSoutheast1,
		RegionNameApSoutheast2,
		RegionNameApNortheast1,
		RegionNameApNortheast2,
		RegionNameEuNorth1,
	}
}

const (
	// RelationalDatabaseEngineMysql is a RelationalDatabaseEngine enum value
	RelationalDatabaseEngineMysql = "mysql"
)

// RelationalDatabaseEngine_Values returns all elements of the RelationalDatabaseEngine enum
func RelationalDatabaseEngine_Values() []string {
	return []string{
		RelationalDatabaseEngineMysql,
	}
}

const (
	// RelationalDatabaseMetricNameCpuutilization is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameCpuutilization = "CPUUtilization"

	// RelationalDatabaseMetricNameDatabaseConnections is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameDatabaseConnections = "DatabaseConnections"

	// RelationalDatabaseMetricNameDiskQueueDepth is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameDiskQueueDepth = "DiskQueueDepth"

	// RelationalDatabaseMetricNameFreeStorageSpace is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameFreeStorageSpace = "FreeStorageSpace"

	// RelationalDatabaseMetricNameNetworkReceiveThroughput is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameNetworkReceiveThroughput = "NetworkReceiveThroughput"

	// RelationalDatabaseMetricNameNetworkTransmitThroughput is a RelationalDatabaseMetricName enum value
	RelationalDatabaseMetricNameNetworkTransmitThroughput = "NetworkTransmitThroughput"
)

// RelationalDatabaseMetricName_Values returns all elements of the RelationalDatabaseMetricName enum
func RelationalDatabaseMetricName_Values() []string {
	return []string{
		RelationalDatabaseMetricNameCpuutilization,
		RelationalDatabaseMetricNameDatabaseConnections,
		RelationalDatabaseMetricNameDiskQueueDepth,
		RelationalDatabaseMetricNameFreeStorageSpace,
		RelationalDatabaseMetricNameNetworkReceiveThroughput,
		RelationalDatabaseMetricNameNetworkTransmitThroughput,
	}
}

const (
	// RelationalDatabasePasswordVersionCurrent is a RelationalDatabasePasswordVersion enum value
	RelationalDatabasePasswordVersionCurrent = "CURRENT"

	// RelationalDatabasePasswordVersionPrevious is a RelationalDatabasePasswordVersion enum value
	RelationalDatabasePasswordVersionPrevious = "PREVIOUS"

	// RelationalDatabasePasswordVersionPending is a RelationalDatabasePasswordVersion enum value
	RelationalDatabasePasswordVersionPending = "PENDING"
)

// RelationalDatabasePasswordVersion_Values returns all elements of the RelationalDatabasePasswordVersion enum
func RelationalDatabasePasswordVersion_Values() []string {
	return []string{
		RelationalDatabasePasswordVersionCurrent,
		RelationalDatabasePasswordVersionPrevious,
		RelationalDatabasePasswordVersionPending,
	}
}

const (
	// RenewalStatusPendingAutoRenewal is a RenewalStatus enum value
	RenewalStatusPendingAutoRenewal = "PendingAutoRenewal"

	// RenewalStatusPendingValidation is a RenewalStatus enum value
	RenewalStatusPendingValidation = "PendingValidation"

	// RenewalStatusSuccess is a RenewalStatus enum value
	RenewalStatusSuccess = "Success"

	// RenewalStatusFailed is a RenewalStatus enum value
	RenewalStatusFailed = "Failed"
)

// RenewalStatus_Values returns all elements of the RenewalStatus enum
func RenewalStatus_Values() []string {
	return []string{
		RenewalStatusPendingAutoRenewal,
		RenewalStatusPendingValidation,
		RenewalStatusSuccess,
		RenewalStatusFailed,
	}
}

const (
	// ResourceBucketAccessAllow is a ResourceBucketAccess enum value
	ResourceBucketAccessAllow = "allow"

	// ResourceBucketAccessDeny is a ResourceBucketAccess enum value
	ResourceBucketAccessDeny = "deny"
)

// ResourceBucketAccess_Values returns all elements of the ResourceBucketAccess enum
func ResourceBucketAccess_Values() []string {
	return []string{
		ResourceBucketAccessAllow,
		ResourceBucketAccessDeny,
	}
}

const (
	// ResourceTypeContainerService is a ResourceType enum value
	ResourceTypeContainerService = "ContainerService"

	// ResourceTypeInstance is a ResourceType enum value
	ResourceTypeInstance = "Instance"

	// ResourceTypeStaticIp is a ResourceType enum value
	ResourceTypeStaticIp = "StaticIp"

	// ResourceTypeKeyPair is a ResourceType enum value
	ResourceTypeKeyPair = "KeyPair"

	// ResourceTypeInstanceSnapshot is a ResourceType enum value
	ResourceTypeInstanceSnapshot = "InstanceSnapshot"

	// ResourceTypeDomain is a ResourceType enum value
	ResourceTypeDomain = "Domain"

	// ResourceTypePeeredVpc is a ResourceType enum value
	ResourceTypePeeredVpc = "PeeredVpc"

	// ResourceTypeLoadBalancer is a ResourceType enum value
	ResourceTypeLoadBalancer = "LoadBalancer"

	// ResourceTypeLoadBalancerTlsCertificate is a ResourceType enum value
	ResourceTypeLoadBalancerTlsCertificate = "LoadBalancerTlsCertificate"

	// ResourceTypeDisk is a ResourceType enum value
	ResourceTypeDisk = "Disk"

	// ResourceTypeDiskSnapshot is a ResourceType enum value
	ResourceTypeDiskSnapshot = "DiskSnapshot"

	// ResourceTypeRelationalDatabase is a ResourceType enum value
	ResourceTypeRelationalDatabase = "RelationalDatabase"

	// ResourceTypeRelationalDatabaseSnapshot is a ResourceType enum value
	ResourceTypeRelationalDatabaseSnapshot = "RelationalDatabaseSnapshot"

	// ResourceTypeExportSnapshotRecord is a ResourceType enum value
	ResourceTypeExportSnapshotRecord = "ExportSnapshotRecord"

	// ResourceTypeCloudFormationStackRecord is a ResourceType enum value
	ResourceTypeCloudFormationStackRecord = "CloudFormationStackRecord"

	// ResourceTypeAlarm is a ResourceType enum value
	ResourceTypeAlarm = "Alarm"

	// ResourceTypeContactMethod is a ResourceType enum value
	ResourceTypeContactMethod = "ContactMethod"

	// ResourceTypeDistribution is a ResourceType enum value
	ResourceTypeDistribution = "Distribution"

	// ResourceTypeCertificate is a ResourceType enum value
	ResourceTypeCertificate = "Certificate"

	// ResourceTypeBucket is a ResourceType enum value
	ResourceTypeBucket = "Bucket"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeContainerService,
		ResourceTypeInstance,
		ResourceTypeStaticIp,
		ResourceTypeKeyPair,
		ResourceTypeInstanceSnapshot,
		ResourceTypeDomain,
		ResourceTypePeeredVpc,
		ResourceTypeLoadBalancer,
		ResourceTypeLoadBalancerTlsCertificate,
		ResourceTypeDisk,
		ResourceTypeDiskSnapshot,
		ResourceTypeRelationalDatabase,
		ResourceTypeRelationalDatabaseSnapshot,
		ResourceTypeExportSnapshotRecord,
		ResourceTypeCloudFormationStackRecord,
		ResourceTypeAlarm,
		ResourceTypeContactMethod,
		ResourceTypeDistribution,
		ResourceTypeCertificate,
		ResourceTypeBucket,
	}
}

const (
	// SetupStatusSucceeded is a SetupStatus enum value
	SetupStatusSucceeded = "succeeded"

	// SetupStatusFailed is a SetupStatus enum value
	SetupStatusFailed = "failed"

	// SetupStatusInProgress is a SetupStatus enum value
	SetupStatusInProgress = "inProgress"
)

// SetupStatus_Values returns all elements of the SetupStatus enum
func SetupStatus_Values() []string {
	return []string{
		SetupStatusSucceeded,
		SetupStatusFailed,
		SetupStatusInProgress,
	}
}

const (
	// StatusStartExpired is a Status enum value
	StatusStartExpired = "startExpired"

	// StatusNotStarted is a Status enum value
	StatusNotStarted = "notStarted"

	// StatusStarted is a Status enum value
	StatusStarted = "started"

	// StatusStarting is a Status enum value
	StatusStarting = "starting"

	// StatusStopped is a Status enum value
	StatusStopped = "stopped"

	// StatusStopping is a Status enum value
	StatusStopping = "stopping"

	// StatusSettingUpInstance is a Status enum value
	StatusSettingUpInstance = "settingUpInstance"

	// StatusFailedInstanceCreation is a Status enum value
	StatusFailedInstanceCreation = "failedInstanceCreation"

	// StatusFailedStartingGuisession is a Status enum value
	StatusFailedStartingGuisession = "failedStartingGUISession"

	// StatusFailedStoppingGuisession is a Status enum value
	StatusFailedStoppingGuisession = "failedStoppingGUISession"
)

// Status_Values returns all elements of the Status enum
func Status_Values() []string {
	return []string{
		StatusStartExpired,
		StatusNotStarted,
		StatusStarted,
		StatusStarting,
		StatusStopped,
		StatusStopping,
		StatusSettingUpInstance,
		StatusFailedInstanceCreation,
		StatusFailedStartingGuisession,
		StatusFailedStoppingGuisession,
	}
}

const (
	// StatusTypeActive is a StatusType enum value
	StatusTypeActive = "Active"

	// StatusTypeInactive is a StatusType enum value
	StatusTypeInactive = "Inactive"
)

// StatusType_Values returns all elements of the StatusType enum
func StatusType_Values() []string {
	return []string{
		StatusTypeActive,
		StatusTypeInactive,
	}
}

const (
	// TreatMissingDataBreaching is a TreatMissingData enum value
	TreatMissingDataBreaching = "breaching"

	// TreatMissingDataNotBreaching is a TreatMissingData enum value
	TreatMissingDataNotBreaching = "notBreaching"

	// TreatMissingDataIgnore is a TreatMissingData enum value
	TreatMissingDataIgnore = "ignore"

	// TreatMissingDataMissing is a TreatMissingData enum value
	TreatMissingDataMissing = "missing"
)

// TreatMissingData_Values returns all elements of the TreatMissingData enum
func TreatMissingData_Values() []string {
	return []string{
		TreatMissingDataBreaching,
		TreatMissingDataNotBreaching,
		TreatMissingDataIgnore,
		TreatMissingDataMissing,
	}
}
© 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