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: 91.108.106.64
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 transfer

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 opCreateAccess = "CreateAccess"

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

	if input == nil {
		input = &CreateAccessInput{}
	}

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

// CreateAccess API operation for AWS Transfer Family.
//
// Used by administrators to choose which groups in the directory should have
// access to upload and download files over the enabled protocols using Transfer
// Family. For example, a Microsoft Active Directory might contain 50,000 users,
// but only a small fraction might need the ability to transfer files to the
// server. An administrator can use CreateAccess to limit the access to the
// correct set of users who need this ability.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateAccess for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateAccess
func (c *Transfer) CreateAccess(input *CreateAccessInput) (*CreateAccessOutput, error) {
	req, out := c.CreateAccessRequest(input)
	return out, req.Send()
}

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

const opCreateAgreement = "CreateAgreement"

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

	if input == nil {
		input = &CreateAgreementInput{}
	}

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

// CreateAgreement API operation for AWS Transfer Family.
//
// Creates an agreement. An agreement is a bilateral trading partner agreement,
// or partnership, between an Transfer Family server and an AS2 process. The
// agreement defines the file and message transfer relationship between the
// server and the AS2 process. To define an agreement, Transfer Family combines
// a server, local profile, partner profile, certificate, and other attributes.
//
// The partner is identified with the PartnerProfileId, and the AS2 process
// is identified with the LocalProfileId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateAgreement for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateAgreement
func (c *Transfer) CreateAgreement(input *CreateAgreementInput) (*CreateAgreementOutput, error) {
	req, out := c.CreateAgreementRequest(input)
	return out, req.Send()
}

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

const opCreateConnector = "CreateConnector"

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

	if input == nil {
		input = &CreateConnectorInput{}
	}

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

// CreateConnector API operation for AWS Transfer Family.
//
// Creates the connector, which captures the parameters for a connection for
// the AS2 or SFTP protocol. For AS2, the connector is required for sending
// files to an externally hosted AS2 server. For SFTP, the connector is required
// when sending files to an SFTP server or receiving files from an SFTP server.
// For more details about connectors, see Create AS2 connectors (https://docs.aws.amazon.com/transfer/latest/userguide/create-b2b-server.html#configure-as2-connector)
// and Create SFTP connectors (https://docs.aws.amazon.com/transfer/latest/userguide/configure-sftp-connector.html).
//
// You must specify exactly one configuration object: either for AS2 (As2Config)
// or SFTP (SftpConfig).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateConnector for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateConnector
func (c *Transfer) CreateConnector(input *CreateConnectorInput) (*CreateConnectorOutput, error) {
	req, out := c.CreateConnectorRequest(input)
	return out, req.Send()
}

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

const opCreateProfile = "CreateProfile"

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

	if input == nil {
		input = &CreateProfileInput{}
	}

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

// CreateProfile API operation for AWS Transfer Family.
//
// Creates the local or partner profile to use for AS2 transfers.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateProfile for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateProfile
func (c *Transfer) CreateProfile(input *CreateProfileInput) (*CreateProfileOutput, error) {
	req, out := c.CreateProfileRequest(input)
	return out, req.Send()
}

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

const opCreateServer = "CreateServer"

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

	if input == nil {
		input = &CreateServerInput{}
	}

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

// CreateServer API operation for AWS Transfer Family.
//
// Instantiates an auto-scaling virtual server based on the selected file transfer
// protocol in Amazon Web Services. When you make updates to your file transfer
// protocol-enabled server or when you work with users, use the service-generated
// ServerId property that is assigned to the newly created 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 AWS Transfer Family's
// API operation CreateServer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateServer
func (c *Transfer) CreateServer(input *CreateServerInput) (*CreateServerOutput, error) {
	req, out := c.CreateServerRequest(input)
	return out, req.Send()
}

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

const opCreateUser = "CreateUser"

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

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

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

// CreateUser API operation for AWS Transfer Family.
//
// Creates a user and associates them with an existing file transfer protocol-enabled
// server. You can only create and associate users with servers that have the
// IdentityProviderType set to SERVICE_MANAGED. Using parameters for CreateUser,
// you can specify the user name, set the home directory, store the user's public
// key, and assign the user's Identity and Access Management (IAM) role. You
// can also optionally add a session policy, and assign metadata with tags that
// can be used to group and search for users.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateUser
func (c *Transfer) CreateUser(input *CreateUserInput) (*CreateUserOutput, error) {
	req, out := c.CreateUserRequest(input)
	return out, req.Send()
}

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

const opCreateWorkflow = "CreateWorkflow"

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

	if input == nil {
		input = &CreateWorkflowInput{}
	}

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

// CreateWorkflow API operation for AWS Transfer Family.
//
// Allows you to create a workflow with specified steps and step details the
// workflow invokes after file transfer completes. After creating a workflow,
// you can associate the workflow created with any transfer servers by specifying
// the workflow-details field in CreateServer and UpdateServer operations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation CreateWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateWorkflow
func (c *Transfer) CreateWorkflow(input *CreateWorkflowInput) (*CreateWorkflowOutput, error) {
	req, out := c.CreateWorkflowRequest(input)
	return out, req.Send()
}

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

const opDeleteAccess = "DeleteAccess"

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

	if input == nil {
		input = &DeleteAccessInput{}
	}

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

// DeleteAccess API operation for AWS Transfer Family.
//
// Allows you to delete the access specified in the ServerID and ExternalID
// 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 AWS Transfer Family's
// API operation DeleteAccess for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteAccess
func (c *Transfer) DeleteAccess(input *DeleteAccessInput) (*DeleteAccessOutput, error) {
	req, out := c.DeleteAccessRequest(input)
	return out, req.Send()
}

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

const opDeleteAgreement = "DeleteAgreement"

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

	if input == nil {
		input = &DeleteAgreementInput{}
	}

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

// DeleteAgreement API operation for AWS Transfer Family.
//
// Delete the agreement that's specified in the provided AgreementId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteAgreement for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteAgreement
func (c *Transfer) DeleteAgreement(input *DeleteAgreementInput) (*DeleteAgreementOutput, error) {
	req, out := c.DeleteAgreementRequest(input)
	return out, req.Send()
}

// DeleteAgreementWithContext is the same as DeleteAgreement with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteAgreement for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Transfer) DeleteAgreementWithContext(ctx aws.Context, input *DeleteAgreementInput, opts ...request.Option) (*DeleteAgreementOutput, error) {
	req, out := c.DeleteAgreementRequest(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/transfer-2018-11-05/DeleteCertificate
func (c *Transfer) 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)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DeleteCertificate API operation for AWS Transfer Family.
//
// Deletes the certificate that's specified in the CertificateId parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteCertificate
func (c *Transfer) 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 *Transfer) 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 opDeleteConnector = "DeleteConnector"

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

	if input == nil {
		input = &DeleteConnectorInput{}
	}

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

// DeleteConnector API operation for AWS Transfer Family.
//
// Deletes the connector that's specified in the provided ConnectorId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteConnector for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteConnector
func (c *Transfer) DeleteConnector(input *DeleteConnectorInput) (*DeleteConnectorOutput, error) {
	req, out := c.DeleteConnectorRequest(input)
	return out, req.Send()
}

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

const opDeleteHostKey = "DeleteHostKey"

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

	if input == nil {
		input = &DeleteHostKeyInput{}
	}

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

// DeleteHostKey API operation for AWS Transfer Family.
//
// Deletes the host key that's specified in the HostKeyId parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteHostKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteHostKey
func (c *Transfer) DeleteHostKey(input *DeleteHostKeyInput) (*DeleteHostKeyOutput, error) {
	req, out := c.DeleteHostKeyRequest(input)
	return out, req.Send()
}

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

const opDeleteProfile = "DeleteProfile"

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

	if input == nil {
		input = &DeleteProfileInput{}
	}

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

// DeleteProfile API operation for AWS Transfer Family.
//
// Deletes the profile that's specified in the ProfileId parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteProfile for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteProfile
func (c *Transfer) DeleteProfile(input *DeleteProfileInput) (*DeleteProfileOutput, error) {
	req, out := c.DeleteProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteServer = "DeleteServer"

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

	if input == nil {
		input = &DeleteServerInput{}
	}

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

// DeleteServer API operation for AWS Transfer Family.
//
// Deletes the file transfer protocol-enabled server that you specify.
//
// No response returns from this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteServer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteServer
func (c *Transfer) DeleteServer(input *DeleteServerInput) (*DeleteServerOutput, error) {
	req, out := c.DeleteServerRequest(input)
	return out, req.Send()
}

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

const opDeleteSshPublicKey = "DeleteSshPublicKey"

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

	if input == nil {
		input = &DeleteSshPublicKeyInput{}
	}

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

// DeleteSshPublicKey API operation for AWS Transfer Family.
//
// Deletes a user's Secure Shell (SSH) public 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 AWS Transfer Family's
// API operation DeleteSshPublicKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteSshPublicKey
func (c *Transfer) DeleteSshPublicKey(input *DeleteSshPublicKeyInput) (*DeleteSshPublicKeyOutput, error) {
	req, out := c.DeleteSshPublicKeyRequest(input)
	return out, req.Send()
}

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

const opDeleteUser = "DeleteUser"

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

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

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

// DeleteUser API operation for AWS Transfer Family.
//
// Deletes the user belonging to a file transfer protocol-enabled server you
// specify.
//
// No response returns from this operation.
//
// When you delete a user from a server, the user's information is 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 AWS Transfer Family's
// API operation DeleteUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteUser
func (c *Transfer) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
	req, out := c.DeleteUserRequest(input)
	return out, req.Send()
}

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

const opDeleteWorkflow = "DeleteWorkflow"

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

	if input == nil {
		input = &DeleteWorkflowInput{}
	}

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

// DeleteWorkflow API operation for AWS Transfer Family.
//
// Deletes the specified workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DeleteWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteWorkflow
func (c *Transfer) DeleteWorkflow(input *DeleteWorkflowInput) (*DeleteWorkflowOutput, error) {
	req, out := c.DeleteWorkflowRequest(input)
	return out, req.Send()
}

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

const opDescribeAccess = "DescribeAccess"

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

	if input == nil {
		input = &DescribeAccessInput{}
	}

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

// DescribeAccess API operation for AWS Transfer Family.
//
// Describes the access that is assigned to the specific file transfer protocol-enabled
// server, as identified by its ServerId property and its ExternalId.
//
// The response from this call returns the properties of the access that is
// associated with the ServerId value that was specified.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeAccess for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeAccess
func (c *Transfer) DescribeAccess(input *DescribeAccessInput) (*DescribeAccessOutput, error) {
	req, out := c.DescribeAccessRequest(input)
	return out, req.Send()
}

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

const opDescribeAgreement = "DescribeAgreement"

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

	if input == nil {
		input = &DescribeAgreementInput{}
	}

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

// DescribeAgreement API operation for AWS Transfer Family.
//
// Describes the agreement that's identified by the AgreementId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeAgreement for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeAgreement
func (c *Transfer) DescribeAgreement(input *DescribeAgreementInput) (*DescribeAgreementOutput, error) {
	req, out := c.DescribeAgreementRequest(input)
	return out, req.Send()
}

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

const opDescribeCertificate = "DescribeCertificate"

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

	if input == nil {
		input = &DescribeCertificateInput{}
	}

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

// DescribeCertificate API operation for AWS Transfer Family.
//
// Describes the certificate that's identified by the CertificateId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeCertificate
func (c *Transfer) DescribeCertificate(input *DescribeCertificateInput) (*DescribeCertificateOutput, error) {
	req, out := c.DescribeCertificateRequest(input)
	return out, req.Send()
}

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

const opDescribeConnector = "DescribeConnector"

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

	if input == nil {
		input = &DescribeConnectorInput{}
	}

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

// DescribeConnector API operation for AWS Transfer Family.
//
// Describes the connector that's identified by the ConnectorId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeConnector for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeConnector
func (c *Transfer) DescribeConnector(input *DescribeConnectorInput) (*DescribeConnectorOutput, error) {
	req, out := c.DescribeConnectorRequest(input)
	return out, req.Send()
}

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

const opDescribeExecution = "DescribeExecution"

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

	if input == nil {
		input = &DescribeExecutionInput{}
	}

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

// DescribeExecution API operation for AWS Transfer Family.
//
// You can use DescribeExecution to check the details of the execution of the
// specified workflow.
//
// This API call only returns details for in-progress workflows.
//
// If you provide an ID for an execution that is not in progress, or if the
// execution doesn't match the specified workflow ID, you receive a ResourceNotFound
// exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeExecution for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeExecution
func (c *Transfer) DescribeExecution(input *DescribeExecutionInput) (*DescribeExecutionOutput, error) {
	req, out := c.DescribeExecutionRequest(input)
	return out, req.Send()
}

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

const opDescribeHostKey = "DescribeHostKey"

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

	if input == nil {
		input = &DescribeHostKeyInput{}
	}

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

// DescribeHostKey API operation for AWS Transfer Family.
//
// Returns the details of the host key that's specified by the HostKeyId and
// ServerId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeHostKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeHostKey
func (c *Transfer) DescribeHostKey(input *DescribeHostKeyInput) (*DescribeHostKeyOutput, error) {
	req, out := c.DescribeHostKeyRequest(input)
	return out, req.Send()
}

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

const opDescribeProfile = "DescribeProfile"

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

	if input == nil {
		input = &DescribeProfileInput{}
	}

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

// DescribeProfile API operation for AWS Transfer Family.
//
// Returns the details of the profile that's specified by the ProfileId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeProfile for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeProfile
func (c *Transfer) DescribeProfile(input *DescribeProfileInput) (*DescribeProfileOutput, error) {
	req, out := c.DescribeProfileRequest(input)
	return out, req.Send()
}

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

const opDescribeSecurityPolicy = "DescribeSecurityPolicy"

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

	if input == nil {
		input = &DescribeSecurityPolicyInput{}
	}

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

// DescribeSecurityPolicy API operation for AWS Transfer Family.
//
// Describes the security policy that is attached to your file transfer protocol-enabled
// server. The response contains a description of the security policy's properties.
// For more information about security policies, see Working with security policies
// (https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeSecurityPolicy for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeSecurityPolicy
func (c *Transfer) DescribeSecurityPolicy(input *DescribeSecurityPolicyInput) (*DescribeSecurityPolicyOutput, error) {
	req, out := c.DescribeSecurityPolicyRequest(input)
	return out, req.Send()
}

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

const opDescribeServer = "DescribeServer"

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

	if input == nil {
		input = &DescribeServerInput{}
	}

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

// DescribeServer API operation for AWS Transfer Family.
//
// Describes a file transfer protocol-enabled server that you specify by passing
// the ServerId parameter.
//
// The response contains a description of a server's properties. When you set
// EndpointType to VPC, the response will contain the EndpointDetails.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeServer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeServer
func (c *Transfer) DescribeServer(input *DescribeServerInput) (*DescribeServerOutput, error) {
	req, out := c.DescribeServerRequest(input)
	return out, req.Send()
}

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

const opDescribeUser = "DescribeUser"

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

	if input == nil {
		input = &DescribeUserInput{}
	}

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

// DescribeUser API operation for AWS Transfer Family.
//
// Describes the user assigned to the specific file transfer protocol-enabled
// server, as identified by its ServerId property.
//
// The response from this call returns the properties of the user associated
// with the ServerId value that was specified.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeUser
func (c *Transfer) DescribeUser(input *DescribeUserInput) (*DescribeUserOutput, error) {
	req, out := c.DescribeUserRequest(input)
	return out, req.Send()
}

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

const opDescribeWorkflow = "DescribeWorkflow"

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

	if input == nil {
		input = &DescribeWorkflowInput{}
	}

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

// DescribeWorkflow API operation for AWS Transfer Family.
//
// Describes the specified workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation DescribeWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeWorkflow
func (c *Transfer) DescribeWorkflow(input *DescribeWorkflowInput) (*DescribeWorkflowOutput, error) {
	req, out := c.DescribeWorkflowRequest(input)
	return out, req.Send()
}

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

const opImportCertificate = "ImportCertificate"

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

	if input == nil {
		input = &ImportCertificateInput{}
	}

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

// ImportCertificate API operation for AWS Transfer Family.
//
// Imports the signing and encryption certificates that you need to create local
// (AS2) profiles and partner profiles.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ImportCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ImportCertificate
func (c *Transfer) ImportCertificate(input *ImportCertificateInput) (*ImportCertificateOutput, error) {
	req, out := c.ImportCertificateRequest(input)
	return out, req.Send()
}

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

const opImportHostKey = "ImportHostKey"

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

	if input == nil {
		input = &ImportHostKeyInput{}
	}

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

// ImportHostKey API operation for AWS Transfer Family.
//
// Adds a host key to the server that's specified by the ServerId parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ImportHostKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ImportHostKey
func (c *Transfer) ImportHostKey(input *ImportHostKeyInput) (*ImportHostKeyOutput, error) {
	req, out := c.ImportHostKeyRequest(input)
	return out, req.Send()
}

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

const opImportSshPublicKey = "ImportSshPublicKey"

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

	if input == nil {
		input = &ImportSshPublicKeyInput{}
	}

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

// ImportSshPublicKey API operation for AWS Transfer Family.
//
// Adds a Secure Shell (SSH) public key to a Transfer Family user identified
// by a UserName value assigned to the specific file transfer protocol-enabled
// server, identified by ServerId.
//
// The response returns the UserName value, the ServerId value, and the name
// of the SshPublicKeyId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ImportSshPublicKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ImportSshPublicKey
func (c *Transfer) ImportSshPublicKey(input *ImportSshPublicKeyInput) (*ImportSshPublicKeyOutput, error) {
	req, out := c.ImportSshPublicKeyRequest(input)
	return out, req.Send()
}

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

const opListAccesses = "ListAccesses"

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

	if input == nil {
		input = &ListAccessesInput{}
	}

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

