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

package serverlessapplicationrepository

import (
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
)

const opCreateApplication = "CreateApplication"

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

	if input == nil {
		input = &CreateApplicationRequest{}
	}

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

// CreateApplication API operation for AWSServerlessApplicationRepository.
//
// Creates an application, optionally including an AWS SAM file to create the
// first application version in the same call.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation CreateApplication for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeConflictException "ConflictException"
//   The resource already exists.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateApplication
func (c *ServerlessApplicationRepository) CreateApplication(input *CreateApplicationRequest) (*CreateApplicationOutput, error) {
	req, out := c.CreateApplicationRequest(input)
	return out, req.Send()
}

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

const opCreateApplicationVersion = "CreateApplicationVersion"

// CreateApplicationVersionRequest generates a "aws/request.Request" representing the
// client's request for the CreateApplicationVersion operation. The "output" return
// value will be populated with the request's response once the request complets
// successfuly.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateApplicationVersion for more information on using the CreateApplicationVersion
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//
//    // Example sending a request using the CreateApplicationVersionRequest method.
//    req, resp := client.CreateApplicationVersionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateApplicationVersion
func (c *ServerlessApplicationRepository) CreateApplicationVersionRequest(input *CreateApplicationVersionRequest) (req *request.Request, output *CreateApplicationVersionOutput) {
	op := &request.Operation{
		Name:       opCreateApplicationVersion,
		HTTPMethod: "PUT",
		HTTPPath:   "/applications/{applicationId}/versions/{semanticVersion}",
	}

	if input == nil {
		input = &CreateApplicationVersionRequest{}
	}

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

// CreateApplicationVersion API operation for AWSServerlessApplicationRepository.
//
// Creates an application version.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation CreateApplicationVersion for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeConflictException "ConflictException"
//   The resource already exists.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateApplicationVersion
func (c *ServerlessApplicationRepository) CreateApplicationVersion(input *CreateApplicationVersionRequest) (*CreateApplicationVersionOutput, error) {
	req, out := c.CreateApplicationVersionRequest(input)
	return out, req.Send()
}

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

const opCreateCloudFormationChangeSet = "CreateCloudFormationChangeSet"

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

	if input == nil {
		input = &CreateCloudFormationChangeSetRequest{}
	}

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

// CreateCloudFormationChangeSet API operation for AWSServerlessApplicationRepository.
//
// Creates an AWS CloudFormation ChangeSet for the given application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation CreateCloudFormationChangeSet for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateCloudFormationChangeSet
func (c *ServerlessApplicationRepository) CreateCloudFormationChangeSet(input *CreateCloudFormationChangeSetRequest) (*CreateCloudFormationChangeSetOutput, error) {
	req, out := c.CreateCloudFormationChangeSetRequest(input)
	return out, req.Send()
}

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

const opGetApplication = "GetApplication"

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

	if input == nil {
		input = &GetApplicationInput{}
	}

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

// GetApplication API operation for AWSServerlessApplicationRepository.
//
// Gets the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation GetApplication for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/GetApplication
func (c *ServerlessApplicationRepository) GetApplication(input *GetApplicationInput) (*GetApplicationOutput, error) {
	req, out := c.GetApplicationRequest(input)
	return out, req.Send()
}

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

const opGetApplicationPolicy = "GetApplicationPolicy"

// GetApplicationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetApplicationPolicy operation. The "output" return
// value will be populated with the request's response once the request complets
// successfuly.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetApplicationPolicy for more information on using the GetApplicationPolicy
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//
//    // Example sending a request using the GetApplicationPolicyRequest method.
//    req, resp := client.GetApplicationPolicyRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/GetApplicationPolicy
func (c *ServerlessApplicationRepository) GetApplicationPolicyRequest(input *GetApplicationPolicyInput) (req *request.Request, output *GetApplicationPolicyOutput) {
	op := &request.Operation{
		Name:       opGetApplicationPolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/applications/{applicationId}/policy",
	}

	if input == nil {
		input = &GetApplicationPolicyInput{}
	}

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

// GetApplicationPolicy API operation for AWSServerlessApplicationRepository.
//
// Gets the policy for the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation GetApplicationPolicy for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/GetApplicationPolicy
func (c *ServerlessApplicationRepository) GetApplicationPolicy(input *GetApplicationPolicyInput) (*GetApplicationPolicyOutput, error) {
	req, out := c.GetApplicationPolicyRequest(input)
	return out, req.Send()
}

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

const opListApplicationVersions = "ListApplicationVersions"

// ListApplicationVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListApplicationVersions operation. The "output" return
// value will be populated with the request's response once the request complets
// successfuly.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListApplicationVersions for more information on using the ListApplicationVersions
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//
//    // Example sending a request using the ListApplicationVersionsRequest method.
//    req, resp := client.ListApplicationVersionsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/ListApplicationVersions
func (c *ServerlessApplicationRepository) ListApplicationVersionsRequest(input *ListApplicationVersionsInput) (req *request.Request, output *ListApplicationVersionsOutput) {
	op := &request.Operation{
		Name:       opListApplicationVersions,
		HTTPMethod: "GET",
		HTTPPath:   "/applications/{applicationId}/versions",
	}

	if input == nil {
		input = &ListApplicationVersionsInput{}
	}

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

// ListApplicationVersions API operation for AWSServerlessApplicationRepository.
//
// Lists versions for the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation ListApplicationVersions for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/ListApplicationVersions
func (c *ServerlessApplicationRepository) ListApplicationVersions(input *ListApplicationVersionsInput) (*ListApplicationVersionsOutput, error) {
	req, out := c.ListApplicationVersionsRequest(input)
	return out, req.Send()
}

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

const opListApplications = "ListApplications"

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

	if input == nil {
		input = &ListApplicationsInput{}
	}

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

// ListApplications API operation for AWSServerlessApplicationRepository.
//
// Lists applications owned by the requester.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation ListApplications for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/ListApplications
func (c *ServerlessApplicationRepository) ListApplications(input *ListApplicationsInput) (*ListApplicationsOutput, error) {
	req, out := c.ListApplicationsRequest(input)
	return out, req.Send()
}

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

const opPutApplicationPolicy = "PutApplicationPolicy"

// PutApplicationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutApplicationPolicy operation. The "output" return
// value will be populated with the request's response once the request complets
// successfuly.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See PutApplicationPolicy for more information on using the PutApplicationPolicy
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//
//    // Example sending a request using the PutApplicationPolicyRequest method.
//    req, resp := client.PutApplicationPolicyRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/PutApplicationPolicy
func (c *ServerlessApplicationRepository) PutApplicationPolicyRequest(input *PutApplicationPolicyInput) (req *request.Request, output *PutApplicationPolicyOutput) {
	op := &request.Operation{
		Name:       opPutApplicationPolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/applications/{applicationId}/policy",
	}

	if input == nil {
		input = &PutApplicationPolicyInput{}
	}

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

// PutApplicationPolicy API operation for AWSServerlessApplicationRepository.
//
// Puts the policy for the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation PutApplicationPolicy for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/PutApplicationPolicy
func (c *ServerlessApplicationRepository) PutApplicationPolicy(input *PutApplicationPolicyInput) (*PutApplicationPolicyOutput, error) {
	req, out := c.PutApplicationPolicyRequest(input)
	return out, req.Send()
}

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

const opUpdateApplication = "UpdateApplication"

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

	if input == nil {
		input = &UpdateApplicationRequest{}
	}

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

// UpdateApplication API operation for AWSServerlessApplicationRepository.
//
// Updates the specified application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWSServerlessApplicationRepository's
// API operation UpdateApplication for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeBadRequestException "BadRequestException"
//   One of the parameters in the request is invalid.
//
//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
//   The AWS Serverless Application Repository service encountered an internal
//   error.
//
//   * ErrCodeForbiddenException "ForbiddenException"
//   The client is not authenticated.
//
//   * ErrCodeNotFoundException "NotFoundException"
//   The resource (for example, an access policy statement) specified in the request
//   does not exist.
//
//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
//   The client is sending more than the allowed number of requests per unit time.
//
//   * ErrCodeConflictException "ConflictException"
//   The resource already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/UpdateApplication
func (c *ServerlessApplicationRepository) UpdateApplication(input *UpdateApplicationRequest) (*UpdateApplicationOutput, error) {
	req, out := c.UpdateApplicationRequest(input)
	return out, req.Send()
}

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

// Policy statement applied to the application.
type ApplicationPolicyStatement struct {
	_ struct{} `type:"structure"`

	// A list of supported actions:\n\n GetApplication \n \n\n CreateCloudFormationChangeSet
	// \n \n\n ListApplicationVersions \n \n\n SearchApplications \n \n\n Deploy
	// (Note: This action enables all other actions above.)
	Actions []*string `locationName:"actions" type:"list"`

	// An AWS account ID, or * to make the application public.
	Principals []*string `locationName:"principals" type:"list"`

	// A unique ID for the statement.
	StatementId *string `locationName:"statementId" type:"string"`
}

// String returns the string representation
func (s ApplicationPolicyStatement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ApplicationPolicyStatement) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *ApplicationPolicyStatement) SetActions(v []*string) *ApplicationPolicyStatement {
	s.Actions = v
	return s
}

// SetPrincipals sets the Principals field's value.
func (s *ApplicationPolicyStatement) SetPrincipals(v []*string) *ApplicationPolicyStatement {
	s.Principals = v
	return s
}

// SetStatementId sets the StatementId field's value.
func (s *ApplicationPolicyStatement) SetStatementId(v string) *ApplicationPolicyStatement {
	s.StatementId = &v
	return s
}

// Summary of details about the application.
type ApplicationSummary struct {
	_ struct{} `type:"structure"`

	// The application ARN.
	ApplicationId *string `locationName:"applicationId" type:"string"`

	// The name of the author publishing the app\nMin Length=1. Max Length=127.\nPattern
	// "^[a-z0-9](([a-z0-9]|-(?!-))*[a-z0-9])?$";
	Author *string `locationName:"author" type:"string"`

	// The date/time this resource was created.
	CreationTime *string `locationName:"creationTime" type:"string"`

	// The description of the application.\nMin Length=1. Max Length=256
	Description *string `locationName:"description" type:"string"`

	// Labels to improve discovery of apps in search results.\nMin Length=1. Max
	// Length=127. Maximum number of labels: 10\nPattern: "^[a-zA-Z0-9+\\-_:\\/@]+$";
	Labels []*string `locationName:"labels" type:"list"`

	// The name of the application.\nMin Length=1. Max Length=140\nPattern: "[a-zA-Z0-9\\-]+";
	Name *string `locationName:"name" type:"string"`

	// A valid identifier from https://spdx.org/licenses/ .
	SpdxLicenseId *string `locationName:"spdxLicenseId" type:"string"`
}

// String returns the string representation
func (s ApplicationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ApplicationSummary) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ApplicationSummary) SetApplicationId(v string) *ApplicationSummary {
	s.ApplicationId = &v
	return s
}

// SetAuthor sets the Author field's value.
func (s *ApplicationSummary) SetAuthor(v string) *ApplicationSummary {
	s.Author = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *ApplicationSummary) SetCreationTime(v string) *ApplicationSummary {
	s.CreationTime = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *ApplicationSummary) SetLabels(v []*string) *ApplicationSummary {
	s.Labels = v
	return s
}

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

// SetSpdxLicenseId sets the SpdxLicenseId field's value.
func (s *ApplicationSummary) SetSpdxLicenseId(v string) *ApplicationSummary {
	s.SpdxLicenseId = &v
	return s
}

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

	ApplicationId *string `locationName:"applicationId" type:"string"`

	Author *string `locationName:"author" type:"string"`

	CreationTime *string `locationName:"creationTime" type:"string"`

	Description *string `locationName:"description" type:"string"`

	Labels []*string `locationName:"labels" type:"list"`

	LicenseUrl *string `locationName:"licenseUrl" type:"string"`

	Name *string `locationName:"name" type:"string"`

	ReadmeUrl *string `locationName:"readmeUrl" type:"string"`

	SpdxLicenseId *string `locationName:"spdxLicenseId" type:"string"`

	// Application version details.
	Version *Version `locationName:"version" type:"structure"`
}

// String returns the string representation
func (s CreateApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateApplicationOutput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateApplicationOutput) SetApplicationId(v string) *CreateApplicationOutput {
	s.ApplicationId = &v
	return s
}

// SetAuthor sets the Author field's value.
func (s *CreateApplicationOutput) SetAuthor(v string) *CreateApplicationOutput {
	s.Author = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *CreateApplicationOutput) SetCreationTime(v string) *CreateApplicationOutput {
	s.CreationTime = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *CreateApplicationOutput) SetLabels(v []*string) *CreateApplicationOutput {
	s.Labels = v
	return s
}

// SetLicenseUrl sets the LicenseUrl field's value.
func (s *CreateApplicationOutput) SetLicenseUrl(v string) *CreateApplicationOutput {
	s.LicenseUrl = &v
	return s
}

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

// SetReadmeUrl sets the ReadmeUrl field's value.
func (s *CreateApplicationOutput) SetReadmeUrl(v string) *CreateApplicationOutput {
	s.ReadmeUrl = &v
	return s
}

// SetSpdxLicenseId sets the SpdxLicenseId field's value.
func (s *CreateApplicationOutput) SetSpdxLicenseId(v string) *CreateApplicationOutput {
	s.SpdxLicenseId = &v
	return s
}

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

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

	Author *string `locationName:"author" type:"string"`

	Description *string `locationName:"description" type:"string"`

	Labels []*string `locationName:"labels" type:"list"`

	LicenseBody *string `locationName:"licenseBody" type:"string"`

	LicenseUrl *string `locationName:"licenseUrl" type:"string"`

	Name *string `locationName:"name" type:"string"`

	ReadmeBody *string `locationName:"readmeBody" type:"string"`

	ReadmeUrl *string `locationName:"readmeUrl" type:"string"`

	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	SourceCodeUrl *string `locationName:"sourceCodeUrl" type:"string"`

	SpdxLicenseId *string `locationName:"spdxLicenseId" type:"string"`

	TemplateBody *string `locationName:"templateBody" type:"string"`

	TemplateUrl *string `locationName:"templateUrl" type:"string"`
}