// ListAccesses API operation for AWS Transfer Family.
//
// Lists the details for all the accesses you have on your 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 AWS Transfer Family's
// API operation ListAccesses for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListAccesses
func (c *Transfer) ListAccesses(input *ListAccessesInput) (*ListAccessesOutput, error) {
	req, out := c.ListAccessesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAgreements = "ListAgreements"

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

	if input == nil {
		input = &ListAgreementsInput{}
	}

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

// ListAgreements API operation for AWS Transfer Family.
//
// Returns a list of the agreements for the server that's identified by the
// ServerId that you supply. If you want to limit the results to a certain number,
// supply a value for the MaxResults parameter. If you ran the command previously
// and received a value for NextToken, you can supply that value to continue
// listing agreements from where you left off.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListAgreements for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListAgreements
func (c *Transfer) ListAgreements(input *ListAgreementsInput) (*ListAgreementsOutput, error) {
	req, out := c.ListAgreementsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCertificates = "ListCertificates"

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

	if input == nil {
		input = &ListCertificatesInput{}
	}

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

// ListCertificates API operation for AWS Transfer Family.
//
// Returns a list of the current certificates that have been imported into Transfer
// Family. If you want to limit the results to a certain number, supply a value
// for the MaxResults parameter. If you ran the command previously and received
// a value for the NextToken parameter, you can supply that value to continue
// listing certificates from where you left off.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListCertificates for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListCertificates
func (c *Transfer) ListCertificates(input *ListCertificatesInput) (*ListCertificatesOutput, error) {
	req, out := c.ListCertificatesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListConnectors = "ListConnectors"

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

	if input == nil {
		input = &ListConnectorsInput{}
	}

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

// ListConnectors API operation for AWS Transfer Family.
//
// Lists the connectors for the specified 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 AWS Transfer Family's
// API operation ListConnectors for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListConnectors
func (c *Transfer) ListConnectors(input *ListConnectorsInput) (*ListConnectorsOutput, error) {
	req, out := c.ListConnectorsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListExecutions = "ListExecutions"

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

	if input == nil {
		input = &ListExecutionsInput{}
	}

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

// ListExecutions API operation for AWS Transfer Family.
//
// Lists all in-progress executions for the specified workflow.
//
// If the specified workflow ID cannot be found, ListExecutions returns a ResourceNotFound
// exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListExecutions for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListExecutions
func (c *Transfer) ListExecutions(input *ListExecutionsInput) (*ListExecutionsOutput, error) {
	req, out := c.ListExecutionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListHostKeys = "ListHostKeys"

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

	if input == nil {
		input = &ListHostKeysInput{}
	}

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

// ListHostKeys API operation for AWS Transfer Family.
//
// Returns a list of host keys for the server that's specified by the ServerId
// parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListHostKeys for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListHostKeys
func (c *Transfer) ListHostKeys(input *ListHostKeysInput) (*ListHostKeysOutput, error) {
	req, out := c.ListHostKeysRequest(input)
	return out, req.Send()
}

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

const opListProfiles = "ListProfiles"

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

	if input == nil {
		input = &ListProfilesInput{}
	}

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

// ListProfiles API operation for AWS Transfer Family.
//
// Returns a list of the profiles for your system. If you want to limit the
// results to a certain number, supply a value for the MaxResults parameter.
// If you ran the command previously and received a value for NextToken, you
// can supply that value to continue listing profiles from where you left off.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListProfiles for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListProfiles
func (c *Transfer) ListProfiles(input *ListProfilesInput) (*ListProfilesOutput, error) {
	req, out := c.ListProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityPolicies = "ListSecurityPolicies"

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

	if input == nil {
		input = &ListSecurityPoliciesInput{}
	}

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

// ListSecurityPolicies API operation for AWS Transfer Family.
//
// Lists the security policies that are attached to your file transfer protocol-enabled
// servers.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListSecurityPolicies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListSecurityPolicies
func (c *Transfer) ListSecurityPolicies(input *ListSecurityPoliciesInput) (*ListSecurityPoliciesOutput, error) {
	req, out := c.ListSecurityPoliciesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListServers = "ListServers"

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

	if input == nil {
		input = &ListServersInput{}
	}

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

// ListServers API operation for AWS Transfer Family.
//
// Lists the file transfer protocol-enabled servers that are associated with
// your 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 AWS Transfer Family's
// API operation ListServers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListServers
func (c *Transfer) ListServers(input *ListServersInput) (*ListServersOutput, error) {
	req, out := c.ListServersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTagsForResource = "ListTagsForResource"

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

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

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

// ListTagsForResource API operation for AWS Transfer Family.
//
// Lists all of the tags associated with the Amazon Resource Name (ARN) that
// you specify. The resource can be a user, server, or role.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListTagsForResource
func (c *Transfer) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUsers = "ListUsers"

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

	if input == nil {
		input = &ListUsersInput{}
	}

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

// ListUsers API operation for AWS Transfer Family.
//
// Lists the users for a file transfer protocol-enabled server that you specify
// by passing the ServerId parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation ListUsers for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListUsers
func (c *Transfer) ListUsers(input *ListUsersInput) (*ListUsersOutput, error) {
	req, out := c.ListUsersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflows = "ListWorkflows"

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

	if input == nil {
		input = &ListWorkflowsInput{}
	}

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

// ListWorkflows API operation for AWS Transfer Family.
//
// Lists all workflows associated with your Amazon Web Services account for
// your current 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 AWS Transfer Family's
// API operation ListWorkflows for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - InvalidNextTokenException
//     The NextToken parameter that was passed is invalid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListWorkflows
func (c *Transfer) ListWorkflows(input *ListWorkflowsInput) (*ListWorkflowsOutput, error) {
	req, out := c.ListWorkflowsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSendWorkflowStepState = "SendWorkflowStepState"

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

	if input == nil {
		input = &SendWorkflowStepStateInput{}
	}

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

// SendWorkflowStepState API operation for AWS Transfer Family.
//
// Sends a callback for asynchronous custom steps.
//
// The ExecutionId, WorkflowId, and Token are passed to the target resource
// during execution of a custom step of a workflow. You must include those with
// their callback as well as providing a status.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation SendWorkflowStepState for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/SendWorkflowStepState
func (c *Transfer) SendWorkflowStepState(input *SendWorkflowStepStateInput) (*SendWorkflowStepStateOutput, error) {
	req, out := c.SendWorkflowStepStateRequest(input)
	return out, req.Send()
}

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

const opStartFileTransfer = "StartFileTransfer"

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

	if input == nil {
		input = &StartFileTransferInput{}
	}

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

// StartFileTransfer API operation for AWS Transfer Family.
//
// Begins a file transfer between local Amazon Web Services storage and a remote
// AS2 or SFTP server.
//
//   - For an AS2 connector, you specify the ConnectorId and one or more SendFilePaths
//     to identify the files you want to transfer.
//
//   - For an SFTP connector, the file transfer can be either outbound or inbound.
//     In both cases, you specify the ConnectorId. Depending on the direction
//     of the transfer, you also specify the following items: If you are transferring
//     file from a partner's SFTP server to Amazon Web Services storage, you
//     specify one or more RetreiveFilePaths to identify the files you want to
//     transfer, and a LocalDirectoryPath to specify the destination folder.
//     If you are transferring file to a partner's SFTP server from Amazon Web
//     Services storage, you specify one or more SendFilePaths to identify the
//     files you want to transfer, and a RemoteDirectoryPath to specify the destination
//     folder.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation StartFileTransfer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/StartFileTransfer
func (c *Transfer) StartFileTransfer(input *StartFileTransferInput) (*StartFileTransferOutput, error) {
	req, out := c.StartFileTransferRequest(input)
	return out, req.Send()
}

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

const opStartServer = "StartServer"

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

	if input == nil {
		input = &StartServerInput{}
	}

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

// StartServer API operation for AWS Transfer Family.
//
// Changes the state of a file transfer protocol-enabled server from OFFLINE
// to ONLINE. It has no impact on a server that is already ONLINE. An ONLINE
// server can accept and process file transfer jobs.
//
// The state of STARTING indicates that the server is in an intermediate state,
// either not fully able to respond, or not fully online. The values of START_FAILED
// can indicate an error condition.
//
// No response is returned from this 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 AWS Transfer Family's
// API operation StartServer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/StartServer
func (c *Transfer) StartServer(input *StartServerInput) (*StartServerOutput, error) {
	req, out := c.StartServerRequest(input)
	return out, req.Send()
}

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

const opStopServer = "StopServer"

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

	if input == nil {
		input = &StopServerInput{}
	}

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

// StopServer API operation for AWS Transfer Family.
//
// Changes the state of a file transfer protocol-enabled server from ONLINE
// to OFFLINE. An OFFLINE server cannot accept and process file transfer jobs.
// Information tied to your server, such as server and user properties, are
// not affected by stopping your server.
//
// Stopping the server does not reduce or impact your file transfer protocol
// endpoint billing; you must delete the server to stop being billed.
//
// The state of STOPPING indicates that the server is in an intermediate state,
// either not fully able to respond, or not fully offline. The values of STOP_FAILED
// can indicate an error condition.
//
// No response is returned from this 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 AWS Transfer Family's
// API operation StopServer for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/StopServer
func (c *Transfer) StopServer(input *StopServerInput) (*StopServerOutput, error) {
	req, out := c.StopServerRequest(input)
	return out, req.Send()
}

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

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

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

// TagResource API operation for AWS Transfer Family.
//
// Attaches a key-value pair to a resource, as identified by its Amazon Resource
// Name (ARN). Resources are users, servers, roles, and other entities.
//
// There is no response returned from this 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 AWS Transfer Family's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/TagResource
func (c *Transfer) 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 *Transfer) 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 opTestConnection = "TestConnection"

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

	if input == nil {
		input = &TestConnectionInput{}
	}

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

// TestConnection API operation for AWS Transfer Family.
//
// Tests whether your SFTP connector is set up successfully. We highly recommend
// that you call this operation to test your ability to transfer files between
// local Amazon Web Services storage and a trading partner's SFTP 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 AWS Transfer Family's
// API operation TestConnection for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/TestConnection
func (c *Transfer) TestConnection(input *TestConnectionInput) (*TestConnectionOutput, error) {
	req, out := c.TestConnectionRequest(input)
	return out, req.Send()
}

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

const opTestIdentityProvider = "TestIdentityProvider"

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

	if input == nil {
		input = &TestIdentityProviderInput{}
	}

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

// TestIdentityProvider API operation for AWS Transfer Family.
//
// If the IdentityProviderType of a file transfer protocol-enabled server is
// AWS_DIRECTORY_SERVICE or API_Gateway, tests whether your identity provider
// is set up successfully. We highly recommend that you call this operation
// to test your authentication method as soon as you create your server. By
// doing so, you can troubleshoot issues with the identity provider integration
// to ensure that your users can successfully use the service.
//
// The ServerId and UserName parameters are required. The ServerProtocol, SourceIp,
// and UserPassword are all optional.
//
// Note the following:
//
//   - You cannot use TestIdentityProvider if the IdentityProviderType of your
//     server is SERVICE_MANAGED.
//
//   - TestIdentityProvider does not work with keys: it only accepts passwords.
//
//   - TestIdentityProvider can test the password operation for a custom Identity
//     Provider that handles keys and passwords.
//
//   - If you provide any incorrect values for any parameters, the Response
//     field is empty.
//
//   - If you provide a server ID for a server that uses service-managed users,
//     you get an error: An error occurred (InvalidRequestException) when calling
//     the TestIdentityProvider operation: s-server-ID not configured for external
//     auth
//
//   - If you enter a Server ID for the --server-id parameter that does not
//     identify an actual Transfer server, you receive the following error: An
//     error occurred (ResourceNotFoundException) when calling the TestIdentityProvider
//     operation: Unknown server. It is possible your sever is in a different
//     region. You can specify a region by adding the following: --region region-code,
//     such as --region us-east-2 to specify a server in US East (Ohio).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation TestIdentityProvider for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/TestIdentityProvider
func (c *Transfer) TestIdentityProvider(input *TestIdentityProviderInput) (*TestIdentityProviderOutput, error) {
	req, out := c.TestIdentityProviderRequest(input)
	return out, req.Send()
}

// TestIdentityProviderWithContext is the same as TestIdentityProvider with the addition of
// the ability to pass a context and additional request options.
//
// See TestIdentityProvider for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Transfer) TestIdentityProviderWithContext(ctx aws.Context, input *TestIdentityProviderInput, opts ...request.Option) (*TestIdentityProviderOutput, error) {
	req, out := c.TestIdentityProviderRequest(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/transfer-2018-11-05/UntagResource
func (c *Transfer) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

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

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

// UntagResource API operation for AWS Transfer Family.
//
// Detaches a key-value pair from a resource, as identified by its Amazon Resource
// Name (ARN). Resources are users, servers, roles, and other entities.
//
// No response is returned from this 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 AWS Transfer Family's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UntagResource
func (c *Transfer) 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 *Transfer) 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 opUpdateAccess = "UpdateAccess"

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

	if input == nil {
		input = &UpdateAccessInput{}
	}

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

// UpdateAccess API operation for AWS Transfer Family.
//
// Allows you to update parameters for the access specified in the ServerID
// and ExternalID 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 AWS Transfer Family's
// API operation UpdateAccess for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateAccess
func (c *Transfer) UpdateAccess(input *UpdateAccessInput) (*UpdateAccessOutput, error) {
	req, out := c.UpdateAccessRequest(input)
	return out, req.Send()
}

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

const opUpdateAgreement = "UpdateAgreement"

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

	if input == nil {
		input = &UpdateAgreementInput{}
	}

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

// UpdateAgreement API operation for AWS Transfer Family.
//
// Updates some of the parameters for an existing agreement. Provide the AgreementId
// and the ServerId for the agreement that you want to update, along with the
// new values for the parameters to update.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation UpdateAgreement for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateAgreement
func (c *Transfer) UpdateAgreement(input *UpdateAgreementInput) (*UpdateAgreementOutput, error) {
	req, out := c.UpdateAgreementRequest(input)
	return out, req.Send()
}

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

const opUpdateCertificate = "UpdateCertificate"

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

	if input == nil {
		input = &UpdateCertificateInput{}
	}

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

// UpdateCertificate API operation for AWS Transfer Family.
//
// Updates the active and inactive dates for a 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 AWS Transfer Family's
// API operation UpdateCertificate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateCertificate
func (c *Transfer) UpdateCertificate(input *UpdateCertificateInput) (*UpdateCertificateOutput, error) {
	req, out := c.UpdateCertificateRequest(input)
	return out, req.Send()
}

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

const opUpdateConnector = "UpdateConnector"

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

	if input == nil {
		input = &UpdateConnectorInput{}
	}

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

// UpdateConnector API operation for AWS Transfer Family.
//
// Updates some of the parameters for an existing connector. Provide the ConnectorId
// for the connector that you want to update, along with the new values for
// the parameters to update.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation UpdateConnector for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateConnector
func (c *Transfer) UpdateConnector(input *UpdateConnectorInput) (*UpdateConnectorOutput, error) {
	req, out := c.UpdateConnectorRequest(input)
	return out, req.Send()
}

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

const opUpdateHostKey = "UpdateHostKey"

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

	if input == nil {
		input = &UpdateHostKeyInput{}
	}

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

// UpdateHostKey API operation for AWS Transfer Family.
//
// Updates the description for the host key that's specified by the ServerId
// and HostKeyId 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 AWS Transfer Family's
// API operation UpdateHostKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateHostKey
func (c *Transfer) UpdateHostKey(input *UpdateHostKeyInput) (*UpdateHostKeyOutput, error) {
	req, out := c.UpdateHostKeyRequest(input)
	return out, req.Send()
}

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

const opUpdateProfile = "UpdateProfile"

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

	if input == nil {
		input = &UpdateProfileInput{}
	}

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

// UpdateProfile API operation for AWS Transfer Family.
//
// Updates some of the parameters for an existing profile. Provide the ProfileId
// for the profile that you want to update, along with the new values for the
// parameters to update.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation UpdateProfile for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateProfile
func (c *Transfer) UpdateProfile(input *UpdateProfileInput) (*UpdateProfileOutput, error) {
	req, out := c.UpdateProfileRequest(input)
	return out, req.Send()
}

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

const opUpdateServer = "UpdateServer"

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

	if input == nil {
		input = &UpdateServerInput{}
	}

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

// UpdateServer API operation for AWS Transfer Family.
//
// Updates the file transfer protocol-enabled server's properties after that
// server has been created.
//
// The UpdateServer call returns the ServerId of the server you updated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation UpdateServer for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     This exception is thrown when the UpdateServer is called for a file transfer
//     protocol-enabled server that has VPC as the endpoint type and the server's
//     VpcEndpointID is not in the available state.
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
//   - ResourceExistsException
//     The requested resource does not exist, or exists in a region other than the
//     one specified for the command.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateServer
func (c *Transfer) UpdateServer(input *UpdateServerInput) (*UpdateServerOutput, error) {
	req, out := c.UpdateServerRequest(input)
	return out, req.Send()
}

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

const opUpdateUser = "UpdateUser"

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

	if input == nil {
		input = &UpdateUserInput{}
	}

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

// UpdateUser API operation for AWS Transfer Family.
//
// Assigns new properties to a user. Parameters you pass modify any or all of
// the following: the home directory, role, and policy for the UserName and
// ServerId you specify.
//
// The response returns the ServerId and the UserName for the updated user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Transfer Family's
// API operation UpdateUser for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
//     Family service.
//
//   - InvalidRequestException
//     This exception is thrown when the client submits a malformed request.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServiceError
//     This exception is thrown when an error occurs in the Transfer Family service.
//
//   - ServiceUnavailableException
//     The request has failed because the Amazon Web ServicesTransfer Family service
//     is not available.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/UpdateUser
func (c *Transfer) UpdateUser(input *UpdateUserInput) (*UpdateUserOutput, error) {
	req, out := c.UpdateUserRequest(input)
	return out, req.Send()
}

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

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

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

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

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

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Contains the details for an AS2 connector object. The connector object is
// used for AS2 outbound processes, to connect the Transfer Family customer
// with the trading partner.
type As2ConnectorConfig struct {
	_ struct{} `type:"structure"`

	// Provides Basic authentication support to the AS2 Connectors API. To use Basic
	// authentication, you must provide the name or Amazon Resource Name (ARN) of
	// a secret in Secrets Manager.
	//
	// The default value for this parameter is null, which indicates that Basic
	// authentication is not enabled for the connector.
	//
	// If the connector should use Basic authentication, the secret needs to be
	// in the following format:
	//
	// { "Username": "user-name", "Password": "user-password" }
	//
	// Replace user-name and user-password with the credentials for the actual user
	// that is being authenticated.
	//
	// Note the following:
	//
	//    * You are storing these credentials in Secrets Manager, not passing them
	//    directly into this API.
	//
	//    * If you are using the API, SDKs, or CloudFormation to configure your
	//    connector, then you must create the secret before you can enable Basic
	//    authentication. However, if you are using the Amazon Web Services management
	//    console, you can have the system create the secret for you.
	//
	// If you have previously enabled Basic authentication for a connector, you
	// can disable it by using the UpdateConnector API call. For example, if you
	// are using the CLI, you can run the following command to remove Basic authentication:
	//
	// update-connector --connector-id my-connector-id --as2-config 'BasicAuthSecretId=""'
	BasicAuthSecretId *string `type:"string"`

	// Specifies whether the AS2 file is compressed.
	Compression *string `type:"string" enum:"CompressionEnum"`

	// The algorithm that is used to encrypt the file.
	//
	// You can only specify NONE if the URL for your connector uses HTTPS. This
	// ensures that no traffic is sent in clear text.
	EncryptionAlgorithm *string `type:"string" enum:"EncryptionAlg"`

	// A unique identifier for the AS2 local profile.
	LocalProfileId *string `min:"19" type:"string"`

	// Used for outbound requests (from an Transfer Family server to a partner AS2
	// server) to determine whether the partner response for transfers is synchronous
	// or asynchronous. Specify either of the following values:
	//
	//    * SYNC: The system expects a synchronous MDN response, confirming that
	//    the file was transferred successfully (or not).
	//
	//    * NONE: Specifies that no MDN response is required.
	MdnResponse *string `type:"string" enum:"MdnResponse"`

	// The signing algorithm for the MDN response.
	//
	// If set to DEFAULT (or not set at all), the value for SigningAlgorithm is
	// used.
	MdnSigningAlgorithm *string `type:"string" enum:"MdnSigningAlg"`

	// Used as the Subject HTTP header attribute in AS2 messages that are being
	// sent with the connector.
	MessageSubject *string `min:"1" type:"string"`

	// A unique identifier for the partner profile for the connector.
	PartnerProfileId *string `min:"19" type:"string"`

	// The algorithm that is used to sign the AS2 messages sent with the connector.
	SigningAlgorithm *string `type:"string" enum:"SigningAlg"`
}

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

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

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

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

// SetBasicAuthSecretId sets the BasicAuthSecretId field's value.
func (s *As2ConnectorConfig) SetBasicAuthSecretId(v string) *As2ConnectorConfig {
	s.BasicAuthSecretId = &v
	return s
}

// SetCompression sets the Compression field's value.
func (s *As2ConnectorConfig) SetCompression(v string) *As2ConnectorConfig {
	s.Compression = &v
	return s
}

// SetEncryptionAlgorithm sets the EncryptionAlgorithm field's value.
func (s *As2ConnectorConfig) SetEncryptionAlgorithm(v string) *As2ConnectorConfig {
	s.EncryptionAlgorithm = &v
	return s
}

// SetLocalProfileId sets the LocalProfileId field's value.
func (s *As2ConnectorConfig) SetLocalProfileId(v string) *As2ConnectorConfig {
	s.LocalProfileId = &v
	return s
}

// SetMdnResponse sets the MdnResponse field's value.
func (s *As2ConnectorConfig) SetMdnResponse(v string) *As2ConnectorConfig {
	s.MdnResponse = &v
	return s
}

// SetMdnSigningAlgorithm sets the MdnSigningAlgorithm field's value.
func (s *As2ConnectorConfig) SetMdnSigningAlgorithm(v string) *As2ConnectorConfig {
	s.MdnSigningAlgorithm = &v
	return s
}

// SetMessageSubject sets the MessageSubject field's value.
func (s *As2ConnectorConfig) SetMessageSubject(v string) *As2ConnectorConfig {
	s.MessageSubject = &v
	return s
}

// SetPartnerProfileId sets the PartnerProfileId field's value.
func (s *As2ConnectorConfig) SetPartnerProfileId(v string) *As2ConnectorConfig {
	s.PartnerProfileId = &v
	return s
}

// SetSigningAlgorithm sets the SigningAlgorithm field's value.
func (s *As2ConnectorConfig) SetSigningAlgorithm(v string) *As2ConnectorConfig {
	s.SigningAlgorithm = &v
	return s
}

// This exception is thrown when the UpdateServer is called for a file transfer
// protocol-enabled server that has VPC as the endpoint type and the server's
// VpcEndpointID is not in the available state.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Each step type has its own StepDetails structure.
type CopyStepDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the location for the file being copied. Use ${Transfer:UserName}
	// or ${Transfer:UploadDate} in this field to parametrize the destination prefix
	// by username or uploaded date.
	//
	//    * Set the value of DestinationFileLocation to ${Transfer:UserName} to
	//    copy uploaded files to an Amazon S3 bucket that is prefixed with the name
	//    of the Transfer Family user that uploaded the file.
	//
	//    * Set the value of DestinationFileLocation to ${Transfer:UploadDate} to
	//    copy uploaded files to an Amazon S3 bucket that is prefixed with the date
	//    of the upload. The system resolves UploadDate to a date format of YYYY-MM-DD,
	//    based on the date the file is uploaded in UTC.
	DestinationFileLocation *InputFileLocation `type:"structure"`

	// The name of the step, used as an identifier.
	Name *string `type:"string"`

	// A flag that indicates whether to overwrite an existing file of the same name.
	// The default is FALSE.
	//
	// If the workflow is processing a file that has the same name as an existing
	// file, the behavior is as follows:
	//
	//    * If OverwriteExisting is TRUE, the existing file is replaced with the
	//    file being processed.
	//
	//    * If OverwriteExisting is FALSE, nothing happens, and the workflow processing
	//    stops.
	OverwriteExisting *string `type:"string" enum:"OverwriteExisting"`

	// Specifies which file to use as input to the workflow step: either the output
	// from the previous step, or the originally uploaded file for the workflow.
	//
	//    * To use the previous file as the input, enter ${previous.file}. In this
	//    case, this workflow step uses the output file from the previous workflow
	//    step as input. This is the default value.
	//
	//    * To use the originally uploaded file location as input for this step,
	//    enter ${original.file}.
	SourceFileLocation *string `type:"string"`
}

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

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

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

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

// SetDestinationFileLocation sets the DestinationFileLocation field's value.
func (s *CopyStepDetails) SetDestinationFileLocation(v *InputFileLocation) *CopyStepDetails {
	s.DestinationFileLocation = v
	return s
}

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

// SetOverwriteExisting sets the OverwriteExisting field's value.
func (s *CopyStepDetails) SetOverwriteExisting(v string) *CopyStepDetails {
	s.OverwriteExisting = &v
	return s
}

// SetSourceFileLocation sets the SourceFileLocation field's value.
func (s *CopyStepDetails) SetSourceFileLocation(v string) *CopyStepDetails {
	s.SourceFileLocation = &v
	return s
}

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

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// The following is an Entry and Target pair example.
	//
	// [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ]
	//
	// In most cases, you can use this value instead of the session policy to lock
	// down your user to the designated home directory ("chroot"). To do this, you
	// can set Entry to / and set Target to the HomeDirectory parameter value.
	//
	// The following is an Entry and Target pair example for chroot.
	//
	// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	//
	// This policy applies only when the domain of ServerId is Amazon S3. Amazon
	// EFS does not use session policies.
	//
	// For session policies, Transfer Family stores the policy as a JSON blob, instead
	// of the Amazon Resource Name (ARN) of the policy. You save the policy as a
	// JSON blob and pass it in the Policy argument.
	//
	// For an example of a session policy, see Example session policy (https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html).
	//
	// For more information, see AssumeRole (https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
	// in the Security Token Service API Reference.
	Policy *string `type:"string"`

	// The full POSIX identity, including user ID (Uid), group ID (Gid), and any
	// secondary groups IDs (SecondaryGids), that controls your users' access to
	// your Amazon EFS file systems. The POSIX permissions that are set on files
	// and directories in your file system determine the level of access your users
	// get when transferring files into and out of your Amazon EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	//
	// Role is a required field
	Role *string `min:"20" type:"string" required:"true"`

	// A system-assigned unique identifier for a server instance. This is the specific
	// server that you added your user to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 CreateAccessInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExternalId sets the ExternalId field's value.
func (s *CreateAccessInput) SetExternalId(v string) *CreateAccessInput {
	s.ExternalId = &v
	return s
}

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *CreateAccessInput) SetHomeDirectory(v string) *CreateAccessInput {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *CreateAccessInput) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *CreateAccessInput {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *CreateAccessInput) SetHomeDirectoryType(v string) *CreateAccessInput {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *CreateAccessInput) SetPolicy(v string) *CreateAccessInput {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *CreateAccessInput) SetPosixProfile(v *PosixProfile) *CreateAccessInput {
	s.PosixProfile = v
	return s
}

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

// SetServerId sets the ServerId field's value.
func (s *CreateAccessInput) SetServerId(v string) *CreateAccessInput {
	s.ServerId = &v
	return s
}

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

	// The external identifier of the group whose users have access to your Amazon
	// S3 or Amazon EFS resources over the enabled protocols using Transfer Family.
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// The identifier of the server that the user is attached to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 CreateAccessOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetExternalId sets the ExternalId field's value.
func (s *CreateAccessOutput) SetExternalId(v string) *CreateAccessOutput {
	s.ExternalId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *CreateAccessOutput) SetServerId(v string) *CreateAccessOutput {
	s.ServerId = &v
	return s
}

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

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	//
	// AccessRole is a required field
	AccessRole *string `min:"20" type:"string" required:"true"`

	// The landing directory (folder) for files transferred by using the AS2 protocol.
	//
	// A BaseDirectory example is /DOC-EXAMPLE-BUCKET/home/mydirectory.
	//
	// BaseDirectory is a required field
	BaseDirectory *string `type:"string" required:"true"`

	// A name or short description to identify the agreement.
	Description *string `min:"1" type:"string"`

	// A unique identifier for the AS2 local profile.
	//
	// LocalProfileId is a required field
	LocalProfileId *string `min:"19" type:"string" required:"true"`

	// A unique identifier for the partner profile used in the agreement.
	//
	// PartnerProfileId is a required field
	PartnerProfileId *string `min:"19" type:"string" required:"true"`

	// A system-assigned unique identifier for a server instance. This is the specific
	// server that the agreement uses.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The status of the agreement. The agreement can be either ACTIVE or INACTIVE.
	Status *string `type:"string" enum:"AgreementStatusType"`

	// Key-value pairs that can be used to group and search for agreements.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

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

// SetAccessRole sets the AccessRole field's value.
func (s *CreateAgreementInput) SetAccessRole(v string) *CreateAgreementInput {
	s.AccessRole = &v
	return s
}

// SetBaseDirectory sets the BaseDirectory field's value.
func (s *CreateAgreementInput) SetBaseDirectory(v string) *CreateAgreementInput {
	s.BaseDirectory = &v
	return s
}

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

// SetLocalProfileId sets the LocalProfileId field's value.
func (s *CreateAgreementInput) SetLocalProfileId(v string) *CreateAgreementInput {
	s.LocalProfileId = &v
	return s
}

// SetPartnerProfileId sets the PartnerProfileId field's value.
func (s *CreateAgreementInput) SetPartnerProfileId(v string) *CreateAgreementInput {
	s.PartnerProfileId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *CreateAgreementInput) SetServerId(v string) *CreateAgreementInput {
	s.ServerId = &v
	return s
}

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

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

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

	// The unique identifier for the agreement. Use this ID for deleting, or updating
	// an agreement, as well as in any other API calls that require that you specify
	// the agreement ID.
	//
	// AgreementId is a required field
	AgreementId *string `min:"19" 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 CreateAgreementOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAgreementId sets the AgreementId field's value.
func (s *CreateAgreementOutput) SetAgreementId(v string) *CreateAgreementOutput {
	s.AgreementId = &v
	return s
}

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

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	//
	// AccessRole is a required field
	AccessRole *string `min:"20" type:"string" required:"true"`

	// A structure that contains the parameters for an AS2 connector object.
	As2Config *As2ConnectorConfig `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a connector to turn on CloudWatch logging for Amazon S3
	// events. When set, you can view connector activity in your CloudWatch logs.
	LoggingRole *string `min:"20" type:"string"`

	// A structure that contains the parameters for an SFTP connector object.
	SftpConfig *SftpConnectorConfig `type:"structure"`

	// Key-value pairs that can be used to group and search for connectors. Tags
	// are metadata attached to connectors for any purpose.
	Tags []*Tag `min:"1" type:"list"`

	// The URL of the partner's AS2 or SFTP endpoint.
	//
	// Url is a required field
	Url *string `type:"string" required:"true"`
}

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

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

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

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

// SetAccessRole sets the AccessRole field's value.
func (s *CreateConnectorInput) SetAccessRole(v string) *CreateConnectorInput {
	s.AccessRole = &v
	return s
}

// SetAs2Config sets the As2Config field's value.
func (s *CreateConnectorInput) SetAs2Config(v *As2ConnectorConfig) *CreateConnectorInput {
	s.As2Config = v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *CreateConnectorInput) SetLoggingRole(v string) *CreateConnectorInput {
	s.LoggingRole = &v
	return s
}

// SetSftpConfig sets the SftpConfig field's value.
func (s *CreateConnectorInput) SetSftpConfig(v *SftpConnectorConfig) *CreateConnectorInput {
	s.SftpConfig = v
	return s
}

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

// SetUrl sets the Url field's value.
func (s *CreateConnectorInput) SetUrl(v string) *CreateConnectorInput {
	s.Url = &v
	return s
}

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

	// The unique identifier for the connector, returned after the API call succeeds.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" 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 CreateConnectorOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConnectorId sets the ConnectorId field's value.
func (s *CreateConnectorOutput) SetConnectorId(v string) *CreateConnectorOutput {
	s.ConnectorId = &v
	return s
}

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

	// The As2Id is the AS2-name, as defined in the RFC 4130 (https://datatracker.ietf.org/doc/html/rfc4130).
	// For inbound transfers, this is the AS2-From header for the AS2 messages sent
	// from the partner. For outbound connectors, this is the AS2-To header for
	// the AS2 messages sent to the partner using the StartFileTransfer API operation.
	// This ID cannot include spaces.
	//
	// As2Id is a required field
	As2Id *string `min:"1" type:"string" required:"true"`

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	CertificateIds []*string `type:"list"`

	// Determines the type of profile to create:
	//
	//    * Specify LOCAL to create a local profile. A local profile represents
	//    the AS2-enabled Transfer Family server organization or party.
	//
	//    * Specify PARTNER to create a partner profile. A partner profile represents
	//    a remote organization, external to Transfer Family.
	//
	// ProfileType is a required field
	ProfileType *string `type:"string" required:"true" enum:"ProfileType"`

	// Key-value pairs that can be used to group and search for AS2 profiles.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

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

// SetAs2Id sets the As2Id field's value.
func (s *CreateProfileInput) SetAs2Id(v string) *CreateProfileInput {
	s.As2Id = &v
	return s
}

// SetCertificateIds sets the CertificateIds field's value.
func (s *CreateProfileInput) SetCertificateIds(v []*string) *CreateProfileInput {
	s.CertificateIds = v
	return s
}

// SetProfileType sets the ProfileType field's value.
func (s *CreateProfileInput) SetProfileType(v string) *CreateProfileInput {
	s.ProfileType = &v
	return s
}

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

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

	// The unique identifier for the AS2 profile, returned after the API call succeeds.
	//
	// ProfileId is a required field
	ProfileId *string `min:"19" 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 CreateProfileOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetProfileId sets the ProfileId field's value.
func (s *CreateProfileOutput) SetProfileId(v string) *CreateProfileOutput {
	s.ProfileId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the Certificate Manager (ACM) certificate.
	// Required when Protocols is set to FTPS.
	//
	// To request a new public certificate, see Request a public certificate (https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)
	// in the Certificate Manager User Guide.
	//
	// To import an existing certificate into ACM, see Importing certificates into
	// ACM (https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)
	// in the Certificate Manager User Guide.
	//
	// To request a private certificate to use FTPS through private IP addresses,
	// see Request a private certificate (https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html)
	// in the Certificate Manager User Guide.
	//
	// Certificates with the following cryptographic algorithms and key sizes are
	// supported:
	//
	//    * 2048-bit RSA (RSA_2048)
	//
	//    * 4096-bit RSA (RSA_4096)
	//
	//    * Elliptic Prime Curve 256 bit (EC_prime256v1)
	//
	//    * Elliptic Prime Curve 384 bit (EC_secp384r1)
	//
	//    * Elliptic Prime Curve 521 bit (EC_secp521r1)
	//
	// The certificate must be a valid SSL/TLS X.509 version 3 certificate with
	// FQDN or IP address specified and information about the issuer.
	Certificate *string `type:"string"`

	// The domain of the storage system that is used for file transfers. There are
	// two domains available: Amazon Simple Storage Service (Amazon S3) and Amazon
	// Elastic File System (Amazon EFS). The default value is S3.
	//
	// After the server is created, the domain cannot be changed.
	Domain *string `type:"string" enum:"Domain"`

	// The virtual private cloud (VPC) endpoint settings that are configured for
	// your server. When you host your endpoint within your VPC, you can make your
	// endpoint accessible only to resources within your VPC, or you can attach
	// Elastic IP addresses and make your endpoint accessible to clients over the
	// internet. Your VPC's default security groups are automatically assigned to
	// your endpoint.
	EndpointDetails *EndpointDetails `type:"structure"`

	// The type of endpoint that you want your server to use. You can choose to
	// make your server's endpoint publicly accessible (PUBLIC) or host it inside
	// your VPC. With an endpoint that is hosted in a VPC, you can restrict access
	// to your server and resources only within your VPC or choose to make it internet
	// facing by attaching Elastic IP addresses directly to it.
	//
	// After May 19, 2021, you won't be able to create a server using EndpointType=VPC_ENDPOINT
	// in your Amazon Web Services account if your account hasn't already done so
	// before May 19, 2021. If you have already created servers with EndpointType=VPC_ENDPOINT
	// in your Amazon Web Services account on or before May 19, 2021, you will not
	// be affected. After this date, use EndpointType=VPC.
	//
	// For more information, see https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.
	//
	// It is recommended that you use VPC as the EndpointType. With this endpoint
	// type, you have the option to directly associate up to three Elastic IPv4
	// addresses (BYO IP included) with your server's endpoint and use VPC security
	// groups to restrict traffic by the client's public IP address. This is not
	// possible with EndpointType set to VPC_ENDPOINT.
	EndpointType *string `type:"string" enum:"EndpointType"`

	// The RSA, ECDSA, or ED25519 private key to use for your SFTP-enabled server.
	// You can add multiple host keys, in case you want to rotate keys, or have
	// a set of active keys that use different algorithms.
	//
	// Use the following command to generate an RSA 2048 bit key with no passphrase:
	//
	// ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key.
	//
	// Use a minimum value of 2048 for the -b option. You can create a stronger
	// key by using 3072 or 4096.
	//
	// Use the following command to generate an ECDSA 256 bit key with no passphrase:
	//
	// ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key.
	//
	// Valid values for the -b option for ECDSA are 256, 384, and 521.
	//
	// Use the following command to generate an ED25519 key with no passphrase:
	//
	// ssh-keygen -t ed25519 -N "" -f my-new-server-key.
	//
	// For all of these commands, you can replace my-new-server-key with a string
	// of your choice.
	//
	// If you aren't planning to migrate existing users from an existing SFTP-enabled
	// server to a new server, don't update the host key. Accidentally changing
	// a server's host key can be disruptive.
	//
	// For more information, see Manage host keys for your SFTP-enabled server (https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key)
	// in the Transfer Family User Guide.
	//
	// HostKey is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateServerInput's
	// String and GoString methods.
	HostKey *string `type:"string" sensitive:"true"`

	// Required when IdentityProviderType is set to AWS_DIRECTORY_SERVICE, Amazon
	// Web Services_LAMBDA or API_GATEWAY. Accepts an array containing all of the
	// information required to use a directory in AWS_DIRECTORY_SERVICE or invoke
	// a customer-supplied authentication API, including the API Gateway URL. Not
	// required when IdentityProviderType is set to SERVICE_MANAGED.
	IdentityProviderDetails *IdentityProviderDetails `type:"structure"`

	// The mode of authentication for a server. The default value is SERVICE_MANAGED,
	// which allows you to store and access user credentials within the Transfer
	// Family service.
	//
	// Use AWS_DIRECTORY_SERVICE to provide access to Active Directory groups in
	// Directory Service for Microsoft Active Directory or Microsoft Active Directory
	// in your on-premises environment or in Amazon Web Services using AD Connector.
	// This option also requires you to provide a Directory ID by using the IdentityProviderDetails
	// parameter.
	//
	// Use the API_GATEWAY value to integrate with an identity provider of your
	// choosing. The API_GATEWAY setting requires you to provide an Amazon API Gateway
	// endpoint URL to call for authentication by using the IdentityProviderDetails
	// parameter.
	//
	// Use the AWS_LAMBDA value to directly use an Lambda function as your identity
	// provider. If you choose this value, you must specify the ARN for the Lambda
	// function in the Function parameter for the IdentityProviderDetails data type.
	IdentityProviderType *string `type:"string" enum:"IdentityProviderType"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a server to turn on Amazon CloudWatch logging for Amazon
	// S3 or Amazon EFSevents. When set, you can view user activity in your CloudWatch
	// logs.
	LoggingRole *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed after the user authenticates.
	//
	// The SFTP protocol does not support post-authentication display banners.
	PostAuthenticationLoginBanner *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed before the user authenticates. For example, the following banner
	// displays details about using the system:
	//
	// This system is for the use of authorized users only. Individuals using this
	// computer system without authority, or in excess of their authority, are subject
	// to having all of their activities on this system monitored and recorded by
	// system personnel.
	PreAuthenticationLoginBanner *string `type:"string"`

	// The protocol settings that are configured for your server.
	//
	//    * To indicate passive mode (for FTP and FTPS protocols), use the PassiveIp
	//    parameter. Enter a single dotted-quad IPv4 address, such as the external
	//    IP address of a firewall, router, or load balancer.
	//
	//    * To ignore the error that is generated when the client attempts to use
	//    the SETSTAT command on a file that you are uploading to an Amazon S3 bucket,
	//    use the SetStatOption parameter. To have the Transfer Family server ignore
	//    the SETSTAT command and upload files without needing to make any changes
	//    to your SFTP client, set the value to ENABLE_NO_OP. If you set the SetStatOption
	//    parameter to ENABLE_NO_OP, Transfer Family generates a log entry to Amazon
	//    CloudWatch Logs, so that you can determine when the client is making a
	//    SETSTAT call.
	//
	//    * To determine whether your Transfer Family server resumes recent, negotiated
	//    sessions through a unique session ID, use the TlsSessionResumptionMode
	//    parameter.
	//
	//    * As2Transports indicates the transport method for the AS2 messages. Currently,
	//    only HTTP is supported.
	ProtocolDetails *ProtocolDetails `type:"structure"`

	// Specifies the file transfer protocol or protocols over which your file transfer
	// protocol client can connect to your server's endpoint. The available protocols
	// are:
	//
	//    * SFTP (Secure Shell (SSH) File Transfer Protocol): File transfer over
	//    SSH
	//
	//    * FTPS (File Transfer Protocol Secure): File transfer with TLS encryption
	//
	//    * FTP (File Transfer Protocol): Unencrypted file transfer
	//
	//    * AS2 (Applicability Statement 2): used for transporting structured business-to-business
	//    data
	//
	//    * If you select FTPS, you must choose a certificate stored in Certificate
	//    Manager (ACM) which is used to identify your server when clients connect
	//    to it over FTPS.
	//
	//    * If Protocol includes either FTP or FTPS, then the EndpointType must
	//    be VPC and the IdentityProviderType must be either AWS_DIRECTORY_SERVICE,
	//    AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes FTP, then AddressAllocationIds cannot be associated.
	//
	//    * If Protocol is set only to SFTP, the EndpointType can be set to PUBLIC
	//    and the IdentityProviderType can be set any of the supported identity
	//    types: SERVICE_MANAGED, AWS_DIRECTORY_SERVICE, AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes AS2, then the EndpointType must be VPC, and domain
	//    must be Amazon S3.
	Protocols []*string `min:"1" type:"list" enum:"Protocol"`

	// Specifies whether or not performance for your Amazon S3 directories is optimized.
	// This is disabled by default.
	//
	// By default, home directory mappings have a TYPE of DIRECTORY. If you enable
	// this option, you would then need to explicitly set the HomeDirectoryMapEntry
	// Type to FILE if you want a mapping to have a file target.
	S3StorageOptions *S3StorageOptions `type:"structure"`

	// Specifies the name of the security policy that is attached to the server.
	SecurityPolicyName *string `type:"string"`

	// Specifies the log groups to which your server logs are sent.
	//
	// To specify a log group, you must provide the ARN for an existing log group.
	// In this case, the format of the log group is as follows:
	//
	// arn:aws:logs:region-name:amazon-account-id:log-group:log-group-name:*
	//
	// For example, arn:aws:logs:us-east-1:111122223333:log-group:mytestgroup:*
	//
	// If you have previously specified a log group for a server, you can clear
	// it, and in effect turn off structured logging, by providing an empty value
	// for this parameter in an update-server call. For example:
	//
	// update-server --server-id s-1234567890abcdef0 --structured-log-destinations
	StructuredLogDestinations []*string `type:"list"`

	// Key-value pairs that can be used to group and search for servers.
	Tags []*Tag `min:"1" type:"list"`

	// Specifies the workflow ID for the workflow to assign and the execution role
	// that's used for executing the workflow.
	//
	// In addition to a workflow to execute when a file is uploaded completely,
	// WorkflowDetails can also contain a workflow ID (and execution role) for a
	// workflow to execute on partial upload. A partial upload occurs when the server
	// session disconnects while the file is still being uploaded.
	WorkflowDetails *WorkflowDetails `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 CreateServerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCertificate sets the Certificate field's value.
func (s *CreateServerInput) SetCertificate(v string) *CreateServerInput {
	s.Certificate = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *CreateServerInput) SetDomain(v string) *CreateServerInput {
	s.Domain = &v
	return s
}

// SetEndpointDetails sets the EndpointDetails field's value.
func (s *CreateServerInput) SetEndpointDetails(v *EndpointDetails) *CreateServerInput {
	s.EndpointDetails = v
	return s
}

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

// SetHostKey sets the HostKey field's value.
func (s *CreateServerInput) SetHostKey(v string) *CreateServerInput {
	s.HostKey = &v
	return s
}

// SetIdentityProviderDetails sets the IdentityProviderDetails field's value.
func (s *CreateServerInput) SetIdentityProviderDetails(v *IdentityProviderDetails) *CreateServerInput {
	s.IdentityProviderDetails = v
	return s
}

// SetIdentityProviderType sets the IdentityProviderType field's value.
func (s *CreateServerInput) SetIdentityProviderType(v string) *CreateServerInput {
	s.IdentityProviderType = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *CreateServerInput) SetLoggingRole(v string) *CreateServerInput {
	s.LoggingRole = &v
	return s
}

// SetPostAuthenticationLoginBanner sets the PostAuthenticationLoginBanner field's value.
func (s *CreateServerInput) SetPostAuthenticationLoginBanner(v string) *CreateServerInput {
	s.PostAuthenticationLoginBanner = &v
	return s
}

// SetPreAuthenticationLoginBanner sets the PreAuthenticationLoginBanner field's value.
func (s *CreateServerInput) SetPreAuthenticationLoginBanner(v string) *CreateServerInput {
	s.PreAuthenticationLoginBanner = &v
	return s
}

// SetProtocolDetails sets the ProtocolDetails field's value.
func (s *CreateServerInput) SetProtocolDetails(v *ProtocolDetails) *CreateServerInput {
	s.ProtocolDetails = v
	return s
}

// SetProtocols sets the Protocols field's value.
func (s *CreateServerInput) SetProtocols(v []*string) *CreateServerInput {
	s.Protocols = v
	return s
}

// SetS3StorageOptions sets the S3StorageOptions field's value.
func (s *CreateServerInput) SetS3StorageOptions(v *S3StorageOptions) *CreateServerInput {
	s.S3StorageOptions = v
	return s
}

// SetSecurityPolicyName sets the SecurityPolicyName field's value.
func (s *CreateServerInput) SetSecurityPolicyName(v string) *CreateServerInput {
	s.SecurityPolicyName = &v
	return s
}

// SetStructuredLogDestinations sets the StructuredLogDestinations field's value.
func (s *CreateServerInput) SetStructuredLogDestinations(v []*string) *CreateServerInput {
	s.StructuredLogDestinations = v
	return s
}

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

// SetWorkflowDetails sets the WorkflowDetails field's value.
func (s *CreateServerInput) SetWorkflowDetails(v *WorkflowDetails) *CreateServerInput {
	s.WorkflowDetails = v
	return s
}

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

	// The service-assigned identifier of the server that is created.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 CreateServerOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServerId sets the ServerId field's value.
func (s *CreateServerOutput) SetServerId(v string) *CreateServerOutput {
	s.ServerId = &v
	return s
}

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

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// The following is an Entry and Target pair example.
	//
	// [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ]
	//
	// In most cases, you can use this value instead of the session policy to lock
	// your user down to the designated home directory ("chroot"). To do this, you
	// can set Entry to / and set Target to the value the user should see for their
	// home directory when they log in.
	//
	// The following is an Entry and Target pair example for chroot.
	//
	// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	//
	// This policy applies only when the domain of ServerId is Amazon S3. Amazon
	// EFS does not use session policies.
	//
	// For session policies, Transfer Family stores the policy as a JSON blob, instead
	// of the Amazon Resource Name (ARN) of the policy. You save the policy as a
	// JSON blob and pass it in the Policy argument.
	//
	// For an example of a session policy, see Example session policy (https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html).
	//
	// For more information, see AssumeRole (https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
	// in the Amazon Web Services Security Token Service API Reference.
	Policy *string `type:"string"`

	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid),
	// and any secondary groups IDs (SecondaryGids), that controls your users' access
	// to your Amazon EFS file systems. The POSIX permissions that are set on files
	// and directories in Amazon EFS determine the level of access your users get
	// when transferring files into and out of your Amazon EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	//
	// Role is a required field
	Role *string `min:"20" type:"string" required:"true"`

	// A system-assigned unique identifier for a server instance. This is the specific
	// server that you added your user to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The public portion of the Secure Shell (SSH) key used to authenticate the
	// user to the server.
	//
	// The three standard SSH public key format elements are <key type>, <body base64>,
	// and an optional <comment>, with spaces between each element.
	//
	// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
	//
	//    * For RSA keys, the key type is ssh-rsa.
	//
	//    * For ED25519 keys, the key type is ssh-ed25519.
	//
	//    * For ECDSA keys, the key type is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384,
	//    or ecdsa-sha2-nistp521, depending on the size of the key you generated.
	SshPublicKeyBody *string `type:"string"`

	// Key-value pairs that can be used to group and search for users. Tags are
	// metadata attached to users for any purpose.
	Tags []*Tag `min:"1" type:"list"`

	// A unique string that identifies a user and is associated with a ServerId.
	// This user name must be a minimum of 3 and a maximum of 100 characters long.
	// The following are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen
	// '-', period '.', and at sign '@'. The user name can't start with a hyphen,
	// period, or at sign.
	//
	// UserName is a required field
	UserName *string `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 CreateUserInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *CreateUserInput) SetHomeDirectory(v string) *CreateUserInput {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *CreateUserInput) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *CreateUserInput {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *CreateUserInput) SetHomeDirectoryType(v string) *CreateUserInput {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *CreateUserInput) SetPolicy(v string) *CreateUserInput {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *CreateUserInput) SetPosixProfile(v *PosixProfile) *CreateUserInput {
	s.PosixProfile = v
	return s
}

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

// SetServerId sets the ServerId field's value.
func (s *CreateUserInput) SetServerId(v string) *CreateUserInput {
	s.ServerId = &v
	return s
}

// SetSshPublicKeyBody sets the SshPublicKeyBody field's value.
func (s *CreateUserInput) SetSshPublicKeyBody(v string) *CreateUserInput {
	s.SshPublicKeyBody = &v
	return s
}

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

// SetUserName sets the UserName field's value.
func (s *CreateUserInput) SetUserName(v string) *CreateUserInput {
	s.UserName = &v
	return s
}

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

	// The identifier of the server that the user is attached to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// A unique string that identifies a Transfer Family user.
	//
	// UserName is a required field
	UserName *string `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 CreateUserOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServerId sets the ServerId field's value.
func (s *CreateUserOutput) SetServerId(v string) *CreateUserOutput {
	s.ServerId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *CreateUserOutput) SetUserName(v string) *CreateUserOutput {
	s.UserName = &v
	return s
}

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

	// A textual description for the workflow.
	Description *string `type:"string"`

	// Specifies the steps (actions) to take if errors are encountered during execution
	// of the workflow.
	//
	// For custom steps, the Lambda function needs to send FAILURE to the call back
	// API to kick off the exception steps. Additionally, if the Lambda does not
	// send SUCCESS before it times out, the exception steps are executed.
	OnExceptionSteps []*WorkflowStep `type:"list"`

	// Specifies the details for the steps that are in the specified workflow.
	//
	// The TYPE specifies which of the following actions is being taken for this
	// step.
	//
	//    * COPY - Copy the file to another location.
	//
	//    * CUSTOM - Perform a custom step with an Lambda function target.
	//
	//    * DECRYPT - Decrypt a file that was encrypted before it was uploaded.
	//
	//    * DELETE - Delete the file.
	//
	//    * TAG - Add a tag to the file.
	//
	// Currently, copying and tagging are supported only on S3.
	//
	// For file location, you specify either the Amazon S3 bucket and key, or the
	// Amazon EFS file system ID and path.
	//
	// Steps is a required field
	Steps []*WorkflowStep `type:"list" required:"true"`

	// Key-value pairs that can be used to group and search for workflows. Tags
	// are metadata attached to workflows for any purpose.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

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

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

// SetOnExceptionSteps sets the OnExceptionSteps field's value.
func (s *CreateWorkflowInput) SetOnExceptionSteps(v []*WorkflowStep) *CreateWorkflowInput {
	s.OnExceptionSteps = v
	return s
}

// SetSteps sets the Steps field's value.
func (s *CreateWorkflowInput) SetSteps(v []*WorkflowStep) *CreateWorkflowInput {
	s.Steps = v
	return s
}

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

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

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 CreateWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *CreateWorkflowOutput) SetWorkflowId(v string) *CreateWorkflowOutput {
	s.WorkflowId = &v
	return s
}

// Each step type has its own StepDetails structure.
type CustomStepDetails struct {
	_ struct{} `type:"structure"`

	// The name of the step, used as an identifier.
	Name *string `type:"string"`

	// Specifies which file to use as input to the workflow step: either the output
	// from the previous step, or the originally uploaded file for the workflow.
	//
	//    * To use the previous file as the input, enter ${previous.file}. In this
	//    case, this workflow step uses the output file from the previous workflow
	//    step as input. This is the default value.
	//
	//    * To use the originally uploaded file location as input for this step,
	//    enter ${original.file}.
	SourceFileLocation *string `type:"string"`

	// The ARN for the Lambda function that is being called.
	Target *string `type:"string"`

	// Timeout, in seconds, for the step.
	TimeoutSeconds *int64 `min:"1" type:"integer"`
}

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

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

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

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

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

// SetSourceFileLocation sets the SourceFileLocation field's value.
func (s *CustomStepDetails) SetSourceFileLocation(v string) *CustomStepDetails {
	s.SourceFileLocation = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *CustomStepDetails) SetTarget(v string) *CustomStepDetails {
	s.Target = &v
	return s
}

// SetTimeoutSeconds sets the TimeoutSeconds field's value.
func (s *CustomStepDetails) SetTimeoutSeconds(v int64) *CustomStepDetails {
	s.TimeoutSeconds = &v
	return s
}

// Each step type has its own StepDetails structure.
type DecryptStepDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the location for the file being decrypted. Use ${Transfer:UserName}
	// or ${Transfer:UploadDate} in this field to parametrize the destination prefix
	// by username or uploaded date.
	//
	//    * Set the value of DestinationFileLocation to ${Transfer:UserName} to
	//    decrypt uploaded files to an Amazon S3 bucket that is prefixed with the
	//    name of the Transfer Family user that uploaded the file.
	//
	//    * Set the value of DestinationFileLocation to ${Transfer:UploadDate} to
	//    decrypt uploaded files to an Amazon S3 bucket that is prefixed with the
	//    date of the upload. The system resolves UploadDate to a date format of
	//    YYYY-MM-DD, based on the date the file is uploaded in UTC.
	//
	// DestinationFileLocation is a required field
	DestinationFileLocation *InputFileLocation `type:"structure" required:"true"`

	// The name of the step, used as an identifier.
	Name *string `type:"string"`

	// A flag that indicates whether to overwrite an existing file of the same name.
	// The default is FALSE.
	//
	// If the workflow is processing a file that has the same name as an existing
	// file, the behavior is as follows:
	//
	//    * If OverwriteExisting is TRUE, the existing file is replaced with the
	//    file being processed.
	//
	//    * If OverwriteExisting is FALSE, nothing happens, and the workflow processing
	//    stops.
	OverwriteExisting *string `type:"string" enum:"OverwriteExisting"`

	// Specifies which file to use as input to the workflow step: either the output
	// from the previous step, or the originally uploaded file for the workflow.
	//
	//    * To use the previous file as the input, enter ${previous.file}. In this
	//    case, this workflow step uses the output file from the previous workflow
	//    step as input. This is the default value.
	//
	//    * To use the originally uploaded file location as input for this step,
	//    enter ${original.file}.
	SourceFileLocation *string `type:"string"`

	// The type of encryption used. Currently, this value must be PGP.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"EncryptionType"`
}

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

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

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

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

// SetDestinationFileLocation sets the DestinationFileLocation field's value.
func (s *DecryptStepDetails) SetDestinationFileLocation(v *InputFileLocation) *DecryptStepDetails {
	s.DestinationFileLocation = v
	return s
}

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

// SetOverwriteExisting sets the OverwriteExisting field's value.
func (s *DecryptStepDetails) SetOverwriteExisting(v string) *DecryptStepDetails {
	s.OverwriteExisting = &v
	return s
}

// SetSourceFileLocation sets the SourceFileLocation field's value.
func (s *DecryptStepDetails) SetSourceFileLocation(v string) *DecryptStepDetails {
	s.SourceFileLocation = &v
	return s
}

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

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

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// A system-assigned unique identifier for a server that has this user assigned.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DeleteAccessInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExternalId sets the ExternalId field's value.
func (s *DeleteAccessInput) SetExternalId(v string) *DeleteAccessInput {
	s.ExternalId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DeleteAccessInput) SetServerId(v string) *DeleteAccessInput {
	s.ServerId = &v
	return s
}

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

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

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

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	//
	// AgreementId is a required field
	AgreementId *string `min:"19" type:"string" required:"true"`

	// The server identifier associated with the agreement that you are deleting.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DeleteAgreementInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAgreementId sets the AgreementId field's value.
func (s *DeleteAgreementInput) SetAgreementId(v string) *DeleteAgreementInput {
	s.AgreementId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DeleteAgreementInput) SetServerId(v string) *DeleteAgreementInput {
	s.ServerId = &v
	return s
}

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

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

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

	// The identifier of the certificate object that you are deleting.
	//
	// CertificateId is a required field
	CertificateId *string `min:"22" 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.CertificateId == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateId"))
	}
	if s.CertificateId != nil && len(*s.CertificateId) < 22 {
		invalidParams.Add(request.NewErrParamMinLen("CertificateId", 22))
	}

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

// SetCertificateId sets the CertificateId field's value.
func (s *DeleteCertificateInput) SetCertificateId(v string) *DeleteCertificateInput {
	s.CertificateId = &v
	return s
}

type DeleteCertificateOutput 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 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()
}

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

	// The unique identifier for the connector.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" 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 DeleteConnectorInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectorId sets the ConnectorId field's value.
func (s *DeleteConnectorInput) SetConnectorId(v string) *DeleteConnectorInput {
	s.ConnectorId = &v
	return s
}

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

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

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

	// The identifier of the host key that you are deleting.
	//
	// HostKeyId is a required field
	HostKeyId *string `min:"25" type:"string" required:"true"`

	// The identifier of the server that contains the host key that you are deleting.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DeleteHostKeyInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetHostKeyId sets the HostKeyId field's value.
func (s *DeleteHostKeyInput) SetHostKeyId(v string) *DeleteHostKeyInput {
	s.HostKeyId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DeleteHostKeyInput) SetServerId(v string) *DeleteHostKeyInput {
	s.ServerId = &v
	return s
}

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

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

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

	// The identifier of the profile that you are deleting.
	//
	// ProfileId is a required field
	ProfileId *string `min:"19" 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 DeleteProfileInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetProfileId sets the ProfileId field's value.
func (s *DeleteProfileInput) SetProfileId(v string) *DeleteProfileInput {
	s.ProfileId = &v
	return s
}

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

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

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

	// A unique system-assigned identifier for a server instance.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DeleteServerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *DeleteServerInput) SetServerId(v string) *DeleteServerInput {
	s.ServerId = &v
	return s
}

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

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

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

	// A system-assigned unique identifier for a file transfer protocol-enabled
	// server instance that has the user assigned to it.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// A unique identifier used to reference your user's specific SSH key.
	//
	// SshPublicKeyId is a required field
	SshPublicKeyId *string `min:"21" type:"string" required:"true"`

	// A unique string that identifies a user whose public key is being deleted.
	//
	// UserName is a required field
	UserName *string `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 DeleteSshPublicKeyInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSshPublicKeyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSshPublicKeyInput"}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}
	if s.SshPublicKeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("SshPublicKeyId"))
	}
	if s.SshPublicKeyId != nil && len(*s.SshPublicKeyId) < 21 {
		invalidParams.Add(request.NewErrParamMinLen("SshPublicKeyId", 21))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 3))
	}

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

// SetServerId sets the ServerId field's value.
func (s *DeleteSshPublicKeyInput) SetServerId(v string) *DeleteSshPublicKeyInput {
	s.ServerId = &v
	return s
}

// SetSshPublicKeyId sets the SshPublicKeyId field's value.
func (s *DeleteSshPublicKeyInput) SetSshPublicKeyId(v string) *DeleteSshPublicKeyInput {
	s.SshPublicKeyId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DeleteSshPublicKeyInput) SetUserName(v string) *DeleteSshPublicKeyInput {
	s.UserName = &v
	return s
}

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

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

// The name of the step, used to identify the delete step.
type DeleteStepDetails struct {
	_ struct{} `type:"structure"`

	// The name of the step, used as an identifier.
	Name *string `type:"string"`

	// Specifies which file to use as input to the workflow step: either the output
	// from the previous step, or the originally uploaded file for the workflow.
	//
	//    * To use the previous file as the input, enter ${previous.file}. In this
	//    case, this workflow step uses the output file from the previous workflow
	//    step as input. This is the default value.
	//
	//    * To use the originally uploaded file location as input for this step,
	//    enter ${original.file}.
	SourceFileLocation *string `type:"string"`
}

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

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

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

// SetSourceFileLocation sets the SourceFileLocation field's value.
func (s *DeleteStepDetails) SetSourceFileLocation(v string) *DeleteStepDetails {
	s.SourceFileLocation = &v
	return s
}

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

	// A system-assigned unique identifier for a server instance that has the user
	// assigned to it.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// A unique string that identifies a user that is being deleted from a server.
	//
	// UserName is a required field
	UserName *string `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 DeleteUserInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *DeleteUserInput) SetServerId(v string) *DeleteUserInput {
	s.ServerId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DeleteUserInput) SetUserName(v string) *DeleteUserInput {
	s.UserName = &v
	return s
}

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

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

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

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

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 DeleteWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *DeleteWorkflowInput) SetWorkflowId(v string) *DeleteWorkflowInput {
	s.WorkflowId = &v
	return s
}

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

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

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

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// A system-assigned unique identifier for a server that has this access assigned.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DescribeAccessInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExternalId sets the ExternalId field's value.
func (s *DescribeAccessInput) SetExternalId(v string) *DescribeAccessInput {
	s.ExternalId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribeAccessInput) SetServerId(v string) *DescribeAccessInput {
	s.ServerId = &v
	return s
}

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

	// The external identifier of the server that the access is attached to.
	//
	// Access is a required field
	Access *DescribedAccess `type:"structure" required:"true"`

	// A system-assigned unique identifier for a server that has this access assigned.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DescribeAccessOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccess sets the Access field's value.
func (s *DescribeAccessOutput) SetAccess(v *DescribedAccess) *DescribeAccessOutput {
	s.Access = v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribeAccessOutput) SetServerId(v string) *DescribeAccessOutput {
	s.ServerId = &v
	return s
}

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

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	//
	// AgreementId is a required field
	AgreementId *string `min:"19" type:"string" required:"true"`

	// The server identifier that's associated with the agreement.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DescribeAgreementInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAgreementId sets the AgreementId field's value.
func (s *DescribeAgreementInput) SetAgreementId(v string) *DescribeAgreementInput {
	s.AgreementId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribeAgreementInput) SetServerId(v string) *DescribeAgreementInput {
	s.ServerId = &v
	return s
}

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

	// The details for the specified agreement, returned as a DescribedAgreement
	// object.
	//
	// Agreement is a required field
	Agreement *DescribedAgreement `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 DescribeAgreementOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAgreement sets the Agreement field's value.
func (s *DescribeAgreementOutput) SetAgreement(v *DescribedAgreement) *DescribeAgreementOutput {
	s.Agreement = v
	return s
}

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

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	//
	// CertificateId is a required field
	CertificateId *string `min:"22" 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 DescribeCertificateInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCertificateId sets the CertificateId field's value.
func (s *DescribeCertificateInput) SetCertificateId(v string) *DescribeCertificateInput {
	s.CertificateId = &v
	return s
}

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

	// The details for the specified certificate, returned as an object.
	//
	// Certificate is a required field
	Certificate *DescribedCertificate `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 DescribeCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCertificate sets the Certificate field's value.
func (s *DescribeCertificateOutput) SetCertificate(v *DescribedCertificate) *DescribeCertificateOutput {
	s.Certificate = v
	return s
}

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

	// The unique identifier for the connector.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" 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 DescribeConnectorInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectorId sets the ConnectorId field's value.
func (s *DescribeConnectorInput) SetConnectorId(v string) *DescribeConnectorInput {
	s.ConnectorId = &v
	return s
}

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

	// The structure that contains the details of the connector.
	//
	// Connector is a required field
	Connector *DescribedConnector `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 DescribeConnectorOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConnector sets the Connector field's value.
func (s *DescribeConnectorOutput) SetConnector(v *DescribedConnector) *DescribeConnectorOutput {
	s.Connector = v
	return s
}

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

	// A unique identifier for the execution of a workflow.
	//
	// ExecutionId is a required field
	ExecutionId *string `min:"36" type:"string" required:"true"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 DescribeExecutionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExecutionId sets the ExecutionId field's value.
func (s *DescribeExecutionInput) SetExecutionId(v string) *DescribeExecutionInput {
	s.ExecutionId = &v
	return s
}

// SetWorkflowId sets the WorkflowId field's value.
func (s *DescribeExecutionInput) SetWorkflowId(v string) *DescribeExecutionInput {
	s.WorkflowId = &v
	return s
}

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

	// The structure that contains the details of the workflow' execution.
	//
	// Execution is a required field
	Execution *DescribedExecution `type:"structure" required:"true"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 DescribeExecutionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetExecution sets the Execution field's value.
func (s *DescribeExecutionOutput) SetExecution(v *DescribedExecution) *DescribeExecutionOutput {
	s.Execution = v
	return s
}

// SetWorkflowId sets the WorkflowId field's value.
func (s *DescribeExecutionOutput) SetWorkflowId(v string) *DescribeExecutionOutput {
	s.WorkflowId = &v
	return s
}

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

	// The identifier of the host key that you want described.
	//
	// HostKeyId is a required field
	HostKeyId *string `min:"25" type:"string" required:"true"`

	// The identifier of the server that contains the host key that you want described.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DescribeHostKeyInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetHostKeyId sets the HostKeyId field's value.
func (s *DescribeHostKeyInput) SetHostKeyId(v string) *DescribeHostKeyInput {
	s.HostKeyId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribeHostKeyInput) SetServerId(v string) *DescribeHostKeyInput {
	s.ServerId = &v
	return s
}

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

	// Returns the details for the specified host key.
	//
	// HostKey is a required field
	HostKey *DescribedHostKey `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 DescribeHostKeyOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetHostKey sets the HostKey field's value.
func (s *DescribeHostKeyOutput) SetHostKey(v *DescribedHostKey) *DescribeHostKeyOutput {
	s.HostKey = v
	return s
}

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

	// The identifier of the profile that you want described.
	//
	// ProfileId is a required field
	ProfileId *string `min:"19" 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 DescribeProfileInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetProfileId sets the ProfileId field's value.
func (s *DescribeProfileInput) SetProfileId(v string) *DescribeProfileInput {
	s.ProfileId = &v
	return s
}

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

	// The details of the specified profile, returned as an object.
	//
	// Profile is a required field
	Profile *DescribedProfile `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 DescribeProfileOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetProfile sets the Profile field's value.
func (s *DescribeProfileOutput) SetProfile(v *DescribedProfile) *DescribeProfileOutput {
	s.Profile = v
	return s
}

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

	// Specifies the name of the security policy that is attached to the server.
	//
	// SecurityPolicyName is a required field
	SecurityPolicyName *string `type:"string" required:"true"`
}

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

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

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

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

// SetSecurityPolicyName sets the SecurityPolicyName field's value.
func (s *DescribeSecurityPolicyInput) SetSecurityPolicyName(v string) *DescribeSecurityPolicyInput {
	s.SecurityPolicyName = &v
	return s
}

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

	// An array containing the properties of the security policy.
	//
	// SecurityPolicy is a required field
	SecurityPolicy *DescribedSecurityPolicy `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 DescribeSecurityPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetSecurityPolicy sets the SecurityPolicy field's value.
func (s *DescribeSecurityPolicyOutput) SetSecurityPolicy(v *DescribedSecurityPolicy) *DescribeSecurityPolicyOutput {
	s.SecurityPolicy = v
	return s
}

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

	// A system-assigned unique identifier for a server.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 DescribeServerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *DescribeServerInput) SetServerId(v string) *DescribeServerInput {
	s.ServerId = &v
	return s
}

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

	// An array containing the properties of a server with the ServerID you specified.
	//
	// Server is a required field
	Server *DescribedServer `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 DescribeServerOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServer sets the Server field's value.
func (s *DescribeServerOutput) SetServer(v *DescribedServer) *DescribeServerOutput {
	s.Server = v
	return s
}

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

	// A system-assigned unique identifier for a server that has this user assigned.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The name of the user assigned to one or more servers. User names are part
	// of the sign-in credentials to use the Transfer Family service and perform
	// file transfer tasks.
	//
	// UserName is a required field
	UserName *string `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 DescribeUserInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *DescribeUserInput) SetServerId(v string) *DescribeUserInput {
	s.ServerId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DescribeUserInput) SetUserName(v string) *DescribeUserInput {
	s.UserName = &v
	return s
}

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

	// A system-assigned unique identifier for a server that has this user assigned.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// An array containing the properties of the Transfer Family user for the ServerID
	// value that you specified.
	//
	// User is a required field
	User *DescribedUser `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 DescribeUserOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServerId sets the ServerId field's value.
func (s *DescribeUserOutput) SetServerId(v string) *DescribeUserOutput {
	s.ServerId = &v
	return s
}

// SetUser sets the User field's value.
func (s *DescribeUserOutput) SetUser(v *DescribedUser) *DescribeUserOutput {
	s.User = v
	return s
}

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

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 DescribeWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *DescribeWorkflowInput) SetWorkflowId(v string) *DescribeWorkflowInput {
	s.WorkflowId = &v
	return s
}

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

	// The structure that contains the details of the workflow.
	//
	// Workflow is a required field
	Workflow *DescribedWorkflow `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 DescribeWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetWorkflow sets the Workflow field's value.