// String returns the string representation
func (s CreateApplicationRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateApplicationRequest) GoString() string {
	return s.String()
}

// SetAuthor sets the Author field's value.
func (s *CreateApplicationRequest) SetAuthor(v string) *CreateApplicationRequest {
	s.Author = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *CreateApplicationRequest) SetLabels(v []*string) *CreateApplicationRequest {
	s.Labels = v
	return s
}

// SetLicenseBody sets the LicenseBody field's value.
func (s *CreateApplicationRequest) SetLicenseBody(v string) *CreateApplicationRequest {
	s.LicenseBody = &v
	return s
}

// SetLicenseUrl sets the LicenseUrl field's value.
func (s *CreateApplicationRequest) SetLicenseUrl(v string) *CreateApplicationRequest {
	s.LicenseUrl = &v
	return s
}

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

// SetReadmeBody sets the ReadmeBody field's value.
func (s *CreateApplicationRequest) SetReadmeBody(v string) *CreateApplicationRequest {
	s.ReadmeBody = &v
	return s
}

// SetReadmeUrl sets the ReadmeUrl field's value.
func (s *CreateApplicationRequest) SetReadmeUrl(v string) *CreateApplicationRequest {
	s.ReadmeUrl = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateApplicationRequest) SetSemanticVersion(v string) *CreateApplicationRequest {
	s.SemanticVersion = &v
	return s
}

// SetSourceCodeUrl sets the SourceCodeUrl field's value.
func (s *CreateApplicationRequest) SetSourceCodeUrl(v string) *CreateApplicationRequest {
	s.SourceCodeUrl = &v
	return s
}

// SetSpdxLicenseId sets the SpdxLicenseId field's value.
func (s *CreateApplicationRequest) SetSpdxLicenseId(v string) *CreateApplicationRequest {
	s.SpdxLicenseId = &v
	return s
}

// SetTemplateBody sets the TemplateBody field's value.
func (s *CreateApplicationRequest) SetTemplateBody(v string) *CreateApplicationRequest {
	s.TemplateBody = &v
	return s
}

// SetTemplateUrl sets the TemplateUrl field's value.
func (s *CreateApplicationRequest) SetTemplateUrl(v string) *CreateApplicationRequest {
	s.TemplateUrl = &v
	return s
}

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

	ApplicationId *string `locationName:"applicationId" type:"string"`

	CreationTime *string `locationName:"creationTime" type:"string"`

	ParameterDefinitions []*ParameterDefinition `locationName:"parameterDefinitions" type:"list"`

	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	SourceCodeUrl *string `locationName:"sourceCodeUrl" type:"string"`

	TemplateUrl *string `locationName:"templateUrl" type:"string"`
}