func (s *DescribeWorkflowOutput) SetWorkflow(v *DescribedWorkflow) *DescribeWorkflowOutput {
	s.Workflow = v
	return s
}

// Describes the properties of the access that was specified.
type DescribedAccess struct {
	_ struct{} `type:"structure"`

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	ExternalId *string `min:"1" type:"string"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// In most cases, you can use this value instead of the session policy to lock
	// down the associated access to the designated home directory ("chroot"). To
	// do this, you can set Entry to '/' and set Target to the HomeDirectory parameter
	// value.
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	Policy *string `type:"string"`

	// The full POSIX identity, including user ID (Uid), group ID (Gid), and any
	// secondary groups IDs (SecondaryGids), that controls your users' access to
	// your Amazon EFS file systems. The POSIX permissions that are set on files
	// and directories in your file system determine the level of access your users
	// get when transferring files into and out of your Amazon EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	Role *string `min:"20" type:"string"`
}

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

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

// SetExternalId sets the ExternalId field's value.
func (s *DescribedAccess) SetExternalId(v string) *DescribedAccess {
	s.ExternalId = &v
	return s
}

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *DescribedAccess) SetHomeDirectory(v string) *DescribedAccess {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *DescribedAccess) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *DescribedAccess {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *DescribedAccess) SetHomeDirectoryType(v string) *DescribedAccess {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *DescribedAccess) SetPolicy(v string) *DescribedAccess {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *DescribedAccess) SetPosixProfile(v *PosixProfile) *DescribedAccess {
	s.PosixProfile = v
	return s
}

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

// Describes the properties of an agreement.
type DescribedAgreement struct {
	_ struct{} `type:"structure"`

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	AccessRole *string `min:"20" type:"string"`

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	AgreementId *string `min:"19" type:"string"`

	// The unique Amazon Resource Name (ARN) for the agreement.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The landing directory (folder) for files that are transferred by using the
	// AS2 protocol.
	BaseDirectory *string `type:"string"`

	// The name or short description that's used to identify the agreement.
	Description *string `min:"1" type:"string"`

	// A unique identifier for the AS2 local profile.
	LocalProfileId *string `min:"19" type:"string"`

	// A unique identifier for the partner profile used in the agreement.
	PartnerProfileId *string `min:"19" type:"string"`

	// A system-assigned unique identifier for a server instance. This identifier
	// indicates the specific server that the agreement uses.
	ServerId *string `min:"19" type:"string"`

	// The current status of the agreement, either ACTIVE or INACTIVE.
	Status *string `type:"string" enum:"AgreementStatusType"`

	// Key-value pairs that can be used to group and search for agreements.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

// SetAccessRole sets the AccessRole field's value.
func (s *DescribedAgreement) SetAccessRole(v string) *DescribedAgreement {
	s.AccessRole = &v
	return s
}

// SetAgreementId sets the AgreementId field's value.
func (s *DescribedAgreement) SetAgreementId(v string) *DescribedAgreement {
	s.AgreementId = &v
	return s
}

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

// SetBaseDirectory sets the BaseDirectory field's value.
func (s *DescribedAgreement) SetBaseDirectory(v string) *DescribedAgreement {
	s.BaseDirectory = &v
	return s
}

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

// SetLocalProfileId sets the LocalProfileId field's value.
func (s *DescribedAgreement) SetLocalProfileId(v string) *DescribedAgreement {
	s.LocalProfileId = &v
	return s
}

// SetPartnerProfileId sets the PartnerProfileId field's value.
func (s *DescribedAgreement) SetPartnerProfileId(v string) *DescribedAgreement {
	s.PartnerProfileId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribedAgreement) SetServerId(v string) *DescribedAgreement {
	s.ServerId = &v
	return s
}

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

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

// Describes the properties of a certificate.
type DescribedCertificate struct {
	_ struct{} `type:"structure"`

	// An optional date that specifies when the certificate becomes active.
	ActiveDate *time.Time `type:"timestamp"`

	// The unique Amazon Resource Name (ARN) for the certificate.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The file name for the certificate.
	//
	// Certificate is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DescribedCertificate's
	// String and GoString methods.
	Certificate *string `min:"1" type:"string" sensitive:"true"`

	// The list of certificates that make up the chain for the certificate.
	//
	// CertificateChain is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DescribedCertificate's
	// String and GoString methods.
	CertificateChain *string `min:"1" type:"string" sensitive:"true"`

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	CertificateId *string `min:"22" type:"string"`

	// The name or description that's used to identity the certificate.
	Description *string `min:"1" type:"string"`

	// An optional date that specifies when the certificate becomes inactive.
	InactiveDate *time.Time `type:"timestamp"`

	// The final date that the certificate is valid.
	NotAfterDate *time.Time `type:"timestamp"`

	// The earliest date that the certificate is valid.
	NotBeforeDate *time.Time `type:"timestamp"`

	// The serial number for the certificate.
	Serial *string `type:"string"`

	// The certificate can be either ACTIVE, PENDING_ROTATION, or INACTIVE. PENDING_ROTATION
	// means that this certificate will replace the current certificate when it
	// expires.
	Status *string `type:"string" enum:"CertificateStatusType"`

	// Key-value pairs that can be used to group and search for certificates.
	Tags []*Tag `min:"1" type:"list"`

	// If a private key has been specified for the certificate, its type is CERTIFICATE_WITH_PRIVATE_KEY.
	// If there is no private key, the type is CERTIFICATE.
	Type *string `type:"string" enum:"CertificateType"`

	// Specifies whether this certificate is used for signing or encryption.
	Usage *string `type:"string" enum:"CertificateUsageType"`
}

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

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

// SetActiveDate sets the ActiveDate field's value.
func (s *DescribedCertificate) SetActiveDate(v time.Time) *DescribedCertificate {
	s.ActiveDate = &v
	return s
}

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

// SetCertificate sets the Certificate field's value.
func (s *DescribedCertificate) SetCertificate(v string) *DescribedCertificate {
	s.Certificate = &v
	return s
}

// SetCertificateChain sets the CertificateChain field's value.
func (s *DescribedCertificate) SetCertificateChain(v string) *DescribedCertificate {
	s.CertificateChain = &v
	return s
}

// SetCertificateId sets the CertificateId field's value.
func (s *DescribedCertificate) SetCertificateId(v string) *DescribedCertificate {
	s.CertificateId = &v
	return s
}

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

// SetInactiveDate sets the InactiveDate field's value.
func (s *DescribedCertificate) SetInactiveDate(v time.Time) *DescribedCertificate {
	s.InactiveDate = &v
	return s
}

// SetNotAfterDate sets the NotAfterDate field's value.
func (s *DescribedCertificate) SetNotAfterDate(v time.Time) *DescribedCertificate {
	s.NotAfterDate = &v
	return s
}

// SetNotBeforeDate sets the NotBeforeDate field's value.
func (s *DescribedCertificate) SetNotBeforeDate(v time.Time) *DescribedCertificate {
	s.NotBeforeDate = &v
	return s
}

// SetSerial sets the Serial field's value.
func (s *DescribedCertificate) SetSerial(v string) *DescribedCertificate {
	s.Serial = &v
	return s
}

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

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

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

// SetUsage sets the Usage field's value.
func (s *DescribedCertificate) SetUsage(v string) *DescribedCertificate {
	s.Usage = &v
	return s
}

// Describes the parameters for the connector, as identified by the ConnectorId.
type DescribedConnector struct {
	_ struct{} `type:"structure"`

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	AccessRole *string `min:"20" type:"string"`

	// The unique Amazon Resource Name (ARN) for the connector.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// A structure that contains the parameters for an AS2 connector object.
	As2Config *As2ConnectorConfig `type:"structure"`

	// The unique identifier for the connector.
	ConnectorId *string `min:"19" type:"string"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a connector to turn on CloudWatch logging for Amazon S3
	// events. When set, you can view connector activity in your CloudWatch logs.
	LoggingRole *string `min:"20" type:"string"`

	// The list of egress IP addresses of this connector. These IP addresses are
	// assigned automatically when you create the connector.
	ServiceManagedEgressIpAddresses []*string `type:"list"`

	// A structure that contains the parameters for an SFTP connector object.
	SftpConfig *SftpConnectorConfig `type:"structure"`

	// Key-value pairs that can be used to group and search for connectors.
	Tags []*Tag `min:"1" type:"list"`

	// The URL of the partner's AS2 or SFTP endpoint.
	Url *string `type:"string"`
}

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

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