// String returns the string representation
func (s CreateApplicationVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateApplicationVersionOutput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateApplicationVersionOutput) SetApplicationId(v string) *CreateApplicationVersionOutput {
	s.ApplicationId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *CreateApplicationVersionOutput) SetCreationTime(v string) *CreateApplicationVersionOutput {
	s.CreationTime = &v
	return s
}

// SetParameterDefinitions sets the ParameterDefinitions field's value.
func (s *CreateApplicationVersionOutput) SetParameterDefinitions(v []*ParameterDefinition) *CreateApplicationVersionOutput {
	s.ParameterDefinitions = v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateApplicationVersionOutput) SetSemanticVersion(v string) *CreateApplicationVersionOutput {
	s.SemanticVersion = &v
	return s
}

// SetSourceCodeUrl sets the SourceCodeUrl field's value.
func (s *CreateApplicationVersionOutput) SetSourceCodeUrl(v string) *CreateApplicationVersionOutput {
	s.SourceCodeUrl = &v
	return s
}

// SetTemplateUrl sets the TemplateUrl field's value.
func (s *CreateApplicationVersionOutput) SetTemplateUrl(v string) *CreateApplicationVersionOutput {
	s.TemplateUrl = &v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	// SemanticVersion is a required field
	SemanticVersion *string `location:"uri" locationName:"semanticVersion" type:"string" required:"true"`

	SourceCodeUrl *string `locationName:"sourceCodeUrl" type:"string"`

	TemplateBody *string `locationName:"templateBody" type:"string"`

	TemplateUrl *string `locationName:"templateUrl" type:"string"`
}

// String returns the string representation
func (s CreateApplicationVersionRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateApplicationVersionRequest) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateApplicationVersionRequest) SetApplicationId(v string) *CreateApplicationVersionRequest {
	s.ApplicationId = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateApplicationVersionRequest) SetSemanticVersion(v string) *CreateApplicationVersionRequest {
	s.SemanticVersion = &v
	return s
}

// SetSourceCodeUrl sets the SourceCodeUrl field's value.
func (s *CreateApplicationVersionRequest) SetSourceCodeUrl(v string) *CreateApplicationVersionRequest {
	s.SourceCodeUrl = &v
	return s
}

// SetTemplateBody sets the TemplateBody field's value.
func (s *CreateApplicationVersionRequest) SetTemplateBody(v string) *CreateApplicationVersionRequest {
	s.TemplateBody = &v
	return s
}

// SetTemplateUrl sets the TemplateUrl field's value.
func (s *CreateApplicationVersionRequest) SetTemplateUrl(v string) *CreateApplicationVersionRequest {
	s.TemplateUrl = &v
	return s
}

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

	ApplicationId *string `locationName:"applicationId" type:"string"`

	ChangeSetId *string `locationName:"changeSetId" type:"string"`

	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	StackId *string `locationName:"stackId" type:"string"`
}

// String returns the string representation
func (s CreateCloudFormationChangeSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateCloudFormationChangeSetOutput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateCloudFormationChangeSetOutput) SetApplicationId(v string) *CreateCloudFormationChangeSetOutput {
	s.ApplicationId = &v
	return s
}

// SetChangeSetId sets the ChangeSetId field's value.
func (s *CreateCloudFormationChangeSetOutput) SetChangeSetId(v string) *CreateCloudFormationChangeSetOutput {
	s.ChangeSetId = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateCloudFormationChangeSetOutput) SetSemanticVersion(v string) *CreateCloudFormationChangeSetOutput {
	s.SemanticVersion = &v
	return s
}

// SetStackId sets the StackId field's value.
func (s *CreateCloudFormationChangeSetOutput) SetStackId(v string) *CreateCloudFormationChangeSetOutput {
	s.StackId = &v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	ParameterOverrides []*ParameterValue `locationName:"parameterOverrides" type:"list"`

	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	StackName *string `locationName:"stackName" type:"string"`
}

// String returns the string representation
func (s CreateCloudFormationChangeSetRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateCloudFormationChangeSetRequest) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *CreateCloudFormationChangeSetRequest) SetApplicationId(v string) *CreateCloudFormationChangeSetRequest {
	s.ApplicationId = &v
	return s
}

// SetParameterOverrides sets the ParameterOverrides field's value.
func (s *CreateCloudFormationChangeSetRequest) SetParameterOverrides(v []*ParameterValue) *CreateCloudFormationChangeSetRequest {
	s.ParameterOverrides = v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateCloudFormationChangeSetRequest) SetSemanticVersion(v string) *CreateCloudFormationChangeSetRequest {
	s.SemanticVersion = &v
	return s
}

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

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	SemanticVersion *string `location:"querystring" locationName:"semanticVersion" type:"string"`
}

// String returns the string representation
func (s GetApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetApplicationInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *GetApplicationInput) SetApplicationId(v string) *GetApplicationInput {
	s.ApplicationId = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *GetApplicationInput) SetSemanticVersion(v string) *GetApplicationInput {
	s.SemanticVersion = &v
	return s
}

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

	ApplicationId *string `locationName:"applicationId" type:"string"`

	Author *string `locationName:"author" type:"string"`

	CreationTime *string `locationName:"creationTime" type:"string"`

	Description *string `locationName:"description" type:"string"`

	Labels []*string `locationName:"labels" type:"list"`

	LicenseUrl *string `locationName:"licenseUrl" type:"string"`

	Name *string `locationName:"name" type:"string"`

	ReadmeUrl *string `locationName:"readmeUrl" type:"string"`

	SpdxLicenseId *string `locationName:"spdxLicenseId" type:"string"`

	// Application version details.
	Version *Version `locationName:"version" type:"structure"`
}

// String returns the string representation
func (s GetApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetApplicationOutput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *GetApplicationOutput) SetApplicationId(v string) *GetApplicationOutput {
	s.ApplicationId = &v
	return s
}

// SetAuthor sets the Author field's value.
func (s *GetApplicationOutput) SetAuthor(v string) *GetApplicationOutput {
	s.Author = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *GetApplicationOutput) SetCreationTime(v string) *GetApplicationOutput {
	s.CreationTime = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *GetApplicationOutput) SetLabels(v []*string) *GetApplicationOutput {
	s.Labels = v
	return s
}

// SetLicenseUrl sets the LicenseUrl field's value.
func (s *GetApplicationOutput) SetLicenseUrl(v string) *GetApplicationOutput {
	s.LicenseUrl = &v
	return s
}

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

// SetReadmeUrl sets the ReadmeUrl field's value.
func (s *GetApplicationOutput) SetReadmeUrl(v string) *GetApplicationOutput {
	s.ReadmeUrl = &v
	return s
}