// SetAccessRole sets the AccessRole field's value.
func (s *DescribedConnector) SetAccessRole(v string) *DescribedConnector {
	s.AccessRole = &v
	return s
}

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

// SetAs2Config sets the As2Config field's value.
func (s *DescribedConnector) SetAs2Config(v *As2ConnectorConfig) *DescribedConnector {
	s.As2Config = v
	return s
}

// SetConnectorId sets the ConnectorId field's value.
func (s *DescribedConnector) SetConnectorId(v string) *DescribedConnector {
	s.ConnectorId = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *DescribedConnector) SetLoggingRole(v string) *DescribedConnector {
	s.LoggingRole = &v
	return s
}

// SetServiceManagedEgressIpAddresses sets the ServiceManagedEgressIpAddresses field's value.
func (s *DescribedConnector) SetServiceManagedEgressIpAddresses(v []*string) *DescribedConnector {
	s.ServiceManagedEgressIpAddresses = v
	return s
}

// SetSftpConfig sets the SftpConfig field's value.
func (s *DescribedConnector) SetSftpConfig(v *SftpConnectorConfig) *DescribedConnector {
	s.SftpConfig = v
	return s
}

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

// SetUrl sets the Url field's value.
func (s *DescribedConnector) SetUrl(v string) *DescribedConnector {
	s.Url = &v
	return s
}

// The details for an execution object.
type DescribedExecution struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the execution of a workflow.
	ExecutionId *string `min:"36" type:"string"`

	// The IAM role associated with the execution.
	ExecutionRole *string `min:"20" type:"string"`

	// A structure that describes the Amazon S3 or EFS file location. This is the
	// file location when the execution begins: if the file is being copied, this
	// is the initial (as opposed to destination) file location.
	InitialFileLocation *FileLocation `type:"structure"`

	// The IAM logging role associated with the execution.
	LoggingConfiguration *LoggingConfiguration `type:"structure"`

	// The full POSIX identity, including user ID (Uid), group ID (Gid), and any
	// secondary groups IDs (SecondaryGids), that controls your users' access to
	// your Amazon EFS file systems. The POSIX permissions that are set on files
	// and directories in your file system determine the level of access your users
	// get when transferring files into and out of your Amazon EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// A structure that describes the execution results. This includes a list of
	// the steps along with the details of each step, error type and message (if
	// any), and the OnExceptionSteps structure.
	Results *ExecutionResults `type:"structure"`

	// A container object for the session details that are associated with a workflow.
	ServiceMetadata *ServiceMetadata `type:"structure"`

	// The status is one of the execution. Can be in progress, completed, exception
	// encountered, or handling the exception.
	Status *string `type:"string" enum:"ExecutionStatus"`
}

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

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

// SetExecutionId sets the ExecutionId field's value.
func (s *DescribedExecution) SetExecutionId(v string) *DescribedExecution {
	s.ExecutionId = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *DescribedExecution) SetExecutionRole(v string) *DescribedExecution {
	s.ExecutionRole = &v
	return s
}

// SetInitialFileLocation sets the InitialFileLocation field's value.
func (s *DescribedExecution) SetInitialFileLocation(v *FileLocation) *DescribedExecution {
	s.InitialFileLocation = v
	return s
}

// SetLoggingConfiguration sets the LoggingConfiguration field's value.
func (s *DescribedExecution) SetLoggingConfiguration(v *LoggingConfiguration) *DescribedExecution {
	s.LoggingConfiguration = v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *DescribedExecution) SetPosixProfile(v *PosixProfile) *DescribedExecution {
	s.PosixProfile = v
	return s
}

// SetResults sets the Results field's value.
func (s *DescribedExecution) SetResults(v *ExecutionResults) *DescribedExecution {
	s.Results = v
	return s
}

// SetServiceMetadata sets the ServiceMetadata field's value.
func (s *DescribedExecution) SetServiceMetadata(v *ServiceMetadata) *DescribedExecution {
	s.ServiceMetadata = v
	return s
}

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

// The details for a server host key.
type DescribedHostKey struct {
	_ struct{} `type:"structure"`

	// The unique Amazon Resource Name (ARN) for the host key.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The date on which the host key was added to the server.
	DateImported *time.Time `type:"timestamp"`

	// The text description for this host key.
	Description *string `type:"string"`

	// The public key fingerprint, which is a short sequence of bytes used to identify
	// the longer public key.
	HostKeyFingerprint *string `type:"string"`

	// A unique identifier for the host key.
	HostKeyId *string `min:"25" type:"string"`

	// Key-value pairs that can be used to group and search for host keys.
	Tags []*Tag `min:"1" type:"list"`

	// The encryption algorithm that is used for the host key. The Type parameter
	// is specified by using one of the following values:
	//
	//    * ssh-rsa
	//
	//    * ssh-ed25519
	//
	//    * ecdsa-sha2-nistp256
	//
	//    * ecdsa-sha2-nistp384
	//
	//    * ecdsa-sha2-nistp521
	Type *string `type:"string"`
}

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

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

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

// SetDateImported sets the DateImported field's value.
func (s *DescribedHostKey) SetDateImported(v time.Time) *DescribedHostKey {
	s.DateImported = &v
	return s
}

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

// SetHostKeyFingerprint sets the HostKeyFingerprint field's value.
func (s *DescribedHostKey) SetHostKeyFingerprint(v string) *DescribedHostKey {
	s.HostKeyFingerprint = &v
	return s
}

// SetHostKeyId sets the HostKeyId field's value.
func (s *DescribedHostKey) SetHostKeyId(v string) *DescribedHostKey {
	s.HostKeyId = &v
	return s
}

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

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

// The details for a local or partner AS2 profile.
type DescribedProfile struct {
	_ struct{} `type:"structure"`

	// The unique Amazon Resource Name (ARN) for the profile.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The As2Id is the AS2-name, as defined in the RFC 4130 (https://datatracker.ietf.org/doc/html/rfc4130).
	// For inbound transfers, this is the AS2-From header for the AS2 messages sent
	// from the partner. For outbound connectors, this is the AS2-To header for
	// the AS2 messages sent to the partner using the StartFileTransfer API operation.
	// This ID cannot include spaces.
	As2Id *string `min:"1" type:"string"`

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	CertificateIds []*string `type:"list"`

	// A unique identifier for the local or partner AS2 profile.
	ProfileId *string `min:"19" type:"string"`

	// Indicates whether to list only LOCAL type profiles or only PARTNER type profiles.
	// If not supplied in the request, the command lists all types of profiles.
	ProfileType *string `type:"string" enum:"ProfileType"`

	// Key-value pairs that can be used to group and search for profiles.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

// SetAs2Id sets the As2Id field's value.
func (s *DescribedProfile) SetAs2Id(v string) *DescribedProfile {
	s.As2Id = &v
	return s
}

// SetCertificateIds sets the CertificateIds field's value.
func (s *DescribedProfile) SetCertificateIds(v []*string) *DescribedProfile {
	s.CertificateIds = v
	return s
}

// SetProfileId sets the ProfileId field's value.
func (s *DescribedProfile) SetProfileId(v string) *DescribedProfile {
	s.ProfileId = &v
	return s
}

// SetProfileType sets the ProfileType field's value.
func (s *DescribedProfile) SetProfileType(v string) *DescribedProfile {
	s.ProfileType = &v
	return s
}

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

// Describes the properties of a security policy that was specified. For more
// information about security policies, see Working with security policies (https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html).
type DescribedSecurityPolicy struct {
	_ struct{} `type:"structure"`

	// Specifies whether this policy enables Federal Information Processing Standards
	// (FIPS).
	Fips *bool `type:"boolean"`

	// Specifies the name of the security policy that is attached to the server.
	//
	// SecurityPolicyName is a required field
	SecurityPolicyName *string `type:"string" required:"true"`

	// Specifies the enabled Secure Shell (SSH) cipher encryption algorithms in
	// the security policy that is attached to the server.
	SshCiphers []*string `type:"list"`

	// Specifies the enabled SSH key exchange (KEX) encryption algorithms in the
	// security policy that is attached to the server.
	SshKexs []*string `type:"list"`

	// Specifies the enabled SSH message authentication code (MAC) encryption algorithms
	// in the security policy that is attached to the server.
	SshMacs []*string `type:"list"`

	// Specifies the enabled Transport Layer Security (TLS) cipher encryption algorithms
	// in the security policy that is attached to the server.
	TlsCiphers []*string `type:"list"`
}

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

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

// SetFips sets the Fips field's value.
func (s *DescribedSecurityPolicy) SetFips(v bool) *DescribedSecurityPolicy {
	s.Fips = &v
	return s
}

// SetSecurityPolicyName sets the SecurityPolicyName field's value.
func (s *DescribedSecurityPolicy) SetSecurityPolicyName(v string) *DescribedSecurityPolicy {
	s.SecurityPolicyName = &v
	return s
}

// SetSshCiphers sets the SshCiphers field's value.
func (s *DescribedSecurityPolicy) SetSshCiphers(v []*string) *DescribedSecurityPolicy {
	s.SshCiphers = v
	return s
}

// SetSshKexs sets the SshKexs field's value.
func (s *DescribedSecurityPolicy) SetSshKexs(v []*string) *DescribedSecurityPolicy {
	s.SshKexs = v
	return s
}

// SetSshMacs sets the SshMacs field's value.
func (s *DescribedSecurityPolicy) SetSshMacs(v []*string) *DescribedSecurityPolicy {
	s.SshMacs = v
	return s
}

// SetTlsCiphers sets the TlsCiphers field's value.
func (s *DescribedSecurityPolicy) SetTlsCiphers(v []*string) *DescribedSecurityPolicy {
	s.TlsCiphers = v
	return s
}

// Describes the properties of a file transfer protocol-enabled server that
// was specified.
type DescribedServer struct {
	_ struct{} `type:"structure"`

	// Specifies the unique Amazon Resource Name (ARN) of the server.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The list of egress IP addresses of this server. These IP addresses are only
	// relevant for servers that use the AS2 protocol. They are used for sending
	// asynchronous MDNs.
	//
	// These IP addresses are assigned automatically when you create an AS2 server.
	// Additionally, if you update an existing server and add the AS2 protocol,
	// static IP addresses are assigned as well.
	As2ServiceManagedEgressIpAddresses []*string `type:"list"`

	// Specifies the ARN of the Amazon Web ServicesCertificate Manager (ACM) certificate.
	// Required when Protocols is set to FTPS.
	Certificate *string `type:"string"`

	// Specifies the domain of the storage system that is used for file transfers.
	Domain *string `type:"string" enum:"Domain"`

	// The virtual private cloud (VPC) endpoint settings that are configured for
	// your server. When you host your endpoint within your VPC, you can make your
	// endpoint accessible only to resources within your VPC, or you can attach
	// Elastic IP addresses and make your endpoint accessible to clients over the
	// internet. Your VPC's default security groups are automatically assigned to
	// your endpoint.
	EndpointDetails *EndpointDetails `type:"structure"`

	// Defines the type of endpoint that your server is connected to. If your server
	// is connected to a VPC endpoint, your server isn't accessible over the public
	// internet.
	EndpointType *string `type:"string" enum:"EndpointType"`

	// Specifies the Base64-encoded SHA256 fingerprint of the server's host key.
	// This value is equivalent to the output of the ssh-keygen -l -f my-new-server-key
	// command.
	HostKeyFingerprint *string `type:"string"`

	// Specifies information to call a customer-supplied authentication API. This
	// field is not populated when the IdentityProviderType of a server is AWS_DIRECTORY_SERVICE
	// or SERVICE_MANAGED.
	IdentityProviderDetails *IdentityProviderDetails `type:"structure"`

	// The mode of authentication for a server. The default value is SERVICE_MANAGED,
	// which allows you to store and access user credentials within the Transfer
	// Family service.
	//
	// Use AWS_DIRECTORY_SERVICE to provide access to Active Directory groups in
	// Directory Service for Microsoft Active Directory or Microsoft Active Directory
	// in your on-premises environment or in Amazon Web Services using AD Connector.
	// This option also requires you to provide a Directory ID by using the IdentityProviderDetails
	// parameter.
	//
	// Use the API_GATEWAY value to integrate with an identity provider of your
	// choosing. The API_GATEWAY setting requires you to provide an Amazon API Gateway
	// endpoint URL to call for authentication by using the IdentityProviderDetails
	// parameter.
	//
	// Use the AWS_LAMBDA value to directly use an Lambda function as your identity
	// provider. If you choose this value, you must specify the ARN for the Lambda
	// function in the Function parameter for the IdentityProviderDetails data type.
	IdentityProviderType *string `type:"string" enum:"IdentityProviderType"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a server to turn on Amazon CloudWatch logging for Amazon
	// S3 or Amazon EFSevents. When set, you can view user activity in your CloudWatch
	// logs.
	LoggingRole *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed after the user authenticates.
	//
	// The SFTP protocol does not support post-authentication display banners.
	PostAuthenticationLoginBanner *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed before the user authenticates. For example, the following banner
	// displays details about using the system:
	//
	// This system is for the use of authorized users only. Individuals using this
	// computer system without authority, or in excess of their authority, are subject
	// to having all of their activities on this system monitored and recorded by
	// system personnel.
	PreAuthenticationLoginBanner *string `type:"string"`

	// The protocol settings that are configured for your server.
	//
	//    * To indicate passive mode (for FTP and FTPS protocols), use the PassiveIp
	//    parameter. Enter a single dotted-quad IPv4 address, such as the external
	//    IP address of a firewall, router, or load balancer.
	//
	//    * To ignore the error that is generated when the client attempts to use
	//    the SETSTAT command on a file that you are uploading to an Amazon S3 bucket,
	//    use the SetStatOption parameter. To have the Transfer Family server ignore
	//    the SETSTAT command and upload files without needing to make any changes
	//    to your SFTP client, set the value to ENABLE_NO_OP. If you set the SetStatOption
	//    parameter to ENABLE_NO_OP, Transfer Family generates a log entry to Amazon
	//    CloudWatch Logs, so that you can determine when the client is making a
	//    SETSTAT call.
	//
	//    * To determine whether your Transfer Family server resumes recent, negotiated
	//    sessions through a unique session ID, use the TlsSessionResumptionMode
	//    parameter.
	//
	//    * As2Transports indicates the transport method for the AS2 messages. Currently,
	//    only HTTP is supported.
	ProtocolDetails *ProtocolDetails `type:"structure"`

	// Specifies the file transfer protocol or protocols over which your file transfer
	// protocol client can connect to your server's endpoint. The available protocols
	// are:
	//
	//    * SFTP (Secure Shell (SSH) File Transfer Protocol): File transfer over
	//    SSH
	//
	//    * FTPS (File Transfer Protocol Secure): File transfer with TLS encryption
	//
	//    * FTP (File Transfer Protocol): Unencrypted file transfer
	//
	//    * AS2 (Applicability Statement 2): used for transporting structured business-to-business
	//    data
	//
	//    * If you select FTPS, you must choose a certificate stored in Certificate
	//    Manager (ACM) which is used to identify your server when clients connect
	//    to it over FTPS.
	//
	//    * If Protocol includes either FTP or FTPS, then the EndpointType must
	//    be VPC and the IdentityProviderType must be either AWS_DIRECTORY_SERVICE,
	//    AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes FTP, then AddressAllocationIds cannot be associated.
	//
	//    * If Protocol is set only to SFTP, the EndpointType can be set to PUBLIC
	//    and the IdentityProviderType can be set any of the supported identity
	//    types: SERVICE_MANAGED, AWS_DIRECTORY_SERVICE, AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes AS2, then the EndpointType must be VPC, and domain
	//    must be Amazon S3.
	Protocols []*string `min:"1" type:"list" enum:"Protocol"`

	// Specifies whether or not performance for your Amazon S3 directories is optimized.
	// This is disabled by default.
	//
	// By default, home directory mappings have a TYPE of DIRECTORY. If you enable
	// this option, you would then need to explicitly set the HomeDirectoryMapEntry
	// Type to FILE if you want a mapping to have a file target.
	S3StorageOptions *S3StorageOptions `type:"structure"`

	// Specifies the name of the security policy that is attached to the server.
	SecurityPolicyName *string `type:"string"`

	// Specifies the unique system-assigned identifier for a server that you instantiate.
	ServerId *string `min:"19" type:"string"`

	// The condition of the server that was described. A value of ONLINE indicates
	// that the server can accept jobs and transfer files. A State value of OFFLINE
	// means that the server cannot perform file transfer operations.
	//
	// The states of STARTING and STOPPING indicate that the server is in an intermediate
	// state, either not fully able to respond, or not fully offline. The values
	// of START_FAILED or STOP_FAILED can indicate an error condition.
	State *string `type:"string" enum:"State"`

	// Specifies the log groups to which your server logs are sent.
	//
	// To specify a log group, you must provide the ARN for an existing log group.
	// In this case, the format of the log group is as follows:
	//
	// arn:aws:logs:region-name:amazon-account-id:log-group:log-group-name:*
	//
	// For example, arn:aws:logs:us-east-1:111122223333:log-group:mytestgroup:*
	//
	// If you have previously specified a log group for a server, you can clear
	// it, and in effect turn off structured logging, by providing an empty value
	// for this parameter in an update-server call. For example:
	//
	// update-server --server-id s-1234567890abcdef0 --structured-log-destinations
	StructuredLogDestinations []*string `type:"list"`

	// Specifies the key-value pairs that you can use to search for and group servers
	// that were assigned to the server that was described.
	Tags []*Tag `min:"1" type:"list"`

	// Specifies the number of users that are assigned to a server you specified
	// with the ServerId.
	UserCount *int64 `type:"integer"`

	// Specifies the workflow ID for the workflow to assign and the execution role
	// that's used for executing the workflow.
	//
	// In addition to a workflow to execute when a file is uploaded completely,
	// WorkflowDetails can also contain a workflow ID (and execution role) for a
	// workflow to execute on partial upload. A partial upload occurs when the server
	// session disconnects while the file is still being uploaded.
	WorkflowDetails *WorkflowDetails `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 DescribedServer) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetAs2ServiceManagedEgressIpAddresses sets the As2ServiceManagedEgressIpAddresses field's value.
func (s *DescribedServer) SetAs2ServiceManagedEgressIpAddresses(v []*string) *DescribedServer {
	s.As2ServiceManagedEgressIpAddresses = v
	return s
}

// SetCertificate sets the Certificate field's value.
func (s *DescribedServer) SetCertificate(v string) *DescribedServer {
	s.Certificate = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *DescribedServer) SetDomain(v string) *DescribedServer {
	s.Domain = &v
	return s
}

// SetEndpointDetails sets the EndpointDetails field's value.
func (s *DescribedServer) SetEndpointDetails(v *EndpointDetails) *DescribedServer {
	s.EndpointDetails = v
	return s
}

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

// SetHostKeyFingerprint sets the HostKeyFingerprint field's value.
func (s *DescribedServer) SetHostKeyFingerprint(v string) *DescribedServer {
	s.HostKeyFingerprint = &v
	return s
}

// SetIdentityProviderDetails sets the IdentityProviderDetails field's value.
func (s *DescribedServer) SetIdentityProviderDetails(v *IdentityProviderDetails) *DescribedServer {
	s.IdentityProviderDetails = v
	return s
}

// SetIdentityProviderType sets the IdentityProviderType field's value.
func (s *DescribedServer) SetIdentityProviderType(v string) *DescribedServer {
	s.IdentityProviderType = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *DescribedServer) SetLoggingRole(v string) *DescribedServer {
	s.LoggingRole = &v
	return s
}

// SetPostAuthenticationLoginBanner sets the PostAuthenticationLoginBanner field's value.
func (s *DescribedServer) SetPostAuthenticationLoginBanner(v string) *DescribedServer {
	s.PostAuthenticationLoginBanner = &v
	return s
}

// SetPreAuthenticationLoginBanner sets the PreAuthenticationLoginBanner field's value.
func (s *DescribedServer) SetPreAuthenticationLoginBanner(v string) *DescribedServer {
	s.PreAuthenticationLoginBanner = &v
	return s
}

// SetProtocolDetails sets the ProtocolDetails field's value.
func (s *DescribedServer) SetProtocolDetails(v *ProtocolDetails) *DescribedServer {
	s.ProtocolDetails = v
	return s
}

// SetProtocols sets the Protocols field's value.
func (s *DescribedServer) SetProtocols(v []*string) *DescribedServer {
	s.Protocols = v
	return s
}

// SetS3StorageOptions sets the S3StorageOptions field's value.
func (s *DescribedServer) SetS3StorageOptions(v *S3StorageOptions) *DescribedServer {
	s.S3StorageOptions = v
	return s
}

// SetSecurityPolicyName sets the SecurityPolicyName field's value.
func (s *DescribedServer) SetSecurityPolicyName(v string) *DescribedServer {
	s.SecurityPolicyName = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *DescribedServer) SetServerId(v string) *DescribedServer {
	s.ServerId = &v
	return s
}

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

// SetStructuredLogDestinations sets the StructuredLogDestinations field's value.
func (s *DescribedServer) SetStructuredLogDestinations(v []*string) *DescribedServer {
	s.StructuredLogDestinations = v
	return s
}

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

// SetUserCount sets the UserCount field's value.
func (s *DescribedServer) SetUserCount(v int64) *DescribedServer {
	s.UserCount = &v
	return s
}

// SetWorkflowDetails sets the WorkflowDetails field's value.
func (s *DescribedServer) SetWorkflowDetails(v *WorkflowDetails) *DescribedServer {
	s.WorkflowDetails = v
	return s
}

// Describes the properties of a user that was specified.
type DescribedUser struct {
	_ struct{} `type:"structure"`

	// Specifies the unique Amazon Resource Name (ARN) for the user that was requested
	// to be described.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// In most cases, you can use this value instead of the session policy to lock
	// your user down to the designated home directory ("chroot"). To do this, you
	// can set Entry to '/' and set Target to the HomeDirectory parameter value.
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	Policy *string `type:"string"`

	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid),
	// and any secondary groups IDs (SecondaryGids), that controls your users' access
	// to your Amazon Elastic File System (Amazon EFS) file systems. The POSIX permissions
	// that are set on files and directories in your file system determine the level
	// of access your users get when transferring files into and out of your Amazon
	// EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	Role *string `min:"20" type:"string"`

	// Specifies the public key portion of the Secure Shell (SSH) keys stored for
	// the described user.
	SshPublicKeys []*SshPublicKey `type:"list"`

	// Specifies the key-value pairs for the user requested. Tag can be used to
	// search for and group users for a variety of purposes.
	Tags []*Tag `min:"1" type:"list"`

	// Specifies the name of the user that was requested to be described. User names
	// are used for authentication purposes. This is the string that will be used
	// by your user when they log in to your server.
	UserName *string `min:"3" type:"string"`
}

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

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

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

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *DescribedUser) SetHomeDirectory(v string) *DescribedUser {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *DescribedUser) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *DescribedUser {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *DescribedUser) SetHomeDirectoryType(v string) *DescribedUser {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *DescribedUser) SetPolicy(v string) *DescribedUser {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *DescribedUser) SetPosixProfile(v *PosixProfile) *DescribedUser {
	s.PosixProfile = v
	return s
}

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

// SetSshPublicKeys sets the SshPublicKeys field's value.
func (s *DescribedUser) SetSshPublicKeys(v []*SshPublicKey) *DescribedUser {
	s.SshPublicKeys = v
	return s
}

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

// SetUserName sets the UserName field's value.
func (s *DescribedUser) SetUserName(v string) *DescribedUser {
	s.UserName = &v
	return s
}

// Describes the properties of the specified workflow
type DescribedWorkflow struct {
	_ struct{} `type:"structure"`

	// Specifies the unique Amazon Resource Name (ARN) for the workflow.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// Specifies the text description for the workflow.
	Description *string `type:"string"`

	// Specifies the steps (actions) to take if errors are encountered during execution
	// of the workflow.
	OnExceptionSteps []*WorkflowStep `type:"list"`

	// Specifies the details for the steps that are in the specified workflow.
	Steps []*WorkflowStep `type:"list"`

	// Key-value pairs that can be used to group and search for workflows. Tags
	// are metadata attached to workflows for any purpose.
	Tags []*Tag `min:"1" type:"list"`

	// A unique identifier for the workflow.
	WorkflowId *string `min:"19" type:"string"`
}

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

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

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

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

// SetOnExceptionSteps sets the OnExceptionSteps field's value.
func (s *DescribedWorkflow) SetOnExceptionSteps(v []*WorkflowStep) *DescribedWorkflow {
	s.OnExceptionSteps = v
	return s
}

// SetSteps sets the Steps field's value.
func (s *DescribedWorkflow) SetSteps(v []*WorkflowStep) *DescribedWorkflow {
	s.Steps = v
	return s
}

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *DescribedWorkflow) SetWorkflowId(v string) *DescribedWorkflow {
	s.WorkflowId = &v
	return s
}

// Specifies the details for the file location for the file that's being used
// in the workflow. Only applicable if you are using Amazon Elastic File Systems
// (Amazon EFS) for storage.
type EfsFileLocation struct {
	_ struct{} `type:"structure"`

	// The identifier of the file system, assigned by Amazon EFS.
	FileSystemId *string `type:"string"`

	// The pathname for the folder being used by a workflow.
	Path *string `min:"1" type:"string"`
}

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

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

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

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

// SetFileSystemId sets the FileSystemId field's value.
func (s *EfsFileLocation) SetFileSystemId(v string) *EfsFileLocation {
	s.FileSystemId = &v
	return s
}

// SetPath sets the Path field's value.
func (s *EfsFileLocation) SetPath(v string) *EfsFileLocation {
	s.Path = &v
	return s
}

// The virtual private cloud (VPC) endpoint settings that are configured for
// your file transfer protocol-enabled server. With a VPC endpoint, you can
// restrict access to your server and resources only within your VPC. To control
// incoming internet traffic, invoke the UpdateServer API and attach an Elastic
// IP address to your server's endpoint.
//
// After May 19, 2021, you won't be able to create a server using EndpointType=VPC_ENDPOINT
// in your Amazon Web Servicesaccount if your account hasn't already done so
// before May 19, 2021. If you have already created servers with EndpointType=VPC_ENDPOINT
// in your Amazon Web Servicesaccount on or before May 19, 2021, you will not
// be affected. After this date, use EndpointType=VPC.
//
// For more information, see https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.
type EndpointDetails struct {
	_ struct{} `type:"structure"`

	// A list of address allocation IDs that are required to attach an Elastic IP
	// address to your server's endpoint.
	//
	// This property can only be set when EndpointType is set to VPC and it is only
	// valid in the UpdateServer API.
	AddressAllocationIds []*string `type:"list"`

	// A list of security groups IDs that are available to attach to your server's
	// endpoint.
	//
	// This property can only be set when EndpointType is set to VPC.
	//
	// You can edit the SecurityGroupIds property in the UpdateServer (https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateServer.html)
	// API only if you are changing the EndpointType from PUBLIC or VPC_ENDPOINT
	// to VPC. To change security groups associated with your server's VPC endpoint
	// after creation, use the Amazon EC2 ModifyVpcEndpoint (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpoint.html)
	// API.
	SecurityGroupIds []*string `type:"list"`

	// A list of subnet IDs that are required to host your server endpoint in your
	// VPC.
	//
	// This property can only be set when EndpointType is set to VPC.
	SubnetIds []*string `type:"list"`

	// The identifier of the VPC endpoint.
	//
	// This property can only be set when EndpointType is set to VPC_ENDPOINT.
	//
	// For more information, see https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.
	VpcEndpointId *string `min:"22" type:"string"`

	// The VPC identifier of the VPC in which a server's endpoint will be hosted.
	//
	// This property can only be set when EndpointType is set to VPC.
	VpcId *string `type:"string"`
}

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

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

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

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

// SetAddressAllocationIds sets the AddressAllocationIds field's value.
func (s *EndpointDetails) SetAddressAllocationIds(v []*string) *EndpointDetails {
	s.AddressAllocationIds = v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *EndpointDetails) SetSecurityGroupIds(v []*string) *EndpointDetails {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *EndpointDetails) SetSubnetIds(v []*string) *EndpointDetails {
	s.SubnetIds = v
	return s
}

// SetVpcEndpointId sets the VpcEndpointId field's value.
func (s *EndpointDetails) SetVpcEndpointId(v string) *EndpointDetails {
	s.VpcEndpointId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *EndpointDetails) SetVpcId(v string) *EndpointDetails {
	s.VpcId = &v
	return s
}

// Specifies the error message and type, for an error that occurs during the
// execution of the workflow.
type ExecutionError struct {
	_ struct{} `type:"structure"`

	// Specifies the descriptive message that corresponds to the ErrorType.
	//
	// Message is a required field
	Message *string `type:"string" required:"true"`

	// Specifies the error type.
	//
	//    * ALREADY_EXISTS: occurs for a copy step, if the overwrite option is not
	//    selected and a file with the same name already exists in the target location.
	//
	//    * BAD_REQUEST: a general bad request: for example, a step that attempts
	//    to tag an EFS file returns BAD_REQUEST, as only S3 files can be tagged.
	//
	//    * CUSTOM_STEP_FAILED: occurs when the custom step provided a callback
	//    that indicates failure.
	//
	//    * INTERNAL_SERVER_ERROR: a catch-all error that can occur for a variety
	//    of reasons.
	//
	//    * NOT_FOUND: occurs when a requested entity, for example a source file
	//    for a copy step, does not exist.
	//
	//    * PERMISSION_DENIED: occurs if your policy does not contain the correct
	//    permissions to complete one or more of the steps in the workflow.
	//
	//    * TIMEOUT: occurs when the execution times out. You can set the TimeoutSeconds
	//    for a custom step, anywhere from 1 second to 1800 seconds (30 minutes).
	//
	//    * THROTTLED: occurs if you exceed the new execution refill rate of one
	//    workflow per second.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ExecutionErrorType"`
}

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

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

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

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

// Specifies the steps in the workflow, as well as the steps to execute in case
// of any errors during workflow execution.
type ExecutionResults struct {
	_ struct{} `type:"structure"`

	// Specifies the steps (actions) to take if errors are encountered during execution
	// of the workflow.
	OnExceptionSteps []*ExecutionStepResult `min:"1" type:"list"`

	// Specifies the details for the steps that are in the specified workflow.
	Steps []*ExecutionStepResult `min:"1" type:"list"`
}

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

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

// SetOnExceptionSteps sets the OnExceptionSteps field's value.
func (s *ExecutionResults) SetOnExceptionSteps(v []*ExecutionStepResult) *ExecutionResults {
	s.OnExceptionSteps = v
	return s
}

// SetSteps sets the Steps field's value.
func (s *ExecutionResults) SetSteps(v []*ExecutionStepResult) *ExecutionResults {
	s.Steps = v
	return s
}

// Specifies the following details for the step: error (if any), outputs (if
// any), and the step type.
type ExecutionStepResult struct {
	_ struct{} `type:"structure"`

	// Specifies the details for an error, if it occurred during execution of the
	// specified workflow step.
	Error *ExecutionError `type:"structure"`

	// The values for the key/value pair applied as a tag to the file. Only applicable
	// if the step type is TAG.
	Outputs *string `type:"string"`

	// One of the available step types.
	//
	//    * COPY - Copy the file to another location.
	//
	//    * CUSTOM - Perform a custom step with an Lambda function target.
	//
	//    * DECRYPT - Decrypt a file that was encrypted before it was uploaded.
	//
	//    * DELETE - Delete the file.
	//
	//    * TAG - Add a tag to the file.
	StepType *string `type:"string" enum:"WorkflowStepType"`
}

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

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

// SetError sets the Error field's value.
func (s *ExecutionStepResult) SetError(v *ExecutionError) *ExecutionStepResult {
	s.Error = v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *ExecutionStepResult) SetOutputs(v string) *ExecutionStepResult {
	s.Outputs = &v
	return s
}

// SetStepType sets the StepType field's value.
func (s *ExecutionStepResult) SetStepType(v string) *ExecutionStepResult {
	s.StepType = &v
	return s
}

// Specifies the Amazon S3 or EFS file details to be used in the step.
type FileLocation struct {
	_ struct{} `type:"structure"`

	// Specifies the Amazon EFS identifier and the path for the file being used.
	EfsFileLocation *EfsFileLocation `type:"structure"`

	// Specifies the S3 details for the file being used, such as bucket, ETag, and
	// so forth.
	S3FileLocation *S3FileLocation `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 FileLocation) String() string {
	return awsutil.Prettify(s)
}

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

// SetEfsFileLocation sets the EfsFileLocation field's value.
func (s *FileLocation) SetEfsFileLocation(v *EfsFileLocation) *FileLocation {
	s.EfsFileLocation = v
	return s
}

// SetS3FileLocation sets the S3FileLocation field's value.
func (s *FileLocation) SetS3FileLocation(v *S3FileLocation) *FileLocation {
	s.S3FileLocation = v
	return s
}

// Represents an object that contains entries and targets for HomeDirectoryMappings.
//
// The following is an Entry and Target pair example for chroot.
//
// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
type HomeDirectoryMapEntry struct {
	_ struct{} `type:"structure"`

	// Represents an entry for HomeDirectoryMappings.
	//
	// Entry is a required field
	Entry *string `type:"string" required:"true"`

	// Represents the map target that is used in a HomeDirectoryMapEntry.
	//
	// Target is a required field
	Target *string `type:"string" required:"true"`

	// Specifies the type of mapping. Set the type to FILE if you want the mapping
	// to point to a file, or DIRECTORY for the directory to point to a directory.
	//
	// By default, home directory mappings have a Type of DIRECTORY when you create
	// a Transfer Family server. You would need to explicitly set Type to FILE if
	// you want a mapping to have a file target.
	Type *string `type:"string" enum:"MapType"`
}

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

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

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

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

// SetEntry sets the Entry field's value.
func (s *HomeDirectoryMapEntry) SetEntry(v string) *HomeDirectoryMapEntry {
	s.Entry = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *HomeDirectoryMapEntry) SetTarget(v string) *HomeDirectoryMapEntry {
	s.Target = &v
	return s
}

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

// Returns information related to the type of user authentication that is in
// use for a file transfer protocol-enabled server's users. A server can have
// only one method of authentication.
type IdentityProviderDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the Directory Service directory that you want to use as
	// your identity provider.
	DirectoryId *string `min:"12" type:"string"`

	// The ARN for a Lambda function to use for the Identity provider.
	Function *string `min:"1" type:"string"`

	// This parameter is only applicable if your IdentityProviderType is API_GATEWAY.
	// Provides the type of InvocationRole used to authenticate the user account.
	InvocationRole *string `min:"20" type:"string"`

	// For SFTP-enabled servers, and for custom identity providers only, you can
	// specify whether to authenticate using a password, SSH key pair, or both.
	//
	//    * PASSWORD - users must provide their password to connect.
	//
	//    * PUBLIC_KEY - users must provide their private key to connect.
	//
	//    * PUBLIC_KEY_OR_PASSWORD - users can authenticate with either their password
	//    or their key. This is the default value.
	//
	//    * PUBLIC_KEY_AND_PASSWORD - users must provide both their private key
	//    and their password to connect. The server checks the key first, and then
	//    if the key is valid, the system prompts for a password. If the private
	//    key provided does not match the public key that is stored, authentication
	//    fails.
	SftpAuthenticationMethods *string `type:"string" enum:"SftpAuthenticationMethods"`

	// Provides the location of the service endpoint used to authenticate users.
	Url *string `type:"string"`
}

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

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

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

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

// SetDirectoryId sets the DirectoryId field's value.
func (s *IdentityProviderDetails) SetDirectoryId(v string) *IdentityProviderDetails {
	s.DirectoryId = &v
	return s
}

// SetFunction sets the Function field's value.
func (s *IdentityProviderDetails) SetFunction(v string) *IdentityProviderDetails {
	s.Function = &v
	return s
}

// SetInvocationRole sets the InvocationRole field's value.
func (s *IdentityProviderDetails) SetInvocationRole(v string) *IdentityProviderDetails {
	s.InvocationRole = &v
	return s
}

// SetSftpAuthenticationMethods sets the SftpAuthenticationMethods field's value.
func (s *IdentityProviderDetails) SetSftpAuthenticationMethods(v string) *IdentityProviderDetails {
	s.SftpAuthenticationMethods = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *IdentityProviderDetails) SetUrl(v string) *IdentityProviderDetails {
	s.Url = &v
	return s
}

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

	// An optional date that specifies when the certificate becomes active.
	ActiveDate *time.Time `type:"timestamp"`

	//    * For the CLI, provide a file path for a certificate in URI format. For
	//    example, --certificate file://encryption-cert.pem. Alternatively, you
	//    can provide the raw content.
	//
	//    * For the SDK, specify the raw content of a certificate file. For example,
	//    --certificate "`cat encryption-cert.pem`".
	//
	// Certificate is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportCertificateInput's
	// String and GoString methods.
	//
	// Certificate is a required field
	Certificate *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// An optional list of certificates that make up the chain for the certificate
	// that's being imported.
	//
	// CertificateChain is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportCertificateInput's
	// String and GoString methods.
	CertificateChain *string `min:"1" type:"string" sensitive:"true"`

	// A short description that helps identify the certificate.
	Description *string `min:"1" type:"string"`

	// An optional date that specifies when the certificate becomes inactive.
	InactiveDate *time.Time `type:"timestamp"`

	//    * For the CLI, provide a file path for a private key in URI format.For
	//    example, --private-key file://encryption-key.pem. Alternatively, you can
	//    provide the raw content of the private key file.
	//
	//    * For the SDK, specify the raw content of a private key file. For example,
	//    --private-key "`cat encryption-key.pem`"
	//
	// PrivateKey is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportCertificateInput's
	// String and GoString methods.
	PrivateKey *string `min:"1" type:"string" sensitive:"true"`

	// Key-value pairs that can be used to group and search for certificates.
	Tags []*Tag `min:"1" type:"list"`

	// Specifies whether this certificate is used for signing or encryption.
	//
	// Usage is a required field
	Usage *string `type:"string" required:"true" enum:"CertificateUsageType"`
}

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

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

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

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

// SetActiveDate sets the ActiveDate field's value.
func (s *ImportCertificateInput) SetActiveDate(v time.Time) *ImportCertificateInput {
	s.ActiveDate = &v
	return s
}

// SetCertificate sets the Certificate field's value.
func (s *ImportCertificateInput) SetCertificate(v string) *ImportCertificateInput {
	s.Certificate = &v
	return s
}

// SetCertificateChain sets the CertificateChain field's value.
func (s *ImportCertificateInput) SetCertificateChain(v string) *ImportCertificateInput {
	s.CertificateChain = &v
	return s
}

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

// SetInactiveDate sets the InactiveDate field's value.
func (s *ImportCertificateInput) SetInactiveDate(v time.Time) *ImportCertificateInput {
	s.InactiveDate = &v
	return s
}

// SetPrivateKey sets the PrivateKey field's value.
func (s *ImportCertificateInput) SetPrivateKey(v string) *ImportCertificateInput {
	s.PrivateKey = &v
	return s
}

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

// SetUsage sets the Usage field's value.
func (s *ImportCertificateInput) SetUsage(v string) *ImportCertificateInput {
	s.Usage = &v
	return s
}

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

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	//
	// CertificateId is a required field
	CertificateId *string `min:"22" 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 ImportCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCertificateId sets the CertificateId field's value.
func (s *ImportCertificateOutput) SetCertificateId(v string) *ImportCertificateOutput {
	s.CertificateId = &v
	return s
}

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

	// The text description that identifies this host key.
	Description *string `type:"string"`

	// The private key portion of an SSH key pair.
	//
	// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
	//
	// HostKeyBody is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportHostKeyInput's
	// String and GoString methods.
	//
	// HostKeyBody is a required field
	HostKeyBody *string `type:"string" required:"true" sensitive:"true"`

	// The identifier of the server that contains the host key that you are importing.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// Key-value pairs that can be used to group and search for host keys.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

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

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

// SetHostKeyBody sets the HostKeyBody field's value.
func (s *ImportHostKeyInput) SetHostKeyBody(v string) *ImportHostKeyInput {
	s.HostKeyBody = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *ImportHostKeyInput) SetServerId(v string) *ImportHostKeyInput {
	s.ServerId = &v
	return s
}

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

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

	// Returns the host key identifier for the imported key.
	//
	// HostKeyId is a required field
	HostKeyId *string `min:"25" type:"string" required:"true"`

	// Returns the server identifier that contains the imported key.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ImportHostKeyOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetHostKeyId sets the HostKeyId field's value.
func (s *ImportHostKeyOutput) SetHostKeyId(v string) *ImportHostKeyOutput {
	s.HostKeyId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *ImportHostKeyOutput) SetServerId(v string) *ImportHostKeyOutput {
	s.ServerId = &v
	return s
}

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

	// A system-assigned unique identifier for a server.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The public key portion of an SSH key pair.
	//
	// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
	//
	// SshPublicKeyBody is a required field
	SshPublicKeyBody *string `type:"string" required:"true"`

	// The name of the Transfer Family user that is assigned to one or more servers.
	//
	// UserName is a required field
	UserName *string `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 ImportSshPublicKeyInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *ImportSshPublicKeyInput) SetServerId(v string) *ImportSshPublicKeyInput {
	s.ServerId = &v
	return s
}

// SetSshPublicKeyBody sets the SshPublicKeyBody field's value.
func (s *ImportSshPublicKeyInput) SetSshPublicKeyBody(v string) *ImportSshPublicKeyInput {
	s.SshPublicKeyBody = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *ImportSshPublicKeyInput) SetUserName(v string) *ImportSshPublicKeyInput {
	s.UserName = &v
	return s
}

// Identifies the user, the server they belong to, and the identifier of the
// SSH public key associated with that user. A user can have more than one key
// on each server that they are associated with.
type ImportSshPublicKeyOutput struct {
	_ struct{} `type:"structure"`

	// A system-assigned unique identifier for a server.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The name given to a public key by the system that was imported.
	//
	// SshPublicKeyId is a required field
	SshPublicKeyId *string `min:"21" type:"string" required:"true"`

	// A user name assigned to the ServerID value that you specified.
	//
	// UserName is a required field
	UserName *string `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 ImportSshPublicKeyOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServerId sets the ServerId field's value.
func (s *ImportSshPublicKeyOutput) SetServerId(v string) *ImportSshPublicKeyOutput {
	s.ServerId = &v
	return s
}

// SetSshPublicKeyId sets the SshPublicKeyId field's value.
func (s *ImportSshPublicKeyOutput) SetSshPublicKeyId(v string) *ImportSshPublicKeyOutput {
	s.SshPublicKeyId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *ImportSshPublicKeyOutput) SetUserName(v string) *ImportSshPublicKeyOutput {
	s.UserName = &v
	return s
}

// Specifies the location for the file that's being processed.
type InputFileLocation struct {
	_ struct{} `type:"structure"`

	// Specifies the details for the Amazon Elastic File System (Amazon EFS) file
	// that's being decrypted.
	EfsFileLocation *EfsFileLocation `type:"structure"`

	// Specifies the details for the Amazon S3 file that's being copied or decrypted.
	S3FileLocation *S3InputFileLocation `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 InputFileLocation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEfsFileLocation sets the EfsFileLocation field's value.
func (s *InputFileLocation) SetEfsFileLocation(v *EfsFileLocation) *InputFileLocation {
	s.EfsFileLocation = v
	return s
}

// SetS3FileLocation sets the S3FileLocation field's value.
func (s *InputFileLocation) SetS3FileLocation(v *S3InputFileLocation) *InputFileLocation {
	s.S3FileLocation = v
	return s
}

// This exception is thrown when an error occurs in the Transfer Family service.
type InternalServiceError struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorInternalServiceError(v protocol.ResponseMetadata) error {
	return &InternalServiceError{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// The NextToken parameter that was passed is invalid.
type InvalidNextTokenException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
	return &InvalidNextTokenException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// This exception is thrown when the client submits a malformed request.
type InvalidRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
	return &InvalidRequestException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// Specifies the maximum number of access SIDs to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When you can get additional results from the ListAccesses call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional accesses.
	NextToken *string `min:"1" type:"string"`

	// A system-assigned unique identifier for a server that has users assigned
	// to it.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListAccessesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetServerId sets the ServerId field's value.
func (s *ListAccessesInput) SetServerId(v string) *ListAccessesInput {
	s.ServerId = &v
	return s
}

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

	// Returns the accesses and their properties for the ServerId value that you
	// specify.
	//
	// Accesses is a required field
	Accesses []*ListedAccess `type:"list" required:"true"`

	// When you can get additional results from the ListAccesses call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional accesses.
	NextToken *string `min:"1" type:"string"`

	// A system-assigned unique identifier for a server that has users assigned
	// to it.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListAccessesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccesses sets the Accesses field's value.
func (s *ListAccessesOutput) SetAccesses(v []*ListedAccess) *ListAccessesOutput {
	s.Accesses = v
	return s
}

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

// SetServerId sets the ServerId field's value.
func (s *ListAccessesOutput) SetServerId(v string) *ListAccessesOutput {
	s.ServerId = &v
	return s
}

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

	// The maximum number of agreements to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When you can get additional results from the ListAgreements call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional agreements.
	NextToken *string `min:"1" type:"string"`

	// The identifier of the server for which you want a list of agreements.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListAgreementsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetServerId sets the ServerId field's value.
func (s *ListAgreementsInput) SetServerId(v string) *ListAgreementsInput {
	s.ServerId = &v
	return s
}

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

	// Returns an array, where each item contains the details of an agreement.
	//
	// Agreements is a required field
	Agreements []*ListedAgreement `type:"list" required:"true"`

	// Returns a token that you can use to call ListAgreements again and receive
	// additional results, if there are any.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetAgreements sets the Agreements field's value.
func (s *ListAgreementsOutput) SetAgreements(v []*ListedAgreement) *ListAgreementsOutput {
	s.Agreements = v
	return s
}

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

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

	// The maximum number of certificates to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When you can get additional results from the ListCertificates call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional certificates.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// Returns an array of the certificates that are specified in the ListCertificates
	// call.
	//
	// Certificates is a required field
	Certificates []*ListedCertificate `type:"list" required:"true"`

	// Returns the next token, which you can use to list the next certificate.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetCertificates sets the Certificates field's value.
func (s *ListCertificatesOutput) SetCertificates(v []*ListedCertificate) *ListCertificatesOutput {
	s.Certificates = v
	return s
}

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

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

	// The maximum number of connectors to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When you can get additional results from the ListConnectors call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional connectors.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// Returns an array, where each item contains the details of a connector.
	//
	// Connectors is a required field
	Connectors []*ListedConnector `type:"list" required:"true"`

	// Returns a token that you can use to call ListConnectors again and receive
	// additional results, if there are any.
	NextToken *string `min:"1" type:"string"`
}

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

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

// SetConnectors sets the Connectors field's value.
func (s *ListConnectorsOutput) SetConnectors(v []*ListedConnector) *ListConnectorsOutput {
	s.Connectors = v
	return s
}

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

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

	// Specifies the maximum number of executions to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// ListExecutions returns the NextToken parameter in the output. You can then
	// pass the NextToken parameter in a subsequent command to continue listing
	// additional executions.
	//
	// This is useful for pagination, for instance. If you have 100 executions for
	// a workflow, you might only want to list first 10. If so, call the API by
	// specifying the max-results:
	//
	// aws transfer list-executions --max-results 10
	//
	// This returns details for the first 10 executions, as well as the pointer
	// (NextToken) to the eleventh execution. You can now call the API again, supplying
	// the NextToken value you received:
	//
	// aws transfer list-executions --max-results 10 --next-token $somePointerReturnedFromPreviousListResult
	//
	// This call returns the next 10 executions, the 11th through the 20th. You
	// can then repeat the call until the details for all 100 executions have been
	// returned.
	NextToken *string `min:"1" type:"string"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 ListExecutionsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *ListExecutionsInput) SetWorkflowId(v string) *ListExecutionsInput {
	s.WorkflowId = &v
	return s
}

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

	// Returns the details for each execution, in a ListedExecution array.
	//
	// Executions is a required field
	Executions []*ListedExecution `type:"list" required:"true"`

	// ListExecutions returns the NextToken parameter in the output. You can then
	// pass the NextToken parameter in a subsequent command to continue listing
	// additional executions.
	NextToken *string `min:"1" type:"string"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 ListExecutionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetExecutions sets the Executions field's value.
func (s *ListExecutionsOutput) SetExecutions(v []*ListedExecution) *ListExecutionsOutput {
	s.Executions = v
	return s
}

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *ListExecutionsOutput) SetWorkflowId(v string) *ListExecutionsOutput {
	s.WorkflowId = &v
	return s
}

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

	// The maximum number of host keys to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When there are additional results that were not returned, a NextToken parameter
	// is returned. You can use that value for a subsequent call to ListHostKeys
	// to continue listing results.
	NextToken *string `min:"1" type:"string"`

	// The identifier of the server that contains the host keys that you want to
	// view.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListHostKeysInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetServerId sets the ServerId field's value.
func (s *ListHostKeysInput) SetServerId(v string) *ListHostKeysInput {
	s.ServerId = &v
	return s
}

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

	// Returns an array, where each item contains the details of a host key.
	//
	// HostKeys is a required field
	HostKeys []*ListedHostKey `type:"list" required:"true"`

	// Returns a token that you can use to call ListHostKeys again and receive additional
	// results, if there are any.
	NextToken *string `min:"1" type:"string"`

	// Returns the server identifier that contains the listed host keys.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListHostKeysOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetHostKeys sets the HostKeys field's value.
func (s *ListHostKeysOutput) SetHostKeys(v []*ListedHostKey) *ListHostKeysOutput {
	s.HostKeys = v
	return s
}

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

// SetServerId sets the ServerId field's value.
func (s *ListHostKeysOutput) SetServerId(v string) *ListHostKeysOutput {
	s.ServerId = &v
	return s
}

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

	// The maximum number of profiles to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// When there are additional results that were not returned, a NextToken parameter
	// is returned. You can use that value for a subsequent call to ListProfiles
	// to continue listing results.
	NextToken *string `min:"1" type:"string"`

	// Indicates whether to list only LOCAL type profiles or only PARTNER type profiles.
	// If not supplied in the request, the command lists all types of profiles.
	ProfileType *string `type:"string" enum:"ProfileType"`
}

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

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

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

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

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

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

// SetProfileType sets the ProfileType field's value.
func (s *ListProfilesInput) SetProfileType(v string) *ListProfilesInput {
	s.ProfileType = &v
	return s
}

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

	// Returns a token that you can use to call ListProfiles again and receive additional
	// results, if there are any.
	NextToken *string `min:"1" type:"string"`

	// Returns an array, where each item contains the details of a profile.
	//
	// Profiles is a required field
	Profiles []*ListedProfile `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 ListProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetProfiles sets the Profiles field's value.
func (s *ListProfilesOutput) SetProfiles(v []*ListedProfile) *ListProfilesOutput {
	s.Profiles = v
	return s
}

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

	// Specifies the number of security policies to return as a response to the
	// ListSecurityPolicies query.
	MaxResults *int64 `min:"1" type:"integer"`

	// When additional results are obtained from the ListSecurityPolicies command,
	// a NextToken parameter is returned in the output. You can then pass the NextToken
	// parameter in a subsequent command to continue listing additional security
	// policies.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// When you can get additional results from the ListSecurityPolicies operation,
	// a NextToken parameter is returned in the output. In a following command,
	// you can pass in the NextToken parameter to continue listing security policies.
	NextToken *string `min:"1" type:"string"`

	// An array of security policies that were listed.
	//
	// SecurityPolicyNames is a required field
	SecurityPolicyNames []*string `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 ListSecurityPoliciesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetSecurityPolicyNames sets the SecurityPolicyNames field's value.
func (s *ListSecurityPoliciesOutput) SetSecurityPolicyNames(v []*string) *ListSecurityPoliciesOutput {
	s.SecurityPolicyNames = v
	return s
}

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

	// Specifies the number of servers to return as a response to the ListServers
	// query.
	MaxResults *int64 `min:"1" type:"integer"`

	// When additional results are obtained from the ListServers command, a NextToken
	// parameter is returned in the output. You can then pass the NextToken parameter
	// in a subsequent command to continue listing additional servers.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// When you can get additional results from the ListServers operation, a NextToken
	// parameter is returned in the output. In a following command, you can pass
	// in the NextToken parameter to continue listing additional servers.
	NextToken *string `min:"1" type:"string"`

	// An array of servers that were listed.
	//
	// Servers is a required field
	Servers []*ListedServer `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 ListServersOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetServers sets the Servers field's value.
func (s *ListServersOutput) SetServers(v []*ListedServer) *ListServersOutput {
	s.Servers = v
	return s
}

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

	// Requests the tags associated with a particular Amazon Resource Name (ARN).
	// An ARN is an identifier for a specific Amazon Web Services resource, such
	// as a server, user, or role.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// Specifies the number of tags to return as a response to the ListTagsForResource
	// request.
	MaxResults *int64 `min:"1" type:"integer"`

	// When you request additional results from the ListTagsForResource operation,
	// a NextToken parameter is returned in the input. You can then pass in a subsequent
	// command to the NextToken parameter to continue listing additional tags.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

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

	// The ARN you specified to list the tags of.
	Arn *string `min:"20" type:"string"`

	// When you can get additional results from the ListTagsForResource call, a
	// NextToken parameter is returned in the output. You can then pass in a subsequent
	// command to the NextToken parameter to continue listing additional tags.
	NextToken *string `min:"1" type:"string"`

	// Key-value pairs that are assigned to a resource, usually for the purpose
	// of grouping and searching for items. Tags are metadata that you define.
	Tags []*Tag `min:"1" type:"list"`
}

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

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

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

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

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

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

	// Specifies the number of users to return as a response to the ListUsers request.
	MaxResults *int64 `min:"1" type:"integer"`

	// If there are additional results from the ListUsers call, a NextToken parameter
	// is returned in the output. You can then pass the NextToken to a subsequent
	// ListUsers command, to continue listing additional users.
	NextToken *string `min:"1" type:"string"`

	// A system-assigned unique identifier for a server that has users assigned
	// to it.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 ListUsersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetServerId sets the ServerId field's value.
func (s *ListUsersInput) SetServerId(v string) *ListUsersInput {
	s.ServerId = &v
	return s
}

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

	// When you can get additional results from the ListUsers call, a NextToken
	// parameter is returned in the output. You can then pass in a subsequent command
	// to the NextToken parameter to continue listing additional users.
	NextToken *string `min:"1" type:"string"`

	// A system-assigned unique identifier for a server that the users are assigned
	// to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// Returns the Transfer Family users and their properties for the ServerId value
	// that you specify.
	//
	// Users is a required field
	Users []*ListedUser `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 ListUsersOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetServerId sets the ServerId field's value.
func (s *ListUsersOutput) SetServerId(v string) *ListUsersOutput {
	s.ServerId = &v
	return s
}

// SetUsers sets the Users field's value.
func (s *ListUsersOutput) SetUsers(v []*ListedUser) *ListUsersOutput {
	s.Users = v
	return s
}

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

	// Specifies the maximum number of workflows to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// ListWorkflows returns the NextToken parameter in the output. You can then
	// pass the NextToken parameter in a subsequent command to continue listing
	// additional workflows.
	NextToken *string `min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// ListWorkflows returns the NextToken parameter in the output. You can then
	// pass the NextToken parameter in a subsequent command to continue listing
	// additional workflows.
	NextToken *string `min:"1" type:"string"`

	// Returns the Arn, WorkflowId, and Description for each workflow.
	//
	// Workflows is a required field
	Workflows []*ListedWorkflow `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 ListWorkflowsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetWorkflows sets the Workflows field's value.
func (s *ListWorkflowsOutput) SetWorkflows(v []*ListedWorkflow) *ListWorkflowsOutput {
	s.Workflows = v
	return s
}

// Lists the properties for one or more specified associated accesses.
type ListedAccess struct {
	_ struct{} `type:"structure"`

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	ExternalId *string `min:"1" type:"string"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	Role *string `min:"20" type:"string"`
}

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

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

// SetExternalId sets the ExternalId field's value.
func (s *ListedAccess) SetExternalId(v string) *ListedAccess {
	s.ExternalId = &v
	return s
}

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *ListedAccess) SetHomeDirectory(v string) *ListedAccess {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *ListedAccess) SetHomeDirectoryType(v string) *ListedAccess {
	s.HomeDirectoryType = &v
	return s
}

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

// Describes the properties of an agreement.
type ListedAgreement struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	AgreementId *string `min:"19" type:"string"`

	// The Amazon Resource Name (ARN) of the specified agreement.
	Arn *string `min:"20" type:"string"`

	// The current description for the agreement. You can change it by calling the
	// UpdateAgreement operation and providing a new description.
	Description *string `min:"1" type:"string"`

	// A unique identifier for the AS2 local profile.
	LocalProfileId *string `min:"19" type:"string"`

	// A unique identifier for the partner profile.
	PartnerProfileId *string `min:"19" type:"string"`

	// The unique identifier for the agreement.
	ServerId *string `min:"19" type:"string"`

	// The agreement can be either ACTIVE or INACTIVE.
	Status *string `type:"string" enum:"AgreementStatusType"`
}

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

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

// SetAgreementId sets the AgreementId field's value.
func (s *ListedAgreement) SetAgreementId(v string) *ListedAgreement {
	s.AgreementId = &v
	return s
}

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

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

// SetLocalProfileId sets the LocalProfileId field's value.
func (s *ListedAgreement) SetLocalProfileId(v string) *ListedAgreement {
	s.LocalProfileId = &v
	return s
}

// SetPartnerProfileId sets the PartnerProfileId field's value.
func (s *ListedAgreement) SetPartnerProfileId(v string) *ListedAgreement {
	s.PartnerProfileId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *ListedAgreement) SetServerId(v string) *ListedAgreement {
	s.ServerId = &v
	return s
}

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

// Describes the properties of a certificate.
type ListedCertificate struct {
	_ struct{} `type:"structure"`

	// An optional date that specifies when the certificate becomes active.
	ActiveDate *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the specified certificate.
	Arn *string `min:"20" type:"string"`

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	CertificateId *string `min:"22" type:"string"`

	// The name or short description that's used to identify the certificate.
	Description *string `min:"1" type:"string"`

	// An optional date that specifies when the certificate becomes inactive.
	InactiveDate *time.Time `type:"timestamp"`

	// The certificate can be either ACTIVE, PENDING_ROTATION, or INACTIVE. PENDING_ROTATION
	// means that this certificate will replace the current certificate when it
	// expires.
	Status *string `type:"string" enum:"CertificateStatusType"`

	// The type for the certificate. If a private key has been specified for the
	// certificate, its type is CERTIFICATE_WITH_PRIVATE_KEY. If there is no private
	// key, the type is CERTIFICATE.
	Type *string `type:"string" enum:"CertificateType"`

	// Specifies whether this certificate is used for signing or encryption.
	Usage *string `type:"string" enum:"CertificateUsageType"`
}

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

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

// SetActiveDate sets the ActiveDate field's value.
func (s *ListedCertificate) SetActiveDate(v time.Time) *ListedCertificate {
	s.ActiveDate = &v
	return s
}

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

// SetCertificateId sets the CertificateId field's value.
func (s *ListedCertificate) SetCertificateId(v string) *ListedCertificate {
	s.CertificateId = &v
	return s
}

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

// SetInactiveDate sets the InactiveDate field's value.
func (s *ListedCertificate) SetInactiveDate(v time.Time) *ListedCertificate {
	s.InactiveDate = &v
	return s
}

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

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

// SetUsage sets the Usage field's value.
func (s *ListedCertificate) SetUsage(v string) *ListedCertificate {
	s.Usage = &v
	return s
}

// Returns details of the connector that is specified.
type ListedConnector struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the specified connector.
	Arn *string `min:"20" type:"string"`

	// The unique identifier for the connector.
	ConnectorId *string `min:"19" type:"string"`

	// The URL of the partner's AS2 or SFTP endpoint.
	Url *string `type:"string"`
}

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

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

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

// SetConnectorId sets the ConnectorId field's value.
func (s *ListedConnector) SetConnectorId(v string) *ListedConnector {
	s.ConnectorId = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *ListedConnector) SetUrl(v string) *ListedConnector {
	s.Url = &v
	return s
}

// Returns properties of the execution that is specified.
type ListedExecution struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the execution of a workflow.
	ExecutionId *string `min:"36" type:"string"`

	// A structure that describes the Amazon S3 or EFS file location. This is the
	// file location when the execution begins: if the file is being copied, this
	// is the initial (as opposed to destination) file location.
	InitialFileLocation *FileLocation `type:"structure"`

	// A container object for the session details that are associated with a workflow.
	ServiceMetadata *ServiceMetadata `type:"structure"`

	// The status is one of the execution. Can be in progress, completed, exception
	// encountered, or handling the exception.
	Status *string `type:"string" enum:"ExecutionStatus"`
}

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

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

// SetExecutionId sets the ExecutionId field's value.
func (s *ListedExecution) SetExecutionId(v string) *ListedExecution {
	s.ExecutionId = &v
	return s
}

// SetInitialFileLocation sets the InitialFileLocation field's value.
func (s *ListedExecution) SetInitialFileLocation(v *FileLocation) *ListedExecution {
	s.InitialFileLocation = v
	return s
}

// SetServiceMetadata sets the ServiceMetadata field's value.
func (s *ListedExecution) SetServiceMetadata(v *ServiceMetadata) *ListedExecution {
	s.ServiceMetadata = v
	return s
}

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

// Returns properties of the host key that's specified.
type ListedHostKey struct {
	_ struct{} `type:"structure"`

	// The unique Amazon Resource Name (ARN) of the host key.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The date on which the host key was added to the server.
	DateImported *time.Time `type:"timestamp"`

	// The current description for the host key. You can change it by calling the
	// UpdateHostKey operation and providing a new description.
	Description *string `type:"string"`

	// The public key fingerprint, which is a short sequence of bytes used to identify
	// the longer public key.
	Fingerprint *string `type:"string"`

	// A unique identifier for the host key.
	HostKeyId *string `min:"25" type:"string"`

	// The encryption algorithm that is used for the host key. The Type parameter
	// is specified by using one of the following values:
	//
	//    * ssh-rsa
	//
	//    * ssh-ed25519
	//
	//    * ecdsa-sha2-nistp256
	//
	//    * ecdsa-sha2-nistp384
	//
	//    * ecdsa-sha2-nistp521
	Type *string `type:"string"`
}

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

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

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

// SetDateImported sets the DateImported field's value.
func (s *ListedHostKey) SetDateImported(v time.Time) *ListedHostKey {
	s.DateImported = &v
	return s
}

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

// SetFingerprint sets the Fingerprint field's value.
func (s *ListedHostKey) SetFingerprint(v string) *ListedHostKey {
	s.Fingerprint = &v
	return s
}

// SetHostKeyId sets the HostKeyId field's value.
func (s *ListedHostKey) SetHostKeyId(v string) *ListedHostKey {
	s.HostKeyId = &v
	return s
}

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

// Returns the properties of the profile that was specified.
type ListedProfile struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the specified profile.
	Arn *string `min:"20" type:"string"`

	// The As2Id is the AS2-name, as defined in the RFC 4130 (https://datatracker.ietf.org/doc/html/rfc4130).
	// For inbound transfers, this is the AS2-From header for the AS2 messages sent
	// from the partner. For outbound connectors, this is the AS2-To header for
	// the AS2 messages sent to the partner using the StartFileTransfer API operation.
	// This ID cannot include spaces.
	As2Id *string `min:"1" type:"string"`

	// A unique identifier for the local or partner AS2 profile.
	ProfileId *string `min:"19" type:"string"`

	// Indicates whether to list only LOCAL type profiles or only PARTNER type profiles.
	// If not supplied in the request, the command lists all types of profiles.
	ProfileType *string `type:"string" enum:"ProfileType"`
}

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

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

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