// SetSpdxLicenseId sets the SpdxLicenseId field's value.
func (s *GetApplicationOutput) SetSpdxLicenseId(v string) *GetApplicationOutput {
	s.SpdxLicenseId = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *GetApplicationOutput) SetVersion(v *Version) *GetApplicationOutput {
	s.Version = v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`
}

// String returns the string representation
func (s GetApplicationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetApplicationPolicyInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *GetApplicationPolicyInput) SetApplicationId(v string) *GetApplicationPolicyInput {
	s.ApplicationId = &v
	return s
}

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

	Statements []*ApplicationPolicyStatement `locationName:"statements" type:"list"`
}

// String returns the string representation
func (s GetApplicationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetApplicationPolicyOutput) GoString() string {
	return s.String()
}

// SetStatements sets the Statements field's value.
func (s *GetApplicationPolicyOutput) SetStatements(v []*ApplicationPolicyStatement) *GetApplicationPolicyOutput {
	s.Statements = v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	MaxItems *int64 `location:"querystring" locationName:"maxItems" min:"1" type:"integer"`

	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation
func (s ListApplicationVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListApplicationVersionsInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *ListApplicationVersionsInput) SetApplicationId(v string) *ListApplicationVersionsInput {
	s.ApplicationId = &v
	return s
}

// SetMaxItems sets the MaxItems field's value.
func (s *ListApplicationVersionsInput) SetMaxItems(v int64) *ListApplicationVersionsInput {
	s.MaxItems = &v
	return s
}

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

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

	NextToken *string `locationName:"nextToken" type:"string"`

	Versions []*VersionSummary `locationName:"versions" type:"list"`
}

// String returns the string representation
func (s ListApplicationVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListApplicationVersionsOutput) GoString() string {
	return s.String()
}

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

// SetVersions sets the Versions field's value.
func (s *ListApplicationVersionsOutput) SetVersions(v []*VersionSummary) *ListApplicationVersionsOutput {
	s.Versions = v
	return s
}

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

	MaxItems *int64 `location:"querystring" locationName:"maxItems" min:"1" type:"integer"`

	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation
func (s ListApplicationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListApplicationsInput) GoString() string {
	return s.String()
}

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

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

// SetMaxItems sets the MaxItems field's value.
func (s *ListApplicationsInput) SetMaxItems(v int64) *ListApplicationsInput {
	s.MaxItems = &v
	return s
}

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

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

	Applications []*ApplicationSummary `locationName:"applications" type:"list"`

	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation
func (s ListApplicationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListApplicationsOutput) GoString() string {
	return s.String()
}

// SetApplications sets the Applications field's value.
func (s *ListApplicationsOutput) SetApplications(v []*ApplicationSummary) *ListApplicationsOutput {
	s.Applications = v
	return s
}

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

// Parameters supported by the application.
type ParameterDefinition struct {
	_ struct{} `type:"structure"`

	// A regular expression that represents the patterns to allow for String types.
	AllowedPattern *string `locationName:"allowedPattern" type:"string"`

	// Array containing the list of values allowed for the parameter.
	AllowedValues []*string `locationName:"allowedValues" type:"list"`

	// A string that explains a constraint when the constraint is violated. For
	// example, without a constraint description,\n a parameter that has an allowed
	// pattern of [A-Za-z0-9]+ displays the following error message when the user\n
	// specifies an invalid value:\n\n Malformed input-Parameter MyParameter must
	// match pattern [A-Za-z0-9]+ \n \nBy adding a constraint description, such
	// as "must contain only uppercase and lowercase letters, and numbers," you
	// can display\n the following customized error message:\n\n Malformed input-Parameter
	// MyParameter must contain only uppercase and lowercase letters and numbers.
	ConstraintDescription *string `locationName:"constraintDescription" type:"string"`

	// A value of the appropriate type for the template to use if no value is specified
	// when a stack is created.\n If you define constraints for the parameter, you
	// must specify a value that adheres to those constraints.
	DefaultValue *string `locationName:"defaultValue" type:"string"`

	// A string of up to 4,000 characters that describes the parameter.
	Description *string `locationName:"description" type:"string"`

	// An integer value that determines the largest number of characters you want
	// to allow for String types.
	MaxLength *int64 `locationName:"maxLength" type:"integer"`

	// A numeric value that determines the largest numeric value you want to allow
	// for Number types.
	MaxValue *int64 `locationName:"maxValue" type:"integer"`

	// An integer value that determines the smallest number of characters you want
	// to allow for String types.
	MinLength *int64 `locationName:"minLength" type:"integer"`

	// A numeric value that determines the smallest numeric value you want to allow
	// for Number types.
	MinValue *int64 `locationName:"minValue" type:"integer"`

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

	// Whether to mask the parameter value whenever anyone makes a call that describes
	// the stack. If you set the\n value to true, the parameter value is masked
	// with asterisks (*****).
	NoEcho *bool `locationName:"noEcho" type:"boolean"`

	// A list of SAM resources that use this parameter.
	ReferencedByResources []*string `locationName:"referencedByResources" type:"list"`

	// The type of the parameter.\nValid values: String | Number | List | CommaDelimitedList
	// \n \n\n String : A literal string.\nFor example, users could specify "MyUserName"
	// .\n\n Number : An integer or float. AWS CloudFormation validates the parameter
	// value as a number; however, when you use the\n parameter elsewhere in your
	// template (for example, by using the Ref intrinsic function), the parameter
	// value becomes a string.\nFor example, users could specify "8888" .\n\n List
	// : An array of integers or floats that are separated by commas. AWS CloudFormation
	// validates the parameter value as numbers; however, when\n you use the parameter
	// elsewhere in your template (for example, by using the Ref intrinsic function),
	// the parameter value becomes a list of strings.\nFor example, users could
	// specify "80,20", and a Ref results in ["80","20"] .\n\n CommaDelimitedList
	// : An array of literal strings that are separated by commas. The total number
	// of strings should be one more than the total number of commas.\n Also, each
	// member string is space-trimmed.\nFor example, users could specify "test,dev,prod",
	// and a Ref results in ["test","dev","prod"] .
	Type *string `locationName:"type" type:"string"`
}

// String returns the string representation
func (s ParameterDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ParameterDefinition) GoString() string {
	return s.String()
}

// SetAllowedPattern sets the AllowedPattern field's value.
func (s *ParameterDefinition) SetAllowedPattern(v string) *ParameterDefinition {
	s.AllowedPattern = &v
	return s
}

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

// SetConstraintDescription sets the ConstraintDescription field's value.
func (s *ParameterDefinition) SetConstraintDescription(v string) *ParameterDefinition {
	s.ConstraintDescription = &v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *ParameterDefinition) SetDefaultValue(v string) *ParameterDefinition {
	s.DefaultValue = &v
	return s
}

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

// SetMaxLength sets the MaxLength field's value.
func (s *ParameterDefinition) SetMaxLength(v int64) *ParameterDefinition {
	s.MaxLength = &v
	return s
}

// SetMaxValue sets the MaxValue field's value.
func (s *ParameterDefinition) SetMaxValue(v int64) *ParameterDefinition {
	s.MaxValue = &v
	return s
}

// SetMinLength sets the MinLength field's value.
func (s *ParameterDefinition) SetMinLength(v int64) *ParameterDefinition {
	s.MinLength = &v
	return s
}

// SetMinValue sets the MinValue field's value.
func (s *ParameterDefinition) SetMinValue(v int64) *ParameterDefinition {
	s.MinValue = &v
	return s
}

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

// SetNoEcho sets the NoEcho field's value.
func (s *ParameterDefinition) SetNoEcho(v bool) *ParameterDefinition {
	s.NoEcho = &v
	return s
}

// SetReferencedByResources sets the ReferencedByResources field's value.
func (s *ParameterDefinition) SetReferencedByResources(v []*string) *ParameterDefinition {
	s.ReferencedByResources = v
	return s
}

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

// Parameter value of the application.
type ParameterValue struct {
	_ struct{} `type:"structure"`

	// The key associated with the parameter. If you don't specify a key and value
	// for a particular parameter, AWS CloudFormation\n uses the default value that
	// is specified in your template.
	Name *string `locationName:"name" type:"string"`

	// The input value associated with the parameter.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation
func (s ParameterValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ParameterValue) GoString() string {
	return s.String()
}

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

// SetValue sets the Value field's value.
func (s *ParameterValue) SetValue(v string) *ParameterValue {
	s.Value = &v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	Statements []*ApplicationPolicyStatement `locationName:"statements" type:"list"`
}

// String returns the string representation
func (s PutApplicationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutApplicationPolicyInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *PutApplicationPolicyInput) SetApplicationId(v string) *PutApplicationPolicyInput {
	s.ApplicationId = &v
	return s
}

// SetStatements sets the Statements field's value.
func (s *PutApplicationPolicyInput) SetStatements(v []*ApplicationPolicyStatement) *PutApplicationPolicyInput {
	s.Statements = v
	return s
}

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

	Statements []*ApplicationPolicyStatement `locationName:"statements" type:"list"`
}

// String returns the string representation
func (s PutApplicationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutApplicationPolicyOutput) GoString() string {
	return s.String()
}

// SetStatements sets the Statements field's value.
func (s *PutApplicationPolicyOutput) SetStatements(v []*ApplicationPolicyStatement) *PutApplicationPolicyOutput {
	s.Statements = v
	return s
}

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

	ApplicationId *string `locationName:"applicationId" type:"string"`

	Author *string `locationName:"author" type:"string"`

	CreationTime *string `locationName:"creationTime" type:"string"`

	Description *string `locationName:"description" type:"string"`

	Labels []*string `locationName:"labels" type:"list"`

	LicenseUrl *string `locationName:"licenseUrl" type:"string"`

	Name *string `locationName:"name" type:"string"`

	ReadmeUrl *string `locationName:"readmeUrl" type:"string"`

	SpdxLicenseId *string `locationName:"spdxLicenseId" type:"string"`

	// Application version details.
	Version *Version `locationName:"version" type:"structure"`
}

// String returns the string representation
func (s UpdateApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateApplicationOutput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *UpdateApplicationOutput) SetApplicationId(v string) *UpdateApplicationOutput {
	s.ApplicationId = &v
	return s
}

// SetAuthor sets the Author field's value.
func (s *UpdateApplicationOutput) SetAuthor(v string) *UpdateApplicationOutput {
	s.Author = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *UpdateApplicationOutput) SetCreationTime(v string) *UpdateApplicationOutput {
	s.CreationTime = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *UpdateApplicationOutput) SetLabels(v []*string) *UpdateApplicationOutput {
	s.Labels = v
	return s
}

// SetLicenseUrl sets the LicenseUrl field's value.
func (s *UpdateApplicationOutput) SetLicenseUrl(v string) *UpdateApplicationOutput {
	s.LicenseUrl = &v
	return s
}

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

// SetReadmeUrl sets the ReadmeUrl field's value.
func (s *UpdateApplicationOutput) SetReadmeUrl(v string) *UpdateApplicationOutput {
	s.ReadmeUrl = &v
	return s
}

// SetSpdxLicenseId sets the SpdxLicenseId field's value.
func (s *UpdateApplicationOutput) SetSpdxLicenseId(v string) *UpdateApplicationOutput {
	s.SpdxLicenseId = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *UpdateApplicationOutput) SetVersion(v *Version) *UpdateApplicationOutput {
	s.Version = v
	return s
}

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

	// ApplicationId is a required field
	ApplicationId *string `location:"uri" locationName:"applicationId" type:"string" required:"true"`

	Author *string `locationName:"author" type:"string"`

	Description *string `locationName:"description" type:"string"`

	Labels []*string `locationName:"labels" type:"list"`

	ReadmeBody *string `locationName:"readmeBody" type:"string"`

	ReadmeUrl *string `locationName:"readmeUrl" type:"string"`
}

// String returns the string representation
func (s UpdateApplicationRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateApplicationRequest) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *UpdateApplicationRequest) SetApplicationId(v string) *UpdateApplicationRequest {
	s.ApplicationId = &v
	return s
}

// SetAuthor sets the Author field's value.
func (s *UpdateApplicationRequest) SetAuthor(v string) *UpdateApplicationRequest {
	s.Author = &v
	return s
}

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

// SetLabels sets the Labels field's value.
func (s *UpdateApplicationRequest) SetLabels(v []*string) *UpdateApplicationRequest {
	s.Labels = v
	return s
}

// SetReadmeBody sets the ReadmeBody field's value.
func (s *UpdateApplicationRequest) SetReadmeBody(v string) *UpdateApplicationRequest {
	s.ReadmeBody = &v
	return s
}

// SetReadmeUrl sets the ReadmeUrl field's value.
func (s *UpdateApplicationRequest) SetReadmeUrl(v string) *UpdateApplicationRequest {
	s.ReadmeUrl = &v
	return s
}

// Application version details.
type Version struct {
	_ struct{} `type:"structure"`

	// The application Amazon Resource Name (ARN).
	ApplicationId *string `locationName:"applicationId" type:"string"`

	// The date/time this resource was created.
	CreationTime *string `locationName:"creationTime" type:"string"`

	// Array of parameter types supported by the application.
	ParameterDefinitions []*ParameterDefinition `locationName:"parameterDefinitions" type:"list"`

	// The semantic version of the application:\n\n https://semver.org/
	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	// A link to a public repository for the source code of your application.
	SourceCodeUrl *string `locationName:"sourceCodeUrl" type:"string"`

	// A link to the packaged SAM template of your application.
	TemplateUrl *string `locationName:"templateUrl" type:"string"`
}

// String returns the string representation
func (s Version) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Version) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *Version) SetApplicationId(v string) *Version {
	s.ApplicationId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *Version) SetCreationTime(v string) *Version {
	s.CreationTime = &v
	return s
}

// SetParameterDefinitions sets the ParameterDefinitions field's value.
func (s *Version) SetParameterDefinitions(v []*ParameterDefinition) *Version {
	s.ParameterDefinitions = v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *Version) SetSemanticVersion(v string) *Version {
	s.SemanticVersion = &v
	return s
}

// SetSourceCodeUrl sets the SourceCodeUrl field's value.
func (s *Version) SetSourceCodeUrl(v string) *Version {
	s.SourceCodeUrl = &v
	return s
}

// SetTemplateUrl sets the TemplateUrl field's value.
func (s *Version) SetTemplateUrl(v string) *Version {
	s.TemplateUrl = &v
	return s
}

// Application version summary.
type VersionSummary struct {
	_ struct{} `type:"structure"`

	// The application Amazon Resource Name (ARN).
	ApplicationId *string `locationName:"applicationId" type:"string"`

	// The date/time this resource was created.
	CreationTime *string `locationName:"creationTime" type:"string"`

	// The semantic version of the application:\n\n https://semver.org/
	SemanticVersion *string `locationName:"semanticVersion" type:"string"`

	// A link to a public repository for the source code of your application.
	SourceCodeUrl *string `locationName:"sourceCodeUrl" type:"string"`
}

// String returns the string representation
func (s VersionSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s VersionSummary) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *VersionSummary) SetApplicationId(v string) *VersionSummary {
	s.ApplicationId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *VersionSummary) SetCreationTime(v string) *VersionSummary {
	s.CreationTime = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *VersionSummary) SetSemanticVersion(v string) *VersionSummary {
	s.SemanticVersion = &v
	return s
}

// SetSourceCodeUrl sets the SourceCodeUrl field's value.
func (s *VersionSummary) SetSourceCodeUrl(v string) *VersionSummary {
	s.SourceCodeUrl = &v
	return s
}