// SetAs2Id sets the As2Id field's value.
func (s *ListedProfile) SetAs2Id(v string) *ListedProfile {
	s.As2Id = &v
	return s
}

// SetProfileId sets the ProfileId field's value.
func (s *ListedProfile) SetProfileId(v string) *ListedProfile {
	s.ProfileId = &v
	return s
}

// SetProfileType sets the ProfileType field's value.
func (s *ListedProfile) SetProfileType(v string) *ListedProfile {
	s.ProfileType = &v
	return s
}

// Returns properties of a file transfer protocol-enabled server that was specified.
type ListedServer struct {
	_ struct{} `type:"structure"`

	// Specifies the unique Amazon Resource Name (ARN) for a server to be listed.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// Specifies the domain of the storage system that is used for file transfers.
	Domain *string `type:"string" enum:"Domain"`

	// Specifies the type of VPC endpoint that your server is connected to. If your
	// server is connected to a VPC endpoint, your server isn't accessible over
	// the public internet.
	EndpointType *string `type:"string" enum:"EndpointType"`

	// The mode of authentication for a server. The default value is SERVICE_MANAGED,
	// which allows you to store and access user credentials within the Transfer
	// Family service.
	//
	// Use AWS_DIRECTORY_SERVICE to provide access to Active Directory groups in
	// Directory Service for Microsoft Active Directory or Microsoft Active Directory
	// in your on-premises environment or in Amazon Web Services using AD Connector.
	// This option also requires you to provide a Directory ID by using the IdentityProviderDetails
	// parameter.
	//
	// Use the API_GATEWAY value to integrate with an identity provider of your
	// choosing. The API_GATEWAY setting requires you to provide an Amazon API Gateway
	// endpoint URL to call for authentication by using the IdentityProviderDetails
	// parameter.
	//
	// Use the AWS_LAMBDA value to directly use an Lambda function as your identity
	// provider. If you choose this value, you must specify the ARN for the Lambda
	// function in the Function parameter for the IdentityProviderDetails data type.
	IdentityProviderType *string `type:"string" enum:"IdentityProviderType"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a server to turn on Amazon CloudWatch logging for Amazon
	// S3 or Amazon EFSevents. When set, you can view user activity in your CloudWatch
	// logs.
	LoggingRole *string `min:"20" type:"string"`

	// Specifies the unique system assigned identifier for the servers that were
	// listed.
	ServerId *string `min:"19" type:"string"`

	// The condition of the server that was described. A value of ONLINE indicates
	// that the server can accept jobs and transfer files. A State value of OFFLINE
	// means that the server cannot perform file transfer operations.
	//
	// The states of STARTING and STOPPING indicate that the server is in an intermediate
	// state, either not fully able to respond, or not fully offline. The values
	// of START_FAILED or STOP_FAILED can indicate an error condition.
	State *string `type:"string" enum:"State"`

	// Specifies the number of users that are assigned to a server you specified
	// with the ServerId.
	UserCount *int64 `type:"integer"`
}

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

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

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

// SetDomain sets the Domain field's value.
func (s *ListedServer) SetDomain(v string) *ListedServer {
	s.Domain = &v
	return s
}

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

// SetIdentityProviderType sets the IdentityProviderType field's value.
func (s *ListedServer) SetIdentityProviderType(v string) *ListedServer {
	s.IdentityProviderType = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *ListedServer) SetLoggingRole(v string) *ListedServer {
	s.LoggingRole = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *ListedServer) SetServerId(v string) *ListedServer {
	s.ServerId = &v
	return s
}

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

// SetUserCount sets the UserCount field's value.
func (s *ListedServer) SetUserCount(v int64) *ListedServer {
	s.UserCount = &v
	return s
}

// Returns properties of the user that you specify.
type ListedUser struct {
	_ struct{} `type:"structure"`

	// Provides the unique Amazon Resource Name (ARN) for the user that you want
	// to learn about.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	//
	// The IAM role that controls your users' access to your Amazon S3 bucket for
	// servers with Domain=S3, or your EFS file system for servers with Domain=EFS.
	//
	// The policies attached to this role determine the level of access you want
	// to provide your users when transferring files into and out of your S3 buckets
	// or EFS file systems.
	Role *string `min:"20" type:"string"`

	// Specifies the number of SSH public keys stored for the user you specified.
	SshPublicKeyCount *int64 `type:"integer"`

	// Specifies the name of the user whose ARN was specified. User names are used
	// for authentication purposes.
	UserName *string `min:"3" type:"string"`
}

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

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

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

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *ListedUser) SetHomeDirectory(v string) *ListedUser {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *ListedUser) SetHomeDirectoryType(v string) *ListedUser {
	s.HomeDirectoryType = &v
	return s
}

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

// SetSshPublicKeyCount sets the SshPublicKeyCount field's value.
func (s *ListedUser) SetSshPublicKeyCount(v int64) *ListedUser {
	s.SshPublicKeyCount = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *ListedUser) SetUserName(v string) *ListedUser {
	s.UserName = &v
	return s
}

// Contains the identifier, text description, and Amazon Resource Name (ARN)
// for the workflow.
type ListedWorkflow struct {
	_ struct{} `type:"structure"`

	// Specifies the unique Amazon Resource Name (ARN) for the workflow.
	Arn *string `min:"20" type:"string"`

	// Specifies the text description for the workflow.
	Description *string `type:"string"`

	// A unique identifier for the workflow.
	WorkflowId *string `min:"19" type:"string"`
}

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

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

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

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

// SetWorkflowId sets the WorkflowId field's value.
func (s *ListedWorkflow) SetWorkflowId(v string) *ListedWorkflow {
	s.WorkflowId = &v
	return s
}

// Consists of the logging role and the log group name.
type LoggingConfiguration struct {
	_ struct{} `type:"structure"`

	// The name of the CloudWatch logging group for the Transfer Family server to
	// which this workflow belongs.
	LogGroupName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a server to turn on Amazon CloudWatch logging for Amazon
	// S3 or Amazon EFSevents. When set, you can view user activity in your CloudWatch
	// logs.
	LoggingRole *string `min:"20" type:"string"`
}

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

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

// SetLogGroupName sets the LogGroupName field's value.
func (s *LoggingConfiguration) SetLogGroupName(v string) *LoggingConfiguration {
	s.LogGroupName = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *LoggingConfiguration) SetLoggingRole(v string) *LoggingConfiguration {
	s.LoggingRole = &v
	return s
}

// The full POSIX identity, including user ID (Uid), group ID (Gid), and any
// secondary groups IDs (SecondaryGids), that controls your users' access to
// your Amazon EFS file systems. The POSIX permissions that are set on files
// and directories in your file system determine the level of access your users
// get when transferring files into and out of your Amazon EFS file systems.
type PosixProfile struct {
	_ struct{} `type:"structure"`

	// The POSIX group ID used for all EFS operations by this user.
	//
	// Gid is a required field
	Gid *int64 `type:"long" required:"true"`

	// The secondary POSIX group IDs used for all EFS operations by this user.
	SecondaryGids []*int64 `type:"list"`

	// The POSIX user ID used for all EFS operations by this user.
	//
	// Uid is a required field
	Uid *int64 `type:"long" required:"true"`
}

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

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

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

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

// SetGid sets the Gid field's value.
func (s *PosixProfile) SetGid(v int64) *PosixProfile {
	s.Gid = &v
	return s
}

// SetSecondaryGids sets the SecondaryGids field's value.
func (s *PosixProfile) SetSecondaryGids(v []*int64) *PosixProfile {
	s.SecondaryGids = v
	return s
}

// SetUid sets the Uid field's value.
func (s *PosixProfile) SetUid(v int64) *PosixProfile {
	s.Uid = &v
	return s
}

// The protocol settings that are configured for your server.
type ProtocolDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the transport method for the AS2 messages. Currently, only HTTP
	// is supported.
	As2Transports []*string `min:"1" type:"list" enum:"As2Transport"`

	// Indicates passive mode, for FTP and FTPS protocols. Enter a single IPv4 address,
	// such as the public IP address of a firewall, router, or load balancer. For
	// example:
	//
	// aws transfer update-server --protocol-details PassiveIp=0.0.0.0
	//
	// Replace 0.0.0.0 in the example above with the actual IP address you want
	// to use.
	//
	// If you change the PassiveIp value, you must stop and then restart your Transfer
	// Family server for the change to take effect. For details on using passive
	// mode (PASV) in a NAT environment, see Configuring your FTPS server behind
	// a firewall or NAT with Transfer Family (http://aws.amazon.com/blogs/storage/configuring-your-ftps-server-behind-a-firewall-or-nat-with-aws-transfer-family/).
	//
	// Special values
	//
	// The AUTO and 0.0.0.0 are special values for the PassiveIp parameter. The
	// value PassiveIp=AUTO is assigned by default to FTP and FTPS type servers.
	// In this case, the server automatically responds with one of the endpoint
	// IPs within the PASV response. PassiveIp=0.0.0.0 has a more unique application
	// for its usage. For example, if you have a High Availability (HA) Network
	// Load Balancer (NLB) environment, where you have 3 subnets, you can only specify
	// a single IP address using the PassiveIp parameter. This reduces the effectiveness
	// of having High Availability. In this case, you can specify PassiveIp=0.0.0.0.
	// This tells the client to use the same IP address as the Control connection
	// and utilize all AZs for their connections. Note, however, that not all FTP
	// clients support the PassiveIp=0.0.0.0 response. FileZilla and WinSCP do support
	// it. If you are using other clients, check to see if your client supports
	// the PassiveIp=0.0.0.0 response.
	PassiveIp *string `type:"string"`

	// Use the SetStatOption to ignore the error that is generated when the client
	// attempts to use SETSTAT on a file you are uploading to an S3 bucket.
	//
	// Some SFTP file transfer clients can attempt to change the attributes of remote
	// files, including timestamp and permissions, using commands, such as SETSTAT
	// when uploading the file. However, these commands are not compatible with
	// object storage systems, such as Amazon S3. Due to this incompatibility, file
	// uploads from these clients can result in errors even when the file is otherwise
	// successfully uploaded.
	//
	// Set the value to ENABLE_NO_OP to have the Transfer Family server ignore the
	// SETSTAT command, and upload files without needing to make any changes to
	// your SFTP client. While the SetStatOption ENABLE_NO_OP setting ignores the
	// error, it does generate a log entry in Amazon CloudWatch Logs, so you can
	// determine when the client is making a SETSTAT call.
	//
	// If you want to preserve the original timestamp for your file, and modify
	// other file attributes using SETSTAT, you can use Amazon EFS as backend storage
	// with Transfer Family.
	SetStatOption *string `type:"string" enum:"SetStatOption"`

	// A property used with Transfer Family servers that use the FTPS protocol.
	// TLS Session Resumption provides a mechanism to resume or share a negotiated
	// secret key between the control and data connection for an FTPS session. TlsSessionResumptionMode
	// determines whether or not the server resumes recent, negotiated sessions
	// through a unique session ID. This property is available during CreateServer
	// and UpdateServer calls. If a TlsSessionResumptionMode value is not specified
	// during CreateServer, it is set to ENFORCED by default.
	//
	//    * DISABLED: the server does not process TLS session resumption client
	//    requests and creates a new TLS session for each request.
	//
	//    * ENABLED: the server processes and accepts clients that are performing
	//    TLS session resumption. The server doesn't reject client data connections
	//    that do not perform the TLS session resumption client processing.
	//
	//    * ENFORCED: the server processes and accepts clients that are performing
	//    TLS session resumption. The server rejects client data connections that
	//    do not perform the TLS session resumption client processing. Before you
	//    set the value to ENFORCED, test your clients. Not all FTPS clients perform
	//    TLS session resumption. So, if you choose to enforce TLS session resumption,
	//    you prevent any connections from FTPS clients that don't perform the protocol
	//    negotiation. To determine whether or not you can use the ENFORCED value,
	//    you need to test your clients.
	TlsSessionResumptionMode *string `type:"string" enum:"TlsSessionResumptionMode"`
}

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

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

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

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

// SetAs2Transports sets the As2Transports field's value.
func (s *ProtocolDetails) SetAs2Transports(v []*string) *ProtocolDetails {
	s.As2Transports = v
	return s
}

// SetPassiveIp sets the PassiveIp field's value.
func (s *ProtocolDetails) SetPassiveIp(v string) *ProtocolDetails {
	s.PassiveIp = &v
	return s
}

// SetSetStatOption sets the SetStatOption field's value.
func (s *ProtocolDetails) SetSetStatOption(v string) *ProtocolDetails {
	s.SetStatOption = &v
	return s
}

// SetTlsSessionResumptionMode sets the TlsSessionResumptionMode field's value.
func (s *ProtocolDetails) SetTlsSessionResumptionMode(v string) *ProtocolDetails {
	s.TlsSessionResumptionMode = &v
	return s
}

// The requested resource does not exist, or exists in a region other than the
// one specified for the command.
type ResourceExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// Resource is a required field
	Resource *string `type:"string" required:"true"`

	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true"`
}

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

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

func newErrorResourceExistsException(v protocol.ResponseMetadata) error {
	return &ResourceExistsException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// This exception is thrown when a resource is not found by the Amazon Web ServicesTransfer
// Family service.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// Resource is a required field
	Resource *string `type:"string" required:"true"`

	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true"`
}

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

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

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

// Specifies the details for the file location for the file that's being used
// in the workflow. Only applicable if you are using S3 storage.
type S3FileLocation struct {
	_ struct{} `type:"structure"`

	// Specifies the S3 bucket that contains the file being used.
	Bucket *string `min:"3" type:"string"`

	// The entity tag is a hash of the object. The ETag reflects changes only to
	// the contents of an object, not its metadata.
	Etag *string `min:"1" type:"string"`

	// The name assigned to the file when it was created in Amazon S3. You use the
	// object key to retrieve the object.
	Key *string `type:"string"`

	// Specifies the file version.
	VersionId *string `min:"1" type:"string"`
}

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

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

// SetBucket sets the Bucket field's value.
func (s *S3FileLocation) SetBucket(v string) *S3FileLocation {
	s.Bucket = &v
	return s
}

// SetEtag sets the Etag field's value.
func (s *S3FileLocation) SetEtag(v string) *S3FileLocation {
	s.Etag = &v
	return s
}

// SetKey sets the Key field's value.
func (s *S3FileLocation) SetKey(v string) *S3FileLocation {
	s.Key = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *S3FileLocation) SetVersionId(v string) *S3FileLocation {
	s.VersionId = &v
	return s
}

// Specifies the customer input Amazon S3 file location. If it is used inside
// copyStepDetails.DestinationFileLocation, it should be the S3 copy destination.
//
// You need to provide the bucket and key. The key can represent either a path
// or a file. This is determined by whether or not you end the key value with
// the forward slash (/) character. If the final character is "/", then your
// file is copied to the folder, and its name does not change. If, rather, the
// final character is alphanumeric, your uploaded file is renamed to the path
// value. In this case, if a file with that name already exists, it is overwritten.
//
// For example, if your path is shared-files/bob/, your uploaded files are copied
// to the shared-files/bob/, folder. If your path is shared-files/today, each
// uploaded file is copied to the shared-files folder and named today: each
// upload overwrites the previous version of the bob file.
type S3InputFileLocation struct {
	_ struct{} `type:"structure"`

	// Specifies the S3 bucket for the customer input file.
	Bucket *string `min:"3" type:"string"`

	// The name assigned to the file when it was created in Amazon S3. You use the
	// object key to retrieve the object.
	Key *string `type:"string"`
}

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

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

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

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

// SetBucket sets the Bucket field's value.
func (s *S3InputFileLocation) SetBucket(v string) *S3InputFileLocation {
	s.Bucket = &v
	return s
}

// SetKey sets the Key field's value.
func (s *S3InputFileLocation) SetKey(v string) *S3InputFileLocation {
	s.Key = &v
	return s
}

// The Amazon S3 storage options that are configured for your server.
type S3StorageOptions struct {
	_ struct{} `type:"structure"`

	// Specifies whether or not performance for your Amazon S3 directories is optimized.
	// This is disabled by default.
	//
	// By default, home directory mappings have a TYPE of DIRECTORY. If you enable
	// this option, you would then need to explicitly set the HomeDirectoryMapEntry
	// Type to FILE if you want a mapping to have a file target.
	DirectoryListingOptimization *string `type:"string" enum:"DirectoryListingOptimization"`
}

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

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

// SetDirectoryListingOptimization sets the DirectoryListingOptimization field's value.
func (s *S3StorageOptions) SetDirectoryListingOptimization(v string) *S3StorageOptions {
	s.DirectoryListingOptimization = &v
	return s
}

// Specifies the key-value pair that are assigned to a file during the execution
// of a Tagging step.
type S3Tag struct {
	_ struct{} `type:"structure"`

	// The name assigned to the tag that you create.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The value that corresponds to the key.
	//
	// Value is a required field
	Value *string `type:"string" required:"true"`
}

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

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

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

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

// SetKey sets the Key field's value.
func (s *S3Tag) SetKey(v string) *S3Tag {
	s.Key = &v
	return s
}

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

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

	// A unique identifier for the execution of a workflow.
	//
	// ExecutionId is a required field
	ExecutionId *string `min:"36" type:"string" required:"true"`

	// Indicates whether the specified step succeeded or failed.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"CustomStepStatus"`

	// Used to distinguish between multiple callbacks for multiple Lambda steps
	// within the same execution.
	//
	// Token is a required field
	Token *string `min:"1" type:"string" required:"true"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 SendWorkflowStepStateInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetExecutionId sets the ExecutionId field's value.
func (s *SendWorkflowStepStateInput) SetExecutionId(v string) *SendWorkflowStepStateInput {
	s.ExecutionId = &v
	return s
}

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

// SetToken sets the Token field's value.
func (s *SendWorkflowStepStateInput) SetToken(v string) *SendWorkflowStepStateInput {
	s.Token = &v
	return s
}

// SetWorkflowId sets the WorkflowId field's value.
func (s *SendWorkflowStepStateInput) SetWorkflowId(v string) *SendWorkflowStepStateInput {
	s.WorkflowId = &v
	return s
}

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

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

// A container object for the session details that are associated with a workflow.
type ServiceMetadata struct {
	_ struct{} `type:"structure"`

	// The Server ID (ServerId), Session ID (SessionId) and user (UserName) make
	// up the UserDetails.
	//
	// UserDetails is a required field
	UserDetails *UserDetails `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 ServiceMetadata) String() string {
	return awsutil.Prettify(s)
}

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

// SetUserDetails sets the UserDetails field's value.
func (s *ServiceMetadata) SetUserDetails(v *UserDetails) *ServiceMetadata {
	s.UserDetails = v
	return s
}

// The request has failed because the Amazon Web ServicesTransfer Family service
// is not available.
type ServiceUnavailableException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error {
	return &ServiceUnavailableException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Contains the details for an SFTP connector object. The connector object is
// used for transferring files to and from a partner's SFTP server.
type SftpConnectorConfig struct {
	_ struct{} `type:"structure"`

	// The public portion of the host key, or keys, that are used to identify the
	// external server to which you are connecting. You can use the ssh-keyscan
	// command against the SFTP server to retrieve the necessary key.
	//
	// The three standard SSH public key format elements are <key type>, <body base64>,
	// and an optional <comment>, with spaces between each element. Specify only
	// the <key type> and <body base64>: do not enter the <comment> portion of the
	// key.
	//
	// For the trusted host key, Transfer Family accepts RSA and ECDSA keys.
	//
	//    * For RSA keys, the <key type> string is ssh-rsa.
	//
	//    * For ECDSA keys, the <key type> string is either ecdsa-sha2-nistp256,
	//    ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521, depending on the size of
	//    the key you generated.
	TrustedHostKeys []*string `min:"1" type:"list"`

	// The identifier for the secret (in Amazon Web Services Secrets Manager) that
	// contains the SFTP user's private key, password, or both. The identifier must
	// be the Amazon Resource Name (ARN) of the secret.
	UserSecretId *string `min:"1" type:"string"`
}

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

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

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

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

// SetTrustedHostKeys sets the TrustedHostKeys field's value.
func (s *SftpConnectorConfig) SetTrustedHostKeys(v []*string) *SftpConnectorConfig {
	s.TrustedHostKeys = v
	return s
}

// SetUserSecretId sets the UserSecretId field's value.
func (s *SftpConnectorConfig) SetUserSecretId(v string) *SftpConnectorConfig {
	s.UserSecretId = &v
	return s
}

// Provides information about the public Secure Shell (SSH) key that is associated
// with a Transfer Family user for the specific file transfer protocol-enabled
// server (as identified by ServerId). The information returned includes the
// date the key was imported, the public key contents, and the public key ID.
// A user can store more than one SSH public key associated with their user
// name on a specific server.
type SshPublicKey struct {
	_ struct{} `type:"structure"`

	// Specifies the date that the public key was added to the Transfer Family user.
	//
	// DateImported is a required field
	DateImported *time.Time `type:"timestamp" required:"true"`

	// Specifies the content of the SSH public key as specified by the PublicKeyId.
	//
	// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
	//
	// SshPublicKeyBody is a required field
	SshPublicKeyBody *string `type:"string" required:"true"`

	// Specifies the SshPublicKeyId parameter contains the identifier of the public
	// key.
	//
	// SshPublicKeyId is a required field
	SshPublicKeyId *string `min:"21" 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 SshPublicKey) String() string {
	return awsutil.Prettify(s)
}

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

// SetDateImported sets the DateImported field's value.
func (s *SshPublicKey) SetDateImported(v time.Time) *SshPublicKey {
	s.DateImported = &v
	return s
}

// SetSshPublicKeyBody sets the SshPublicKeyBody field's value.
func (s *SshPublicKey) SetSshPublicKeyBody(v string) *SshPublicKey {
	s.SshPublicKeyBody = &v
	return s
}

// SetSshPublicKeyId sets the SshPublicKeyId field's value.
func (s *SshPublicKey) SetSshPublicKeyId(v string) *SshPublicKey {
	s.SshPublicKeyId = &v
	return s
}

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

	// The unique identifier for the connector.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" type:"string" required:"true"`

	// For an inbound transfer, the LocaDirectoryPath specifies the destination
	// for one or more files that are transferred from the partner's SFTP server.
	LocalDirectoryPath *string `min:"1" type:"string"`

	// For an outbound transfer, the RemoteDirectoryPath specifies the destination
	// for one or more files that are transferred to the partner's SFTP server.
	// If you don't specify a RemoteDirectoryPath, the destination for transferred
	// files is the SFTP user's home directory.
	RemoteDirectoryPath *string `min:"1" type:"string"`

	// One or more source paths for the partner's SFTP server. Each string represents
	// a source file path for one inbound file transfer.
	RetrieveFilePaths []*string `min:"1" type:"list"`

	// One or more source paths for the Amazon S3 storage. Each string represents
	// a source file path for one outbound file transfer. For example, DOC-EXAMPLE-BUCKET/myfile.txt .
	//
	// Replace DOC-EXAMPLE-BUCKET with one of your actual buckets.
	SendFilePaths []*string `min:"1" type:"list"`
}

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

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

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

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

// SetConnectorId sets the ConnectorId field's value.
func (s *StartFileTransferInput) SetConnectorId(v string) *StartFileTransferInput {
	s.ConnectorId = &v
	return s
}

// SetLocalDirectoryPath sets the LocalDirectoryPath field's value.
func (s *StartFileTransferInput) SetLocalDirectoryPath(v string) *StartFileTransferInput {
	s.LocalDirectoryPath = &v
	return s
}

// SetRemoteDirectoryPath sets the RemoteDirectoryPath field's value.
func (s *StartFileTransferInput) SetRemoteDirectoryPath(v string) *StartFileTransferInput {
	s.RemoteDirectoryPath = &v
	return s
}

// SetRetrieveFilePaths sets the RetrieveFilePaths field's value.
func (s *StartFileTransferInput) SetRetrieveFilePaths(v []*string) *StartFileTransferInput {
	s.RetrieveFilePaths = v
	return s
}

// SetSendFilePaths sets the SendFilePaths field's value.
func (s *StartFileTransferInput) SetSendFilePaths(v []*string) *StartFileTransferInput {
	s.SendFilePaths = v
	return s
}

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

	// Returns the unique identifier for the file transfer.
	//
	// TransferId is a required field
	TransferId *string `min:"1" type:"string" required:"true"`
}

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

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

// SetTransferId sets the TransferId field's value.
func (s *StartFileTransferOutput) SetTransferId(v string) *StartFileTransferOutput {
	s.TransferId = &v
	return s
}

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

	// A system-assigned unique identifier for a server that you start.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 StartServerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *StartServerInput) SetServerId(v string) *StartServerInput {
	s.ServerId = &v
	return s
}

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

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

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

	// A system-assigned unique identifier for a server that you stopped.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 StopServerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetServerId sets the ServerId field's value.
func (s *StopServerInput) SetServerId(v string) *StopServerInput {
	s.ServerId = &v
	return s
}

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

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

// Creates a key-value pair for a specific resource. Tags are metadata that
// you can use to search for and group a resource for various purposes. You
// can apply tags to servers, users, and roles. A tag key can take more than
// one value. For example, to group servers for accounting purposes, you might
// create a tag called Group and assign the values Research and Accounting to
// that group.
type Tag struct {
	_ struct{} `type:"structure"`

	// The name assigned to the tag that you create.
	//
	// Key is a required field
	Key *string `type:"string" required:"true"`

	// Contains one or more values that you assigned to the key name you create.
	//
	// Value is a required field
	Value *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Tag) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Tag"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// 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"`

	// An Amazon Resource Name (ARN) for a specific Amazon Web Services resource,
	// such as a server, user, or role.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// Key-value pairs assigned to ARNs that you can use to group and search for
	// resources by type. You can attach this metadata to resources (servers, users,
	// workflows, and so on) for any purpose.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 20))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *TagResourceInput) SetArn(v string) *TagResourceInput {
	s.Arn = &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"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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()
}

// Each step type has its own StepDetails structure.
//
// The key/value pairs used to tag a file during the execution of a workflow
// step.
type TagStepDetails struct {
	_ struct{} `type:"structure"`

	// The name of the step, used as an identifier.
	Name *string `type:"string"`

	// Specifies which file to use as input to the workflow step: either the output
	// from the previous step, or the originally uploaded file for the workflow.
	//
	//    * To use the previous file as the input, enter ${previous.file}. In this
	//    case, this workflow step uses the output file from the previous workflow
	//    step as input. This is the default value.
	//
	//    * To use the originally uploaded file location as input for this step,
	//    enter ${original.file}.
	SourceFileLocation *string `type:"string"`

	// Array that contains from 1 to 10 key/value pairs.
	Tags []*S3Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagStepDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagStepDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagStepDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagStepDetails"}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *TagStepDetails) SetName(v string) *TagStepDetails {
	s.Name = &v
	return s
}

// SetSourceFileLocation sets the SourceFileLocation field's value.
func (s *TagStepDetails) SetSourceFileLocation(v string) *TagStepDetails {
	s.SourceFileLocation = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagStepDetails) SetTags(v []*S3Tag) *TagStepDetails {
	s.Tags = v
	return s
}

type TestConnectionInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the connector.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" 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 TestConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TestConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TestConnectionInput"}
	if s.ConnectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorId"))
	}
	if s.ConnectorId != nil && len(*s.ConnectorId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ConnectorId", 19))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectorId sets the ConnectorId field's value.
func (s *TestConnectionInput) SetConnectorId(v string) *TestConnectionInput {
	s.ConnectorId = &v
	return s
}

type TestConnectionOutput struct {
	_ struct{} `type:"structure"`

	// Returns the identifier of the connector object that you are testing.
	ConnectorId *string `min:"19" type:"string"`

	// Returns OK for successful test, or ERROR if the test fails.
	Status *string `type:"string"`

	// Returns Connection succeeded if the test is successful. Or, returns a descriptive
	// error message if the test fails. The following list provides troubleshooting
	// details, depending on the error message that you receive.
	//
	//    * Verify that your secret name aligns with the one in Transfer Role permissions.
	//
	//    * Verify the server URL in the connector configuration , and verify that
	//    the login credentials work successfully outside of the connector.
	//
	//    * Verify that the secret exists and is formatted correctly.
	//
	//    * Verify that the trusted host key in the connector configuration matches
	//    the ssh-keyscan output.
	StatusMessage *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestConnectionOutput) GoString() string {
	return s.String()
}

// SetConnectorId sets the ConnectorId field's value.
func (s *TestConnectionOutput) SetConnectorId(v string) *TestConnectionOutput {
	s.ConnectorId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TestConnectionOutput) SetStatus(v string) *TestConnectionOutput {
	s.Status = &v
	return s
}

// SetStatusMessage sets the StatusMessage field's value.
func (s *TestConnectionOutput) SetStatusMessage(v string) *TestConnectionOutput {
	s.StatusMessage = &v
	return s
}

type TestIdentityProviderInput struct {
	_ struct{} `type:"structure"`

	// A system-assigned identifier for a specific server. That server's user authentication
	// method is tested with a user name and password.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The type of file transfer protocol to be tested.
	//
	// The available protocols are:
	//
	//    * Secure Shell (SSH) File Transfer Protocol (SFTP)
	//
	//    * File Transfer Protocol Secure (FTPS)
	//
	//    * File Transfer Protocol (FTP)
	//
	//    * Applicability Statement 2 (AS2)
	ServerProtocol *string `type:"string" enum:"Protocol"`

	// The source IP address of the account to be tested.
	SourceIp *string `type:"string"`

	// The name of the account to be tested.
	//
	// UserName is a required field
	UserName *string `min:"3" type:"string" required:"true"`

	// The password of the account to be tested.
	//
	// UserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TestIdentityProviderInput's
	// String and GoString methods.
	UserPassword *string `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 TestIdentityProviderInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestIdentityProviderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TestIdentityProviderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TestIdentityProviderInput"}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServerId sets the ServerId field's value.
func (s *TestIdentityProviderInput) SetServerId(v string) *TestIdentityProviderInput {
	s.ServerId = &v
	return s
}

// SetServerProtocol sets the ServerProtocol field's value.
func (s *TestIdentityProviderInput) SetServerProtocol(v string) *TestIdentityProviderInput {
	s.ServerProtocol = &v
	return s
}

// SetSourceIp sets the SourceIp field's value.
func (s *TestIdentityProviderInput) SetSourceIp(v string) *TestIdentityProviderInput {
	s.SourceIp = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *TestIdentityProviderInput) SetUserName(v string) *TestIdentityProviderInput {
	s.UserName = &v
	return s
}

// SetUserPassword sets the UserPassword field's value.
func (s *TestIdentityProviderInput) SetUserPassword(v string) *TestIdentityProviderInput {
	s.UserPassword = &v
	return s
}

type TestIdentityProviderOutput struct {
	_ struct{} `type:"structure"`

	// A message that indicates whether the test was successful or not.
	//
	// If an empty string is returned, the most likely cause is that the authentication
	// failed due to an incorrect username or password.
	Message *string `type:"string"`

	// The response that is returned from your API Gateway or your Lambda function.
	Response *string `type:"string"`

	// The HTTP status code that is the response from your API Gateway or your Lambda
	// function.
	//
	// StatusCode is a required field
	StatusCode *int64 `type:"integer" required:"true"`

	// The endpoint of the service used to authenticate a user.
	//
	// Url is a required field
	Url *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestIdentityProviderOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestIdentityProviderOutput) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *TestIdentityProviderOutput) SetMessage(v string) *TestIdentityProviderOutput {
	s.Message = &v
	return s
}

// SetResponse sets the Response field's value.
func (s *TestIdentityProviderOutput) SetResponse(v string) *TestIdentityProviderOutput {
	s.Response = &v
	return s
}

// SetStatusCode sets the StatusCode field's value.
func (s *TestIdentityProviderOutput) SetStatusCode(v int64) *TestIdentityProviderOutput {
	s.StatusCode = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *TestIdentityProviderOutput) SetUrl(v string) *TestIdentityProviderOutput {
	s.Url = &v
	return s
}

// The request was denied due to request throttling.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	RetryAfterSeconds *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ThrottlingException) Code() string {
	return "ThrottlingException"
}

// Message returns the exception's message.
func (s *ThrottlingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ThrottlingException) OrigErr() error {
	return nil
}

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ThrottlingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ThrottlingException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UntagResourceInput struct {
	_ struct{} `type:"structure"`

	// The value of the resource that will have the tag removed. An Amazon Resource
	// Name (ARN) is an identifier for a specific Amazon Web Services resource,
	// such as a server, user, or role.
	//
	// Arn is a required field
	Arn *string `min:"20" type:"string" required:"true"`

	// TagKeys are key-value pairs assigned to ARNs that can be used to group and
	// search for resources by type. This metadata can be attached to resources
	// for any purpose.
	//
	// TagKeys is a required field
	TagKeys []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 20))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *UntagResourceInput) SetArn(v string) *UntagResourceInput {
	s.Arn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateAccessInput struct {
	_ struct{} `type:"structure"`

	// A unique identifier that is required to identify specific groups within your
	// directory. The users of the group that you associate have access to your
	// Amazon S3 or Amazon EFS resources over the enabled protocols using Transfer
	// Family. If you know the group name, you can view the SID values by running
	// the following command using Windows PowerShell.
	//
	// Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties *
	// | Select SamAccountName,ObjectSid
	//
	// In that command, replace YourGroupName with the name of your Active Directory
	// group.
	//
	// The regular expression used to validate this parameter is a string of characters
	// consisting of uppercase and lowercase alphanumeric characters with no spaces.
	// You can also include underscores or any of the following characters: =,.@:/-
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// The following is an Entry and Target pair example.
	//
	// [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ]
	//
	// In most cases, you can use this value instead of the session policy to lock
	// down your user to the designated home directory ("chroot"). To do this, you
	// can set Entry to / and set Target to the HomeDirectory parameter value.
	//
	// The following is an Entry and Target pair example for chroot.
	//
	// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	//
	// This policy applies only when the domain of ServerId is Amazon S3. Amazon
	// EFS does not use session policies.
	//
	// For session policies, Transfer Family stores the policy as a JSON blob, instead
	// of the Amazon Resource Name (ARN) of the policy. You save the policy as a
	// JSON blob and pass it in the Policy argument.
	//
	// For an example of a session policy, see Example session policy (https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html).
	//
	// For more information, see AssumeRole (https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
	// in the Amazon Web ServicesSecurity Token Service API Reference.
	Policy *string `type:"string"`

	// The full POSIX identity, including user ID (Uid), group ID (Gid), and any
	// secondary groups IDs (SecondaryGids), that controls your users' access to
	// your Amazon EFS file systems. The POSIX permissions that are set on files
	// and directories in your file system determine the level of access your users
	// get when transferring files into and out of your Amazon EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	Role *string `min:"20" type:"string"`

	// A system-assigned unique identifier for a server instance. This is the specific
	// server that you added your user to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 UpdateAccessInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccessInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAccessInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAccessInput"}
	if s.ExternalId == nil {
		invalidParams.Add(request.NewErrParamRequired("ExternalId"))
	}
	if s.ExternalId != nil && len(*s.ExternalId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExternalId", 1))
	}
	if s.HomeDirectoryMappings != nil && len(s.HomeDirectoryMappings) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HomeDirectoryMappings", 1))
	}
	if s.Role != nil && len(*s.Role) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 20))
	}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}
	if s.HomeDirectoryMappings != nil {
		for i, v := range s.HomeDirectoryMappings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "HomeDirectoryMappings", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PosixProfile != nil {
		if err := s.PosixProfile.Validate(); err != nil {
			invalidParams.AddNested("PosixProfile", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExternalId sets the ExternalId field's value.
func (s *UpdateAccessInput) SetExternalId(v string) *UpdateAccessInput {
	s.ExternalId = &v
	return s
}

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *UpdateAccessInput) SetHomeDirectory(v string) *UpdateAccessInput {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *UpdateAccessInput) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *UpdateAccessInput {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *UpdateAccessInput) SetHomeDirectoryType(v string) *UpdateAccessInput {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *UpdateAccessInput) SetPolicy(v string) *UpdateAccessInput {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *UpdateAccessInput) SetPosixProfile(v *PosixProfile) *UpdateAccessInput {
	s.PosixProfile = v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateAccessInput) SetRole(v string) *UpdateAccessInput {
	s.Role = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateAccessInput) SetServerId(v string) *UpdateAccessInput {
	s.ServerId = &v
	return s
}

type UpdateAccessOutput struct {
	_ struct{} `type:"structure"`

	// The external identifier of the group whose users have access to your Amazon
	// S3 or Amazon EFS resources over the enabled protocols using Amazon Web ServicesTransfer
	// Family.
	//
	// ExternalId is a required field
	ExternalId *string `min:"1" type:"string" required:"true"`

	// The identifier of the server that the user is attached to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 UpdateAccessOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccessOutput) GoString() string {
	return s.String()
}

// SetExternalId sets the ExternalId field's value.
func (s *UpdateAccessOutput) SetExternalId(v string) *UpdateAccessOutput {
	s.ExternalId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateAccessOutput) SetServerId(v string) *UpdateAccessOutput {
	s.ServerId = &v
	return s
}

type UpdateAgreementInput struct {
	_ struct{} `type:"structure"`

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	AccessRole *string `min:"20" type:"string"`

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	//
	// AgreementId is a required field
	AgreementId *string `min:"19" type:"string" required:"true"`

	// To change the landing directory (folder) for files that are transferred,
	// provide the bucket folder that you want to use; for example, /DOC-EXAMPLE-BUCKET/home/mydirectory .
	BaseDirectory *string `type:"string"`

	// To replace the existing description, provide a short description for the
	// agreement.
	Description *string `min:"1" type:"string"`

	// A unique identifier for the AS2 local profile.
	//
	// To change the local profile identifier, provide a new value here.
	LocalProfileId *string `min:"19" type:"string"`

	// A unique identifier for the partner profile. To change the partner profile
	// identifier, provide a new value here.
	PartnerProfileId *string `min:"19" type:"string"`

	// A system-assigned unique identifier for a server instance. This is the specific
	// server that the agreement uses.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// You can update the status for the agreement, either activating an inactive
	// agreement or the reverse.
	Status *string `type:"string" enum:"AgreementStatusType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgreementInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgreementInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAgreementInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAgreementInput"}
	if s.AccessRole != nil && len(*s.AccessRole) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("AccessRole", 20))
	}
	if s.AgreementId == nil {
		invalidParams.Add(request.NewErrParamRequired("AgreementId"))
	}
	if s.AgreementId != nil && len(*s.AgreementId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("AgreementId", 19))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.LocalProfileId != nil && len(*s.LocalProfileId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("LocalProfileId", 19))
	}
	if s.PartnerProfileId != nil && len(*s.PartnerProfileId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("PartnerProfileId", 19))
	}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessRole sets the AccessRole field's value.
func (s *UpdateAgreementInput) SetAccessRole(v string) *UpdateAgreementInput {
	s.AccessRole = &v
	return s
}

// SetAgreementId sets the AgreementId field's value.
func (s *UpdateAgreementInput) SetAgreementId(v string) *UpdateAgreementInput {
	s.AgreementId = &v
	return s
}

// SetBaseDirectory sets the BaseDirectory field's value.
func (s *UpdateAgreementInput) SetBaseDirectory(v string) *UpdateAgreementInput {
	s.BaseDirectory = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAgreementInput) SetDescription(v string) *UpdateAgreementInput {
	s.Description = &v
	return s
}

// SetLocalProfileId sets the LocalProfileId field's value.
func (s *UpdateAgreementInput) SetLocalProfileId(v string) *UpdateAgreementInput {
	s.LocalProfileId = &v
	return s
}

// SetPartnerProfileId sets the PartnerProfileId field's value.
func (s *UpdateAgreementInput) SetPartnerProfileId(v string) *UpdateAgreementInput {
	s.PartnerProfileId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateAgreementInput) SetServerId(v string) *UpdateAgreementInput {
	s.ServerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAgreementInput) SetStatus(v string) *UpdateAgreementInput {
	s.Status = &v
	return s
}

type UpdateAgreementOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the agreement. This identifier is returned when you
	// create an agreement.
	//
	// AgreementId is a required field
	AgreementId *string `min:"19" 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 UpdateAgreementOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgreementOutput) GoString() string {
	return s.String()
}

// SetAgreementId sets the AgreementId field's value.
func (s *UpdateAgreementOutput) SetAgreementId(v string) *UpdateAgreementOutput {
	s.AgreementId = &v
	return s
}

type UpdateCertificateInput struct {
	_ struct{} `type:"structure"`

	// An optional date that specifies when the certificate becomes active.
	ActiveDate *time.Time `type:"timestamp"`

	// The identifier of the certificate object that you are updating.
	//
	// CertificateId is a required field
	CertificateId *string `min:"22" type:"string" required:"true"`

	// A short description to help identify the certificate.
	Description *string `min:"1" type:"string"`

	// An optional date that specifies when the certificate becomes inactive.
	InactiveDate *time.Time `type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCertificateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCertificateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateCertificateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateCertificateInput"}
	if s.CertificateId == nil {
		invalidParams.Add(request.NewErrParamRequired("CertificateId"))
	}
	if s.CertificateId != nil && len(*s.CertificateId) < 22 {
		invalidParams.Add(request.NewErrParamMinLen("CertificateId", 22))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActiveDate sets the ActiveDate field's value.
func (s *UpdateCertificateInput) SetActiveDate(v time.Time) *UpdateCertificateInput {
	s.ActiveDate = &v
	return s
}

// SetCertificateId sets the CertificateId field's value.
func (s *UpdateCertificateInput) SetCertificateId(v string) *UpdateCertificateInput {
	s.CertificateId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateCertificateInput) SetDescription(v string) *UpdateCertificateInput {
	s.Description = &v
	return s
}

// SetInactiveDate sets the InactiveDate field's value.
func (s *UpdateCertificateInput) SetInactiveDate(v time.Time) *UpdateCertificateInput {
	s.InactiveDate = &v
	return s
}

type UpdateCertificateOutput struct {
	_ struct{} `type:"structure"`

	// Returns the identifier of the certificate object that you are updating.
	//
	// CertificateId is a required field
	CertificateId *string `min:"22" 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 UpdateCertificateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCertificateOutput) GoString() string {
	return s.String()
}

// SetCertificateId sets the CertificateId field's value.
func (s *UpdateCertificateOutput) SetCertificateId(v string) *UpdateCertificateOutput {
	s.CertificateId = &v
	return s
}

type UpdateConnectorInput struct {
	_ struct{} `type:"structure"`

	// Connectors are used to send files using either the AS2 or SFTP protocol.
	// For the access role, provide the Amazon Resource Name (ARN) of the Identity
	// and Access Management role to use.
	//
	// For AS2 connectors
	//
	// With AS2, you can send files by calling StartFileTransfer and specifying
	// the file paths in the request parameter, SendFilePaths. We use the file’s
	// parent directory (for example, for --send-file-paths /bucket/dir/file.txt,
	// parent directory is /bucket/dir/) to temporarily store a processed AS2 message
	// file, store the MDN when we receive them from the partner, and write a final
	// JSON file containing relevant metadata of the transmission. So, the AccessRole
	// needs to provide read and write access to the parent directory of the file
	// location used in the StartFileTransfer request. Additionally, you need to
	// provide read and write access to the parent directory of the files that you
	// intend to send with StartFileTransfer.
	//
	// If you are using Basic authentication for your AS2 connector, the access
	// role requires the secretsmanager:GetSecretValue permission for the secret.
	// If the secret is encrypted using a customer-managed key instead of the Amazon
	// Web Services managed key in Secrets Manager, then the role also needs the
	// kms:Decrypt permission for that key.
	//
	// For SFTP connectors
	//
	// Make sure that the access role provides read and write access to the parent
	// directory of the file location that's used in the StartFileTransfer request.
	// Additionally, make sure that the role provides secretsmanager:GetSecretValue
	// permission to Secrets Manager.
	AccessRole *string `min:"20" type:"string"`

	// A structure that contains the parameters for an AS2 connector object.
	As2Config *As2ConnectorConfig `type:"structure"`

	// The unique identifier for the connector.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a connector to turn on CloudWatch logging for Amazon S3
	// events. When set, you can view connector activity in your CloudWatch logs.
	LoggingRole *string `min:"20" type:"string"`

	// A structure that contains the parameters for an SFTP connector object.
	SftpConfig *SftpConnectorConfig `type:"structure"`

	// The URL of the partner's AS2 or SFTP endpoint.
	Url *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConnectorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConnectorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateConnectorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateConnectorInput"}
	if s.AccessRole != nil && len(*s.AccessRole) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("AccessRole", 20))
	}
	if s.ConnectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorId"))
	}
	if s.ConnectorId != nil && len(*s.ConnectorId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ConnectorId", 19))
	}
	if s.LoggingRole != nil && len(*s.LoggingRole) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("LoggingRole", 20))
	}
	if s.As2Config != nil {
		if err := s.As2Config.Validate(); err != nil {
			invalidParams.AddNested("As2Config", err.(request.ErrInvalidParams))
		}
	}
	if s.SftpConfig != nil {
		if err := s.SftpConfig.Validate(); err != nil {
			invalidParams.AddNested("SftpConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccessRole sets the AccessRole field's value.
func (s *UpdateConnectorInput) SetAccessRole(v string) *UpdateConnectorInput {
	s.AccessRole = &v
	return s
}

// SetAs2Config sets the As2Config field's value.
func (s *UpdateConnectorInput) SetAs2Config(v *As2ConnectorConfig) *UpdateConnectorInput {
	s.As2Config = v
	return s
}

// SetConnectorId sets the ConnectorId field's value.
func (s *UpdateConnectorInput) SetConnectorId(v string) *UpdateConnectorInput {
	s.ConnectorId = &v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *UpdateConnectorInput) SetLoggingRole(v string) *UpdateConnectorInput {
	s.LoggingRole = &v
	return s
}

// SetSftpConfig sets the SftpConfig field's value.
func (s *UpdateConnectorInput) SetSftpConfig(v *SftpConnectorConfig) *UpdateConnectorInput {
	s.SftpConfig = v
	return s
}

// SetUrl sets the Url field's value.
func (s *UpdateConnectorInput) SetUrl(v string) *UpdateConnectorInput {
	s.Url = &v
	return s
}

type UpdateConnectorOutput struct {
	_ struct{} `type:"structure"`

	// Returns the identifier of the connector object that you are updating.
	//
	// ConnectorId is a required field
	ConnectorId *string `min:"19" 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 UpdateConnectorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConnectorOutput) GoString() string {
	return s.String()
}

// SetConnectorId sets the ConnectorId field's value.
func (s *UpdateConnectorOutput) SetConnectorId(v string) *UpdateConnectorOutput {
	s.ConnectorId = &v
	return s
}

type UpdateHostKeyInput struct {
	_ struct{} `type:"structure"`

	// An updated description for the host key.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// The identifier of the host key that you are updating.
	//
	// HostKeyId is a required field
	HostKeyId *string `min:"25" type:"string" required:"true"`

	// The identifier of the server that contains the host key that you are updating.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 UpdateHostKeyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateHostKeyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateHostKeyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateHostKeyInput"}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.HostKeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("HostKeyId"))
	}
	if s.HostKeyId != nil && len(*s.HostKeyId) < 25 {
		invalidParams.Add(request.NewErrParamMinLen("HostKeyId", 25))
	}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateHostKeyInput) SetDescription(v string) *UpdateHostKeyInput {
	s.Description = &v
	return s
}

// SetHostKeyId sets the HostKeyId field's value.
func (s *UpdateHostKeyInput) SetHostKeyId(v string) *UpdateHostKeyInput {
	s.HostKeyId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateHostKeyInput) SetServerId(v string) *UpdateHostKeyInput {
	s.ServerId = &v
	return s
}

type UpdateHostKeyOutput struct {
	_ struct{} `type:"structure"`

	// Returns the host key identifier for the updated host key.
	//
	// HostKeyId is a required field
	HostKeyId *string `min:"25" type:"string" required:"true"`

	// Returns the server identifier for the server that contains the updated host
	// key.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 UpdateHostKeyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateHostKeyOutput) GoString() string {
	return s.String()
}

// SetHostKeyId sets the HostKeyId field's value.
func (s *UpdateHostKeyOutput) SetHostKeyId(v string) *UpdateHostKeyOutput {
	s.HostKeyId = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateHostKeyOutput) SetServerId(v string) *UpdateHostKeyOutput {
	s.ServerId = &v
	return s
}

type UpdateProfileInput struct {
	_ struct{} `type:"structure"`

	// An array of identifiers for the imported certificates. You use this identifier
	// for working with profiles and partner profiles.
	CertificateIds []*string `type:"list"`

	// The identifier of the profile object that you are updating.
	//
	// ProfileId is a required field
	ProfileId *string `min:"19" 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 UpdateProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateProfileInput"}
	if s.ProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("ProfileId"))
	}
	if s.ProfileId != nil && len(*s.ProfileId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ProfileId", 19))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificateIds sets the CertificateIds field's value.
func (s *UpdateProfileInput) SetCertificateIds(v []*string) *UpdateProfileInput {
	s.CertificateIds = v
	return s
}

// SetProfileId sets the ProfileId field's value.
func (s *UpdateProfileInput) SetProfileId(v string) *UpdateProfileInput {
	s.ProfileId = &v
	return s
}

type UpdateProfileOutput struct {
	_ struct{} `type:"structure"`

	// Returns the identifier for the profile that's being updated.
	//
	// ProfileId is a required field
	ProfileId *string `min:"19" 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 UpdateProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProfileOutput) GoString() string {
	return s.String()
}

// SetProfileId sets the ProfileId field's value.
func (s *UpdateProfileOutput) SetProfileId(v string) *UpdateProfileOutput {
	s.ProfileId = &v
	return s
}

type UpdateServerInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
	// (ACM) certificate. Required when Protocols is set to FTPS.
	//
	// To request a new public certificate, see Request a public certificate (https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)
	// in the Amazon Web ServicesCertificate Manager User Guide.
	//
	// To import an existing certificate into ACM, see Importing certificates into
	// ACM (https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)
	// in the Amazon Web ServicesCertificate Manager User Guide.
	//
	// To request a private certificate to use FTPS through private IP addresses,
	// see Request a private certificate (https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html)
	// in the Amazon Web ServicesCertificate Manager User Guide.
	//
	// Certificates with the following cryptographic algorithms and key sizes are
	// supported:
	//
	//    * 2048-bit RSA (RSA_2048)
	//
	//    * 4096-bit RSA (RSA_4096)
	//
	//    * Elliptic Prime Curve 256 bit (EC_prime256v1)
	//
	//    * Elliptic Prime Curve 384 bit (EC_secp384r1)
	//
	//    * Elliptic Prime Curve 521 bit (EC_secp521r1)
	//
	// The certificate must be a valid SSL/TLS X.509 version 3 certificate with
	// FQDN or IP address specified and information about the issuer.
	Certificate *string `type:"string"`

	// The virtual private cloud (VPC) endpoint settings that are configured for
	// your server. When you host your endpoint within your VPC, you can make your
	// endpoint accessible only to resources within your VPC, or you can attach
	// Elastic IP addresses and make your endpoint accessible to clients over the
	// internet. Your VPC's default security groups are automatically assigned to
	// your endpoint.
	EndpointDetails *EndpointDetails `type:"structure"`

	// The type of endpoint that you want your server to use. You can choose to
	// make your server's endpoint publicly accessible (PUBLIC) or host it inside
	// your VPC. With an endpoint that is hosted in a VPC, you can restrict access
	// to your server and resources only within your VPC or choose to make it internet
	// facing by attaching Elastic IP addresses directly to it.
	//
	// After May 19, 2021, you won't be able to create a server using EndpointType=VPC_ENDPOINT
	// in your Amazon Web Servicesaccount if your account hasn't already done so
	// before May 19, 2021. If you have already created servers with EndpointType=VPC_ENDPOINT
	// in your Amazon Web Servicesaccount on or before May 19, 2021, you will not
	// be affected. After this date, use EndpointType=VPC.
	//
	// For more information, see https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.
	//
	// It is recommended that you use VPC as the EndpointType. With this endpoint
	// type, you have the option to directly associate up to three Elastic IPv4
	// addresses (BYO IP included) with your server's endpoint and use VPC security
	// groups to restrict traffic by the client's public IP address. This is not
	// possible with EndpointType set to VPC_ENDPOINT.
	EndpointType *string `type:"string" enum:"EndpointType"`

	// The RSA, ECDSA, or ED25519 private key to use for your SFTP-enabled server.
	// You can add multiple host keys, in case you want to rotate keys, or have
	// a set of active keys that use different algorithms.
	//
	// Use the following command to generate an RSA 2048 bit key with no passphrase:
	//
	// ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key.
	//
	// Use a minimum value of 2048 for the -b option. You can create a stronger
	// key by using 3072 or 4096.
	//
	// Use the following command to generate an ECDSA 256 bit key with no passphrase:
	//
	// ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key.
	//
	// Valid values for the -b option for ECDSA are 256, 384, and 521.
	//
	// Use the following command to generate an ED25519 key with no passphrase:
	//
	// ssh-keygen -t ed25519 -N "" -f my-new-server-key.
	//
	// For all of these commands, you can replace my-new-server-key with a string
	// of your choice.
	//
	// If you aren't planning to migrate existing users from an existing SFTP-enabled
	// server to a new server, don't update the host key. Accidentally changing
	// a server's host key can be disruptive.
	//
	// For more information, see Manage host keys for your SFTP-enabled server (https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key)
	// in the Transfer Family User Guide.
	//
	// HostKey is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateServerInput's
	// String and GoString methods.
	HostKey *string `type:"string" sensitive:"true"`

	// An array containing all of the information required to call a customer's
	// authentication API method.
	IdentityProviderDetails *IdentityProviderDetails `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that allows a server to turn on Amazon CloudWatch logging for Amazon
	// S3 or Amazon EFSevents. When set, you can view user activity in your CloudWatch
	// logs.
	LoggingRole *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed after the user authenticates.
	//
	// The SFTP protocol does not support post-authentication display banners.
	PostAuthenticationLoginBanner *string `type:"string"`

	// Specifies a string to display when users connect to a server. This string
	// is displayed before the user authenticates. For example, the following banner
	// displays details about using the system:
	//
	// This system is for the use of authorized users only. Individuals using this
	// computer system without authority, or in excess of their authority, are subject
	// to having all of their activities on this system monitored and recorded by
	// system personnel.
	PreAuthenticationLoginBanner *string `type:"string"`

	// The protocol settings that are configured for your server.
	//
	//    * To indicate passive mode (for FTP and FTPS protocols), use the PassiveIp
	//    parameter. Enter a single dotted-quad IPv4 address, such as the external
	//    IP address of a firewall, router, or load balancer.
	//
	//    * To ignore the error that is generated when the client attempts to use
	//    the SETSTAT command on a file that you are uploading to an Amazon S3 bucket,
	//    use the SetStatOption parameter. To have the Transfer Family server ignore
	//    the SETSTAT command and upload files without needing to make any changes
	//    to your SFTP client, set the value to ENABLE_NO_OP. If you set the SetStatOption
	//    parameter to ENABLE_NO_OP, Transfer Family generates a log entry to Amazon
	//    CloudWatch Logs, so that you can determine when the client is making a
	//    SETSTAT call.
	//
	//    * To determine whether your Transfer Family server resumes recent, negotiated
	//    sessions through a unique session ID, use the TlsSessionResumptionMode
	//    parameter.
	//
	//    * As2Transports indicates the transport method for the AS2 messages. Currently,
	//    only HTTP is supported.
	ProtocolDetails *ProtocolDetails `type:"structure"`

	// Specifies the file transfer protocol or protocols over which your file transfer
	// protocol client can connect to your server's endpoint. The available protocols
	// are:
	//
	//    * SFTP (Secure Shell (SSH) File Transfer Protocol): File transfer over
	//    SSH
	//
	//    * FTPS (File Transfer Protocol Secure): File transfer with TLS encryption
	//
	//    * FTP (File Transfer Protocol): Unencrypted file transfer
	//
	//    * AS2 (Applicability Statement 2): used for transporting structured business-to-business
	//    data
	//
	//    * If you select FTPS, you must choose a certificate stored in Certificate
	//    Manager (ACM) which is used to identify your server when clients connect
	//    to it over FTPS.
	//
	//    * If Protocol includes either FTP or FTPS, then the EndpointType must
	//    be VPC and the IdentityProviderType must be either AWS_DIRECTORY_SERVICE,
	//    AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes FTP, then AddressAllocationIds cannot be associated.
	//
	//    * If Protocol is set only to SFTP, the EndpointType can be set to PUBLIC
	//    and the IdentityProviderType can be set any of the supported identity
	//    types: SERVICE_MANAGED, AWS_DIRECTORY_SERVICE, AWS_LAMBDA, or API_GATEWAY.
	//
	//    * If Protocol includes AS2, then the EndpointType must be VPC, and domain
	//    must be Amazon S3.
	Protocols []*string `min:"1" type:"list" enum:"Protocol"`

	// Specifies whether or not performance for your Amazon S3 directories is optimized.
	// This is disabled by default.
	//
	// By default, home directory mappings have a TYPE of DIRECTORY. If you enable
	// this option, you would then need to explicitly set the HomeDirectoryMapEntry
	// Type to FILE if you want a mapping to have a file target.
	S3StorageOptions *S3StorageOptions `type:"structure"`

	// Specifies the name of the security policy that is attached to the server.
	SecurityPolicyName *string `type:"string"`

	// A system-assigned unique identifier for a server instance that the Transfer
	// Family user is assigned to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// Specifies the log groups to which your server logs are sent.
	//
	// To specify a log group, you must provide the ARN for an existing log group.
	// In this case, the format of the log group is as follows:
	//
	// arn:aws:logs:region-name:amazon-account-id:log-group:log-group-name:*
	//
	// For example, arn:aws:logs:us-east-1:111122223333:log-group:mytestgroup:*
	//
	// If you have previously specified a log group for a server, you can clear
	// it, and in effect turn off structured logging, by providing an empty value
	// for this parameter in an update-server call. For example:
	//
	// update-server --server-id s-1234567890abcdef0 --structured-log-destinations
	StructuredLogDestinations []*string `type:"list"`

	// Specifies the workflow ID for the workflow to assign and the execution role
	// that's used for executing the workflow.
	//
	// In addition to a workflow to execute when a file is uploaded completely,
	// WorkflowDetails can also contain a workflow ID (and execution role) for a
	// workflow to execute on partial upload. A partial upload occurs when the server
	// session disconnects while the file is still being uploaded.
	//
	// To remove an associated workflow from a server, you can provide an empty
	// OnUpload object, as in the following example.
	//
	// aws transfer update-server --server-id s-01234567890abcdef --workflow-details
	// '{"OnUpload":[]}'
	WorkflowDetails *WorkflowDetails `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 UpdateServerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateServerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateServerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateServerInput"}
	if s.Protocols != nil && len(s.Protocols) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Protocols", 1))
	}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}
	if s.EndpointDetails != nil {
		if err := s.EndpointDetails.Validate(); err != nil {
			invalidParams.AddNested("EndpointDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.IdentityProviderDetails != nil {
		if err := s.IdentityProviderDetails.Validate(); err != nil {
			invalidParams.AddNested("IdentityProviderDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.ProtocolDetails != nil {
		if err := s.ProtocolDetails.Validate(); err != nil {
			invalidParams.AddNested("ProtocolDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.WorkflowDetails != nil {
		if err := s.WorkflowDetails.Validate(); err != nil {
			invalidParams.AddNested("WorkflowDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCertificate sets the Certificate field's value.
func (s *UpdateServerInput) SetCertificate(v string) *UpdateServerInput {
	s.Certificate = &v
	return s
}

// SetEndpointDetails sets the EndpointDetails field's value.
func (s *UpdateServerInput) SetEndpointDetails(v *EndpointDetails) *UpdateServerInput {
	s.EndpointDetails = v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *UpdateServerInput) SetEndpointType(v string) *UpdateServerInput {
	s.EndpointType = &v
	return s
}

// SetHostKey sets the HostKey field's value.
func (s *UpdateServerInput) SetHostKey(v string) *UpdateServerInput {
	s.HostKey = &v
	return s
}

// SetIdentityProviderDetails sets the IdentityProviderDetails field's value.
func (s *UpdateServerInput) SetIdentityProviderDetails(v *IdentityProviderDetails) *UpdateServerInput {
	s.IdentityProviderDetails = v
	return s
}

// SetLoggingRole sets the LoggingRole field's value.
func (s *UpdateServerInput) SetLoggingRole(v string) *UpdateServerInput {
	s.LoggingRole = &v
	return s
}

// SetPostAuthenticationLoginBanner sets the PostAuthenticationLoginBanner field's value.
func (s *UpdateServerInput) SetPostAuthenticationLoginBanner(v string) *UpdateServerInput {
	s.PostAuthenticationLoginBanner = &v
	return s
}

// SetPreAuthenticationLoginBanner sets the PreAuthenticationLoginBanner field's value.
func (s *UpdateServerInput) SetPreAuthenticationLoginBanner(v string) *UpdateServerInput {
	s.PreAuthenticationLoginBanner = &v
	return s
}

// SetProtocolDetails sets the ProtocolDetails field's value.
func (s *UpdateServerInput) SetProtocolDetails(v *ProtocolDetails) *UpdateServerInput {
	s.ProtocolDetails = v
	return s
}

// SetProtocols sets the Protocols field's value.
func (s *UpdateServerInput) SetProtocols(v []*string) *UpdateServerInput {
	s.Protocols = v
	return s
}

// SetS3StorageOptions sets the S3StorageOptions field's value.
func (s *UpdateServerInput) SetS3StorageOptions(v *S3StorageOptions) *UpdateServerInput {
	s.S3StorageOptions = v
	return s
}

// SetSecurityPolicyName sets the SecurityPolicyName field's value.
func (s *UpdateServerInput) SetSecurityPolicyName(v string) *UpdateServerInput {
	s.SecurityPolicyName = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateServerInput) SetServerId(v string) *UpdateServerInput {
	s.ServerId = &v
	return s
}

// SetStructuredLogDestinations sets the StructuredLogDestinations field's value.
func (s *UpdateServerInput) SetStructuredLogDestinations(v []*string) *UpdateServerInput {
	s.StructuredLogDestinations = v
	return s
}

// SetWorkflowDetails sets the WorkflowDetails field's value.
func (s *UpdateServerInput) SetWorkflowDetails(v *WorkflowDetails) *UpdateServerInput {
	s.WorkflowDetails = v
	return s
}

type UpdateServerOutput struct {
	_ struct{} `type:"structure"`

	// A system-assigned unique identifier for a server that the Transfer Family
	// user is assigned to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" 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 UpdateServerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateServerOutput) GoString() string {
	return s.String()
}

// SetServerId sets the ServerId field's value.
func (s *UpdateServerOutput) SetServerId(v string) *UpdateServerOutput {
	s.ServerId = &v
	return s
}

type UpdateUserInput struct {
	_ struct{} `type:"structure"`

	// The landing directory (folder) for a user when they log in to the server
	// using the client.
	//
	// A HomeDirectory example is /bucket_name/home/mydirectory.
	//
	// The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
	HomeDirectory *string `type:"string"`

	// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
	// and keys should be visible to your user and how you want to make them visible.
	// You must specify the Entry and Target pair, where Entry shows how the path
	// is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
	// you only specify a target, it is displayed as is. You also must ensure that
	// your Identity and Access Management (IAM) role provides access to paths in
	// Target. This value can be set only when HomeDirectoryType is set to LOGICAL.
	//
	// The following is an Entry and Target pair example.
	//
	// [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ]
	//
	// In most cases, you can use this value instead of the session policy to lock
	// down your user to the designated home directory ("chroot"). To do this, you
	// can set Entry to '/' and set Target to the HomeDirectory parameter value.
	//
	// The following is an Entry and Target pair example for chroot.
	//
	// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
	HomeDirectoryMappings []*HomeDirectoryMapEntry `min:"1" type:"list"`

	// The type of landing directory (folder) that you want your users' home directory
	// to be when they log in to the server. If you set it to PATH, the user will
	// see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
	// transfer protocol clients. If you set it to LOGICAL, you need to provide
	// mappings in the HomeDirectoryMappings for how you want to make Amazon S3
	// or Amazon EFS paths visible to your users.
	//
	// If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
	// parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
	// an absolute path using the HomeDirectory parameter. You cannot have both
	// HomeDirectory and HomeDirectoryMappings in your template.
	HomeDirectoryType *string `type:"string" enum:"HomeDirectoryType"`

	// A session policy for your user so that you can use the same Identity and
	// Access Management (IAM) role across multiple users. This policy scopes down
	// a user's access to portions of their Amazon S3 bucket. Variables that you
	// can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
	// and ${Transfer:HomeBucket}.
	//
	// This policy applies only when the domain of ServerId is Amazon S3. Amazon
	// EFS does not use session policies.
	//
	// For session policies, Transfer Family stores the policy as a JSON blob, instead
	// of the Amazon Resource Name (ARN) of the policy. You save the policy as a
	// JSON blob and pass it in the Policy argument.
	//
	// For an example of a session policy, see Creating a session policy (https://docs.aws.amazon.com/transfer/latest/userguide/session-policy).
	//
	// For more information, see AssumeRole (https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
	// in the Amazon Web Services Security Token Service API Reference.
	Policy *string `type:"string"`

	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid),
	// and any secondary groups IDs (SecondaryGids), that controls your users' access
	// to your Amazon Elastic File Systems (Amazon EFS). The POSIX permissions that
	// are set on files and directories in your file system determines the level
	// of access your users get when transferring files into and out of your Amazon
	// EFS file systems.
	PosixProfile *PosixProfile `type:"structure"`

	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
	// role that controls your users' access to your Amazon S3 bucket or Amazon
	// EFS file system. The policies attached to this role determine the level of
	// access that you want to provide your users when transferring files into and
	// out of your Amazon S3 bucket or Amazon EFS file system. The IAM role should
	// also contain a trust relationship that allows the server to access your resources
	// when servicing your users' transfer requests.
	Role *string `min:"20" type:"string"`

	// A system-assigned unique identifier for a Transfer Family server instance
	// that the user is assigned to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// A unique string that identifies a user and is associated with a server as
	// specified by the ServerId. This user name must be a minimum of 3 and a maximum
	// of 100 characters long. The following are valid characters: a-z, A-Z, 0-9,
	// underscore '_', hyphen '-', period '.', and at sign '@'. The user name can't
	// start with a hyphen, period, or at sign.
	//
	// UserName is a required field
	UserName *string `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 UpdateUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserInput"}
	if s.HomeDirectoryMappings != nil && len(s.HomeDirectoryMappings) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HomeDirectoryMappings", 1))
	}
	if s.Role != nil && len(*s.Role) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 20))
	}
	if s.ServerId == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerId"))
	}
	if s.ServerId != nil && len(*s.ServerId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("ServerId", 19))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 3))
	}
	if s.HomeDirectoryMappings != nil {
		for i, v := range s.HomeDirectoryMappings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "HomeDirectoryMappings", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PosixProfile != nil {
		if err := s.PosixProfile.Validate(); err != nil {
			invalidParams.AddNested("PosixProfile", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHomeDirectory sets the HomeDirectory field's value.
func (s *UpdateUserInput) SetHomeDirectory(v string) *UpdateUserInput {
	s.HomeDirectory = &v
	return s
}

// SetHomeDirectoryMappings sets the HomeDirectoryMappings field's value.
func (s *UpdateUserInput) SetHomeDirectoryMappings(v []*HomeDirectoryMapEntry) *UpdateUserInput {
	s.HomeDirectoryMappings = v
	return s
}

// SetHomeDirectoryType sets the HomeDirectoryType field's value.
func (s *UpdateUserInput) SetHomeDirectoryType(v string) *UpdateUserInput {
	s.HomeDirectoryType = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *UpdateUserInput) SetPolicy(v string) *UpdateUserInput {
	s.Policy = &v
	return s
}

// SetPosixProfile sets the PosixProfile field's value.
func (s *UpdateUserInput) SetPosixProfile(v *PosixProfile) *UpdateUserInput {
	s.PosixProfile = v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateUserInput) SetRole(v string) *UpdateUserInput {
	s.Role = &v
	return s
}

// SetServerId sets the ServerId field's value.
func (s *UpdateUserInput) SetServerId(v string) *UpdateUserInput {
	s.ServerId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UpdateUserInput) SetUserName(v string) *UpdateUserInput {
	s.UserName = &v
	return s
}

// UpdateUserResponse returns the user name and identifier for the request to
// update a user's properties.
type UpdateUserOutput struct {
	_ struct{} `type:"structure"`

	// A system-assigned unique identifier for a Transfer Family server instance
	// that the account is assigned to.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The unique identifier for a user that is assigned to a server instance that
	// was specified in the request.
	//
	// UserName is a required field
	UserName *string `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 UpdateUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserOutput) GoString() string {
	return s.String()
}

// SetServerId sets the ServerId field's value.
func (s *UpdateUserOutput) SetServerId(v string) *UpdateUserOutput {
	s.ServerId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UpdateUserOutput) SetUserName(v string) *UpdateUserOutput {
	s.UserName = &v
	return s
}

// Specifies the user name, server ID, and session ID for a workflow.
type UserDetails struct {
	_ struct{} `type:"structure"`

	// The system-assigned unique identifier for a Transfer server instance.
	//
	// ServerId is a required field
	ServerId *string `min:"19" type:"string" required:"true"`

	// The system-assigned unique identifier for a session that corresponds to the
	// workflow.
	SessionId *string `min:"3" type:"string"`

	// A unique string that identifies a Transfer Family user associated with a
	// server.
	//
	// UserName is a required field
	UserName *string `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 UserDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDetails) GoString() string {
	return s.String()
}

// SetServerId sets the ServerId field's value.
func (s *UserDetails) SetServerId(v string) *UserDetails {
	s.ServerId = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *UserDetails) SetSessionId(v string) *UserDetails {
	s.SessionId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UserDetails) SetUserName(v string) *UserDetails {
	s.UserName = &v
	return s
}

// Specifies the workflow ID for the workflow to assign and the execution role
// that's used for executing the workflow.
//
// In addition to a workflow to execute when a file is uploaded completely,
// WorkflowDetails can also contain a workflow ID (and execution role) for a
// workflow to execute on partial upload. A partial upload occurs when the server
// session disconnects while the file is still being uploaded.
type WorkflowDetail struct {
	_ struct{} `type:"structure"`

	// Includes the necessary permissions for S3, EFS, and Lambda operations that
	// Transfer can assume, so that all workflow steps can operate on the required
	// resources
	//
	// ExecutionRole is a required field
	ExecutionRole *string `min:"20" type:"string" required:"true"`

	// A unique identifier for the workflow.
	//
	// WorkflowId is a required field
	WorkflowId *string `min:"19" 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 WorkflowDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowDetail) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WorkflowDetail) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WorkflowDetail"}
	if s.ExecutionRole == nil {
		invalidParams.Add(request.NewErrParamRequired("ExecutionRole"))
	}
	if s.ExecutionRole != nil && len(*s.ExecutionRole) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutionRole", 20))
	}
	if s.WorkflowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkflowId"))
	}
	if s.WorkflowId != nil && len(*s.WorkflowId) < 19 {
		invalidParams.Add(request.NewErrParamMinLen("WorkflowId", 19))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *WorkflowDetail) SetExecutionRole(v string) *WorkflowDetail {
	s.ExecutionRole = &v
	return s
}

// SetWorkflowId sets the WorkflowId field's value.
func (s *WorkflowDetail) SetWorkflowId(v string) *WorkflowDetail {
	s.WorkflowId = &v
	return s
}

// Container for the WorkflowDetail data type. It is used by actions that trigger
// a workflow to begin execution.
type WorkflowDetails struct {
	_ struct{} `type:"structure"`

	// A trigger that starts a workflow if a file is only partially uploaded. You
	// can attach a workflow to a server that executes whenever there is a partial
	// upload.
	//
	// A partial upload occurs when a file is open when the session disconnects.
	OnPartialUpload []*WorkflowDetail `type:"list"`

	// A trigger that starts a workflow: the workflow begins to execute after a
	// file is uploaded.
	//
	// To remove an associated workflow from a server, you can provide an empty
	// OnUpload object, as in the following example.
	//
	// aws transfer update-server --server-id s-01234567890abcdef --workflow-details
	// '{"OnUpload":[]}'
	OnUpload []*WorkflowDetail `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 WorkflowDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WorkflowDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WorkflowDetails"}
	if s.OnPartialUpload != nil {
		for i, v := range s.OnPartialUpload {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OnPartialUpload", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.OnUpload != nil {
		for i, v := range s.OnUpload {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OnUpload", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOnPartialUpload sets the OnPartialUpload field's value.
func (s *WorkflowDetails) SetOnPartialUpload(v []*WorkflowDetail) *WorkflowDetails {
	s.OnPartialUpload = v
	return s
}

// SetOnUpload sets the OnUpload field's value.
func (s *WorkflowDetails) SetOnUpload(v []*WorkflowDetail) *WorkflowDetails {
	s.OnUpload = v
	return s
}

// The basic building block of a workflow.
type WorkflowStep struct {
	_ struct{} `type:"structure"`

	// Details for a step that performs a file copy.
	//
	// Consists of the following values:
	//
	//    * A description
	//
	//    * An Amazon S3 location for the destination of the file copy.
	//
	//    * A flag that indicates whether to overwrite an existing file of the same
	//    name. The default is FALSE.
	CopyStepDetails *CopyStepDetails `type:"structure"`

	// Details for a step that invokes an Lambda function.
	//
	// Consists of the Lambda function's name, target, and timeout (in seconds).
	CustomStepDetails *CustomStepDetails `type:"structure"`

	// Details for a step that decrypts an encrypted file.
	//
	// Consists of the following values:
	//
	//    * A descriptive name
	//
	//    * An Amazon S3 or Amazon Elastic File System (Amazon EFS) location for
	//    the source file to decrypt.
	//
	//    * An S3 or Amazon EFS location for the destination of the file decryption.
	//
	//    * A flag that indicates whether to overwrite an existing file of the same
	//    name. The default is FALSE.
	//
	//    * The type of encryption that's used. Currently, only PGP encryption is
	//    supported.
	DecryptStepDetails *DecryptStepDetails `type:"structure"`

	// Details for a step that deletes the file.
	DeleteStepDetails *DeleteStepDetails `type:"structure"`

	// Details for a step that creates one or more tags.
	//
	// You specify one or more tags. Each tag contains a key-value pair.
	TagStepDetails *TagStepDetails `type:"structure"`

	// Currently, the following step types are supported.
	//
	//    * COPY - Copy the file to another location.
	//
	//    * CUSTOM - Perform a custom step with an Lambda function target.
	//
	//    * DECRYPT - Decrypt a file that was encrypted before it was uploaded.
	//
	//    * DELETE - Delete the file.
	//
	//    * TAG - Add a tag to the file.
	Type *string `type:"string" enum:"WorkflowStepType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowStep) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowStep) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WorkflowStep) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WorkflowStep"}
	if s.CopyStepDetails != nil {
		if err := s.CopyStepDetails.Validate(); err != nil {
			invalidParams.AddNested("CopyStepDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.CustomStepDetails != nil {
		if err := s.CustomStepDetails.Validate(); err != nil {
			invalidParams.AddNested("CustomStepDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.DecryptStepDetails != nil {
		if err := s.DecryptStepDetails.Validate(); err != nil {
			invalidParams.AddNested("DecryptStepDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.TagStepDetails != nil {
		if err := s.TagStepDetails.Validate(); err != nil {
			invalidParams.AddNested("TagStepDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCopyStepDetails sets the CopyStepDetails field's value.
func (s *WorkflowStep) SetCopyStepDetails(v *CopyStepDetails) *WorkflowStep {
	s.CopyStepDetails = v
	return s
}

// SetCustomStepDetails sets the CustomStepDetails field's value.
func (s *WorkflowStep) SetCustomStepDetails(v *CustomStepDetails) *WorkflowStep {
	s.CustomStepDetails = v
	return s
}

// SetDecryptStepDetails sets the DecryptStepDetails field's value.
func (s *WorkflowStep) SetDecryptStepDetails(v *DecryptStepDetails) *WorkflowStep {
	s.DecryptStepDetails = v
	return s
}

// SetDeleteStepDetails sets the DeleteStepDetails field's value.
func (s *WorkflowStep) SetDeleteStepDetails(v *DeleteStepDetails) *WorkflowStep {
	s.DeleteStepDetails = v
	return s
}

// SetTagStepDetails sets the TagStepDetails field's value.
func (s *WorkflowStep) SetTagStepDetails(v *TagStepDetails) *WorkflowStep {
	s.TagStepDetails = v
	return s
}

// SetType sets the Type field's value.
func (s *WorkflowStep) SetType(v string) *WorkflowStep {
	s.Type = &v
	return s
}

const (
	// AgreementStatusTypeActive is a AgreementStatusType enum value
	AgreementStatusTypeActive = "ACTIVE"

	// AgreementStatusTypeInactive is a AgreementStatusType enum value
	AgreementStatusTypeInactive = "INACTIVE"
)

// AgreementStatusType_Values returns all elements of the AgreementStatusType enum
func AgreementStatusType_Values() []string {
	return []string{
		AgreementStatusTypeActive,
		AgreementStatusTypeInactive,
	}
}

const (
	// As2TransportHttp is a As2Transport enum value
	As2TransportHttp = "HTTP"
)

// As2Transport_Values returns all elements of the As2Transport enum
func As2Transport_Values() []string {
	return []string{
		As2TransportHttp,
	}
}

const (
	// CertificateStatusTypeActive is a CertificateStatusType enum value
	CertificateStatusTypeActive = "ACTIVE"

	// CertificateStatusTypePendingRotation is a CertificateStatusType enum value
	CertificateStatusTypePendingRotation = "PENDING_ROTATION"

	// CertificateStatusTypeInactive is a CertificateStatusType enum value
	CertificateStatusTypeInactive = "INACTIVE"
)

// CertificateStatusType_Values returns all elements of the CertificateStatusType enum
func CertificateStatusType_Values() []string {
	return []string{
		CertificateStatusTypeActive,
		CertificateStatusTypePendingRotation,
		CertificateStatusTypeInactive,
	}
}

const (
	// CertificateTypeCertificate is a CertificateType enum value
	CertificateTypeCertificate = "CERTIFICATE"

	// CertificateTypeCertificateWithPrivateKey is a CertificateType enum value
	CertificateTypeCertificateWithPrivateKey = "CERTIFICATE_WITH_PRIVATE_KEY"
)

// CertificateType_Values returns all elements of the CertificateType enum
func CertificateType_Values() []string {
	return []string{
		CertificateTypeCertificate,
		CertificateTypeCertificateWithPrivateKey,
	}
}

const (
	// CertificateUsageTypeSigning is a CertificateUsageType enum value
	CertificateUsageTypeSigning = "SIGNING"

	// CertificateUsageTypeEncryption is a CertificateUsageType enum value
	CertificateUsageTypeEncryption = "ENCRYPTION"
)

// CertificateUsageType_Values returns all elements of the CertificateUsageType enum
func CertificateUsageType_Values() []string {
	return []string{
		CertificateUsageTypeSigning,
		CertificateUsageTypeEncryption,
	}
}

const (
	// CompressionEnumZlib is a CompressionEnum enum value
	CompressionEnumZlib = "ZLIB"

	// CompressionEnumDisabled is a CompressionEnum enum value
	CompressionEnumDisabled = "DISABLED"
)

// CompressionEnum_Values returns all elements of the CompressionEnum enum
func CompressionEnum_Values() []string {
	return []string{
		CompressionEnumZlib,
		CompressionEnumDisabled,
	}
}

const (
	// CustomStepStatusSuccess is a CustomStepStatus enum value
	CustomStepStatusSuccess = "SUCCESS"

	// CustomStepStatusFailure is a CustomStepStatus enum value
	CustomStepStatusFailure = "FAILURE"
)

// CustomStepStatus_Values returns all elements of the CustomStepStatus enum
func CustomStepStatus_Values() []string {
	return []string{
		CustomStepStatusSuccess,
		CustomStepStatusFailure,
	}
}

// Indicates whether optimization to directory listing on S3 servers is used.
// Disabled by default for compatibility.
const (
	// DirectoryListingOptimizationEnabled is a DirectoryListingOptimization enum value
	DirectoryListingOptimizationEnabled = "ENABLED"

	// DirectoryListingOptimizationDisabled is a DirectoryListingOptimization enum value
	DirectoryListingOptimizationDisabled = "DISABLED"
)

// DirectoryListingOptimization_Values returns all elements of the DirectoryListingOptimization enum
func DirectoryListingOptimization_Values() []string {
	return []string{
		DirectoryListingOptimizationEnabled,
		DirectoryListingOptimizationDisabled,
	}
}

const (
	// DomainS3 is a Domain enum value
	DomainS3 = "S3"

	// DomainEfs is a Domain enum value
	DomainEfs = "EFS"
)

// Domain_Values returns all elements of the Domain enum
func Domain_Values() []string {
	return []string{
		DomainS3,
		DomainEfs,
	}
}

const (
	// EncryptionAlgAes128Cbc is a EncryptionAlg enum value
	EncryptionAlgAes128Cbc = "AES128_CBC"

	// EncryptionAlgAes192Cbc is a EncryptionAlg enum value
	EncryptionAlgAes192Cbc = "AES192_CBC"

	// EncryptionAlgAes256Cbc is a EncryptionAlg enum value
	EncryptionAlgAes256Cbc = "AES256_CBC"

	// EncryptionAlgNone is a EncryptionAlg enum value
	EncryptionAlgNone = "NONE"
)

// EncryptionAlg_Values returns all elements of the EncryptionAlg enum
func EncryptionAlg_Values() []string {
	return []string{
		EncryptionAlgAes128Cbc,
		EncryptionAlgAes192Cbc,
		EncryptionAlgAes256Cbc,
		EncryptionAlgNone,
	}
}

const (
	// EncryptionTypePgp is a EncryptionType enum value
	EncryptionTypePgp = "PGP"
)

// EncryptionType_Values returns all elements of the EncryptionType enum
func EncryptionType_Values() []string {
	return []string{
		EncryptionTypePgp,
	}
}

const (
	// EndpointTypePublic is a EndpointType enum value
	EndpointTypePublic = "PUBLIC"

	// EndpointTypeVpc is a EndpointType enum value
	EndpointTypeVpc = "VPC"

	// EndpointTypeVpcEndpoint is a EndpointType enum value
	EndpointTypeVpcEndpoint = "VPC_ENDPOINT"
)

// EndpointType_Values returns all elements of the EndpointType enum
func EndpointType_Values() []string {
	return []string{
		EndpointTypePublic,
		EndpointTypeVpc,
		EndpointTypeVpcEndpoint,
	}
}

const (
	// ExecutionErrorTypePermissionDenied is a ExecutionErrorType enum value
	ExecutionErrorTypePermissionDenied = "PERMISSION_DENIED"

	// ExecutionErrorTypeCustomStepFailed is a ExecutionErrorType enum value
	ExecutionErrorTypeCustomStepFailed = "CUSTOM_STEP_FAILED"

	// ExecutionErrorTypeThrottled is a ExecutionErrorType enum value
	ExecutionErrorTypeThrottled = "THROTTLED"

	// ExecutionErrorTypeAlreadyExists is a ExecutionErrorType enum value
	ExecutionErrorTypeAlreadyExists = "ALREADY_EXISTS"

	// ExecutionErrorTypeNotFound is a ExecutionErrorType enum value
	ExecutionErrorTypeNotFound = "NOT_FOUND"

	// ExecutionErrorTypeBadRequest is a ExecutionErrorType enum value
	ExecutionErrorTypeBadRequest = "BAD_REQUEST"

	// ExecutionErrorTypeTimeout is a ExecutionErrorType enum value
	ExecutionErrorTypeTimeout = "TIMEOUT"

	// ExecutionErrorTypeInternalServerError is a ExecutionErrorType enum value
	ExecutionErrorTypeInternalServerError = "INTERNAL_SERVER_ERROR"
)

// ExecutionErrorType_Values returns all elements of the ExecutionErrorType enum
func ExecutionErrorType_Values() []string {
	return []string{
		ExecutionErrorTypePermissionDenied,
		ExecutionErrorTypeCustomStepFailed,
		ExecutionErrorTypeThrottled,
		ExecutionErrorTypeAlreadyExists,
		ExecutionErrorTypeNotFound,
		ExecutionErrorTypeBadRequest,
		ExecutionErrorTypeTimeout,
		ExecutionErrorTypeInternalServerError,
	}
}

const (
	// ExecutionStatusInProgress is a ExecutionStatus enum value
	ExecutionStatusInProgress = "IN_PROGRESS"

	// ExecutionStatusCompleted is a ExecutionStatus enum value
	ExecutionStatusCompleted = "COMPLETED"

	// ExecutionStatusException is a ExecutionStatus enum value
	ExecutionStatusException = "EXCEPTION"

	// ExecutionStatusHandlingException is a ExecutionStatus enum value
	ExecutionStatusHandlingException = "HANDLING_EXCEPTION"
)

// ExecutionStatus_Values returns all elements of the ExecutionStatus enum
func ExecutionStatus_Values() []string {
	return []string{
		ExecutionStatusInProgress,
		ExecutionStatusCompleted,
		ExecutionStatusException,
		ExecutionStatusHandlingException,
	}
}

const (
	// HomeDirectoryTypePath is a HomeDirectoryType enum value
	HomeDirectoryTypePath = "PATH"

	// HomeDirectoryTypeLogical is a HomeDirectoryType enum value
	HomeDirectoryTypeLogical = "LOGICAL"
)

// HomeDirectoryType_Values returns all elements of the HomeDirectoryType enum
func HomeDirectoryType_Values() []string {
	return []string{
		HomeDirectoryTypePath,
		HomeDirectoryTypeLogical,
	}
}

// The mode of authentication for a server. The default value is SERVICE_MANAGED,
// which allows you to store and access user credentials within the Transfer
// Family service.
//
// Use AWS_DIRECTORY_SERVICE to provide access to Active Directory groups in
// Directory Service for Microsoft Active Directory or Microsoft Active Directory
// in your on-premises environment or in Amazon Web Services using AD Connector.
// This option also requires you to provide a Directory ID by using the IdentityProviderDetails
// parameter.
//
// Use the API_GATEWAY value to integrate with an identity provider of your
// choosing. The API_GATEWAY setting requires you to provide an Amazon API Gateway
// endpoint URL to call for authentication by using the IdentityProviderDetails
// parameter.
//
// Use the AWS_LAMBDA value to directly use an Lambda function as your identity
// provider. If you choose this value, you must specify the ARN for the Lambda
// function in the Function parameter for the IdentityProviderDetails data type.
const (
	// IdentityProviderTypeServiceManaged is a IdentityProviderType enum value
	IdentityProviderTypeServiceManaged = "SERVICE_MANAGED"

	// IdentityProviderTypeApiGateway is a IdentityProviderType enum value
	IdentityProviderTypeApiGateway = "API_GATEWAY"

	// IdentityProviderTypeAwsDirectoryService is a IdentityProviderType enum value
	IdentityProviderTypeAwsDirectoryService = "AWS_DIRECTORY_SERVICE"

	// IdentityProviderTypeAwsLambda is a IdentityProviderType enum value
	IdentityProviderTypeAwsLambda = "AWS_LAMBDA"
)

// IdentityProviderType_Values returns all elements of the IdentityProviderType enum
func IdentityProviderType_Values() []string {
	return []string{
		IdentityProviderTypeServiceManaged,
		IdentityProviderTypeApiGateway,
		IdentityProviderTypeAwsDirectoryService,
		IdentityProviderTypeAwsLambda,
	}
}

const (
	// MapTypeFile is a MapType enum value
	MapTypeFile = "FILE"

	// MapTypeDirectory is a MapType enum value
	MapTypeDirectory = "DIRECTORY"
)

// MapType_Values returns all elements of the MapType enum
func MapType_Values() []string {
	return []string{
		MapTypeFile,
		MapTypeDirectory,
	}
}

const (
	// MdnResponseSync is a MdnResponse enum value
	MdnResponseSync = "SYNC"

	// MdnResponseNone is a MdnResponse enum value
	MdnResponseNone = "NONE"
)

// MdnResponse_Values returns all elements of the MdnResponse enum
func MdnResponse_Values() []string {
	return []string{
		MdnResponseSync,
		MdnResponseNone,
	}
}

const (
	// MdnSigningAlgSha256 is a MdnSigningAlg enum value
	MdnSigningAlgSha256 = "SHA256"

	// MdnSigningAlgSha384 is a MdnSigningAlg enum value
	MdnSigningAlgSha384 = "SHA384"

	// MdnSigningAlgSha512 is a MdnSigningAlg enum value
	MdnSigningAlgSha512 = "SHA512"

	// MdnSigningAlgSha1 is a MdnSigningAlg enum value
	MdnSigningAlgSha1 = "SHA1"

	// MdnSigningAlgNone is a MdnSigningAlg enum value
	MdnSigningAlgNone = "NONE"

	// MdnSigningAlgDefault is a MdnSigningAlg enum value
	MdnSigningAlgDefault = "DEFAULT"
)

// MdnSigningAlg_Values returns all elements of the MdnSigningAlg enum
func MdnSigningAlg_Values() []string {
	return []string{
		MdnSigningAlgSha256,
		MdnSigningAlgSha384,
		MdnSigningAlgSha512,
		MdnSigningAlgSha1,
		MdnSigningAlgNone,
		MdnSigningAlgDefault,
	}
}

const (
	// OverwriteExistingTrue is a OverwriteExisting enum value
	OverwriteExistingTrue = "TRUE"

	// OverwriteExistingFalse is a OverwriteExisting enum value
	OverwriteExistingFalse = "FALSE"
)

// OverwriteExisting_Values returns all elements of the OverwriteExisting enum
func OverwriteExisting_Values() []string {
	return []string{
		OverwriteExistingTrue,
		OverwriteExistingFalse,
	}
}

const (
	// ProfileTypeLocal is a ProfileType enum value
	ProfileTypeLocal = "LOCAL"

	// ProfileTypePartner is a ProfileType enum value
	ProfileTypePartner = "PARTNER"
)

// ProfileType_Values returns all elements of the ProfileType enum
func ProfileType_Values() []string {
	return []string{
		ProfileTypeLocal,
		ProfileTypePartner,
	}
}

const (
	// ProtocolSftp is a Protocol enum value
	ProtocolSftp = "SFTP"

	// ProtocolFtp is a Protocol enum value
	ProtocolFtp = "FTP"

	// ProtocolFtps is a Protocol enum value
	ProtocolFtps = "FTPS"

	// ProtocolAs2 is a Protocol enum value
	ProtocolAs2 = "AS2"
)

// Protocol_Values returns all elements of the Protocol enum
func Protocol_Values() []string {
	return []string{
		ProtocolSftp,
		ProtocolFtp,
		ProtocolFtps,
		ProtocolAs2,
	}
}

const (
	// SetStatOptionDefault is a SetStatOption enum value
	SetStatOptionDefault = "DEFAULT"

	// SetStatOptionEnableNoOp is a SetStatOption enum value
	SetStatOptionEnableNoOp = "ENABLE_NO_OP"
)

// SetStatOption_Values returns all elements of the SetStatOption enum
func SetStatOption_Values() []string {
	return []string{
		SetStatOptionDefault,
		SetStatOptionEnableNoOp,
	}
}

const (
	// SftpAuthenticationMethodsPassword is a SftpAuthenticationMethods enum value
	SftpAuthenticationMethodsPassword = "PASSWORD"

	// SftpAuthenticationMethodsPublicKey is a SftpAuthenticationMethods enum value
	SftpAuthenticationMethodsPublicKey = "PUBLIC_KEY"

	// SftpAuthenticationMethodsPublicKeyOrPassword is a SftpAuthenticationMethods enum value
	SftpAuthenticationMethodsPublicKeyOrPassword = "PUBLIC_KEY_OR_PASSWORD"

	// SftpAuthenticationMethodsPublicKeyAndPassword is a SftpAuthenticationMethods enum value
	SftpAuthenticationMethodsPublicKeyAndPassword = "PUBLIC_KEY_AND_PASSWORD"
)

// SftpAuthenticationMethods_Values returns all elements of the SftpAuthenticationMethods enum
func SftpAuthenticationMethods_Values() []string {
	return []string{
		SftpAuthenticationMethodsPassword,
		SftpAuthenticationMethodsPublicKey,
		SftpAuthenticationMethodsPublicKeyOrPassword,
		SftpAuthenticationMethodsPublicKeyAndPassword,
	}
}

const (
	// SigningAlgSha256 is a SigningAlg enum value
	SigningAlgSha256 = "SHA256"

	// SigningAlgSha384 is a SigningAlg enum value
	SigningAlgSha384 = "SHA384"

	// SigningAlgSha512 is a SigningAlg enum value
	SigningAlgSha512 = "SHA512"

	// SigningAlgSha1 is a SigningAlg enum value
	SigningAlgSha1 = "SHA1"

	// SigningAlgNone is a SigningAlg enum value
	SigningAlgNone = "NONE"
)

// SigningAlg_Values returns all elements of the SigningAlg enum
func SigningAlg_Values() []string {
	return []string{
		SigningAlgSha256,
		SigningAlgSha384,
		SigningAlgSha512,
		SigningAlgSha1,
		SigningAlgNone,
	}
}

// Describes the condition of a file transfer protocol-enabled server with respect
// to its ability to perform file operations. There are six possible states:
// OFFLINE, ONLINE, STARTING, STOPPING, START_FAILED, and STOP_FAILED.
//
// OFFLINE indicates that the server exists, but that it is not available for
// file operations. ONLINE indicates that the server is available to perform
// file operations. STARTING indicates that the server's was instantiated, but
// the server is not yet available to perform file operations. Under normal
// conditions, it can take a couple of minutes for the server to be completely
// operational. Both START_FAILED and STOP_FAILED are error conditions.
const (
	// StateOffline is a State enum value
	StateOffline = "OFFLINE"

	// StateOnline is a State enum value
	StateOnline = "ONLINE"

	// StateStarting is a State enum value
	StateStarting = "STARTING"

	// StateStopping is a State enum value
	StateStopping = "STOPPING"

	// StateStartFailed is a State enum value
	StateStartFailed = "START_FAILED"

	// StateStopFailed is a State enum value
	StateStopFailed = "STOP_FAILED"
)

// State_Values returns all elements of the State enum
func State_Values() []string {
	return []string{
		StateOffline,
		StateOnline,
		StateStarting,
		StateStopping,
		StateStartFailed,
		StateStopFailed,
	}
}

const (
	// TlsSessionResumptionModeDisabled is a TlsSessionResumptionMode enum value
	TlsSessionResumptionModeDisabled = "DISABLED"

	// TlsSessionResumptionModeEnabled is a TlsSessionResumptionMode enum value
	TlsSessionResumptionModeEnabled = "ENABLED"

	// TlsSessionResumptionModeEnforced is a TlsSessionResumptionMode enum value
	TlsSessionResumptionModeEnforced = "ENFORCED"
)

// TlsSessionResumptionMode_Values returns all elements of the TlsSessionResumptionMode enum
func TlsSessionResumptionMode_Values() []string {
	return []string{
		TlsSessionResumptionModeDisabled,
		TlsSessionResumptionModeEnabled,
		TlsSessionResumptionModeEnforced,
	}
}

const (
	// WorkflowStepTypeCopy is a WorkflowStepType enum value
	WorkflowStepTypeCopy = "COPY"

	// WorkflowStepTypeCustom is a WorkflowStepType enum value
	WorkflowStepTypeCustom = "CUSTOM"

	// WorkflowStepTypeTag is a WorkflowStepType enum value
	WorkflowStepTypeTag = "TAG"

	// WorkflowStepTypeDelete is a WorkflowStepType enum value
	WorkflowStepTypeDelete = "DELETE"

	// WorkflowStepTypeDecrypt is a WorkflowStepType enum value
	WorkflowStepTypeDecrypt = "DECRYPT"
)

// WorkflowStepType_Values returns all elements of the WorkflowStepType enum
func WorkflowStepType_Values() []string {
	return []string{
		WorkflowStepTypeCopy,
		WorkflowStepTypeCustom,
		WorkflowStepTypeTag,
		WorkflowStepTypeDelete,
		WorkflowStepTypeDecrypt,
	}
}
© 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