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

package qconnect

import (
	"fmt"
	"time"

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

const opCreateAssistant = "CreateAssistant"

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

	if input == nil {
		input = &CreateAssistantInput{}
	}

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

// CreateAssistant API operation for Amazon Q Connect.
//
// Creates an Amazon Q in Connect assistant.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateAssistant for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateAssistant
func (c *QConnect) CreateAssistant(input *CreateAssistantInput) (*CreateAssistantOutput, error) {
	req, out := c.CreateAssistantRequest(input)
	return out, req.Send()
}

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

const opCreateAssistantAssociation = "CreateAssistantAssociation"

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

	if input == nil {
		input = &CreateAssistantAssociationInput{}
	}

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

// CreateAssistantAssociation API operation for Amazon Q Connect.
//
// Creates an association between an Amazon Q in Connect assistant and another
// resource. Currently, the only supported association is with a knowledge base.
// An assistant can have only a single association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateAssistantAssociation for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateAssistantAssociation
func (c *QConnect) CreateAssistantAssociation(input *CreateAssistantAssociationInput) (*CreateAssistantAssociationOutput, error) {
	req, out := c.CreateAssistantAssociationRequest(input)
	return out, req.Send()
}

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

const opCreateContent = "CreateContent"

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

	if input == nil {
		input = &CreateContentInput{}
	}

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

// CreateContent API operation for Amazon Q Connect.
//
// Creates Amazon Q content. Before to calling this API, use StartContentUpload
// (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_StartContentUpload.html)
// to upload an asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateContent for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateContent
func (c *QConnect) CreateContent(input *CreateContentInput) (*CreateContentOutput, error) {
	req, out := c.CreateContentRequest(input)
	return out, req.Send()
}

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

const opCreateKnowledgeBase = "CreateKnowledgeBase"

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

	if input == nil {
		input = &CreateKnowledgeBaseInput{}
	}

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

// CreateKnowledgeBase API operation for Amazon Q Connect.
//
// Creates a knowledge base.
//
// When using this API, you cannot reuse Amazon AppIntegrations (https://docs.aws.amazon.com/appintegrations/latest/APIReference/Welcome.html)
// DataIntegrations with external knowledge bases such as Salesforce and ServiceNow.
// If you do, you'll get an InvalidRequestException error.
//
// For example, you're programmatically managing your external knowledge base,
// and you want to add or remove one of the fields that is being ingested from
// Salesforce. Do the following:
//
// Call DeleteKnowledgeBase (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_DeleteKnowledgeBase.html).
//
// Call DeleteDataIntegration (https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_DeleteDataIntegration.html).
//
// Call CreateDataIntegration (https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_CreateDataIntegration.html)
// to recreate the DataIntegration or a create different one.
//
// Call CreateKnowledgeBase.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateKnowledgeBase for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateKnowledgeBase
func (c *QConnect) CreateKnowledgeBase(input *CreateKnowledgeBaseInput) (*CreateKnowledgeBaseOutput, error) {
	req, out := c.CreateKnowledgeBaseRequest(input)
	return out, req.Send()
}

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

const opCreateQuickResponse = "CreateQuickResponse"

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

	if input == nil {
		input = &CreateQuickResponseInput{}
	}

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

// CreateQuickResponse API operation for Amazon Q Connect.
//
// Creates an Amazon Q quick response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateQuickResponse for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateQuickResponse
func (c *QConnect) CreateQuickResponse(input *CreateQuickResponseInput) (*CreateQuickResponseOutput, error) {
	req, out := c.CreateQuickResponseRequest(input)
	return out, req.Send()
}

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

const opCreateSession = "CreateSession"

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

	if input == nil {
		input = &CreateSessionInput{}
	}

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

// CreateSession API operation for Amazon Q Connect.
//
// Creates a session. A session is a contextual container used for generating
// recommendations. Amazon Connect creates a new Amazon Q session for each contact
// on which Amazon Q is enabled.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation CreateSession for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/CreateSession
func (c *QConnect) CreateSession(input *CreateSessionInput) (*CreateSessionOutput, error) {
	req, out := c.CreateSessionRequest(input)
	return out, req.Send()
}

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

const opDeleteAssistant = "DeleteAssistant"

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

	if input == nil {
		input = &DeleteAssistantInput{}
	}

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

// DeleteAssistant API operation for Amazon Q Connect.
//
// Deletes an assistant.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteAssistant for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteAssistant
func (c *QConnect) DeleteAssistant(input *DeleteAssistantInput) (*DeleteAssistantOutput, error) {
	req, out := c.DeleteAssistantRequest(input)
	return out, req.Send()
}

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

const opDeleteAssistantAssociation = "DeleteAssistantAssociation"

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

	if input == nil {
		input = &DeleteAssistantAssociationInput{}
	}

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

// DeleteAssistantAssociation API operation for Amazon Q Connect.
//
// Deletes an assistant association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteAssistantAssociation for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteAssistantAssociation
func (c *QConnect) DeleteAssistantAssociation(input *DeleteAssistantAssociationInput) (*DeleteAssistantAssociationOutput, error) {
	req, out := c.DeleteAssistantAssociationRequest(input)
	return out, req.Send()
}

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

const opDeleteContent = "DeleteContent"

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

	if input == nil {
		input = &DeleteContentInput{}
	}

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

// DeleteContent API operation for Amazon Q Connect.
//
// Deletes the content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteContent for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteContent
func (c *QConnect) DeleteContent(input *DeleteContentInput) (*DeleteContentOutput, error) {
	req, out := c.DeleteContentRequest(input)
	return out, req.Send()
}

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

const opDeleteImportJob = "DeleteImportJob"

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

	if input == nil {
		input = &DeleteImportJobInput{}
	}

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

// DeleteImportJob API operation for Amazon Q Connect.
//
// Deletes the quick response import job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteImportJob for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteImportJob
func (c *QConnect) DeleteImportJob(input *DeleteImportJobInput) (*DeleteImportJobOutput, error) {
	req, out := c.DeleteImportJobRequest(input)
	return out, req.Send()
}

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

const opDeleteKnowledgeBase = "DeleteKnowledgeBase"

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

	if input == nil {
		input = &DeleteKnowledgeBaseInput{}
	}

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

// DeleteKnowledgeBase API operation for Amazon Q Connect.
//
// Deletes the knowledge base.
//
// When you use this API to delete an external knowledge base such as Salesforce
// or ServiceNow, you must also delete the Amazon AppIntegrations (https://docs.aws.amazon.com/appintegrations/latest/APIReference/Welcome.html)
// DataIntegration. This is because you can't reuse the DataIntegration after
// it's been associated with an external knowledge base. However, you can delete
// and recreate it. See DeleteDataIntegration (https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_DeleteDataIntegration.html)
// and CreateDataIntegration (https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_CreateDataIntegration.html)
// in the Amazon AppIntegrations API Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteKnowledgeBase for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteKnowledgeBase
func (c *QConnect) DeleteKnowledgeBase(input *DeleteKnowledgeBaseInput) (*DeleteKnowledgeBaseOutput, error) {
	req, out := c.DeleteKnowledgeBaseRequest(input)
	return out, req.Send()
}

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

const opDeleteQuickResponse = "DeleteQuickResponse"

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

	if input == nil {
		input = &DeleteQuickResponseInput{}
	}

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

// DeleteQuickResponse API operation for Amazon Q Connect.
//
// Deletes a quick response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation DeleteQuickResponse for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/DeleteQuickResponse
func (c *QConnect) DeleteQuickResponse(input *DeleteQuickResponseInput) (*DeleteQuickResponseOutput, error) {
	req, out := c.DeleteQuickResponseRequest(input)
	return out, req.Send()
}

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

const opGetAssistant = "GetAssistant"

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

	if input == nil {
		input = &GetAssistantInput{}
	}

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

// GetAssistant API operation for Amazon Q Connect.
//
// Retrieves information about an assistant.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetAssistant for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetAssistant
func (c *QConnect) GetAssistant(input *GetAssistantInput) (*GetAssistantOutput, error) {
	req, out := c.GetAssistantRequest(input)
	return out, req.Send()
}

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

const opGetAssistantAssociation = "GetAssistantAssociation"

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

	if input == nil {
		input = &GetAssistantAssociationInput{}
	}

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

// GetAssistantAssociation API operation for Amazon Q Connect.
//
// Retrieves information about an assistant association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetAssistantAssociation for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetAssistantAssociation
func (c *QConnect) GetAssistantAssociation(input *GetAssistantAssociationInput) (*GetAssistantAssociationOutput, error) {
	req, out := c.GetAssistantAssociationRequest(input)
	return out, req.Send()
}

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

const opGetContent = "GetContent"

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

	if input == nil {
		input = &GetContentInput{}
	}

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

// GetContent API operation for Amazon Q Connect.
//
// Retrieves content, including a pre-signed URL to download the content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetContent for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetContent
func (c *QConnect) GetContent(input *GetContentInput) (*GetContentOutput, error) {
	req, out := c.GetContentRequest(input)
	return out, req.Send()
}

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

const opGetContentSummary = "GetContentSummary"

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

	if input == nil {
		input = &GetContentSummaryInput{}
	}

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

// GetContentSummary API operation for Amazon Q Connect.
//
// Retrieves summary information about the content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetContentSummary for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetContentSummary
func (c *QConnect) GetContentSummary(input *GetContentSummaryInput) (*GetContentSummaryOutput, error) {
	req, out := c.GetContentSummaryRequest(input)
	return out, req.Send()
}

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

const opGetImportJob = "GetImportJob"

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

	if input == nil {
		input = &GetImportJobInput{}
	}

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

// GetImportJob API operation for Amazon Q Connect.
//
// Retrieves the started import job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetImportJob for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetImportJob
func (c *QConnect) GetImportJob(input *GetImportJobInput) (*GetImportJobOutput, error) {
	req, out := c.GetImportJobRequest(input)
	return out, req.Send()
}

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

const opGetKnowledgeBase = "GetKnowledgeBase"

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

	if input == nil {
		input = &GetKnowledgeBaseInput{}
	}

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

// GetKnowledgeBase API operation for Amazon Q Connect.
//
// Retrieves information about the knowledge base.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetKnowledgeBase for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetKnowledgeBase
func (c *QConnect) GetKnowledgeBase(input *GetKnowledgeBaseInput) (*GetKnowledgeBaseOutput, error) {
	req, out := c.GetKnowledgeBaseRequest(input)
	return out, req.Send()
}

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

const opGetQuickResponse = "GetQuickResponse"

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

	if input == nil {
		input = &GetQuickResponseInput{}
	}

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

// GetQuickResponse API operation for Amazon Q Connect.
//
// Retrieves the quick response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetQuickResponse for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetQuickResponse
func (c *QConnect) GetQuickResponse(input *GetQuickResponseInput) (*GetQuickResponseOutput, error) {
	req, out := c.GetQuickResponseRequest(input)
	return out, req.Send()
}

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

const opGetRecommendations = "GetRecommendations"

// GetRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetRecommendations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetRecommendations for more information on using the GetRecommendations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetRecommendationsRequest method.
//	req, resp := client.GetRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetRecommendations
//
// Deprecated: GetRecommendations API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) GetRecommendationsRequest(input *GetRecommendationsInput) (req *request.Request, output *GetRecommendationsOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, GetRecommendations, has been deprecated")
	}
	op := &request.Operation{
		Name:       opGetRecommendations,
		HTTPMethod: "GET",
		HTTPPath:   "/assistants/{assistantId}/sessions/{sessionId}/recommendations",
	}

	if input == nil {
		input = &GetRecommendationsInput{}
	}

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

// GetRecommendations API operation for Amazon Q Connect.
//
// Retrieves recommendations for the specified session. To avoid retrieving
// the same recommendations in subsequent calls, use NotifyRecommendationsReceived
// (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_NotifyRecommendationsReceived.html).
// This API supports long-polling behavior with the waitTimeSeconds parameter.
// Short poll is the default behavior and only returns recommendations already
// available. To perform a manual query against an assistant, use QueryAssistant
// (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_QueryAssistant.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 Amazon Q Connect's
// API operation GetRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetRecommendations
//
// Deprecated: GetRecommendations API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) GetRecommendations(input *GetRecommendationsInput) (*GetRecommendationsOutput, error) {
	req, out := c.GetRecommendationsRequest(input)
	return out, req.Send()
}

// GetRecommendationsWithContext is the same as GetRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetRecommendations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
//
// Deprecated: GetRecommendations API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) GetRecommendationsWithContext(ctx aws.Context, input *GetRecommendationsInput, opts ...request.Option) (*GetRecommendationsOutput, error) {
	req, out := c.GetRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetSession = "GetSession"

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

	if input == nil {
		input = &GetSessionInput{}
	}

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

// GetSession API operation for Amazon Q Connect.
//
// Retrieves information for a specified session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation GetSession for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/GetSession
func (c *QConnect) GetSession(input *GetSessionInput) (*GetSessionOutput, error) {
	req, out := c.GetSessionRequest(input)
	return out, req.Send()
}

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

const opListAssistantAssociations = "ListAssistantAssociations"

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

	if input == nil {
		input = &ListAssistantAssociationsInput{}
	}

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

// ListAssistantAssociations API operation for Amazon Q Connect.
//
// Lists information about assistant associations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListAssistantAssociations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListAssistantAssociations
func (c *QConnect) ListAssistantAssociations(input *ListAssistantAssociationsInput) (*ListAssistantAssociationsOutput, error) {
	req, out := c.ListAssistantAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssistants = "ListAssistants"

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

	if input == nil {
		input = &ListAssistantsInput{}
	}

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

// ListAssistants API operation for Amazon Q Connect.
//
// Lists information about assistants.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListAssistants for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListAssistants
func (c *QConnect) ListAssistants(input *ListAssistantsInput) (*ListAssistantsOutput, error) {
	req, out := c.ListAssistantsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContents = "ListContents"

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

	if input == nil {
		input = &ListContentsInput{}
	}

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

// ListContents API operation for Amazon Q Connect.
//
// Lists the content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListContents for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListContents
func (c *QConnect) ListContents(input *ListContentsInput) (*ListContentsOutput, error) {
	req, out := c.ListContentsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImportJobs = "ListImportJobs"

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

	if input == nil {
		input = &ListImportJobsInput{}
	}

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

// ListImportJobs API operation for Amazon Q Connect.
//
// Lists information about import jobs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListImportJobs for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListImportJobs
func (c *QConnect) ListImportJobs(input *ListImportJobsInput) (*ListImportJobsOutput, error) {
	req, out := c.ListImportJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListKnowledgeBases = "ListKnowledgeBases"

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

	if input == nil {
		input = &ListKnowledgeBasesInput{}
	}

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

// ListKnowledgeBases API operation for Amazon Q Connect.
//
// Lists the knowledge bases.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListKnowledgeBases for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListKnowledgeBases
func (c *QConnect) ListKnowledgeBases(input *ListKnowledgeBasesInput) (*ListKnowledgeBasesOutput, error) {
	req, out := c.ListKnowledgeBasesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListQuickResponses = "ListQuickResponses"

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

	if input == nil {
		input = &ListQuickResponsesInput{}
	}

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

// ListQuickResponses API operation for Amazon Q Connect.
//
// Lists information about quick response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListQuickResponses for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListQuickResponses
func (c *QConnect) ListQuickResponses(input *ListQuickResponsesInput) (*ListQuickResponsesOutput, error) {
	req, out := c.ListQuickResponsesRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListQuickResponsesOutput), !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/qconnect-2020-10-19/ListTagsForResource
func (c *QConnect) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "GET",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// ListTagsForResource API operation for Amazon Q Connect.
//
// Lists the tags for the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/ListTagsForResource
func (c *QConnect) 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 *QConnect) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opNotifyRecommendationsReceived = "NotifyRecommendationsReceived"

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

	if input == nil {
		input = &NotifyRecommendationsReceivedInput{}
	}

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

// NotifyRecommendationsReceived API operation for Amazon Q Connect.
//
// Removes the specified recommendations from the specified assistant's queue
// of newly available recommendations. You can use this API in conjunction with
// GetRecommendations (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_GetRecommendations.html)
// and a waitTimeSeconds input for long-polling behavior and avoiding duplicate
// recommendations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation NotifyRecommendationsReceived for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/NotifyRecommendationsReceived
func (c *QConnect) NotifyRecommendationsReceived(input *NotifyRecommendationsReceivedInput) (*NotifyRecommendationsReceivedOutput, error) {
	req, out := c.NotifyRecommendationsReceivedRequest(input)
	return out, req.Send()
}

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

const opPutFeedback = "PutFeedback"

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

	if input == nil {
		input = &PutFeedbackInput{}
	}

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

// PutFeedback API operation for Amazon Q Connect.
//
// Provides feedback against the specified assistant for the specified target.
// This API only supports generative targets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation PutFeedback for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/PutFeedback
func (c *QConnect) PutFeedback(input *PutFeedbackInput) (*PutFeedbackOutput, error) {
	req, out := c.PutFeedbackRequest(input)
	return out, req.Send()
}

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

const opQueryAssistant = "QueryAssistant"

// QueryAssistantRequest generates a "aws/request.Request" representing the
// client's request for the QueryAssistant operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See QueryAssistant for more information on using the QueryAssistant
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the QueryAssistantRequest method.
//	req, resp := client.QueryAssistantRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/QueryAssistant
//
// Deprecated: QueryAssistant API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) QueryAssistantRequest(input *QueryAssistantInput) (req *request.Request, output *QueryAssistantOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, QueryAssistant, has been deprecated")
	}
	op := &request.Operation{
		Name:       opQueryAssistant,
		HTTPMethod: "POST",
		HTTPPath:   "/assistants/{assistantId}/query",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &QueryAssistantInput{}
	}

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

// QueryAssistant API operation for Amazon Q Connect.
//
// Performs a manual search against the specified assistant. To retrieve recommendations
// for an assistant, use GetRecommendations (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_GetRecommendations.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 Amazon Q Connect's
// API operation QueryAssistant for usage and error information.
//
// Returned Error Types:
//
//   - RequestTimeoutException
//     The request reached the service more than 15 minutes after the date stamp
//     on the request or more than 15 minutes after the request expiration date
//     (such as for pre-signed URLs), or the date stamp on the request is more than
//     15 minutes in the future.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/QueryAssistant
//
// Deprecated: QueryAssistant API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) QueryAssistant(input *QueryAssistantInput) (*QueryAssistantOutput, error) {
	req, out := c.QueryAssistantRequest(input)
	return out, req.Send()
}

// QueryAssistantWithContext is the same as QueryAssistant with the addition of
// the ability to pass a context and additional request options.
//
// See QueryAssistant for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
//
// Deprecated: QueryAssistant API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) QueryAssistantWithContext(ctx aws.Context, input *QueryAssistantInput, opts ...request.Option) (*QueryAssistantOutput, error) {
	req, out := c.QueryAssistantRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// QueryAssistantPages iterates over the pages of a QueryAssistant operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See QueryAssistant 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 QueryAssistant operation.
//	pageNum := 0
//	err := client.QueryAssistantPages(params,
//	    func(page *qconnect.QueryAssistantOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
//
// Deprecated: QueryAssistant API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) QueryAssistantPages(input *QueryAssistantInput, fn func(*QueryAssistantOutput, bool) bool) error {
	return c.QueryAssistantPagesWithContext(aws.BackgroundContext(), input, fn)
}

// QueryAssistantPagesWithContext same as QueryAssistantPages 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.
//
// Deprecated: QueryAssistant API will be discontinued starting June 1, 2024. To receive generative responses after March 1, 2024 you will need to create a new Assistant in the Connect console and integrate the Amazon Q in Connect JavaScript library (amazon-q-connectjs) into your applications.
func (c *QConnect) QueryAssistantPagesWithContext(ctx aws.Context, input *QueryAssistantInput, fn func(*QueryAssistantOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *QueryAssistantInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.QueryAssistantRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opRemoveKnowledgeBaseTemplateUri = "RemoveKnowledgeBaseTemplateUri"

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

	if input == nil {
		input = &RemoveKnowledgeBaseTemplateUriInput{}
	}

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

// RemoveKnowledgeBaseTemplateUri API operation for Amazon Q Connect.
//
// Removes a URI template from a knowledge base.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation RemoveKnowledgeBaseTemplateUri for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/RemoveKnowledgeBaseTemplateUri
func (c *QConnect) RemoveKnowledgeBaseTemplateUri(input *RemoveKnowledgeBaseTemplateUriInput) (*RemoveKnowledgeBaseTemplateUriOutput, error) {
	req, out := c.RemoveKnowledgeBaseTemplateUriRequest(input)
	return out, req.Send()
}

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

const opSearchContent = "SearchContent"

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

	if input == nil {
		input = &SearchContentInput{}
	}

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

// SearchContent API operation for Amazon Q Connect.
//
// Searches for content in a specified knowledge base. Can be used to get a
// specific content resource by its name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation SearchContent for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/SearchContent
func (c *QConnect) SearchContent(input *SearchContentInput) (*SearchContentOutput, error) {
	req, out := c.SearchContentRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchQuickResponses = "SearchQuickResponses"

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

	if input == nil {
		input = &SearchQuickResponsesInput{}
	}

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

// SearchQuickResponses API operation for Amazon Q Connect.
//
// Searches existing Amazon Q quick responses in an Amazon Q knowledge base.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation SearchQuickResponses for usage and error information.
//
// Returned Error Types:
//
//   - RequestTimeoutException
//     The request reached the service more than 15 minutes after the date stamp
//     on the request or more than 15 minutes after the request expiration date
//     (such as for pre-signed URLs), or the date stamp on the request is more than
//     15 minutes in the future.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/SearchQuickResponses
func (c *QConnect) SearchQuickResponses(input *SearchQuickResponsesInput) (*SearchQuickResponsesOutput, error) {
	req, out := c.SearchQuickResponsesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchSessions = "SearchSessions"

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

	if input == nil {
		input = &SearchSessionsInput{}
	}

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

// SearchSessions API operation for Amazon Q Connect.
//
// Searches for sessions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation SearchSessions for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/SearchSessions
func (c *QConnect) SearchSessions(input *SearchSessionsInput) (*SearchSessionsOutput, error) {
	req, out := c.SearchSessionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opStartContentUpload = "StartContentUpload"

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

	if input == nil {
		input = &StartContentUploadInput{}
	}

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

// StartContentUpload API operation for Amazon Q Connect.
//
// Get a URL to upload content to a knowledge base. To upload content, first
// make a PUT request to the returned URL with your file, making sure to include
// the required headers. Then use CreateContent (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_CreateContent.html)
// to finalize the content creation process or UpdateContent (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_UpdateContent.html)
// to modify an existing resource. You can only upload content to a knowledge
// base of type CUSTOM.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation StartContentUpload for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/StartContentUpload
func (c *QConnect) StartContentUpload(input *StartContentUploadInput) (*StartContentUploadOutput, error) {
	req, out := c.StartContentUploadRequest(input)
	return out, req.Send()
}

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

const opStartImportJob = "StartImportJob"

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

	if input == nil {
		input = &StartImportJobInput{}
	}

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

// StartImportJob API operation for Amazon Q Connect.
//
// Start an asynchronous job to import Amazon Q resources from an uploaded source
// file. Before calling this API, use StartContentUpload (https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html)
// to upload an asset that contains the resource data.
//
//   - For importing Amazon Q quick responses, you need to upload a csv file
//     including the quick responses. For information about how to format the
//     csv file for importing quick responses, see Import quick responses (https://docs.aws.amazon.com/console/connect/quick-responses/add-data).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation StartImportJob for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - ServiceQuotaExceededException
//     You've exceeded your service quota. To perform the requested action, remove
//     some of the relevant resources, or use service quotas to request a service
//     quota increase.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/StartImportJob
func (c *QConnect) StartImportJob(input *StartImportJobInput) (*StartImportJobOutput, error) {
	req, out := c.StartImportJobRequest(input)
	return out, req.Send()
}

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

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

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

// TagResource API operation for Amazon Q Connect.
//
// Adds the specified tags to the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - TooManyTagsException
//     Amazon Q in Connect throws this exception if you have too many tags in your
//     tag set.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/TagResource
func (c *QConnect) 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 *QConnect) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUntagResource = "UntagResource"

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

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

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

// UntagResource API operation for Amazon Q Connect.
//
// Removes the specified tags from the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/UntagResource
func (c *QConnect) 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 *QConnect) 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 opUpdateContent = "UpdateContent"

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

	if input == nil {
		input = &UpdateContentInput{}
	}

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

// UpdateContent API operation for Amazon Q Connect.
//
// Updates information about the content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation UpdateContent for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - PreconditionFailedException
//     The provided revisionId does not match, indicating the content has been modified
//     since it was last read.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/UpdateContent
func (c *QConnect) UpdateContent(input *UpdateContentInput) (*UpdateContentOutput, error) {
	req, out := c.UpdateContentRequest(input)
	return out, req.Send()
}

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

const opUpdateKnowledgeBaseTemplateUri = "UpdateKnowledgeBaseTemplateUri"

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

	if input == nil {
		input = &UpdateKnowledgeBaseTemplateUriInput{}
	}

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

// UpdateKnowledgeBaseTemplateUri API operation for Amazon Q Connect.
//
// Updates the template URI of a knowledge base. This is only supported for
// knowledge bases of type EXTERNAL. Include a single variable in ${variable}
// format; this interpolated by Amazon Q using ingested content. For example,
// if you ingest a Salesforce article, it has an Id value, and you can set the
// template URI to https://myInstanceName.lightning.force.com/lightning/r/Knowledge__kav/*${Id}*/view.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation UpdateKnowledgeBaseTemplateUri for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/UpdateKnowledgeBaseTemplateUri
func (c *QConnect) UpdateKnowledgeBaseTemplateUri(input *UpdateKnowledgeBaseTemplateUriInput) (*UpdateKnowledgeBaseTemplateUriOutput, error) {
	req, out := c.UpdateKnowledgeBaseTemplateUriRequest(input)
	return out, req.Send()
}

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

const opUpdateQuickResponse = "UpdateQuickResponse"

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

	if input == nil {
		input = &UpdateQuickResponseInput{}
	}

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

// UpdateQuickResponse API operation for Amazon Q Connect.
//
// Updates an existing Amazon Q quick response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Q Connect's
// API operation UpdateQuickResponse for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     The request could not be processed because of conflict in the current state
//     of the resource. For example, if you're using a Create API (such as CreateAssistant)
//     that accepts name, a conflicting resource (usually with the same name) is
//     being created or mutated.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by a service.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - PreconditionFailedException
//     The provided revisionId does not match, indicating the content has been modified
//     since it was last read.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/qconnect-2020-10-19/UpdateQuickResponse
func (c *QConnect) UpdateQuickResponse(input *UpdateQuickResponseInput) (*UpdateQuickResponseOutput, error) {
	req, out := c.UpdateQuickResponseRequest(input)
	return out, req.Send()
}

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

// Configuration information for Amazon AppIntegrations to automatically ingest
// content.
type AppIntegrationsConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the AppIntegrations DataIntegration to
	// use for ingesting content.
	//
	//    * For Salesforce (https://developer.salesforce.com/docs/atlas.en-us.knowledge_dev.meta/knowledge_dev/sforce_api_objects_knowledge__kav.htm),
	//    your AppIntegrations DataIntegration must have an ObjectConfiguration
	//    if objectFields is not provided, including at least Id, ArticleNumber,
	//    VersionNumber, Title, PublishStatus, and IsDeleted as source fields.
	//
	//    * For ServiceNow (https://developer.servicenow.com/dev.do#!/reference/api/rome/rest/knowledge-management-api),
	//    your AppIntegrations DataIntegration must have an ObjectConfiguration
	//    if objectFields is not provided, including at least number, short_description,
	//    sys_mod_count, workflow_state, and active as source fields.
	//
	//    * For Zendesk (https://developer.zendesk.com/api-reference/help_center/help-center-api/articles/),
	//    your AppIntegrations DataIntegration must have an ObjectConfiguration
	//    if objectFields is not provided, including at least id, title, updated_at,
	//    and draft as source fields.
	//
	//    * For SharePoint (https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/sharepoint-net-server-csom-jsom-and-rest-api-index),
	//    your AppIntegrations DataIntegration must have a FileConfiguration, including
	//    only file extensions that are among docx, pdf, html, htm, and txt.
	//
	//    * For Amazon S3 (https://aws.amazon.com/s3/), the ObjectConfiguration
	//    and FileConfiguration of your AppIntegrations DataIntegration must be
	//    null. The SourceURI of your DataIntegration must use the following format:
	//    s3://your_s3_bucket_name. The bucket policy of the corresponding S3 bucket
	//    must allow the Amazon Web Services principal app-integrations.amazonaws.com
	//    to perform s3:ListBucket, s3:GetObject, and s3:GetBucketLocation against
	//    the bucket.
	//
	// AppIntegrationArn is a required field
	AppIntegrationArn *string `locationName:"appIntegrationArn" min:"1" type:"string" required:"true"`

	// The fields from the source that are made available to your agents in Amazon
	// Q. Optional if ObjectConfiguration is included in the provided DataIntegration.
	//
	//    * For Salesforce (https://developer.salesforce.com/docs/atlas.en-us.knowledge_dev.meta/knowledge_dev/sforce_api_objects_knowledge__kav.htm),
	//    you must include at least Id, ArticleNumber, VersionNumber, Title, PublishStatus,
	//    and IsDeleted.
	//
	//    * For ServiceNow (https://developer.servicenow.com/dev.do#!/reference/api/rome/rest/knowledge-management-api),
	//    you must include at least number, short_description, sys_mod_count, workflow_state,
	//    and active.
	//
	//    * For Zendesk (https://developer.zendesk.com/api-reference/help_center/help-center-api/articles/),
	//    you must include at least id, title, updated_at, and draft.
	//
	// Make sure to include additional fields. These fields are indexed and used
	// to source recommendations.
	ObjectFields []*string `locationName:"objectFields" 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 AppIntegrationsConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAppIntegrationArn sets the AppIntegrationArn field's value.
func (s *AppIntegrationsConfiguration) SetAppIntegrationArn(v string) *AppIntegrationsConfiguration {
	s.AppIntegrationArn = &v
	return s
}

// SetObjectFields sets the ObjectFields field's value.
func (s *AppIntegrationsConfiguration) SetObjectFields(v []*string) *AppIntegrationsConfiguration {
	s.ObjectFields = v
	return s
}

// Information about the assistant association.
type AssistantAssociationData struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the assistant association.
	//
	// AssistantAssociationArn is a required field
	AssistantAssociationArn *string `locationName:"assistantAssociationArn" type:"string" required:"true"`

	// The identifier of the assistant association.
	//
	// AssistantAssociationId is a required field
	AssistantAssociationId *string `locationName:"assistantAssociationId" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// A union type that currently has a single argument, the knowledge base ID.
	//
	// AssociationData is a required field
	AssociationData *AssistantAssociationOutputData `locationName:"associationData" type:"structure" required:"true"`

	// The type of association.
	//
	// AssociationType is a required field
	AssociationType *string `locationName:"associationType" type:"string" required:"true" enum:"AssociationType"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *AssistantAssociationData) SetAssistantArn(v string) *AssistantAssociationData {
	s.AssistantArn = &v
	return s
}

// SetAssistantAssociationArn sets the AssistantAssociationArn field's value.
func (s *AssistantAssociationData) SetAssistantAssociationArn(v string) *AssistantAssociationData {
	s.AssistantAssociationArn = &v
	return s
}

// SetAssistantAssociationId sets the AssistantAssociationId field's value.
func (s *AssistantAssociationData) SetAssistantAssociationId(v string) *AssistantAssociationData {
	s.AssistantAssociationId = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *AssistantAssociationData) SetAssistantId(v string) *AssistantAssociationData {
	s.AssistantId = &v
	return s
}

// SetAssociationData sets the AssociationData field's value.
func (s *AssistantAssociationData) SetAssociationData(v *AssistantAssociationOutputData) *AssistantAssociationData {
	s.AssociationData = v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *AssistantAssociationData) SetAssociationType(v string) *AssistantAssociationData {
	s.AssociationType = &v
	return s
}

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

// The data that is input into Amazon Q as a result of the assistant association.
type AssistantAssociationInputData struct {
	_ struct{} `type:"structure"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" 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 AssistantAssociationInputData) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *AssistantAssociationInputData) SetKnowledgeBaseId(v string) *AssistantAssociationInputData {
	s.KnowledgeBaseId = &v
	return s
}

// The data that is output as a result of the assistant association.
type AssistantAssociationOutputData struct {
	_ struct{} `type:"structure"`

	// The knowledge base where output data is sent.
	KnowledgeBaseAssociation *KnowledgeBaseAssociationData `locationName:"knowledgeBaseAssociation" 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 AssistantAssociationOutputData) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBaseAssociation sets the KnowledgeBaseAssociation field's value.
func (s *AssistantAssociationOutputData) SetKnowledgeBaseAssociation(v *KnowledgeBaseAssociationData) *AssistantAssociationOutputData {
	s.KnowledgeBaseAssociation = v
	return s
}

// Summary information about the assistant association.
type AssistantAssociationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the assistant association.
	//
	// AssistantAssociationArn is a required field
	AssistantAssociationArn *string `locationName:"assistantAssociationArn" type:"string" required:"true"`

	// The identifier of the assistant association.
	//
	// AssistantAssociationId is a required field
	AssistantAssociationId *string `locationName:"assistantAssociationId" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// The association data.
	//
	// AssociationData is a required field
	AssociationData *AssistantAssociationOutputData `locationName:"associationData" type:"structure" required:"true"`

	// The type of association.
	//
	// AssociationType is a required field
	AssociationType *string `locationName:"associationType" type:"string" required:"true" enum:"AssociationType"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *AssistantAssociationSummary) SetAssistantArn(v string) *AssistantAssociationSummary {
	s.AssistantArn = &v
	return s
}

// SetAssistantAssociationArn sets the AssistantAssociationArn field's value.
func (s *AssistantAssociationSummary) SetAssistantAssociationArn(v string) *AssistantAssociationSummary {
	s.AssistantAssociationArn = &v
	return s
}

// SetAssistantAssociationId sets the AssistantAssociationId field's value.
func (s *AssistantAssociationSummary) SetAssistantAssociationId(v string) *AssistantAssociationSummary {
	s.AssistantAssociationId = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *AssistantAssociationSummary) SetAssistantId(v string) *AssistantAssociationSummary {
	s.AssistantId = &v
	return s
}

// SetAssociationData sets the AssociationData field's value.
func (s *AssistantAssociationSummary) SetAssociationData(v *AssistantAssociationOutputData) *AssistantAssociationSummary {
	s.AssociationData = v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *AssistantAssociationSummary) SetAssociationType(v string) *AssistantAssociationSummary {
	s.AssociationType = &v
	return s
}

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

// The capability configuration for an Amazon Q assistant.
type AssistantCapabilityConfiguration struct {
	_ struct{} `type:"structure"`

	// The type of Amazon Q assistant capability.
	Type *string `locationName:"type" type:"string" enum:"AssistantCapabilityType"`
}

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

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

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

// The assistant data.
type AssistantData struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// The configuration information for the Amazon Q assistant capability.
	CapabilityConfiguration *AssistantCapabilityConfiguration `locationName:"capabilityConfiguration" type:"structure"`

	// The description.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The configuration information for the Amazon Q assistant integration.
	IntegrationConfiguration *AssistantIntegrationConfiguration `locationName:"integrationConfiguration" type:"structure"`

	// The name.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The configuration information for the customer managed key used for encryption.
	//
	// This KMS key must have a policy that allows kms:CreateGrant, kms:DescribeKey,
	// kms:Decrypt, and kms:GenerateDataKey* permissions to the IAM identity using
	// the key to invoke Amazon Q. To use Amazon Q with chat, the key policy must
	// also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey permissions
	// to the connect.amazonaws.com service principal.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// The status of the assistant.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"AssistantStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The type of assistant.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"AssistantType"`
}

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

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *AssistantData) SetAssistantArn(v string) *AssistantData {
	s.AssistantArn = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *AssistantData) SetAssistantId(v string) *AssistantData {
	s.AssistantId = &v
	return s
}

// SetCapabilityConfiguration sets the CapabilityConfiguration field's value.
func (s *AssistantData) SetCapabilityConfiguration(v *AssistantCapabilityConfiguration) *AssistantData {
	s.CapabilityConfiguration = v
	return s
}

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

// SetIntegrationConfiguration sets the IntegrationConfiguration field's value.
func (s *AssistantData) SetIntegrationConfiguration(v *AssistantIntegrationConfiguration) *AssistantData {
	s.IntegrationConfiguration = v
	return s
}

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

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *AssistantData) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *AssistantData {
	s.ServerSideEncryptionConfiguration = v
	return s
}

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

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

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

// The configuration information for the Amazon Q assistant integration.
type AssistantIntegrationConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the integrated Amazon SNS topic used for
	// streaming chat messages.
	TopicIntegrationArn *string `locationName:"topicIntegrationArn" 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 AssistantIntegrationConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// SetTopicIntegrationArn sets the TopicIntegrationArn field's value.
func (s *AssistantIntegrationConfiguration) SetTopicIntegrationArn(v string) *AssistantIntegrationConfiguration {
	s.TopicIntegrationArn = &v
	return s
}

// Summary information about the assistant.
type AssistantSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// The configuration information for the Amazon Q assistant capability.
	CapabilityConfiguration *AssistantCapabilityConfiguration `locationName:"capabilityConfiguration" type:"structure"`

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

	// The configuration information for the Amazon Q assistant integration.
	IntegrationConfiguration *AssistantIntegrationConfiguration `locationName:"integrationConfiguration" type:"structure"`

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

	// The configuration information for the customer managed key used for encryption.
	//
	// This KMS key must have a policy that allows kms:CreateGrant, kms:DescribeKey,
	// kms:Decrypt, and kms:GenerateDataKey* permissions to the IAM identity using
	// the key to invoke Amazon Q. To use Amazon Q with chat, the key policy must
	// also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey permissions
	// to the connect.amazonaws.com service principal.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// The status of the assistant.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"AssistantStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The type of the assistant.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"AssistantType"`
}

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

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *AssistantSummary) SetAssistantArn(v string) *AssistantSummary {
	s.AssistantArn = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *AssistantSummary) SetAssistantId(v string) *AssistantSummary {
	s.AssistantId = &v
	return s
}

// SetCapabilityConfiguration sets the CapabilityConfiguration field's value.
func (s *AssistantSummary) SetCapabilityConfiguration(v *AssistantCapabilityConfiguration) *AssistantSummary {
	s.CapabilityConfiguration = v
	return s
}

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

// SetIntegrationConfiguration sets the IntegrationConfiguration field's value.
func (s *AssistantSummary) SetIntegrationConfiguration(v *AssistantIntegrationConfiguration) *AssistantSummary {
	s.IntegrationConfiguration = v
	return s
}

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

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *AssistantSummary) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *AssistantSummary {
	s.ServerSideEncryptionConfiguration = v
	return s
}

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

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

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

// The configuration information of the external data source.
type Configuration struct {
	_ struct{} `type:"structure"`

	// The configuration information of the Amazon Connect data source.
	ConnectConfiguration *ConnectConfiguration `locationName:"connectConfiguration" 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 Configuration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectConfiguration sets the ConnectConfiguration field's value.
func (s *Configuration) SetConnectConfiguration(v *ConnectConfiguration) *Configuration {
	s.ConnectConfiguration = v
	return s
}

// The request could not be processed because of conflict in the current state
// of the resource. For example, if you're using a Create API (such as CreateAssistant)
// that accepts name, a conflicting resource (usually with the same name) is
// being created or mutated.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// The configuration information of the Amazon Connect data source.
type ConnectConfiguration struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	InstanceId *string `locationName:"instanceId" 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 ConnectConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInstanceId sets the InstanceId field's value.
func (s *ConnectConfiguration) SetInstanceId(v string) *ConnectConfiguration {
	s.InstanceId = &v
	return s
}

// Information about the content.
type ContentData struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the content.
	//
	// ContentArn is a required field
	ContentArn *string `locationName:"contentArn" type:"string" required:"true"`

	// The identifier of the content.
	//
	// ContentId is a required field
	ContentId *string `locationName:"contentId" type:"string" required:"true"`

	// The media type of the content.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The URI of the content.
	LinkOutUri *string `locationName:"linkOutUri" min:"1" type:"string"`

	// A key/value map to store attributes without affecting tagging or recommendations.
	// For example, when synchronizing data between an external system and Amazon
	// Q, you can store an external version identifier as metadata to utilize for
	// determining drift.
	//
	// Metadata is a required field
	Metadata map[string]*string `locationName:"metadata" type:"map" required:"true"`

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

	// The identifier of the content revision.
	//
	// RevisionId is a required field
	RevisionId *string `locationName:"revisionId" min:"1" type:"string" required:"true"`

	// The status of the content.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ContentStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The title of the content.
	//
	// Title is a required field
	Title *string `locationName:"title" min:"1" type:"string" required:"true"`

	// The URL of the content.
	//
	// Url is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ContentData's
	// String and GoString methods.
	//
	// Url is a required field
	Url *string `locationName:"url" min:"1" type:"string" required:"true" sensitive:"true"`

	// The expiration time of the URL as an epoch timestamp.
	//
	// UrlExpiry is a required field
	UrlExpiry *time.Time `locationName:"urlExpiry" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`
}

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

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

// SetContentArn sets the ContentArn field's value.
func (s *ContentData) SetContentArn(v string) *ContentData {
	s.ContentArn = &v
	return s
}

// SetContentId sets the ContentId field's value.
func (s *ContentData) SetContentId(v string) *ContentData {
	s.ContentId = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *ContentData) SetContentType(v string) *ContentData {
	s.ContentType = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *ContentData) SetKnowledgeBaseArn(v string) *ContentData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ContentData) SetKnowledgeBaseId(v string) *ContentData {
	s.KnowledgeBaseId = &v
	return s
}

// SetLinkOutUri sets the LinkOutUri field's value.
func (s *ContentData) SetLinkOutUri(v string) *ContentData {
	s.LinkOutUri = &v
	return s
}

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

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

// SetRevisionId sets the RevisionId field's value.
func (s *ContentData) SetRevisionId(v string) *ContentData {
	s.RevisionId = &v
	return s
}

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

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

// SetTitle sets the Title field's value.
func (s *ContentData) SetTitle(v string) *ContentData {
	s.Title = &v
	return s
}

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

// SetUrlExpiry sets the UrlExpiry field's value.
func (s *ContentData) SetUrlExpiry(v time.Time) *ContentData {
	s.UrlExpiry = &v
	return s
}

// Details about the content data.
type ContentDataDetails struct {
	_ struct{} `type:"structure"`

	// Details about the content ranking data.
	//
	// RankingData is a required field
	RankingData *RankingData `locationName:"rankingData" type:"structure" required:"true"`

	// Details about the content text data.
	//
	// TextData is a required field
	TextData *TextData `locationName:"textData" 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 ContentDataDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetRankingData sets the RankingData field's value.
func (s *ContentDataDetails) SetRankingData(v *RankingData) *ContentDataDetails {
	s.RankingData = v
	return s
}

// SetTextData sets the TextData field's value.
func (s *ContentDataDetails) SetTextData(v *TextData) *ContentDataDetails {
	s.TextData = v
	return s
}

// Information about the feedback.
type ContentFeedbackData struct {
	_ struct{} `type:"structure"`

	// Information about the feedback for a generative target type.
	GenerativeContentFeedbackData *GenerativeContentFeedbackData `locationName:"generativeContentFeedbackData" 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 ContentFeedbackData) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetGenerativeContentFeedbackData sets the GenerativeContentFeedbackData field's value.
func (s *ContentFeedbackData) SetGenerativeContentFeedbackData(v *GenerativeContentFeedbackData) *ContentFeedbackData {
	s.GenerativeContentFeedbackData = v
	return s
}

// Reference information about the content.
type ContentReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the content.
	ContentArn *string `locationName:"contentArn" type:"string"`

	// The identifier of the content.
	ContentId *string `locationName:"contentId" type:"string"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" 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 ContentReference) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentArn sets the ContentArn field's value.
func (s *ContentReference) SetContentArn(v string) *ContentReference {
	s.ContentArn = &v
	return s
}

// SetContentId sets the ContentId field's value.
func (s *ContentReference) SetContentId(v string) *ContentReference {
	s.ContentId = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *ContentReference) SetKnowledgeBaseArn(v string) *ContentReference {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ContentReference) SetKnowledgeBaseId(v string) *ContentReference {
	s.KnowledgeBaseId = &v
	return s
}

// Summary information about the content.
type ContentSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the content.
	//
	// ContentArn is a required field
	ContentArn *string `locationName:"contentArn" type:"string" required:"true"`

	// The identifier of the content.
	//
	// ContentId is a required field
	ContentId *string `locationName:"contentId" type:"string" required:"true"`

	// The media type of the content.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// A key/value map to store attributes without affecting tagging or recommendations.
	// For example, when synchronizing data between an external system and Amazon
	// Q, you can store an external version identifier as metadata to utilize for
	// determining drift.
	//
	// Metadata is a required field
	Metadata map[string]*string `locationName:"metadata" type:"map" required:"true"`

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

	// The identifier of the revision of the content.
	//
	// RevisionId is a required field
	RevisionId *string `locationName:"revisionId" min:"1" type:"string" required:"true"`

	// The status of the content.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ContentStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The title of the content.
	//
	// Title is a required field
	Title *string `locationName:"title" 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 ContentSummary) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentArn sets the ContentArn field's value.
func (s *ContentSummary) SetContentArn(v string) *ContentSummary {
	s.ContentArn = &v
	return s
}

// SetContentId sets the ContentId field's value.
func (s *ContentSummary) SetContentId(v string) *ContentSummary {
	s.ContentId = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *ContentSummary) SetContentType(v string) *ContentSummary {
	s.ContentType = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *ContentSummary) SetKnowledgeBaseArn(v string) *ContentSummary {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ContentSummary) SetKnowledgeBaseId(v string) *ContentSummary {
	s.KnowledgeBaseId = &v
	return s
}

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

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

// SetRevisionId sets the RevisionId field's value.
func (s *ContentSummary) SetRevisionId(v string) *ContentSummary {
	s.RevisionId = &v
	return s
}

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

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

// SetTitle sets the Title field's value.
func (s *ContentSummary) SetTitle(v string) *ContentSummary {
	s.Title = &v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The identifier of the associated resource.
	//
	// Association is a required field
	Association *AssistantAssociationInputData `locationName:"association" type:"structure" required:"true"`

	// The type of association.
	//
	// AssociationType is a required field
	AssociationType *string `locationName:"associationType" type:"string" required:"true" enum:"AssociationType"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *CreateAssistantAssociationInput) SetAssistantId(v string) *CreateAssistantAssociationInput {
	s.AssistantId = &v
	return s
}

// SetAssociation sets the Association field's value.
func (s *CreateAssistantAssociationInput) SetAssociation(v *AssistantAssociationInputData) *CreateAssistantAssociationInput {
	s.Association = v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *CreateAssistantAssociationInput) SetAssociationType(v string) *CreateAssistantAssociationInput {
	s.AssociationType = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateAssistantAssociationInput) SetClientToken(v string) *CreateAssistantAssociationInput {
	s.ClientToken = &v
	return s
}

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

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

	// The assistant association.
	AssistantAssociation *AssistantAssociationData `locationName:"assistantAssociation" 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 CreateAssistantAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistantAssociation sets the AssistantAssociation field's value.
func (s *CreateAssistantAssociationOutput) SetAssistantAssociation(v *AssistantAssociationData) *CreateAssistantAssociationOutput {
	s.AssistantAssociation = v
	return s
}

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

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

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

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

	// The configuration information for the customer managed key used for encryption.
	//
	// The customer managed key must have a policy that allows kms:CreateGrant,
	// kms:DescribeKey, kms:Decrypt, and kms:GenerateDataKey* permissions to the
	// IAM identity using the key to invoke Amazon Q. To use Amazon Q with chat,
	// the key policy must also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey
	// permissions to the connect.amazonaws.com service principal.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The type of assistant.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"AssistantType"`
}

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

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

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateAssistantInput) SetClientToken(v string) *CreateAssistantInput {
	s.ClientToken = &v
	return s
}

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

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

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *CreateAssistantInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *CreateAssistantInput {
	s.ServerSideEncryptionConfiguration = v
	return s
}

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

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

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

	// Information about the assistant.
	Assistant *AssistantData `locationName:"assistant" 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 CreateAssistantOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistant sets the Assistant field's value.
func (s *CreateAssistantOutput) SetAssistant(v *AssistantData) *CreateAssistantOutput {
	s.Assistant = v
	return s
}

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

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// A key/value map to store attributes without affecting tagging or recommendations.
	// For example, when synchronizing data between an external system and Amazon
	// Q, you can store an external version identifier as metadata to utilize for
	// determining drift.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// The name of the content. Each piece of content in a knowledge base must have
	// a unique name. You can retrieve a piece of content using only its knowledge
	// base and its name with the SearchContent (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_SearchContent.html)
	// API.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The URI you want to use for the article. If the knowledge base has a templateUri,
	// setting this argument overrides it for this piece of content.
	OverrideLinkOutUri *string `locationName:"overrideLinkOutUri" min:"1" type:"string"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The title of the content. If not set, the title is equal to the name.
	Title *string `locationName:"title" min:"1" type:"string"`

	// A pointer to the uploaded asset. This value is returned by StartContentUpload
	// (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_StartContentUpload.html).
	//
	// UploadId is a required field
	UploadId *string `locationName:"uploadId" 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 CreateContentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateContentInput) SetClientToken(v string) *CreateContentInput {
	s.ClientToken = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *CreateContentInput) SetKnowledgeBaseId(v string) *CreateContentInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

// SetOverrideLinkOutUri sets the OverrideLinkOutUri field's value.
func (s *CreateContentInput) SetOverrideLinkOutUri(v string) *CreateContentInput {
	s.OverrideLinkOutUri = &v
	return s
}

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

// SetTitle sets the Title field's value.
func (s *CreateContentInput) SetTitle(v string) *CreateContentInput {
	s.Title = &v
	return s
}

// SetUploadId sets the UploadId field's value.
func (s *CreateContentInput) SetUploadId(v string) *CreateContentInput {
	s.UploadId = &v
	return s
}

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

	// The content.
	Content *ContentData `locationName:"content" 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 CreateContentOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContent sets the Content field's value.
func (s *CreateContentOutput) SetContent(v *ContentData) *CreateContentOutput {
	s.Content = v
	return s
}

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

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The type of knowledge base. Only CUSTOM knowledge bases allow you to upload
	// your own content. EXTERNAL knowledge bases support integrations with third-party
	// systems whose content is synchronized automatically.
	//
	// KnowledgeBaseType is a required field
	KnowledgeBaseType *string `locationName:"knowledgeBaseType" type:"string" required:"true" enum:"KnowledgeBaseType"`

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

	// Information about how to render the content.
	RenderingConfiguration *RenderingConfiguration `locationName:"renderingConfiguration" type:"structure"`

	// The configuration information for the customer managed key used for encryption.
	//
	// This KMS key must have a policy that allows kms:CreateGrant, kms:DescribeKey,
	// kms:Decrypt, and kms:GenerateDataKey* permissions to the IAM identity using
	// the key to invoke Amazon Q.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// The source of the knowledge base content. Only set this argument for EXTERNAL
	// knowledge bases.
	SourceConfiguration *SourceConfiguration `locationName:"sourceConfiguration" type:"structure"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateKnowledgeBaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateKnowledgeBaseInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KnowledgeBaseType == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseType"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.RenderingConfiguration != nil {
		if err := s.RenderingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RenderingConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ServerSideEncryptionConfiguration != nil {
		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceConfiguration != nil {
		if err := s.SourceConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SourceConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateKnowledgeBaseInput) SetClientToken(v string) *CreateKnowledgeBaseInput {
	s.ClientToken = &v
	return s
}

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

// SetKnowledgeBaseType sets the KnowledgeBaseType field's value.
func (s *CreateKnowledgeBaseInput) SetKnowledgeBaseType(v string) *CreateKnowledgeBaseInput {
	s.KnowledgeBaseType = &v
	return s
}

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

// SetRenderingConfiguration sets the RenderingConfiguration field's value.
func (s *CreateKnowledgeBaseInput) SetRenderingConfiguration(v *RenderingConfiguration) *CreateKnowledgeBaseInput {
	s.RenderingConfiguration = v
	return s
}

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *CreateKnowledgeBaseInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *CreateKnowledgeBaseInput {
	s.ServerSideEncryptionConfiguration = v
	return s
}

// SetSourceConfiguration sets the SourceConfiguration field's value.
func (s *CreateKnowledgeBaseInput) SetSourceConfiguration(v *SourceConfiguration) *CreateKnowledgeBaseInput {
	s.SourceConfiguration = v
	return s
}

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

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

	// The knowledge base.
	KnowledgeBase *KnowledgeBaseData `locationName:"knowledgeBase" 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 CreateKnowledgeBaseOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBase sets the KnowledgeBase field's value.
func (s *CreateKnowledgeBaseOutput) SetKnowledgeBase(v *KnowledgeBaseData) *CreateKnowledgeBaseOutput {
	s.KnowledgeBase = v
	return s
}

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

	// The Amazon Connect channels this quick response applies to.
	Channels []*string `locationName:"channels" type:"list"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The content of the quick response.
	//
	// Content is a required field
	Content *QuickResponseDataProvider `locationName:"content" type:"structure" required:"true"`

	// The media type of the quick response content.
	//
	//    * Use application/x.quickresponse;format=plain for a quick response written
	//    in plain text.
	//
	//    * Use application/x.quickresponse;format=markdown for a quick response
	//    written in richtext.
	ContentType *string `locationName:"contentType" type:"string"`

	// The description of the quick response.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The configuration information of the user groups that the quick response
	// is accessible to.
	GroupingConfiguration *GroupingConfiguration `locationName:"groupingConfiguration" type:"structure"`

	// Whether the quick response is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The language code value for the language in which the quick response is written.
	// The supported language codes include de_DE, en_US, es_ES, fr_FR, id_ID, it_IT,
	// ja_JP, ko_KR, pt_BR, zh_CN, zh_TW
	Language *string `locationName:"language" min:"2" type:"string"`

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

	// The shortcut key of the quick response. The value should be unique across
	// the knowledge base.
	ShortcutKey *string `locationName:"shortcutKey" min:"1" type:"string"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateQuickResponseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateQuickResponseInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	if s.Language != nil && len(*s.Language) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Language", 2))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ShortcutKey != nil && len(*s.ShortcutKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ShortcutKey", 1))
	}
	if s.Content != nil {
		if err := s.Content.Validate(); err != nil {
			invalidParams.AddNested("Content", err.(request.ErrInvalidParams))
		}
	}
	if s.GroupingConfiguration != nil {
		if err := s.GroupingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("GroupingConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetChannels sets the Channels field's value.
func (s *CreateQuickResponseInput) SetChannels(v []*string) *CreateQuickResponseInput {
	s.Channels = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateQuickResponseInput) SetClientToken(v string) *CreateQuickResponseInput {
	s.ClientToken = &v
	return s
}

// SetContent sets the Content field's value.
func (s *CreateQuickResponseInput) SetContent(v *QuickResponseDataProvider) *CreateQuickResponseInput {
	s.Content = v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *CreateQuickResponseInput) SetContentType(v string) *CreateQuickResponseInput {
	s.ContentType = &v
	return s
}

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

// SetGroupingConfiguration sets the GroupingConfiguration field's value.
func (s *CreateQuickResponseInput) SetGroupingConfiguration(v *GroupingConfiguration) *CreateQuickResponseInput {
	s.GroupingConfiguration = v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *CreateQuickResponseInput) SetIsActive(v bool) *CreateQuickResponseInput {
	s.IsActive = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *CreateQuickResponseInput) SetKnowledgeBaseId(v string) *CreateQuickResponseInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetLanguage sets the Language field's value.
func (s *CreateQuickResponseInput) SetLanguage(v string) *CreateQuickResponseInput {
	s.Language = &v
	return s
}

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

// SetShortcutKey sets the ShortcutKey field's value.
func (s *CreateQuickResponseInput) SetShortcutKey(v string) *CreateQuickResponseInput {
	s.ShortcutKey = &v
	return s
}

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

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

	// The quick response.
	QuickResponse *QuickResponseData `locationName:"quickResponse" 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 CreateQuickResponseOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetQuickResponse sets the QuickResponse field's value.
func (s *CreateQuickResponseOutput) SetQuickResponse(v *QuickResponseData) *CreateQuickResponseOutput {
	s.QuickResponse = v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description.
	Description *string `locationName:"description" min:"1" type:"string"`

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

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *CreateSessionInput) SetAssistantId(v string) *CreateSessionInput {
	s.AssistantId = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateSessionInput) SetClientToken(v string) *CreateSessionInput {
	s.ClientToken = &v
	return s
}

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

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

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

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

	// The session.
	Session *SessionData `locationName:"session" 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 CreateSessionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetSession sets the Session field's value.
func (s *CreateSessionOutput) SetSession(v *SessionData) *CreateSessionOutput {
	s.Session = v
	return s
}

// Details about the data.
type DataDetails struct {
	_ struct{} `type:"structure"`

	// Details about the content data.
	ContentData *ContentDataDetails `locationName:"contentData" type:"structure"`

	// Details about the generative data.
	GenerativeData *GenerativeDataDetails `locationName:"generativeData" type:"structure"`

	// Details about the content data.
	SourceContentData *SourceContentDataDetails `locationName:"sourceContentData" 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 DataDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentData sets the ContentData field's value.
func (s *DataDetails) SetContentData(v *ContentDataDetails) *DataDetails {
	s.ContentData = v
	return s
}

// SetGenerativeData sets the GenerativeData field's value.
func (s *DataDetails) SetGenerativeData(v *GenerativeDataDetails) *DataDetails {
	s.GenerativeData = v
	return s
}

// SetSourceContentData sets the SourceContentData field's value.
func (s *DataDetails) SetSourceContentData(v *SourceContentDataDetails) *DataDetails {
	s.SourceContentData = v
	return s
}

// Reference data.
type DataReference struct {
	_ struct{} `type:"structure"`

	// Reference information about the content.
	ContentReference *ContentReference `locationName:"contentReference" type:"structure"`

	// Reference information about the generative content.
	GenerativeReference *GenerativeReference `locationName:"generativeReference" 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 DataReference) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentReference sets the ContentReference field's value.
func (s *DataReference) SetContentReference(v *ContentReference) *DataReference {
	s.ContentReference = v
	return s
}

// SetGenerativeReference sets the GenerativeReference field's value.
func (s *DataReference) SetGenerativeReference(v *GenerativeReference) *DataReference {
	s.GenerativeReference = v
	return s
}

// Summary of the data.
type DataSummary struct {
	_ struct{} `type:"structure"`

	// Details about the data.
	//
	// Details is a required field
	Details *DataDetails `locationName:"details" type:"structure" required:"true"`

	// Reference information about the content.
	//
	// Reference is a required field
	Reference *DataReference `locationName:"reference" 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 DataSummary) String() string {
	return awsutil.Prettify(s)
}

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

// SetDetails sets the Details field's value.
func (s *DataSummary) SetDetails(v *DataDetails) *DataSummary {
	s.Details = v
	return s
}

// SetReference sets the Reference field's value.
func (s *DataSummary) SetReference(v *DataReference) *DataSummary {
	s.Reference = v
	return s
}

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

	// The identifier of the assistant association. Can be either the ID or the
	// ARN. URLs cannot contain the ARN.
	//
	// AssistantAssociationId is a required field
	AssistantAssociationId *string `location:"uri" locationName:"assistantAssociationId" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" 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 DeleteAssistantAssociationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantAssociationId sets the AssistantAssociationId field's value.
func (s *DeleteAssistantAssociationInput) SetAssistantAssociationId(v string) *DeleteAssistantAssociationInput {
	s.AssistantAssociationId = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *DeleteAssistantAssociationInput) SetAssistantId(v string) *DeleteAssistantAssociationInput {
	s.AssistantId = &v
	return s
}

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

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

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" 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 DeleteAssistantInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *DeleteAssistantInput) SetAssistantId(v string) *DeleteAssistantInput {
	s.AssistantId = &v
	return s
}

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

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

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

	// The identifier of the content. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// ContentId is a required field
	ContentId *string `location:"uri" locationName:"contentId" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 DeleteContentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetContentId sets the ContentId field's value.
func (s *DeleteContentInput) SetContentId(v string) *DeleteContentInput {
	s.ContentId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *DeleteContentInput) SetKnowledgeBaseId(v string) *DeleteContentInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// The identifier of the import job to be deleted.
	//
	// ImportJobId is a required field
	ImportJobId *string `location:"uri" locationName:"importJobId" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 DeleteImportJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetImportJobId sets the ImportJobId field's value.
func (s *DeleteImportJobInput) SetImportJobId(v string) *DeleteImportJobInput {
	s.ImportJobId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *DeleteImportJobInput) SetKnowledgeBaseId(v string) *DeleteImportJobInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// The knowledge base to delete content from. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 DeleteKnowledgeBaseInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *DeleteKnowledgeBaseInput) SetKnowledgeBaseId(v string) *DeleteKnowledgeBaseInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// The knowledge base from which the quick response is deleted. The identifier
	// of the knowledge base. This should not be a QUICK_RESPONSES type knowledge
	// base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The identifier of the quick response to delete.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `location:"uri" locationName:"quickResponseId" 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 DeleteQuickResponseInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *DeleteQuickResponseInput) SetKnowledgeBaseId(v string) *DeleteQuickResponseInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *DeleteQuickResponseInput) SetQuickResponseId(v string) *DeleteQuickResponseInput {
	s.QuickResponseId = &v
	return s
}

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

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

// The document.
type Document struct {
	_ struct{} `type:"structure"`

	// A reference to the content resource.
	//
	// ContentReference is a required field
	ContentReference *ContentReference `locationName:"contentReference" type:"structure" required:"true"`

	// The excerpt from the document.
	Excerpt *DocumentText `locationName:"excerpt" type:"structure"`

	// The title of the document.
	Title *DocumentText `locationName:"title" 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 Document) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentReference sets the ContentReference field's value.
func (s *Document) SetContentReference(v *ContentReference) *Document {
	s.ContentReference = v
	return s
}

// SetExcerpt sets the Excerpt field's value.
func (s *Document) SetExcerpt(v *DocumentText) *Document {
	s.Excerpt = v
	return s
}

// SetTitle sets the Title field's value.
func (s *Document) SetTitle(v *DocumentText) *Document {
	s.Title = v
	return s
}

// The text of the document.
type DocumentText struct {
	_ struct{} `type:"structure"`

	// Highlights in the document text.
	Highlights []*Highlight `locationName:"highlights" type:"list"`

	// Text in the document.
	//
	// Text is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DocumentText's
	// String and GoString methods.
	Text *string `locationName:"text" 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 DocumentText) String() string {
	return awsutil.Prettify(s)
}

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

// SetHighlights sets the Highlights field's value.
func (s *DocumentText) SetHighlights(v []*Highlight) *DocumentText {
	s.Highlights = v
	return s
}

// SetText sets the Text field's value.
func (s *DocumentText) SetText(v string) *DocumentText {
	s.Text = &v
	return s
}

// The configuration information of the external data source.
type ExternalSourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration information of the external data source.
	//
	// Configuration is a required field
	Configuration *Configuration `locationName:"configuration" type:"structure" required:"true"`

	// The type of the external data source.
	//
	// Source is a required field
	Source *string `locationName:"source" type:"string" required:"true" enum:"ExternalSource"`
}

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

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

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

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

// SetConfiguration sets the Configuration field's value.
func (s *ExternalSourceConfiguration) SetConfiguration(v *Configuration) *ExternalSourceConfiguration {
	s.Configuration = v
	return s
}

// SetSource sets the Source field's value.
func (s *ExternalSourceConfiguration) SetSource(v string) *ExternalSourceConfiguration {
	s.Source = &v
	return s
}

// A search filter.
type Filter struct {
	_ struct{} `type:"structure"`

	// The field on which to filter.
	//
	// Field is a required field
	Field *string `locationName:"field" type:"string" required:"true" enum:"FilterField"`

	// The operator to use for comparing the field’s value with the provided value.
	//
	// Operator is a required field
	Operator *string `locationName:"operator" type:"string" required:"true" enum:"FilterOperator"`

	// The desired field value on which to filter.
	//
	// Value is a required field
	Value *string `locationName:"value" 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 Filter) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetField sets the Field field's value.
func (s *Filter) SetField(v string) *Filter {
	s.Field = &v
	return s
}

// SetOperator sets the Operator field's value.
func (s *Filter) SetOperator(v string) *Filter {
	s.Operator = &v
	return s
}

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

// The feedback information for a generative target type.
type GenerativeContentFeedbackData struct {
	_ struct{} `type:"structure"`

	// The relevance of the feedback.
	//
	// Relevance is a required field
	Relevance *string `locationName:"relevance" type:"string" required:"true" enum:"Relevance"`
}

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

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

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

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

// SetRelevance sets the Relevance field's value.
func (s *GenerativeContentFeedbackData) SetRelevance(v string) *GenerativeContentFeedbackData {
	s.Relevance = &v
	return s
}

// Details about generative data.
type GenerativeDataDetails struct {
	_ struct{} `type:"structure"`

	// The LLM response.
	//
	// Completion is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GenerativeDataDetails's
	// String and GoString methods.
	//
	// Completion is a required field
	Completion *string `locationName:"completion" type:"string" required:"true" sensitive:"true"`

	// Details about the generative content ranking data.
	//
	// RankingData is a required field
	RankingData *RankingData `locationName:"rankingData" type:"structure" required:"true"`

	// The references used to generative the LLM response.
	//
	// References is a required field
	References []*DataSummary `locationName:"references" 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 GenerativeDataDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCompletion sets the Completion field's value.
func (s *GenerativeDataDetails) SetCompletion(v string) *GenerativeDataDetails {
	s.Completion = &v
	return s
}

// SetRankingData sets the RankingData field's value.
func (s *GenerativeDataDetails) SetRankingData(v *RankingData) *GenerativeDataDetails {
	s.RankingData = v
	return s
}

// SetReferences sets the References field's value.
func (s *GenerativeDataDetails) SetReferences(v []*DataSummary) *GenerativeDataDetails {
	s.References = v
	return s
}

// Reference information about generative content.
type GenerativeReference struct {
	_ struct{} `type:"structure"`

	// The identifier of the LLM model.
	GenerationId *string `locationName:"generationId" type:"string"`

	// The identifier of the LLM model.
	ModelId *string `locationName:"modelId" 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 GenerativeReference) String() string {
	return awsutil.Prettify(s)
}

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

// SetGenerationId sets the GenerationId field's value.
func (s *GenerativeReference) SetGenerationId(v string) *GenerativeReference {
	s.GenerationId = &v
	return s
}

// SetModelId sets the ModelId field's value.
func (s *GenerativeReference) SetModelId(v string) *GenerativeReference {
	s.ModelId = &v
	return s
}

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

	// The identifier of the assistant association. Can be either the ID or the
	// ARN. URLs cannot contain the ARN.
	//
	// AssistantAssociationId is a required field
	AssistantAssociationId *string `location:"uri" locationName:"assistantAssociationId" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" 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 GetAssistantAssociationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantAssociationId sets the AssistantAssociationId field's value.
func (s *GetAssistantAssociationInput) SetAssistantAssociationId(v string) *GetAssistantAssociationInput {
	s.AssistantAssociationId = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *GetAssistantAssociationInput) SetAssistantId(v string) *GetAssistantAssociationInput {
	s.AssistantId = &v
	return s
}

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

	// The assistant association.
	AssistantAssociation *AssistantAssociationData `locationName:"assistantAssociation" 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 GetAssistantAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistantAssociation sets the AssistantAssociation field's value.
func (s *GetAssistantAssociationOutput) SetAssistantAssociation(v *AssistantAssociationData) *GetAssistantAssociationOutput {
	s.AssistantAssociation = v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" 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 GetAssistantInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *GetAssistantInput) SetAssistantId(v string) *GetAssistantInput {
	s.AssistantId = &v
	return s
}

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

	// Information about the assistant.
	Assistant *AssistantData `locationName:"assistant" 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 GetAssistantOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistant sets the Assistant field's value.
func (s *GetAssistantOutput) SetAssistant(v *AssistantData) *GetAssistantOutput {
	s.Assistant = v
	return s
}

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

	// The identifier of the content. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// ContentId is a required field
	ContentId *string `location:"uri" locationName:"contentId" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 GetContentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetContentId sets the ContentId field's value.
func (s *GetContentInput) SetContentId(v string) *GetContentInput {
	s.ContentId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *GetContentInput) SetKnowledgeBaseId(v string) *GetContentInput {
	s.KnowledgeBaseId = &v
	return s
}

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

	// The content.
	Content *ContentData `locationName:"content" 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 GetContentOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContent sets the Content field's value.
func (s *GetContentOutput) SetContent(v *ContentData) *GetContentOutput {
	s.Content = v
	return s
}

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

	// The identifier of the content. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// ContentId is a required field
	ContentId *string `location:"uri" locationName:"contentId" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 GetContentSummaryInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetContentId sets the ContentId field's value.
func (s *GetContentSummaryInput) SetContentId(v string) *GetContentSummaryInput {
	s.ContentId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *GetContentSummaryInput) SetKnowledgeBaseId(v string) *GetContentSummaryInput {
	s.KnowledgeBaseId = &v
	return s
}

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

	// The content summary.
	ContentSummary *ContentSummary `locationName:"contentSummary" 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 GetContentSummaryOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentSummary sets the ContentSummary field's value.
func (s *GetContentSummaryOutput) SetContentSummary(v *ContentSummary) *GetContentSummaryOutput {
	s.ContentSummary = v
	return s
}

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

	// The identifier of the import job to retrieve.
	//
	// ImportJobId is a required field
	ImportJobId *string `location:"uri" locationName:"importJobId" type:"string" required:"true"`

	// The identifier of the knowledge base that the import job belongs to.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 GetImportJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetImportJobId sets the ImportJobId field's value.
func (s *GetImportJobInput) SetImportJobId(v string) *GetImportJobInput {
	s.ImportJobId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *GetImportJobInput) SetKnowledgeBaseId(v string) *GetImportJobInput {
	s.KnowledgeBaseId = &v
	return s
}

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

	// The import job.
	ImportJob *ImportJobData `locationName:"importJob" 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 GetImportJobOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetImportJob sets the ImportJob field's value.
func (s *GetImportJobOutput) SetImportJob(v *ImportJobData) *GetImportJobOutput {
	s.ImportJob = v
	return s
}

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 GetKnowledgeBaseInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *GetKnowledgeBaseInput) SetKnowledgeBaseId(v string) *GetKnowledgeBaseInput {
	s.KnowledgeBaseId = &v
	return s
}

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

	// The knowledge base.
	KnowledgeBase *KnowledgeBaseData `locationName:"knowledgeBase" 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 GetKnowledgeBaseOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBase sets the KnowledgeBase field's value.
func (s *GetKnowledgeBaseOutput) SetKnowledgeBase(v *KnowledgeBaseData) *GetKnowledgeBaseOutput {
	s.KnowledgeBase = v
	return s
}

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

	// The identifier of the knowledge base. This should be a QUICK_RESPONSES type
	// knowledge base.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The identifier of the quick response.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `location:"uri" locationName:"quickResponseId" 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 GetQuickResponseInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *GetQuickResponseInput) SetKnowledgeBaseId(v string) *GetQuickResponseInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *GetQuickResponseInput) SetQuickResponseId(v string) *GetQuickResponseInput {
	s.QuickResponseId = &v
	return s
}

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

	// The quick response.
	QuickResponse *QuickResponseData `locationName:"quickResponse" 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 GetQuickResponseOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetQuickResponse sets the QuickResponse field's value.
func (s *GetQuickResponseOutput) SetQuickResponse(v *QuickResponseData) *GetQuickResponseOutput {
	s.QuickResponse = v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The identifier of the session. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// SessionId is a required field
	SessionId *string `location:"uri" locationName:"sessionId" type:"string" required:"true"`

	// The duration (in seconds) for which the call waits for a recommendation to
	// be made available before returning. If a recommendation is available, the
	// call returns sooner than WaitTimeSeconds. If no messages are available and
	// the wait time expires, the call returns successfully with an empty list.
	WaitTimeSeconds *int64 `location:"querystring" locationName:"waitTimeSeconds" 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 GetRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *GetRecommendationsInput) SetAssistantId(v string) *GetRecommendationsInput {
	s.AssistantId = &v
	return s
}

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

// SetSessionId sets the SessionId field's value.
func (s *GetRecommendationsInput) SetSessionId(v string) *GetRecommendationsInput {
	s.SessionId = &v
	return s
}

// SetWaitTimeSeconds sets the WaitTimeSeconds field's value.
func (s *GetRecommendationsInput) SetWaitTimeSeconds(v int64) *GetRecommendationsInput {
	s.WaitTimeSeconds = &v
	return s
}

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

	// The recommendations.
	//
	// Recommendations is a required field
	Recommendations []*RecommendationData `locationName:"recommendations" type:"list" required:"true"`

	// The triggers corresponding to recommendations.
	Triggers []*RecommendationTrigger `locationName:"triggers" 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 GetRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetRecommendations sets the Recommendations field's value.
func (s *GetRecommendationsOutput) SetRecommendations(v []*RecommendationData) *GetRecommendationsOutput {
	s.Recommendations = v
	return s
}

// SetTriggers sets the Triggers field's value.
func (s *GetRecommendationsOutput) SetTriggers(v []*RecommendationTrigger) *GetRecommendationsOutput {
	s.Triggers = v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The identifier of the session. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// SessionId is a required field
	SessionId *string `location:"uri" locationName:"sessionId" 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 GetSessionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *GetSessionInput) SetAssistantId(v string) *GetSessionInput {
	s.AssistantId = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *GetSessionInput) SetSessionId(v string) *GetSessionInput {
	s.SessionId = &v
	return s
}

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

	// The session.
	Session *SessionData `locationName:"session" 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 GetSessionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetSession sets the Session field's value.
func (s *GetSessionOutput) SetSession(v *SessionData) *GetSessionOutput {
	s.Session = v
	return s
}

// The configuration information of the grouping of Amazon Q users.
type GroupingConfiguration struct {
	_ struct{} `type:"structure"`

	// The criteria used for grouping Amazon Q users.
	//
	// The following is the list of supported criteria values.
	//
	//    * RoutingProfileArn: Grouping the users by their Amazon Connect routing
	//    profile ARN (https://docs.aws.amazon.com/connect/latest/APIReference/API_RoutingProfile.html).
	//    User should have SearchRoutingProfile (https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchRoutingProfiles.html)
	//    and DescribeRoutingProfile (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribeRoutingProfile.html)
	//    permissions when setting criteria to this value.
	//
	// Criteria is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GroupingConfiguration's
	// String and GoString methods.
	Criteria *string `locationName:"criteria" min:"1" type:"string" sensitive:"true"`

	// The list of values that define different groups of Amazon Q users.
	//
	//    * When setting criteria to RoutingProfileArn, you need to provide a list
	//    of ARNs of Amazon Connect routing profiles (https://docs.aws.amazon.com/connect/latest/APIReference/API_RoutingProfile.html)
	//    as values of this parameter.
	Values []*string `locationName:"values" type:"list"`
}

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

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

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

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

// SetCriteria sets the Criteria field's value.
func (s *GroupingConfiguration) SetCriteria(v string) *GroupingConfiguration {
	s.Criteria = &v
	return s
}

// SetValues sets the Values field's value.
func (s *GroupingConfiguration) SetValues(v []*string) *GroupingConfiguration {
	s.Values = v
	return s
}

// Offset specification to describe highlighting of document excerpts for rendering
// search results and recommendations.
type Highlight struct {
	_ struct{} `type:"structure"`

	// The offset for the start of the highlight.
	BeginOffsetInclusive *int64 `locationName:"beginOffsetInclusive" type:"integer"`

	// The offset for the end of the highlight.
	EndOffsetExclusive *int64 `locationName:"endOffsetExclusive" 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 Highlight) String() string {
	return awsutil.Prettify(s)
}

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

// SetBeginOffsetInclusive sets the BeginOffsetInclusive field's value.
func (s *Highlight) SetBeginOffsetInclusive(v int64) *Highlight {
	s.BeginOffsetInclusive = &v
	return s
}

// SetEndOffsetExclusive sets the EndOffsetExclusive field's value.
func (s *Highlight) SetEndOffsetExclusive(v int64) *Highlight {
	s.EndOffsetExclusive = &v
	return s
}

// Summary information about the import job.
type ImportJobData struct {
	_ struct{} `type:"structure"`

	// The timestamp when the import job was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The configuration information of the external data source.
	ExternalSourceConfiguration *ExternalSourceConfiguration `locationName:"externalSourceConfiguration" type:"structure"`

	// The link to donwload the information of resource data that failed to be imported.
	//
	// FailedRecordReport is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportJobData's
	// String and GoString methods.
	FailedRecordReport *string `locationName:"failedRecordReport" min:"1" type:"string" sensitive:"true"`

	// The identifier of the import job.
	//
	// ImportJobId is a required field
	ImportJobId *string `locationName:"importJobId" type:"string" required:"true"`

	// The type of the import job.
	//
	// ImportJobType is a required field
	ImportJobType *string `locationName:"importJobType" type:"string" required:"true" enum:"ImportJobType"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The timestamp when the import job data was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `locationName:"lastModifiedTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The metadata fields of the imported Amazon Q resources.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// The status of the import job.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ImportJobStatus"`

	// A pointer to the uploaded asset. This value is returned by StartContentUpload
	// (https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html).
	//
	// UploadId is a required field
	UploadId *string `locationName:"uploadId" min:"1" type:"string" required:"true"`

	// The download link to the resource file that is uploaded to the import job.
	//
	// Url is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ImportJobData's
	// String and GoString methods.
	//
	// Url is a required field
	Url *string `locationName:"url" min:"1" type:"string" required:"true" sensitive:"true"`

	// The expiration time of the URL as an epoch timestamp.
	//
	// UrlExpiry is a required field
	UrlExpiry *time.Time `locationName:"urlExpiry" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`
}

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

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

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

// SetExternalSourceConfiguration sets the ExternalSourceConfiguration field's value.
func (s *ImportJobData) SetExternalSourceConfiguration(v *ExternalSourceConfiguration) *ImportJobData {
	s.ExternalSourceConfiguration = v
	return s
}

// SetFailedRecordReport sets the FailedRecordReport field's value.
func (s *ImportJobData) SetFailedRecordReport(v string) *ImportJobData {
	s.FailedRecordReport = &v
	return s
}

// SetImportJobId sets the ImportJobId field's value.
func (s *ImportJobData) SetImportJobId(v string) *ImportJobData {
	s.ImportJobId = &v
	return s
}

// SetImportJobType sets the ImportJobType field's value.
func (s *ImportJobData) SetImportJobType(v string) *ImportJobData {
	s.ImportJobType = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *ImportJobData) SetKnowledgeBaseArn(v string) *ImportJobData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ImportJobData) SetKnowledgeBaseId(v string) *ImportJobData {
	s.KnowledgeBaseId = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ImportJobData) SetLastModifiedTime(v time.Time) *ImportJobData {
	s.LastModifiedTime = &v
	return s
}

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

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

// SetUploadId sets the UploadId field's value.
func (s *ImportJobData) SetUploadId(v string) *ImportJobData {
	s.UploadId = &v
	return s
}

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

// SetUrlExpiry sets the UrlExpiry field's value.
func (s *ImportJobData) SetUrlExpiry(v time.Time) *ImportJobData {
	s.UrlExpiry = &v
	return s
}

// Summary information about the import job.
type ImportJobSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp when the import job was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The configuration information of the external source that the resource data
	// are imported from.
	ExternalSourceConfiguration *ExternalSourceConfiguration `locationName:"externalSourceConfiguration" type:"structure"`

	// The identifier of the import job.
	//
	// ImportJobId is a required field
	ImportJobId *string `locationName:"importJobId" type:"string" required:"true"`

	// The type of import job.
	//
	// ImportJobType is a required field
	ImportJobType *string `locationName:"importJobType" type:"string" required:"true" enum:"ImportJobType"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The timestamp when the import job was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `locationName:"lastModifiedTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The metadata fields of the imported Amazon Q resources.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// The status of the import job.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ImportJobStatus"`

	// A pointer to the uploaded asset. This value is returned by StartContentUpload
	// (https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html).
	//
	// UploadId is a required field
	UploadId *string `locationName:"uploadId" 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 ImportJobSummary) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetExternalSourceConfiguration sets the ExternalSourceConfiguration field's value.
func (s *ImportJobSummary) SetExternalSourceConfiguration(v *ExternalSourceConfiguration) *ImportJobSummary {
	s.ExternalSourceConfiguration = v
	return s
}

// SetImportJobId sets the ImportJobId field's value.
func (s *ImportJobSummary) SetImportJobId(v string) *ImportJobSummary {
	s.ImportJobId = &v
	return s
}

// SetImportJobType sets the ImportJobType field's value.
func (s *ImportJobSummary) SetImportJobType(v string) *ImportJobSummary {
	s.ImportJobType = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *ImportJobSummary) SetKnowledgeBaseArn(v string) *ImportJobSummary {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ImportJobSummary) SetKnowledgeBaseId(v string) *ImportJobSummary {
	s.KnowledgeBaseId = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ImportJobSummary) SetLastModifiedTime(v time.Time) *ImportJobSummary {
	s.LastModifiedTime = &v
	return s
}

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

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

// SetUploadId sets the UploadId field's value.
func (s *ImportJobSummary) SetUploadId(v string) *ImportJobSummary {
	s.UploadId = &v
	return s
}

// Association information about the knowledge base.
type KnowledgeBaseAssociationData struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" 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 KnowledgeBaseAssociationData) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *KnowledgeBaseAssociationData) SetKnowledgeBaseArn(v string) *KnowledgeBaseAssociationData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *KnowledgeBaseAssociationData) SetKnowledgeBaseId(v string) *KnowledgeBaseAssociationData {
	s.KnowledgeBaseId = &v
	return s
}

// Information about the knowledge base.
type KnowledgeBaseData struct {
	_ struct{} `type:"structure"`

	// The description.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The type of knowledge base.
	//
	// KnowledgeBaseType is a required field
	KnowledgeBaseType *string `locationName:"knowledgeBaseType" type:"string" required:"true" enum:"KnowledgeBaseType"`

	// An epoch timestamp indicating the most recent content modification inside
	// the knowledge base. If no content exists in a knowledge base, this value
	// is unset.
	LastContentModificationTime *time.Time `locationName:"lastContentModificationTime" type:"timestamp" timestampFormat:"unixTimestamp"`

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

	// Information about how to render the content.
	RenderingConfiguration *RenderingConfiguration `locationName:"renderingConfiguration" type:"structure"`

	// The configuration information for the customer managed key used for encryption.
	//
	// This KMS key must have a policy that allows kms:CreateGrant, kms:DescribeKey,
	// kms:Decrypt, and kms:GenerateDataKey* permissions to the IAM identity using
	// the key to invoke Amazon Q.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// Source configuration information about the knowledge base.
	SourceConfiguration *SourceConfiguration `locationName:"sourceConfiguration" type:"structure"`

	// The status of the knowledge base.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"KnowledgeBaseStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *KnowledgeBaseData) SetKnowledgeBaseArn(v string) *KnowledgeBaseData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *KnowledgeBaseData) SetKnowledgeBaseId(v string) *KnowledgeBaseData {
	s.KnowledgeBaseId = &v
	return s
}

// SetKnowledgeBaseType sets the KnowledgeBaseType field's value.
func (s *KnowledgeBaseData) SetKnowledgeBaseType(v string) *KnowledgeBaseData {
	s.KnowledgeBaseType = &v
	return s
}

// SetLastContentModificationTime sets the LastContentModificationTime field's value.
func (s *KnowledgeBaseData) SetLastContentModificationTime(v time.Time) *KnowledgeBaseData {
	s.LastContentModificationTime = &v
	return s
}

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

// SetRenderingConfiguration sets the RenderingConfiguration field's value.
func (s *KnowledgeBaseData) SetRenderingConfiguration(v *RenderingConfiguration) *KnowledgeBaseData {
	s.RenderingConfiguration = v
	return s
}

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *KnowledgeBaseData) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *KnowledgeBaseData {
	s.ServerSideEncryptionConfiguration = v
	return s
}

// SetSourceConfiguration sets the SourceConfiguration field's value.
func (s *KnowledgeBaseData) SetSourceConfiguration(v *SourceConfiguration) *KnowledgeBaseData {
	s.SourceConfiguration = v
	return s
}

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

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

// Summary information about the knowledge base.
type KnowledgeBaseSummary struct {
	_ struct{} `type:"structure"`

	// The description of the knowledge base.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The type of knowledge base.
	//
	// KnowledgeBaseType is a required field
	KnowledgeBaseType *string `locationName:"knowledgeBaseType" type:"string" required:"true" enum:"KnowledgeBaseType"`

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

	// Information about how to render the content.
	RenderingConfiguration *RenderingConfiguration `locationName:"renderingConfiguration" type:"structure"`

	// The configuration information for the customer managed key used for encryption.
	//
	// This KMS key must have a policy that allows kms:CreateGrant, kms:DescribeKey,
	// kms:Decrypt, and kms:GenerateDataKey* permissions to the IAM identity using
	// the key to invoke Amazon Q.
	//
	// For more information about setting up a customer managed key for Amazon Q,
	// see Enable Amazon Q in Connect for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"serverSideEncryptionConfiguration" type:"structure"`

	// Configuration information about the external data source.
	SourceConfiguration *SourceConfiguration `locationName:"sourceConfiguration" type:"structure"`

	// The status of the knowledge base summary.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"KnowledgeBaseStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *KnowledgeBaseSummary) SetKnowledgeBaseArn(v string) *KnowledgeBaseSummary {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *KnowledgeBaseSummary) SetKnowledgeBaseId(v string) *KnowledgeBaseSummary {
	s.KnowledgeBaseId = &v
	return s
}

// SetKnowledgeBaseType sets the KnowledgeBaseType field's value.
func (s *KnowledgeBaseSummary) SetKnowledgeBaseType(v string) *KnowledgeBaseSummary {
	s.KnowledgeBaseType = &v
	return s
}

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

// SetRenderingConfiguration sets the RenderingConfiguration field's value.
func (s *KnowledgeBaseSummary) SetRenderingConfiguration(v *RenderingConfiguration) *KnowledgeBaseSummary {
	s.RenderingConfiguration = v
	return s
}

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *KnowledgeBaseSummary) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *KnowledgeBaseSummary {
	s.ServerSideEncryptionConfiguration = v
	return s
}

// SetSourceConfiguration sets the SourceConfiguration field's value.
func (s *KnowledgeBaseSummary) SetSourceConfiguration(v *SourceConfiguration) *KnowledgeBaseSummary {
	s.SourceConfiguration = v
	return s
}

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

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

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListAssistantAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssistantAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssistantAssociationsInput"}
	if s.AssistantId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssistantId"))
	}
	if s.AssistantId != nil && len(*s.AssistantId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssistantId", 1))
	}
	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
}

// SetAssistantId sets the AssistantId field's value.
func (s *ListAssistantAssociationsInput) SetAssistantId(v string) *ListAssistantAssociationsInput {
	s.AssistantId = &v
	return s
}

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

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

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

	// Summary information about assistant associations.
	//
	// AssistantAssociationSummaries is a required field
	AssistantAssociationSummaries []*AssistantAssociationSummary `locationName:"assistantAssociationSummaries" type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" 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 ListAssistantAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistantAssociationSummaries sets the AssistantAssociationSummaries field's value.
func (s *ListAssistantAssociationsOutput) SetAssistantAssociationSummaries(v []*AssistantAssociationSummary) *ListAssistantAssociationsOutput {
	s.AssistantAssociationSummaries = v
	return s
}

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

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

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListAssistantsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssistantsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssistantsInput"}
	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 *ListAssistantsInput) SetMaxResults(v int64) *ListAssistantsInput {
	s.MaxResults = &v
	return s
}

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

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

	// Information about the assistants.
	//
	// AssistantSummaries is a required field
	AssistantSummaries []*AssistantSummary `locationName:"assistantSummaries" type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" 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 ListAssistantsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistantSummaries sets the AssistantSummaries field's value.
func (s *ListAssistantsOutput) SetAssistantSummaries(v []*AssistantSummary) *ListAssistantsOutput {
	s.AssistantSummaries = v
	return s
}

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

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListContentsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListContentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListContentsInput"}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	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
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ListContentsInput) SetKnowledgeBaseId(v string) *ListContentsInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// Information about the content.
	//
	// ContentSummaries is a required field
	ContentSummaries []*ContentSummary `locationName:"contentSummaries" type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" 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 ListContentsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentSummaries sets the ContentSummaries field's value.
func (s *ListContentsOutput) SetContentSummaries(v []*ContentSummary) *ListContentsOutput {
	s.ContentSummaries = v
	return s
}

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

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListImportJobsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListImportJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListImportJobsInput"}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	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
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ListImportJobsInput) SetKnowledgeBaseId(v string) *ListImportJobsInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// Summary information about the import jobs.
	//
	// ImportJobSummaries is a required field
	ImportJobSummaries []*ImportJobSummary `locationName:"importJobSummaries" type:"list" required:"true"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `locationName:"nextToken" 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 ListImportJobsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetImportJobSummaries sets the ImportJobSummaries field's value.
func (s *ListImportJobsOutput) SetImportJobSummaries(v []*ImportJobSummary) *ListImportJobsOutput {
	s.ImportJobSummaries = v
	return s
}

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

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

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListKnowledgeBasesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListKnowledgeBasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListKnowledgeBasesInput"}
	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 *ListKnowledgeBasesInput) SetMaxResults(v int64) *ListKnowledgeBasesInput {
	s.MaxResults = &v
	return s
}

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

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

	// Information about the knowledge bases.
	//
	// KnowledgeBaseSummaries is a required field
	KnowledgeBaseSummaries []*KnowledgeBaseSummary `locationName:"knowledgeBaseSummaries" type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" 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 ListKnowledgeBasesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBaseSummaries sets the KnowledgeBaseSummaries field's value.
func (s *ListKnowledgeBasesOutput) SetKnowledgeBaseSummaries(v []*KnowledgeBaseSummary) *ListKnowledgeBasesOutput {
	s.KnowledgeBaseSummaries = v
	return s
}

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

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" 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 ListQuickResponsesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListQuickResponsesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListQuickResponsesInput"}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	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
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *ListQuickResponsesInput) SetKnowledgeBaseId(v string) *ListQuickResponsesInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

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

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Summary information about the quick responses.
	//
	// QuickResponseSummaries is a required field
	QuickResponseSummaries []*QuickResponseSummary `locationName:"quickResponseSummaries" 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 ListQuickResponsesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetQuickResponseSummaries sets the QuickResponseSummaries field's value.
func (s *ListQuickResponsesOutput) SetQuickResponseSummaries(v []*QuickResponseSummary) *ListQuickResponsesOutput {
	s.QuickResponseSummaries = v
	return s
}

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

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
}

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

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

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

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

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// An error occurred when creating a recommendation.
type NotifyRecommendationsReceivedError struct {
	_ struct{} `type:"structure"`

	// A recommendation is causing an error.
	Message *string `locationName:"message" type:"string"`

	// The identifier of the recommendation that is in error.
	RecommendationId *string `locationName:"recommendationId" 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 NotifyRecommendationsReceivedError) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetRecommendationId sets the RecommendationId field's value.
func (s *NotifyRecommendationsReceivedError) SetRecommendationId(v string) *NotifyRecommendationsReceivedError {
	s.RecommendationId = &v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The identifiers of the recommendations.
	//
	// RecommendationIds is a required field
	RecommendationIds []*string `locationName:"recommendationIds" type:"list" required:"true"`

	// The identifier of the session. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// SessionId is a required field
	SessionId *string `location:"uri" locationName:"sessionId" 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 NotifyRecommendationsReceivedInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *NotifyRecommendationsReceivedInput) SetAssistantId(v string) *NotifyRecommendationsReceivedInput {
	s.AssistantId = &v
	return s
}

// SetRecommendationIds sets the RecommendationIds field's value.
func (s *NotifyRecommendationsReceivedInput) SetRecommendationIds(v []*string) *NotifyRecommendationsReceivedInput {
	s.RecommendationIds = v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *NotifyRecommendationsReceivedInput) SetSessionId(v string) *NotifyRecommendationsReceivedInput {
	s.SessionId = &v
	return s
}

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

	// The identifiers of recommendations that are causing errors.
	Errors []*NotifyRecommendationsReceivedError `locationName:"errors" type:"list"`

	// The identifiers of the recommendations.
	RecommendationIds []*string `locationName:"recommendationIds" 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 NotifyRecommendationsReceivedOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetRecommendationIds sets the RecommendationIds field's value.
func (s *NotifyRecommendationsReceivedOutput) SetRecommendationIds(v []*string) *NotifyRecommendationsReceivedOutput {
	s.RecommendationIds = v
	return s
}

// The provided revisionId does not match, indicating the content has been modified
// since it was last read.
type PreconditionFailedException 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 PreconditionFailedException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorPreconditionFailedException(v protocol.ResponseMetadata) error {
	return &PreconditionFailedException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// Information about the feedback provided.
	//
	// ContentFeedback is a required field
	ContentFeedback *ContentFeedbackData `locationName:"contentFeedback" type:"structure" required:"true"`

	// The identifier of the feedback target.
	//
	// TargetId is a required field
	TargetId *string `locationName:"targetId" type:"string" required:"true"`

	// The type of the feedback target.
	//
	// TargetType is a required field
	TargetType *string `locationName:"targetType" type:"string" required:"true" enum:"TargetType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutFeedbackInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutFeedbackInput"}
	if s.AssistantId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssistantId"))
	}
	if s.AssistantId != nil && len(*s.AssistantId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssistantId", 1))
	}
	if s.ContentFeedback == nil {
		invalidParams.Add(request.NewErrParamRequired("ContentFeedback"))
	}
	if s.TargetId == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetId"))
	}
	if s.TargetType == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetType"))
	}
	if s.ContentFeedback != nil {
		if err := s.ContentFeedback.Validate(); err != nil {
			invalidParams.AddNested("ContentFeedback", err.(request.ErrInvalidParams))
		}
	}

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

// SetAssistantId sets the AssistantId field's value.
func (s *PutFeedbackInput) SetAssistantId(v string) *PutFeedbackInput {
	s.AssistantId = &v
	return s
}

// SetContentFeedback sets the ContentFeedback field's value.
func (s *PutFeedbackInput) SetContentFeedback(v *ContentFeedbackData) *PutFeedbackInput {
	s.ContentFeedback = v
	return s
}

// SetTargetId sets the TargetId field's value.
func (s *PutFeedbackInput) SetTargetId(v string) *PutFeedbackInput {
	s.TargetId = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *PutFeedbackInput) SetTargetType(v string) *PutFeedbackInput {
	s.TargetType = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// Information about the feedback provided.
	//
	// ContentFeedback is a required field
	ContentFeedback *ContentFeedbackData `locationName:"contentFeedback" type:"structure" required:"true"`

	// The identifier of the feedback target.
	//
	// TargetId is a required field
	TargetId *string `locationName:"targetId" type:"string" required:"true"`

	// The type of the feedback target.
	//
	// TargetType is a required field
	TargetType *string `locationName:"targetType" type:"string" required:"true" enum:"TargetType"`
}

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

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *PutFeedbackOutput) SetAssistantArn(v string) *PutFeedbackOutput {
	s.AssistantArn = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *PutFeedbackOutput) SetAssistantId(v string) *PutFeedbackOutput {
	s.AssistantId = &v
	return s
}

// SetContentFeedback sets the ContentFeedback field's value.
func (s *PutFeedbackOutput) SetContentFeedback(v *ContentFeedbackData) *PutFeedbackOutput {
	s.ContentFeedback = v
	return s
}

// SetTargetId sets the TargetId field's value.
func (s *PutFeedbackOutput) SetTargetId(v string) *PutFeedbackOutput {
	s.TargetId = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *PutFeedbackOutput) SetTargetType(v string) *PutFeedbackOutput {
	s.TargetType = &v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Information about how to query content.
	QueryCondition []*QueryCondition `locationName:"queryCondition" type:"list"`

	// The text to search for.
	//
	// QueryText is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QueryAssistantInput's
	// String and GoString methods.
	//
	// QueryText is a required field
	QueryText *string `locationName:"queryText" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon Q session. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	SessionId *string `locationName:"sessionId" 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 QueryAssistantInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssistantId sets the AssistantId field's value.
func (s *QueryAssistantInput) SetAssistantId(v string) *QueryAssistantInput {
	s.AssistantId = &v
	return s
}

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

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

// SetQueryCondition sets the QueryCondition field's value.
func (s *QueryAssistantInput) SetQueryCondition(v []*QueryCondition) *QueryAssistantInput {
	s.QueryCondition = v
	return s
}

// SetQueryText sets the QueryText field's value.
func (s *QueryAssistantInput) SetQueryText(v string) *QueryAssistantInput {
	s.QueryText = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *QueryAssistantInput) SetSessionId(v string) *QueryAssistantInput {
	s.SessionId = &v
	return s
}

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

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The results of the query.
	//
	// Results is a required field
	Results []*ResultData `locationName:"results" 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 QueryAssistantOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetResults sets the Results field's value.
func (s *QueryAssistantOutput) SetResults(v []*ResultData) *QueryAssistantOutput {
	s.Results = v
	return s
}

// Information about how to query content.
type QueryCondition struct {
	_ struct{} `type:"structure"`

	// The condition for the query.
	Single *QueryConditionItem `locationName:"single" 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 QueryCondition) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetSingle sets the Single field's value.
func (s *QueryCondition) SetSingle(v *QueryConditionItem) *QueryCondition {
	s.Single = v
	return s
}

// The condition for the query.
type QueryConditionItem struct {
	_ struct{} `type:"structure"`

	// The comparison operator for query condition to query on.
	//
	// Comparator is a required field
	Comparator *string `locationName:"comparator" type:"string" required:"true" enum:"QueryConditionComparisonOperator"`

	// The name of the field for query condition to query on.
	//
	// Field is a required field
	Field *string `locationName:"field" type:"string" required:"true" enum:"QueryConditionFieldName"`

	// The value for the query condition to query on.
	//
	// Value is a required field
	Value *string `locationName:"value" 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 QueryConditionItem) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComparator sets the Comparator field's value.
func (s *QueryConditionItem) SetComparator(v string) *QueryConditionItem {
	s.Comparator = &v
	return s
}

// SetField sets the Field field's value.
func (s *QueryConditionItem) SetField(v string) *QueryConditionItem {
	s.Field = &v
	return s
}

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

// Data associated with the QUERY RecommendationTriggerType.
type QueryRecommendationTriggerData struct {
	_ struct{} `type:"structure"`

	// The text associated with the recommendation trigger.
	//
	// Text is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QueryRecommendationTriggerData's
	// String and GoString methods.
	Text *string `locationName:"text" 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 QueryRecommendationTriggerData) String() string {
	return awsutil.Prettify(s)
}

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

// SetText sets the Text field's value.
func (s *QueryRecommendationTriggerData) SetText(v string) *QueryRecommendationTriggerData {
	s.Text = &v
	return s
}

// The container quick response content.
type QuickResponseContentProvider struct {
	_ struct{} `type:"structure"`

	// The content of the quick response.
	//
	// Content is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QuickResponseContentProvider's
	// String and GoString methods.
	Content *string `locationName:"content" min:"1" type:"string" sensitive:"true"`
}

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

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

// SetContent sets the Content field's value.
func (s *QuickResponseContentProvider) SetContent(v string) *QuickResponseContentProvider {
	s.Content = &v
	return s
}

// The content of the quick response stored in different media types.
type QuickResponseContents struct {
	_ struct{} `type:"structure"`

	// The container quick response content.
	Markdown *QuickResponseContentProvider `locationName:"markdown" type:"structure"`

	// The container quick response content.
	PlainText *QuickResponseContentProvider `locationName:"plainText" 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 QuickResponseContents) String() string {
	return awsutil.Prettify(s)
}

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

// SetMarkdown sets the Markdown field's value.
func (s *QuickResponseContents) SetMarkdown(v *QuickResponseContentProvider) *QuickResponseContents {
	s.Markdown = v
	return s
}

// SetPlainText sets the PlainText field's value.
func (s *QuickResponseContents) SetPlainText(v *QuickResponseContentProvider) *QuickResponseContents {
	s.PlainText = v
	return s
}

// Information about the quick response.
type QuickResponseData struct {
	_ struct{} `type:"structure"`

	// The Amazon Connect contact channels this quick response applies to. The supported
	// contact channel types include Chat.
	Channels []*string `locationName:"channels" type:"list"`

	// The media type of the quick response content.
	//
	//    * Use application/x.quickresponse;format=plain for quick response written
	//    in plain text.
	//
	//    * Use application/x.quickresponse;format=markdown for quick response written
	//    in richtext.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The contents of the quick response.
	Contents *QuickResponseContents `locationName:"contents" type:"structure"`

	// The timestamp when the quick response was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The description of the quick response.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The configuration information of the user groups that the quick response
	// is accessible to.
	GroupingConfiguration *GroupingConfiguration `locationName:"groupingConfiguration" type:"structure"`

	// Whether the quick response is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The language code value for the language in which the quick response is written.
	Language *string `locationName:"language" min:"2" type:"string"`

	// The Amazon Resource Name (ARN) of the user who last updated the quick response
	// data.
	LastModifiedBy *string `locationName:"lastModifiedBy" min:"1" type:"string"`

	// The timestamp when the quick response data was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `locationName:"lastModifiedTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

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

	// The Amazon Resource Name (ARN) of the quick response.
	//
	// QuickResponseArn is a required field
	QuickResponseArn *string `locationName:"quickResponseArn" type:"string" required:"true"`

	// The identifier of the quick response.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `locationName:"quickResponseId" type:"string" required:"true"`

	// The shortcut key of the quick response. The value should be unique across
	// the knowledge base.
	ShortcutKey *string `locationName:"shortcutKey" min:"1" type:"string"`

	// The status of the quick response data.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"QuickResponseStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetChannels sets the Channels field's value.
func (s *QuickResponseData) SetChannels(v []*string) *QuickResponseData {
	s.Channels = v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *QuickResponseData) SetContentType(v string) *QuickResponseData {
	s.ContentType = &v
	return s
}

// SetContents sets the Contents field's value.
func (s *QuickResponseData) SetContents(v *QuickResponseContents) *QuickResponseData {
	s.Contents = v
	return s
}

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

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

// SetGroupingConfiguration sets the GroupingConfiguration field's value.
func (s *QuickResponseData) SetGroupingConfiguration(v *GroupingConfiguration) *QuickResponseData {
	s.GroupingConfiguration = v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *QuickResponseData) SetIsActive(v bool) *QuickResponseData {
	s.IsActive = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *QuickResponseData) SetKnowledgeBaseArn(v string) *QuickResponseData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *QuickResponseData) SetKnowledgeBaseId(v string) *QuickResponseData {
	s.KnowledgeBaseId = &v
	return s
}

// SetLanguage sets the Language field's value.
func (s *QuickResponseData) SetLanguage(v string) *QuickResponseData {
	s.Language = &v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *QuickResponseData) SetLastModifiedBy(v string) *QuickResponseData {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QuickResponseData) SetLastModifiedTime(v time.Time) *QuickResponseData {
	s.LastModifiedTime = &v
	return s
}

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

// SetQuickResponseArn sets the QuickResponseArn field's value.
func (s *QuickResponseData) SetQuickResponseArn(v string) *QuickResponseData {
	s.QuickResponseArn = &v
	return s
}

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *QuickResponseData) SetQuickResponseId(v string) *QuickResponseData {
	s.QuickResponseId = &v
	return s
}

// SetShortcutKey sets the ShortcutKey field's value.
func (s *QuickResponseData) SetShortcutKey(v string) *QuickResponseData {
	s.ShortcutKey = &v
	return s
}

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

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

// The container of quick response data.
type QuickResponseDataProvider struct {
	_ struct{} `type:"structure"`

	// The content of the quick response.
	//
	// Content is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QuickResponseDataProvider's
	// String and GoString methods.
	Content *string `locationName:"content" min:"1" type:"string" sensitive:"true"`
}

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

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

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

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

// SetContent sets the Content field's value.
func (s *QuickResponseDataProvider) SetContent(v string) *QuickResponseDataProvider {
	s.Content = &v
	return s
}

// The quick response fields to filter the quick response query results by.
//
// The following is the list of supported field names.
//
//   - name
//
//   - description
//
//   - shortcutKey
//
//   - isActive
//
//   - channels
//
//   - language
//
//   - contentType
//
//   - createdTime
//
//   - lastModifiedTime
//
//   - lastModifiedBy
//
//   - groupingConfiguration.criteria
//
//   - groupingConfiguration.values
type QuickResponseFilterField struct {
	_ struct{} `type:"structure"`

	// Whether to treat null value as a match for the attribute field.
	IncludeNoExistence *bool `locationName:"includeNoExistence" type:"boolean"`

	// The name of the attribute field to filter the quick responses by.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The operator to use for filtering.
	//
	// Operator is a required field
	Operator *string `locationName:"operator" type:"string" required:"true" enum:"QuickResponseFilterOperator"`

	// The values of attribute field to filter the quick response by.
	Values []*string `locationName:"values" 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 QuickResponseFilterField) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetIncludeNoExistence sets the IncludeNoExistence field's value.
func (s *QuickResponseFilterField) SetIncludeNoExistence(v bool) *QuickResponseFilterField {
	s.IncludeNoExistence = &v
	return s
}

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

// SetOperator sets the Operator field's value.
func (s *QuickResponseFilterField) SetOperator(v string) *QuickResponseFilterField {
	s.Operator = &v
	return s
}

// SetValues sets the Values field's value.
func (s *QuickResponseFilterField) SetValues(v []*string) *QuickResponseFilterField {
	s.Values = v
	return s
}

// The quick response fields to order the quick response query results by.
//
// The following is the list of supported field names.
//
//   - name
//
//   - description
//
//   - shortcutKey
//
//   - isActive
//
//   - channels
//
//   - language
//
//   - contentType
//
//   - createdTime
//
//   - lastModifiedTime
//
//   - lastModifiedBy
//
//   - groupingConfiguration.criteria
//
//   - groupingConfiguration.values
type QuickResponseOrderField struct {
	_ struct{} `type:"structure"`

	// The name of the attribute to order the quick response query results by.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The order at which the quick responses are sorted by.
	Order *string `locationName:"order" type:"string" enum:"Order"`
}

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

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

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

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

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

// SetOrder sets the Order field's value.
func (s *QuickResponseOrderField) SetOrder(v string) *QuickResponseOrderField {
	s.Order = &v
	return s
}

// The quick response fields to query quick responses by.
//
// The following is the list of supported field names.
//
//   - content
//
//   - name
//
//   - description
//
//   - shortcutKey
type QuickResponseQueryField struct {
	_ struct{} `type:"structure"`

	// Whether the query expects only exact matches on the attribute field values.
	// The results of the query will only include exact matches if this parameter
	// is set to false.
	AllowFuzziness *bool `locationName:"allowFuzziness" type:"boolean"`

	// The name of the attribute to query the quick responses by.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The operator to use for matching attribute field values in the query.
	//
	// Operator is a required field
	Operator *string `locationName:"operator" type:"string" required:"true" enum:"QuickResponseQueryOperator"`

	// The importance of the attribute field when calculating query result relevancy
	// scores. The value set for this parameter affects the ordering of search results.
	Priority *string `locationName:"priority" type:"string" enum:"Priority"`

	// The values of the attribute to query the quick responses by.
	//
	// Values is a required field
	Values []*string `locationName:"values" 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 QuickResponseQueryField) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAllowFuzziness sets the AllowFuzziness field's value.
func (s *QuickResponseQueryField) SetAllowFuzziness(v bool) *QuickResponseQueryField {
	s.AllowFuzziness = &v
	return s
}

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

// SetOperator sets the Operator field's value.
func (s *QuickResponseQueryField) SetOperator(v string) *QuickResponseQueryField {
	s.Operator = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *QuickResponseQueryField) SetPriority(v string) *QuickResponseQueryField {
	s.Priority = &v
	return s
}

// SetValues sets the Values field's value.
func (s *QuickResponseQueryField) SetValues(v []*string) *QuickResponseQueryField {
	s.Values = v
	return s
}

// Information about the import job.
type QuickResponseSearchExpression struct {
	_ struct{} `type:"structure"`

	// The configuration of filtering rules applied to quick response query results.
	Filters []*QuickResponseFilterField `locationName:"filters" type:"list"`

	// The quick response attribute fields on which the query results are ordered.
	OrderOnField *QuickResponseOrderField `locationName:"orderOnField" type:"structure"`

	// The quick response query expressions.
	Queries []*QuickResponseQueryField `locationName:"queries" 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 QuickResponseSearchExpression) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFilters sets the Filters field's value.
func (s *QuickResponseSearchExpression) SetFilters(v []*QuickResponseFilterField) *QuickResponseSearchExpression {
	s.Filters = v
	return s
}

// SetOrderOnField sets the OrderOnField field's value.
func (s *QuickResponseSearchExpression) SetOrderOnField(v *QuickResponseOrderField) *QuickResponseSearchExpression {
	s.OrderOnField = v
	return s
}

// SetQueries sets the Queries field's value.
func (s *QuickResponseSearchExpression) SetQueries(v []*QuickResponseQueryField) *QuickResponseSearchExpression {
	s.Queries = v
	return s
}

// The result of quick response search.
type QuickResponseSearchResultData struct {
	_ struct{} `type:"structure"`

	// The user defined contact attributes that are resolved when the search result
	// is returned.
	//
	// AttributesInterpolated is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QuickResponseSearchResultData's
	// String and GoString methods.
	AttributesInterpolated []*string `locationName:"attributesInterpolated" type:"list" sensitive:"true"`

	// The user defined contact attributes that are not resolved when the search
	// result is returned.
	//
	// AttributesNotInterpolated is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by QuickResponseSearchResultData's
	// String and GoString methods.
	AttributesNotInterpolated []*string `locationName:"attributesNotInterpolated" type:"list" sensitive:"true"`

	// The Amazon Connect contact channels this quick response applies to. The supported
	// contact channel types include Chat.
	Channels []*string `locationName:"channels" type:"list"`

	// The media type of the quick response content.
	//
	//    * Use application/x.quickresponse;format=plain for quick response written
	//    in plain text.
	//
	//    * Use application/x.quickresponse;format=markdown for quick response written
	//    in richtext.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The contents of the quick response.
	//
	// Contents is a required field
	Contents *QuickResponseContents `locationName:"contents" type:"structure" required:"true"`

	// The timestamp when the quick response was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The description of the quick response.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The configuration information of the user groups that the quick response
	// is accessible to.
	GroupingConfiguration *GroupingConfiguration `locationName:"groupingConfiguration" type:"structure"`

	// Whether the quick response is active.
	//
	// IsActive is a required field
	IsActive *bool `locationName:"isActive" type:"boolean" required:"true"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The language code value for the language in which the quick response is written.
	Language *string `locationName:"language" min:"2" type:"string"`

	// The Amazon Resource Name (ARN) of the user who last updated the quick response
	// search result data.
	LastModifiedBy *string `locationName:"lastModifiedBy" min:"1" type:"string"`

	// The timestamp when the quick response search result data was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `locationName:"lastModifiedTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

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

	// The Amazon Resource Name (ARN) of the quick response.
	//
	// QuickResponseArn is a required field
	QuickResponseArn *string `locationName:"quickResponseArn" type:"string" required:"true"`

	// The identifier of the quick response.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `locationName:"quickResponseId" type:"string" required:"true"`

	// The shortcut key of the quick response. The value should be unique across
	// the knowledge base.
	ShortcutKey *string `locationName:"shortcutKey" min:"1" type:"string"`

	// The resource status of the quick response.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"QuickResponseStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetAttributesInterpolated sets the AttributesInterpolated field's value.
func (s *QuickResponseSearchResultData) SetAttributesInterpolated(v []*string) *QuickResponseSearchResultData {
	s.AttributesInterpolated = v
	return s
}

// SetAttributesNotInterpolated sets the AttributesNotInterpolated field's value.
func (s *QuickResponseSearchResultData) SetAttributesNotInterpolated(v []*string) *QuickResponseSearchResultData {
	s.AttributesNotInterpolated = v
	return s
}

// SetChannels sets the Channels field's value.
func (s *QuickResponseSearchResultData) SetChannels(v []*string) *QuickResponseSearchResultData {
	s.Channels = v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *QuickResponseSearchResultData) SetContentType(v string) *QuickResponseSearchResultData {
	s.ContentType = &v
	return s
}

// SetContents sets the Contents field's value.
func (s *QuickResponseSearchResultData) SetContents(v *QuickResponseContents) *QuickResponseSearchResultData {
	s.Contents = v
	return s
}

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

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

// SetGroupingConfiguration sets the GroupingConfiguration field's value.
func (s *QuickResponseSearchResultData) SetGroupingConfiguration(v *GroupingConfiguration) *QuickResponseSearchResultData {
	s.GroupingConfiguration = v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *QuickResponseSearchResultData) SetIsActive(v bool) *QuickResponseSearchResultData {
	s.IsActive = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *QuickResponseSearchResultData) SetKnowledgeBaseArn(v string) *QuickResponseSearchResultData {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *QuickResponseSearchResultData) SetKnowledgeBaseId(v string) *QuickResponseSearchResultData {
	s.KnowledgeBaseId = &v
	return s
}

// SetLanguage sets the Language field's value.
func (s *QuickResponseSearchResultData) SetLanguage(v string) *QuickResponseSearchResultData {
	s.Language = &v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *QuickResponseSearchResultData) SetLastModifiedBy(v string) *QuickResponseSearchResultData {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QuickResponseSearchResultData) SetLastModifiedTime(v time.Time) *QuickResponseSearchResultData {
	s.LastModifiedTime = &v
	return s
}

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

// SetQuickResponseArn sets the QuickResponseArn field's value.
func (s *QuickResponseSearchResultData) SetQuickResponseArn(v string) *QuickResponseSearchResultData {
	s.QuickResponseArn = &v
	return s
}

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *QuickResponseSearchResultData) SetQuickResponseId(v string) *QuickResponseSearchResultData {
	s.QuickResponseId = &v
	return s
}

// SetShortcutKey sets the ShortcutKey field's value.
func (s *QuickResponseSearchResultData) SetShortcutKey(v string) *QuickResponseSearchResultData {
	s.ShortcutKey = &v
	return s
}

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

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

// The summary information about the quick response.
type QuickResponseSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Connect contact channels this quick response applies to. The supported
	// contact channel types include Chat.
	Channels []*string `locationName:"channels" type:"list"`

	// The media type of the quick response content.
	//
	//    * Use application/x.quickresponse;format=plain for quick response written
	//    in plain text.
	//
	//    * Use application/x.quickresponse;format=markdown for quick response written
	//    in richtext.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The timestamp when the quick response was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

	// The description of the quick response.
	Description *string `locationName:"description" min:"1" type:"string"`

	// Whether the quick response is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The Amazon Resource Name (ARN) of the knowledge base.
	//
	// KnowledgeBaseArn is a required field
	KnowledgeBaseArn *string `locationName:"knowledgeBaseArn" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the quick response
	// data.
	LastModifiedBy *string `locationName:"lastModifiedBy" min:"1" type:"string"`

	// The timestamp when the quick response summary was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `locationName:"lastModifiedTime" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`

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

	// The Amazon Resource Name (ARN) of the quick response.
	//
	// QuickResponseArn is a required field
	QuickResponseArn *string `locationName:"quickResponseArn" type:"string" required:"true"`

	// The identifier of the quick response.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `locationName:"quickResponseId" type:"string" required:"true"`

	// The resource status of the quick response.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"QuickResponseStatus"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetChannels sets the Channels field's value.
func (s *QuickResponseSummary) SetChannels(v []*string) *QuickResponseSummary {
	s.Channels = v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *QuickResponseSummary) SetContentType(v string) *QuickResponseSummary {
	s.ContentType = &v
	return s
}

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

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

// SetIsActive sets the IsActive field's value.
func (s *QuickResponseSummary) SetIsActive(v bool) *QuickResponseSummary {
	s.IsActive = &v
	return s
}

// SetKnowledgeBaseArn sets the KnowledgeBaseArn field's value.
func (s *QuickResponseSummary) SetKnowledgeBaseArn(v string) *QuickResponseSummary {
	s.KnowledgeBaseArn = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *QuickResponseSummary) SetKnowledgeBaseId(v string) *QuickResponseSummary {
	s.KnowledgeBaseId = &v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *QuickResponseSummary) SetLastModifiedBy(v string) *QuickResponseSummary {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QuickResponseSummary) SetLastModifiedTime(v time.Time) *QuickResponseSummary {
	s.LastModifiedTime = &v
	return s
}

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

// SetQuickResponseArn sets the QuickResponseArn field's value.
func (s *QuickResponseSummary) SetQuickResponseArn(v string) *QuickResponseSummary {
	s.QuickResponseArn = &v
	return s
}

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *QuickResponseSummary) SetQuickResponseId(v string) *QuickResponseSummary {
	s.QuickResponseId = &v
	return s
}

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

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

// Details about the source content ranking data.
type RankingData struct {
	_ struct{} `type:"structure"`

	// The relevance score of the content.
	RelevanceLevel *string `locationName:"relevanceLevel" type:"string" enum:"RelevanceLevel"`

	// The relevance level of the recommendation.
	RelevanceScore *float64 `locationName:"relevanceScore" type:"double"`
}

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

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

// SetRelevanceLevel sets the RelevanceLevel field's value.
func (s *RankingData) SetRelevanceLevel(v string) *RankingData {
	s.RelevanceLevel = &v
	return s
}

// SetRelevanceScore sets the RelevanceScore field's value.
func (s *RankingData) SetRelevanceScore(v float64) *RankingData {
	s.RelevanceScore = &v
	return s
}

// Information about the recommendation.
type RecommendationData struct {
	_ struct{} `type:"structure"`

	// Summary of the recommended content.
	Data *DataSummary `locationName:"data" type:"structure"`

	// The recommended document.
	Document *Document `locationName:"document" type:"structure"`

	// The identifier of the recommendation.
	//
	// RecommendationId is a required field
	RecommendationId *string `locationName:"recommendationId" min:"1" type:"string" required:"true"`

	// The relevance level of the recommendation.
	RelevanceLevel *string `locationName:"relevanceLevel" type:"string" enum:"RelevanceLevel"`

	// The relevance score of the recommendation.
	RelevanceScore *float64 `locationName:"relevanceScore" type:"double"`

	// The type of recommendation.
	Type *string `locationName:"type" type:"string" enum:"RecommendationType"`
}

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

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

// SetData sets the Data field's value.
func (s *RecommendationData) SetData(v *DataSummary) *RecommendationData {
	s.Data = v
	return s
}

// SetDocument sets the Document field's value.
func (s *RecommendationData) SetDocument(v *Document) *RecommendationData {
	s.Document = v
	return s
}

// SetRecommendationId sets the RecommendationId field's value.
func (s *RecommendationData) SetRecommendationId(v string) *RecommendationData {
	s.RecommendationId = &v
	return s
}

// SetRelevanceLevel sets the RelevanceLevel field's value.
func (s *RecommendationData) SetRelevanceLevel(v string) *RecommendationData {
	s.RelevanceLevel = &v
	return s
}

// SetRelevanceScore sets the RelevanceScore field's value.
func (s *RecommendationData) SetRelevanceScore(v float64) *RecommendationData {
	s.RelevanceScore = &v
	return s
}

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

// A recommendation trigger provides context on the event that produced the
// referenced recommendations. Recommendations are only referenced in recommendationIds
// by a single RecommendationTrigger.
type RecommendationTrigger struct {
	_ struct{} `type:"structure"`

	// A union type containing information related to the trigger.
	//
	// Data is a required field
	Data *RecommendationTriggerData `locationName:"data" type:"structure" required:"true"`

	// The identifier of the recommendation trigger.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The identifiers of the recommendations.
	//
	// RecommendationIds is a required field
	RecommendationIds []*string `locationName:"recommendationIds" type:"list" required:"true"`

	// The source of the recommendation trigger.
	//
	//    * ISSUE_DETECTION: The corresponding recommendations were triggered by
	//    a Contact Lens issue.
	//
	//    * RULE_EVALUATION: The corresponding recommendations were triggered by
	//    a Contact Lens rule.
	//
	// Source is a required field
	Source *string `locationName:"source" type:"string" required:"true" enum:"RecommendationSourceType"`

	// The type of recommendation trigger.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"RecommendationTriggerType"`
}

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

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

// SetData sets the Data field's value.
func (s *RecommendationTrigger) SetData(v *RecommendationTriggerData) *RecommendationTrigger {
	s.Data = v
	return s
}

// SetId sets the Id field's value.
func (s *RecommendationTrigger) SetId(v string) *RecommendationTrigger {
	s.Id = &v
	return s
}

// SetRecommendationIds sets the RecommendationIds field's value.
func (s *RecommendationTrigger) SetRecommendationIds(v []*string) *RecommendationTrigger {
	s.RecommendationIds = v
	return s
}

// SetSource sets the Source field's value.
func (s *RecommendationTrigger) SetSource(v string) *RecommendationTrigger {
	s.Source = &v
	return s
}

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

// A union type containing information related to the trigger.
type RecommendationTriggerData struct {
	_ struct{} `type:"structure"`

	// Data associated with the QUERY RecommendationTriggerType.
	Query *QueryRecommendationTriggerData `locationName:"query" 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 RecommendationTriggerData) String() string {
	return awsutil.Prettify(s)
}

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

// SetQuery sets the Query field's value.
func (s *RecommendationTriggerData) SetQuery(v *QueryRecommendationTriggerData) *RecommendationTriggerData {
	s.Query = v
	return s
}

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" 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 RemoveKnowledgeBaseTemplateUriInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *RemoveKnowledgeBaseTemplateUriInput) SetKnowledgeBaseId(v string) *RemoveKnowledgeBaseTemplateUriInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

// Information about how to render the content.
type RenderingConfiguration struct {
	_ struct{} `type:"structure"`

	// A URI template containing exactly one variable in ${variableName} format.
	// This can only be set for EXTERNAL knowledge bases. For Salesforce, ServiceNow,
	// and Zendesk, the variable must be one of the following:
	//
	//    * Salesforce: Id, ArticleNumber, VersionNumber, Title, PublishStatus,
	//    or IsDeleted
	//
	//    * ServiceNow: number, short_description, sys_mod_count, workflow_state,
	//    or active
	//
	//    * Zendesk: id, title, updated_at, or draft
	//
	// The variable is replaced with the actual value for a piece of content when
	// calling GetContent (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_GetContent.html).
	TemplateUri *string `locationName:"templateUri" 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 RenderingConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTemplateUri sets the TemplateUri field's value.
func (s *RenderingConfiguration) SetTemplateUri(v string) *RenderingConfiguration {
	s.TemplateUri = &v
	return s
}

// The request reached the service more than 15 minutes after the date stamp
// on the request or more than 15 minutes after the request expiration date
// (such as for pre-signed URLs), or the date stamp on the request is more than
// 15 minutes in the future.
type RequestTimeoutException 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 RequestTimeoutException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorRequestTimeoutException(v protocol.ResponseMetadata) error {
	return &RequestTimeoutException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// The specified resource does not exist.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	// The specified resource name.
	ResourceName *string `locationName:"resourceName" type:"string"`
}

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

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

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s\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
}

// Information about the result.
type ResultData struct {
	_ struct{} `type:"structure"`

	// Summary of the recommended content.
	Data *DataSummary `locationName:"data" type:"structure"`

	// The document.
	Document *Document `locationName:"document" type:"structure"`

	// The relevance score of the results.
	RelevanceScore *float64 `locationName:"relevanceScore" type:"double"`

	// The identifier of the result data.
	//
	// ResultId is a required field
	ResultId *string `locationName:"resultId" type:"string" required:"true"`

	// The type of the query result.
	Type *string `locationName:"type" type:"string" enum:"QueryResultType"`
}

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

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

// SetData sets the Data field's value.
func (s *ResultData) SetData(v *DataSummary) *ResultData {
	s.Data = v
	return s
}

// SetDocument sets the Document field's value.
func (s *ResultData) SetDocument(v *Document) *ResultData {
	s.Document = v
	return s
}

// SetRelevanceScore sets the RelevanceScore field's value.
func (s *ResultData) SetRelevanceScore(v float64) *ResultData {
	s.RelevanceScore = &v
	return s
}

// SetResultId sets the ResultId field's value.
func (s *ResultData) SetResultId(v string) *ResultData {
	s.ResultId = &v
	return s
}

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

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The search expression to filter results.
	//
	// SearchExpression is a required field
	SearchExpression *SearchExpression `locationName:"searchExpression" 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 SearchContentInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchContentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchContentInput"}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	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.SearchExpression == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchExpression"))
	}
	if s.SearchExpression != nil {
		if err := s.SearchExpression.Validate(); err != nil {
			invalidParams.AddNested("SearchExpression", err.(request.ErrInvalidParams))
		}
	}

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *SearchContentInput) SetKnowledgeBaseId(v string) *SearchContentInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

// SetSearchExpression sets the SearchExpression field's value.
func (s *SearchContentInput) SetSearchExpression(v *SearchExpression) *SearchContentInput {
	s.SearchExpression = v
	return s
}

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

	// Summary information about the content.
	//
	// ContentSummaries is a required field
	ContentSummaries []*ContentSummary `locationName:"contentSummaries" type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" 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 SearchContentOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContentSummaries sets the ContentSummaries field's value.
func (s *SearchContentOutput) SetContentSummaries(v []*ContentSummary) *SearchContentOutput {
	s.ContentSummaries = v
	return s
}

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

// The search expression.
type SearchExpression struct {
	_ struct{} `type:"structure"`

	// The search expression filters.
	//
	// Filters is a required field
	Filters []*Filter `locationName:"filters" 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 SearchExpression) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFilters sets the Filters field's value.
func (s *SearchExpression) SetFilters(v []*Filter) *SearchExpression {
	s.Filters = v
	return s
}

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

	// The user-defined Amazon Connect contact attributes (https://docs.aws.amazon.com/connect/latest/adminguide/connect-attrib-list.html#user-defined-attributes)
	// to be resolved when search results are returned.
	//
	// Attributes is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SearchQuickResponsesInput's
	// String and GoString methods.
	Attributes map[string]*string `locationName:"attributes" type:"map" sensitive:"true"`

	// The identifier of the knowledge base. This should be a QUICK_RESPONSES type
	// knowledge base. Can be either the ID or the ARN. URLs cannot contain the
	// ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The search expression for querying the quick response.
	//
	// SearchExpression is a required field
	SearchExpression *QuickResponseSearchExpression `locationName:"searchExpression" 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 SearchQuickResponsesInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchQuickResponsesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchQuickResponsesInput"}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	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.SearchExpression == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchExpression"))
	}
	if s.SearchExpression != nil {
		if err := s.SearchExpression.Validate(); err != nil {
			invalidParams.AddNested("SearchExpression", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *SearchQuickResponsesInput) SetKnowledgeBaseId(v string) *SearchQuickResponsesInput {
	s.KnowledgeBaseId = &v
	return s
}

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

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

// SetSearchExpression sets the SearchExpression field's value.
func (s *SearchQuickResponsesInput) SetSearchExpression(v *QuickResponseSearchExpression) *SearchQuickResponsesInput {
	s.SearchExpression = v
	return s
}

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

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The results of the quick response search.
	//
	// Results is a required field
	Results []*QuickResponseSearchResultData `locationName:"results" 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 SearchQuickResponsesOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetResults sets the Results field's value.
func (s *SearchQuickResponsesOutput) SetResults(v []*QuickResponseSearchResultData) *SearchQuickResponsesOutput {
	s.Results = v
	return s
}

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

	// The identifier of the Amazon Q assistant. Can be either the ID or the ARN.
	// URLs cannot contain the ARN.
	//
	// AssistantId is a required field
	AssistantId *string `location:"uri" locationName:"assistantId" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The search expression to filter results.
	//
	// SearchExpression is a required field
	SearchExpression *SearchExpression `locationName:"searchExpression" 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 SearchSessionsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchSessionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchSessionsInput"}
	if s.AssistantId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssistantId"))
	}
	if s.AssistantId != nil && len(*s.AssistantId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssistantId", 1))
	}
	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.SearchExpression == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchExpression"))
	}
	if s.SearchExpression != nil {
		if err := s.SearchExpression.Validate(); err != nil {
			invalidParams.AddNested("SearchExpression", err.(request.ErrInvalidParams))
		}
	}

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

// SetAssistantId sets the AssistantId field's value.
func (s *SearchSessionsInput) SetAssistantId(v string) *SearchSessionsInput {
	s.AssistantId = &v
	return s
}

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

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

// SetSearchExpression sets the SearchExpression field's value.
func (s *SearchSessionsInput) SetSearchExpression(v *SearchExpression) *SearchSessionsInput {
	s.SearchExpression = v
	return s
}

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

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Summary information about the sessions.
	//
	// SessionSummaries is a required field
	SessionSummaries []*SessionSummary `locationName:"sessionSummaries" 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 SearchSessionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetSessionSummaries sets the SessionSummaries field's value.
func (s *SearchSessionsOutput) SetSessionSummaries(v []*SessionSummary) *SearchSessionsOutput {
	s.SessionSummaries = v
	return s
}

// The configuration information for the customer managed key used for encryption.
type ServerSideEncryptionConfiguration struct {
	_ struct{} `type:"structure"`

	// The customer managed key used for encryption. For more information about
	// setting up a customer managed key for Amazon Q, see Enable Amazon Q in Connect
	// for your instance (https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).
	// For information about valid ID values, see Key identifiers (KeyId) (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id).
	KmsKeyId *string `locationName:"kmsKeyId" 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 ServerSideEncryptionConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *ServerSideEncryptionConfiguration) SetKmsKeyId(v string) *ServerSideEncryptionConfiguration {
	s.KmsKeyId = &v
	return s
}

// You've exceeded your service quota. To perform the requested action, remove
// some of the relevant resources, or use service quotas to request a service
// quota increase.
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Information about the session.
type SessionData struct {
	_ struct{} `type:"structure"`

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

	// The configuration information for the session integration.
	IntegrationConfiguration *SessionIntegrationConfiguration `locationName:"integrationConfiguration" type:"structure"`

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

	// The Amazon Resource Name (ARN) of the session.
	//
	// SessionArn is a required field
	SessionArn *string `locationName:"sessionArn" type:"string" required:"true"`

	// The identifier of the session.
	//
	// SessionId is a required field
	SessionId *string `locationName:"sessionId" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// SetIntegrationConfiguration sets the IntegrationConfiguration field's value.
func (s *SessionData) SetIntegrationConfiguration(v *SessionIntegrationConfiguration) *SessionData {
	s.IntegrationConfiguration = v
	return s
}

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

// SetSessionArn sets the SessionArn field's value.
func (s *SessionData) SetSessionArn(v string) *SessionData {
	s.SessionArn = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *SessionData) SetSessionId(v string) *SessionData {
	s.SessionId = &v
	return s
}

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

// The configuration information for the session integration.
type SessionIntegrationConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the integrated Amazon SNS topic used for
	// streaming chat messages.
	TopicIntegrationArn *string `locationName:"topicIntegrationArn" 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 SessionIntegrationConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// SetTopicIntegrationArn sets the TopicIntegrationArn field's value.
func (s *SessionIntegrationConfiguration) SetTopicIntegrationArn(v string) *SessionIntegrationConfiguration {
	s.TopicIntegrationArn = &v
	return s
}

// Summary information about the session.
type SessionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Q assistant.
	//
	// AssistantArn is a required field
	AssistantArn *string `locationName:"assistantArn" type:"string" required:"true"`

	// The identifier of the Amazon Q assistant.
	//
	// AssistantId is a required field
	AssistantId *string `locationName:"assistantId" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the session.
	//
	// SessionArn is a required field
	SessionArn *string `locationName:"sessionArn" type:"string" required:"true"`

	// The identifier of the session.
	//
	// SessionId is a required field
	SessionId *string `locationName:"sessionId" 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 SessionSummary) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssistantArn sets the AssistantArn field's value.
func (s *SessionSummary) SetAssistantArn(v string) *SessionSummary {
	s.AssistantArn = &v
	return s
}

// SetAssistantId sets the AssistantId field's value.
func (s *SessionSummary) SetAssistantId(v string) *SessionSummary {
	s.AssistantId = &v
	return s
}

// SetSessionArn sets the SessionArn field's value.
func (s *SessionSummary) SetSessionArn(v string) *SessionSummary {
	s.SessionArn = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *SessionSummary) SetSessionId(v string) *SessionSummary {
	s.SessionId = &v
	return s
}

// Configuration information about the external data source.
type SourceConfiguration struct {
	_ struct{} `type:"structure"`

	// Configuration information for Amazon AppIntegrations to automatically ingest
	// content.
	AppIntegrations *AppIntegrationsConfiguration `locationName:"appIntegrations" 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 SourceConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAppIntegrations sets the AppIntegrations field's value.
func (s *SourceConfiguration) SetAppIntegrations(v *AppIntegrationsConfiguration) *SourceConfiguration {
	s.AppIntegrations = v
	return s
}

// Details about the source content data.
type SourceContentDataDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the source content.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Details about the source content ranking data.
	//
	// RankingData is a required field
	RankingData *RankingData `locationName:"rankingData" type:"structure" required:"true"`

	// Details about the source content text data.
	//
	// TextData is a required field
	TextData *TextData `locationName:"textData" type:"structure" required:"true"`

	// The type of the source content.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"SourceContentType"`
}

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

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

// SetId sets the Id field's value.
func (s *SourceContentDataDetails) SetId(v string) *SourceContentDataDetails {
	s.Id = &v
	return s
}

// SetRankingData sets the RankingData field's value.
func (s *SourceContentDataDetails) SetRankingData(v *RankingData) *SourceContentDataDetails {
	s.RankingData = v
	return s
}

// SetTextData sets the TextData field's value.
func (s *SourceContentDataDetails) SetTextData(v *TextData) *SourceContentDataDetails {
	s.TextData = v
	return s
}

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

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

	// The type of content to upload.
	//
	// ContentType is a required field
	ContentType *string `locationName:"contentType" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The expected expiration time of the generated presigned URL, specified in
	// minutes.
	PresignedUrlTimeToLive *int64 `locationName:"presignedUrlTimeToLive" 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 StartContentUploadInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetContentType sets the ContentType field's value.
func (s *StartContentUploadInput) SetContentType(v string) *StartContentUploadInput {
	s.ContentType = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *StartContentUploadInput) SetKnowledgeBaseId(v string) *StartContentUploadInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetPresignedUrlTimeToLive sets the PresignedUrlTimeToLive field's value.
func (s *StartContentUploadInput) SetPresignedUrlTimeToLive(v int64) *StartContentUploadInput {
	s.PresignedUrlTimeToLive = &v
	return s
}

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

	// The headers to include in the upload.
	//
	// HeadersToInclude is a required field
	HeadersToInclude map[string]*string `locationName:"headersToInclude" type:"map" required:"true"`

	// The identifier of the upload.
	//
	// UploadId is a required field
	UploadId *string `locationName:"uploadId" min:"1" type:"string" required:"true"`

	// The URL of the upload.
	//
	// Url is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartContentUploadOutput's
	// String and GoString methods.
	//
	// Url is a required field
	Url *string `locationName:"url" min:"1" type:"string" required:"true" sensitive:"true"`

	// The expiration time of the URL as an epoch timestamp.
	//
	// UrlExpiry is a required field
	UrlExpiry *time.Time `locationName:"urlExpiry" type:"timestamp" timestampFormat:"unixTimestamp" required:"true"`
}

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

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

// SetHeadersToInclude sets the HeadersToInclude field's value.
func (s *StartContentUploadOutput) SetHeadersToInclude(v map[string]*string) *StartContentUploadOutput {
	s.HeadersToInclude = v
	return s
}

// SetUploadId sets the UploadId field's value.
func (s *StartContentUploadOutput) SetUploadId(v string) *StartContentUploadOutput {
	s.UploadId = &v
	return s
}

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

// SetUrlExpiry sets the UrlExpiry field's value.
func (s *StartContentUploadOutput) SetUrlExpiry(v time.Time) *StartContentUploadOutput {
	s.UrlExpiry = &v
	return s
}

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

	// The tags used to organize, track, or control access for this resource.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The configuration information of the external source that the resource data
	// are imported from.
	ExternalSourceConfiguration *ExternalSourceConfiguration `locationName:"externalSourceConfiguration" type:"structure"`

	// The type of the import job.
	//
	//    * For importing quick response resource, set the value to QUICK_RESPONSES.
	//
	// ImportJobType is a required field
	ImportJobType *string `locationName:"importJobType" type:"string" required:"true" enum:"ImportJobType"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	//    * For importing Amazon Q quick responses, this should be a QUICK_RESPONSES
	//    type knowledge base.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The metadata fields of the imported Amazon Q resources.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// A pointer to the uploaded asset. This value is returned by StartContentUpload
	// (https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html).
	//
	// UploadId is a required field
	UploadId *string `locationName:"uploadId" 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 StartImportJobInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartImportJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartImportJobInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.ImportJobType == nil {
		invalidParams.Add(request.NewErrParamRequired("ImportJobType"))
	}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	if s.UploadId == nil {
		invalidParams.Add(request.NewErrParamRequired("UploadId"))
	}
	if s.UploadId != nil && len(*s.UploadId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UploadId", 1))
	}
	if s.ExternalSourceConfiguration != nil {
		if err := s.ExternalSourceConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ExternalSourceConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetClientToken sets the ClientToken field's value.
func (s *StartImportJobInput) SetClientToken(v string) *StartImportJobInput {
	s.ClientToken = &v
	return s
}

// SetExternalSourceConfiguration sets the ExternalSourceConfiguration field's value.
func (s *StartImportJobInput) SetExternalSourceConfiguration(v *ExternalSourceConfiguration) *StartImportJobInput {
	s.ExternalSourceConfiguration = v
	return s
}

// SetImportJobType sets the ImportJobType field's value.
func (s *StartImportJobInput) SetImportJobType(v string) *StartImportJobInput {
	s.ImportJobType = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *StartImportJobInput) SetKnowledgeBaseId(v string) *StartImportJobInput {
	s.KnowledgeBaseId = &v
	return s
}

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

// SetUploadId sets the UploadId field's value.
func (s *StartImportJobInput) SetUploadId(v string) *StartImportJobInput {
	s.UploadId = &v
	return s
}

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

	// The import job.
	ImportJob *ImportJobData `locationName:"importJob" 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 StartImportJobOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetImportJob sets the ImportJob field's value.
func (s *StartImportJobOutput) SetImportJob(v *ImportJobData) *StartImportJobOutput {
	s.ImportJob = v
	return s
}

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

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

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

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

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

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

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

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

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

// Details about the source content text data.
type TextData struct {
	_ struct{} `type:"structure"`

	// The text of the document.
	Excerpt *DocumentText `locationName:"excerpt" type:"structure"`

	// The text of the document.
	Title *DocumentText `locationName:"title" 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 TextData) String() string {
	return awsutil.Prettify(s)
}

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

// SetExcerpt sets the Excerpt field's value.
func (s *TextData) SetExcerpt(v *DocumentText) *TextData {
	s.Excerpt = v
	return s
}

// SetTitle sets the Title field's value.
func (s *TextData) SetTitle(v *DocumentText) *TextData {
	s.Title = v
	return s
}

// Amazon Q in Connect throws this exception if you have too many tags in your
// tag set.
type TooManyTagsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	// The specified resource name.
	ResourceName *string `locationName:"resourceName" type:"string"`
}

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

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

func newErrorTooManyTagsException(v protocol.ResponseMetadata) error {
	return &TooManyTagsException{
		RespMetadata: v,
	}
}

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

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

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

func (s *TooManyTagsException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

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

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tag keys.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
}

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

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

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

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

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

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

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

	// The identifier of the content. Can be either the ID or the ARN. URLs cannot
	// contain the ARN.
	//
	// ContentId is a required field
	ContentId *string `location:"uri" locationName:"contentId" type:"string" required:"true"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// A key/value map to store attributes without affecting tagging or recommendations.
	// For example, when synchronizing data between an external system and Amazon
	// Q, you can store an external version identifier as metadata to utilize for
	// determining drift.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// The URI for the article. If the knowledge base has a templateUri, setting
	// this argument overrides it for this piece of content. To remove an existing
	// overrideLinkOurUri, exclude this argument and set removeOverrideLinkOutUri
	// to true.
	OverrideLinkOutUri *string `locationName:"overrideLinkOutUri" min:"1" type:"string"`

	// Unset the existing overrideLinkOutUri if it exists.
	RemoveOverrideLinkOutUri *bool `locationName:"removeOverrideLinkOutUri" type:"boolean"`

	// The revisionId of the content resource to update, taken from an earlier call
	// to GetContent, GetContentSummary, SearchContent, or ListContents. If included,
	// this argument acts as an optimistic lock to ensure content was not modified
	// since it was last read. If it has been modified, this API throws a PreconditionFailedException.
	RevisionId *string `locationName:"revisionId" min:"1" type:"string"`

	// The title of the content.
	Title *string `locationName:"title" min:"1" type:"string"`

	// A pointer to the uploaded asset. This value is returned by StartContentUpload
	// (https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_StartContentUpload.html).
	UploadId *string `locationName:"uploadId" 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 UpdateContentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetContentId sets the ContentId field's value.
func (s *UpdateContentInput) SetContentId(v string) *UpdateContentInput {
	s.ContentId = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *UpdateContentInput) SetKnowledgeBaseId(v string) *UpdateContentInput {
	s.KnowledgeBaseId = &v
	return s
}

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

// SetOverrideLinkOutUri sets the OverrideLinkOutUri field's value.
func (s *UpdateContentInput) SetOverrideLinkOutUri(v string) *UpdateContentInput {
	s.OverrideLinkOutUri = &v
	return s
}

// SetRemoveOverrideLinkOutUri sets the RemoveOverrideLinkOutUri field's value.
func (s *UpdateContentInput) SetRemoveOverrideLinkOutUri(v bool) *UpdateContentInput {
	s.RemoveOverrideLinkOutUri = &v
	return s
}

// SetRevisionId sets the RevisionId field's value.
func (s *UpdateContentInput) SetRevisionId(v string) *UpdateContentInput {
	s.RevisionId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *UpdateContentInput) SetTitle(v string) *UpdateContentInput {
	s.Title = &v
	return s
}

// SetUploadId sets the UploadId field's value.
func (s *UpdateContentInput) SetUploadId(v string) *UpdateContentInput {
	s.UploadId = &v
	return s
}

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

	// The content.
	Content *ContentData `locationName:"content" 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 UpdateContentOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetContent sets the Content field's value.
func (s *UpdateContentOutput) SetContent(v *ContentData) *UpdateContentOutput {
	s.Content = v
	return s
}

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

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The template URI to update.
	//
	// TemplateUri is a required field
	TemplateUri *string `locationName:"templateUri" 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 UpdateKnowledgeBaseTemplateUriInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *UpdateKnowledgeBaseTemplateUriInput) SetKnowledgeBaseId(v string) *UpdateKnowledgeBaseTemplateUriInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetTemplateUri sets the TemplateUri field's value.
func (s *UpdateKnowledgeBaseTemplateUriInput) SetTemplateUri(v string) *UpdateKnowledgeBaseTemplateUriInput {
	s.TemplateUri = &v
	return s
}

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

	// The knowledge base to update.
	KnowledgeBase *KnowledgeBaseData `locationName:"knowledgeBase" 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 UpdateKnowledgeBaseTemplateUriOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetKnowledgeBase sets the KnowledgeBase field's value.
func (s *UpdateKnowledgeBaseTemplateUriOutput) SetKnowledgeBase(v *KnowledgeBaseData) *UpdateKnowledgeBaseTemplateUriOutput {
	s.KnowledgeBase = v
	return s
}

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

	// The Amazon Connect contact channels this quick response applies to. The supported
	// contact channel types include Chat.
	Channels []*string `locationName:"channels" type:"list"`

	// The updated content of the quick response.
	Content *QuickResponseDataProvider `locationName:"content" type:"structure"`

	// The media type of the quick response content.
	//
	//    * Use application/x.quickresponse;format=plain for quick response written
	//    in plain text.
	//
	//    * Use application/x.quickresponse;format=markdown for quick response written
	//    in richtext.
	ContentType *string `locationName:"contentType" type:"string"`

	// The updated description of the quick response.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The updated grouping configuration of the quick response.
	GroupingConfiguration *GroupingConfiguration `locationName:"groupingConfiguration" type:"structure"`

	// Whether the quick response is active.
	IsActive *bool `locationName:"isActive" type:"boolean"`

	// The identifier of the knowledge base. This should not be a QUICK_RESPONSES
	// type knowledge base if you're storing Amazon Q Content resource to it. Can
	// be either the ID or the ARN. URLs cannot contain the ARN.
	//
	// KnowledgeBaseId is a required field
	KnowledgeBaseId *string `location:"uri" locationName:"knowledgeBaseId" type:"string" required:"true"`

	// The language code value for the language in which the quick response is written.
	// The supported language codes include de_DE, en_US, es_ES, fr_FR, id_ID, it_IT,
	// ja_JP, ko_KR, pt_BR, zh_CN, zh_TW
	Language *string `locationName:"language" min:"2" type:"string"`

	// The name of the quick response.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The identifier of the quick response.
	//
	// QuickResponseId is a required field
	QuickResponseId *string `location:"uri" locationName:"quickResponseId" type:"string" required:"true"`

	// Whether to remove the description from the quick response.
	RemoveDescription *bool `locationName:"removeDescription" type:"boolean"`

	// Whether to remove the grouping configuration of the quick response.
	RemoveGroupingConfiguration *bool `locationName:"removeGroupingConfiguration" type:"boolean"`

	// Whether to remove the shortcut key of the quick response.
	RemoveShortcutKey *bool `locationName:"removeShortcutKey" type:"boolean"`

	// The shortcut key of the quick response. The value should be unique across
	// the knowledge base.
	ShortcutKey *string `locationName:"shortcutKey" 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 UpdateQuickResponseInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQuickResponseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQuickResponseInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KnowledgeBaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("KnowledgeBaseId"))
	}
	if s.KnowledgeBaseId != nil && len(*s.KnowledgeBaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KnowledgeBaseId", 1))
	}
	if s.Language != nil && len(*s.Language) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Language", 2))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.QuickResponseId == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickResponseId"))
	}
	if s.QuickResponseId != nil && len(*s.QuickResponseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickResponseId", 1))
	}
	if s.ShortcutKey != nil && len(*s.ShortcutKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ShortcutKey", 1))
	}
	if s.Content != nil {
		if err := s.Content.Validate(); err != nil {
			invalidParams.AddNested("Content", err.(request.ErrInvalidParams))
		}
	}
	if s.GroupingConfiguration != nil {
		if err := s.GroupingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("GroupingConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetChannels sets the Channels field's value.
func (s *UpdateQuickResponseInput) SetChannels(v []*string) *UpdateQuickResponseInput {
	s.Channels = v
	return s
}

// SetContent sets the Content field's value.
func (s *UpdateQuickResponseInput) SetContent(v *QuickResponseDataProvider) *UpdateQuickResponseInput {
	s.Content = v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *UpdateQuickResponseInput) SetContentType(v string) *UpdateQuickResponseInput {
	s.ContentType = &v
	return s
}

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

// SetGroupingConfiguration sets the GroupingConfiguration field's value.
func (s *UpdateQuickResponseInput) SetGroupingConfiguration(v *GroupingConfiguration) *UpdateQuickResponseInput {
	s.GroupingConfiguration = v
	return s
}

// SetIsActive sets the IsActive field's value.
func (s *UpdateQuickResponseInput) SetIsActive(v bool) *UpdateQuickResponseInput {
	s.IsActive = &v
	return s
}

// SetKnowledgeBaseId sets the KnowledgeBaseId field's value.
func (s *UpdateQuickResponseInput) SetKnowledgeBaseId(v string) *UpdateQuickResponseInput {
	s.KnowledgeBaseId = &v
	return s
}

// SetLanguage sets the Language field's value.
func (s *UpdateQuickResponseInput) SetLanguage(v string) *UpdateQuickResponseInput {
	s.Language = &v
	return s
}

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

// SetQuickResponseId sets the QuickResponseId field's value.
func (s *UpdateQuickResponseInput) SetQuickResponseId(v string) *UpdateQuickResponseInput {
	s.QuickResponseId = &v
	return s
}

// SetRemoveDescription sets the RemoveDescription field's value.
func (s *UpdateQuickResponseInput) SetRemoveDescription(v bool) *UpdateQuickResponseInput {
	s.RemoveDescription = &v
	return s
}

// SetRemoveGroupingConfiguration sets the RemoveGroupingConfiguration field's value.
func (s *UpdateQuickResponseInput) SetRemoveGroupingConfiguration(v bool) *UpdateQuickResponseInput {
	s.RemoveGroupingConfiguration = &v
	return s
}

// SetRemoveShortcutKey sets the RemoveShortcutKey field's value.
func (s *UpdateQuickResponseInput) SetRemoveShortcutKey(v bool) *UpdateQuickResponseInput {
	s.RemoveShortcutKey = &v
	return s
}

// SetShortcutKey sets the ShortcutKey field's value.
func (s *UpdateQuickResponseInput) SetShortcutKey(v string) *UpdateQuickResponseInput {
	s.ShortcutKey = &v
	return s
}

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

	// The quick response.
	QuickResponse *QuickResponseData `locationName:"quickResponse" 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 UpdateQuickResponseOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetQuickResponse sets the QuickResponse field's value.
func (s *UpdateQuickResponseOutput) SetQuickResponse(v *QuickResponseData) *UpdateQuickResponseOutput {
	s.QuickResponse = v
	return s
}

// The input fails to satisfy the constraints specified by a service.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

const (
	// AssistantCapabilityTypeV1 is a AssistantCapabilityType enum value
	AssistantCapabilityTypeV1 = "V1"

	// AssistantCapabilityTypeV2 is a AssistantCapabilityType enum value
	AssistantCapabilityTypeV2 = "V2"
)

// AssistantCapabilityType_Values returns all elements of the AssistantCapabilityType enum
func AssistantCapabilityType_Values() []string {
	return []string{
		AssistantCapabilityTypeV1,
		AssistantCapabilityTypeV2,
	}
}

const (
	// AssistantStatusCreateInProgress is a AssistantStatus enum value
	AssistantStatusCreateInProgress = "CREATE_IN_PROGRESS"

	// AssistantStatusCreateFailed is a AssistantStatus enum value
	AssistantStatusCreateFailed = "CREATE_FAILED"

	// AssistantStatusActive is a AssistantStatus enum value
	AssistantStatusActive = "ACTIVE"

	// AssistantStatusDeleteInProgress is a AssistantStatus enum value
	AssistantStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// AssistantStatusDeleteFailed is a AssistantStatus enum value
	AssistantStatusDeleteFailed = "DELETE_FAILED"

	// AssistantStatusDeleted is a AssistantStatus enum value
	AssistantStatusDeleted = "DELETED"
)

// AssistantStatus_Values returns all elements of the AssistantStatus enum
func AssistantStatus_Values() []string {
	return []string{
		AssistantStatusCreateInProgress,
		AssistantStatusCreateFailed,
		AssistantStatusActive,
		AssistantStatusDeleteInProgress,
		AssistantStatusDeleteFailed,
		AssistantStatusDeleted,
	}
}

const (
	// AssistantTypeAgent is a AssistantType enum value
	AssistantTypeAgent = "AGENT"
)

// AssistantType_Values returns all elements of the AssistantType enum
func AssistantType_Values() []string {
	return []string{
		AssistantTypeAgent,
	}
}

const (
	// AssociationTypeKnowledgeBase is a AssociationType enum value
	AssociationTypeKnowledgeBase = "KNOWLEDGE_BASE"
)

// AssociationType_Values returns all elements of the AssociationType enum
func AssociationType_Values() []string {
	return []string{
		AssociationTypeKnowledgeBase,
	}
}

const (
	// ContentStatusCreateInProgress is a ContentStatus enum value
	ContentStatusCreateInProgress = "CREATE_IN_PROGRESS"

	// ContentStatusCreateFailed is a ContentStatus enum value
	ContentStatusCreateFailed = "CREATE_FAILED"

	// ContentStatusActive is a ContentStatus enum value
	ContentStatusActive = "ACTIVE"

	// ContentStatusDeleteInProgress is a ContentStatus enum value
	ContentStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// ContentStatusDeleteFailed is a ContentStatus enum value
	ContentStatusDeleteFailed = "DELETE_FAILED"

	// ContentStatusDeleted is a ContentStatus enum value
	ContentStatusDeleted = "DELETED"

	// ContentStatusUpdateFailed is a ContentStatus enum value
	ContentStatusUpdateFailed = "UPDATE_FAILED"
)

// ContentStatus_Values returns all elements of the ContentStatus enum
func ContentStatus_Values() []string {
	return []string{
		ContentStatusCreateInProgress,
		ContentStatusCreateFailed,
		ContentStatusActive,
		ContentStatusDeleteInProgress,
		ContentStatusDeleteFailed,
		ContentStatusDeleted,
		ContentStatusUpdateFailed,
	}
}

const (
	// ExternalSourceAmazonConnect is a ExternalSource enum value
	ExternalSourceAmazonConnect = "AMAZON_CONNECT"
)

// ExternalSource_Values returns all elements of the ExternalSource enum
func ExternalSource_Values() []string {
	return []string{
		ExternalSourceAmazonConnect,
	}
}

const (
	// FilterFieldName is a FilterField enum value
	FilterFieldName = "NAME"
)

// FilterField_Values returns all elements of the FilterField enum
func FilterField_Values() []string {
	return []string{
		FilterFieldName,
	}
}

const (
	// FilterOperatorEquals is a FilterOperator enum value
	FilterOperatorEquals = "EQUALS"
)

// FilterOperator_Values returns all elements of the FilterOperator enum
func FilterOperator_Values() []string {
	return []string{
		FilterOperatorEquals,
	}
}

const (
	// ImportJobStatusStartInProgress is a ImportJobStatus enum value
	ImportJobStatusStartInProgress = "START_IN_PROGRESS"

	// ImportJobStatusFailed is a ImportJobStatus enum value
	ImportJobStatusFailed = "FAILED"

	// ImportJobStatusComplete is a ImportJobStatus enum value
	ImportJobStatusComplete = "COMPLETE"

	// ImportJobStatusDeleteInProgress is a ImportJobStatus enum value
	ImportJobStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// ImportJobStatusDeleteFailed is a ImportJobStatus enum value
	ImportJobStatusDeleteFailed = "DELETE_FAILED"

	// ImportJobStatusDeleted is a ImportJobStatus enum value
	ImportJobStatusDeleted = "DELETED"
)

// ImportJobStatus_Values returns all elements of the ImportJobStatus enum
func ImportJobStatus_Values() []string {
	return []string{
		ImportJobStatusStartInProgress,
		ImportJobStatusFailed,
		ImportJobStatusComplete,
		ImportJobStatusDeleteInProgress,
		ImportJobStatusDeleteFailed,
		ImportJobStatusDeleted,
	}
}

const (
	// ImportJobTypeQuickResponses is a ImportJobType enum value
	ImportJobTypeQuickResponses = "QUICK_RESPONSES"
)

// ImportJobType_Values returns all elements of the ImportJobType enum
func ImportJobType_Values() []string {
	return []string{
		ImportJobTypeQuickResponses,
	}
}

const (
	// KnowledgeBaseStatusCreateInProgress is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusCreateInProgress = "CREATE_IN_PROGRESS"

	// KnowledgeBaseStatusCreateFailed is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusCreateFailed = "CREATE_FAILED"

	// KnowledgeBaseStatusActive is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusActive = "ACTIVE"

	// KnowledgeBaseStatusDeleteInProgress is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// KnowledgeBaseStatusDeleteFailed is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusDeleteFailed = "DELETE_FAILED"

	// KnowledgeBaseStatusDeleted is a KnowledgeBaseStatus enum value
	KnowledgeBaseStatusDeleted = "DELETED"
)

// KnowledgeBaseStatus_Values returns all elements of the KnowledgeBaseStatus enum
func KnowledgeBaseStatus_Values() []string {
	return []string{
		KnowledgeBaseStatusCreateInProgress,
		KnowledgeBaseStatusCreateFailed,
		KnowledgeBaseStatusActive,
		KnowledgeBaseStatusDeleteInProgress,
		KnowledgeBaseStatusDeleteFailed,
		KnowledgeBaseStatusDeleted,
	}
}

const (
	// KnowledgeBaseTypeExternal is a KnowledgeBaseType enum value
	KnowledgeBaseTypeExternal = "EXTERNAL"

	// KnowledgeBaseTypeCustom is a KnowledgeBaseType enum value
	KnowledgeBaseTypeCustom = "CUSTOM"

	// KnowledgeBaseTypeQuickResponses is a KnowledgeBaseType enum value
	KnowledgeBaseTypeQuickResponses = "QUICK_RESPONSES"
)

// KnowledgeBaseType_Values returns all elements of the KnowledgeBaseType enum
func KnowledgeBaseType_Values() []string {
	return []string{
		KnowledgeBaseTypeExternal,
		KnowledgeBaseTypeCustom,
		KnowledgeBaseTypeQuickResponses,
	}
}

const (
	// OrderAsc is a Order enum value
	OrderAsc = "ASC"

	// OrderDesc is a Order enum value
	OrderDesc = "DESC"
)

// Order_Values returns all elements of the Order enum
func Order_Values() []string {
	return []string{
		OrderAsc,
		OrderDesc,
	}
}

const (
	// PriorityHigh is a Priority enum value
	PriorityHigh = "HIGH"

	// PriorityMedium is a Priority enum value
	PriorityMedium = "MEDIUM"

	// PriorityLow is a Priority enum value
	PriorityLow = "LOW"
)

// Priority_Values returns all elements of the Priority enum
func Priority_Values() []string {
	return []string{
		PriorityHigh,
		PriorityMedium,
		PriorityLow,
	}
}

const (
	// QueryConditionComparisonOperatorEquals is a QueryConditionComparisonOperator enum value
	QueryConditionComparisonOperatorEquals = "EQUALS"
)

// QueryConditionComparisonOperator_Values returns all elements of the QueryConditionComparisonOperator enum
func QueryConditionComparisonOperator_Values() []string {
	return []string{
		QueryConditionComparisonOperatorEquals,
	}
}

const (
	// QueryConditionFieldNameResultType is a QueryConditionFieldName enum value
	QueryConditionFieldNameResultType = "RESULT_TYPE"
)

// QueryConditionFieldName_Values returns all elements of the QueryConditionFieldName enum
func QueryConditionFieldName_Values() []string {
	return []string{
		QueryConditionFieldNameResultType,
	}
}

const (
	// QueryResultTypeKnowledgeContent is a QueryResultType enum value
	QueryResultTypeKnowledgeContent = "KNOWLEDGE_CONTENT"

	// QueryResultTypeGenerativeAnswer is a QueryResultType enum value
	QueryResultTypeGenerativeAnswer = "GENERATIVE_ANSWER"
)

// QueryResultType_Values returns all elements of the QueryResultType enum
func QueryResultType_Values() []string {
	return []string{
		QueryResultTypeKnowledgeContent,
		QueryResultTypeGenerativeAnswer,
	}
}

const (
	// QuickResponseFilterOperatorEquals is a QuickResponseFilterOperator enum value
	QuickResponseFilterOperatorEquals = "EQUALS"

	// QuickResponseFilterOperatorPrefix is a QuickResponseFilterOperator enum value
	QuickResponseFilterOperatorPrefix = "PREFIX"
)

// QuickResponseFilterOperator_Values returns all elements of the QuickResponseFilterOperator enum
func QuickResponseFilterOperator_Values() []string {
	return []string{
		QuickResponseFilterOperatorEquals,
		QuickResponseFilterOperatorPrefix,
	}
}

const (
	// QuickResponseQueryOperatorContains is a QuickResponseQueryOperator enum value
	QuickResponseQueryOperatorContains = "CONTAINS"

	// QuickResponseQueryOperatorContainsAndPrefix is a QuickResponseQueryOperator enum value
	QuickResponseQueryOperatorContainsAndPrefix = "CONTAINS_AND_PREFIX"
)

// QuickResponseQueryOperator_Values returns all elements of the QuickResponseQueryOperator enum
func QuickResponseQueryOperator_Values() []string {
	return []string{
		QuickResponseQueryOperatorContains,
		QuickResponseQueryOperatorContainsAndPrefix,
	}
}

const (
	// QuickResponseStatusCreateInProgress is a QuickResponseStatus enum value
	QuickResponseStatusCreateInProgress = "CREATE_IN_PROGRESS"

	// QuickResponseStatusCreateFailed is a QuickResponseStatus enum value
	QuickResponseStatusCreateFailed = "CREATE_FAILED"

	// QuickResponseStatusCreated is a QuickResponseStatus enum value
	QuickResponseStatusCreated = "CREATED"

	// QuickResponseStatusDeleteInProgress is a QuickResponseStatus enum value
	QuickResponseStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// QuickResponseStatusDeleteFailed is a QuickResponseStatus enum value
	QuickResponseStatusDeleteFailed = "DELETE_FAILED"

	// QuickResponseStatusDeleted is a QuickResponseStatus enum value
	QuickResponseStatusDeleted = "DELETED"

	// QuickResponseStatusUpdateInProgress is a QuickResponseStatus enum value
	QuickResponseStatusUpdateInProgress = "UPDATE_IN_PROGRESS"

	// QuickResponseStatusUpdateFailed is a QuickResponseStatus enum value
	QuickResponseStatusUpdateFailed = "UPDATE_FAILED"
)

// QuickResponseStatus_Values returns all elements of the QuickResponseStatus enum
func QuickResponseStatus_Values() []string {
	return []string{
		QuickResponseStatusCreateInProgress,
		QuickResponseStatusCreateFailed,
		QuickResponseStatusCreated,
		QuickResponseStatusDeleteInProgress,
		QuickResponseStatusDeleteFailed,
		QuickResponseStatusDeleted,
		QuickResponseStatusUpdateInProgress,
		QuickResponseStatusUpdateFailed,
	}
}

const (
	// RecommendationSourceTypeIssueDetection is a RecommendationSourceType enum value
	RecommendationSourceTypeIssueDetection = "ISSUE_DETECTION"

	// RecommendationSourceTypeRuleEvaluation is a RecommendationSourceType enum value
	RecommendationSourceTypeRuleEvaluation = "RULE_EVALUATION"

	// RecommendationSourceTypeOther is a RecommendationSourceType enum value
	RecommendationSourceTypeOther = "OTHER"
)

// RecommendationSourceType_Values returns all elements of the RecommendationSourceType enum
func RecommendationSourceType_Values() []string {
	return []string{
		RecommendationSourceTypeIssueDetection,
		RecommendationSourceTypeRuleEvaluation,
		RecommendationSourceTypeOther,
	}
}

const (
	// RecommendationTriggerTypeQuery is a RecommendationTriggerType enum value
	RecommendationTriggerTypeQuery = "QUERY"

	// RecommendationTriggerTypeGenerative is a RecommendationTriggerType enum value
	RecommendationTriggerTypeGenerative = "GENERATIVE"
)

// RecommendationTriggerType_Values returns all elements of the RecommendationTriggerType enum
func RecommendationTriggerType_Values() []string {
	return []string{
		RecommendationTriggerTypeQuery,
		RecommendationTriggerTypeGenerative,
	}
}

const (
	// RecommendationTypeKnowledgeContent is a RecommendationType enum value
	RecommendationTypeKnowledgeContent = "KNOWLEDGE_CONTENT"

	// RecommendationTypeGenerativeResponse is a RecommendationType enum value
	RecommendationTypeGenerativeResponse = "GENERATIVE_RESPONSE"

	// RecommendationTypeGenerativeAnswer is a RecommendationType enum value
	RecommendationTypeGenerativeAnswer = "GENERATIVE_ANSWER"
)

// RecommendationType_Values returns all elements of the RecommendationType enum
func RecommendationType_Values() []string {
	return []string{
		RecommendationTypeKnowledgeContent,
		RecommendationTypeGenerativeResponse,
		RecommendationTypeGenerativeAnswer,
	}
}

const (
	// RelevanceHelpful is a Relevance enum value
	RelevanceHelpful = "HELPFUL"

	// RelevanceNotHelpful is a Relevance enum value
	RelevanceNotHelpful = "NOT_HELPFUL"
)

// Relevance_Values returns all elements of the Relevance enum
func Relevance_Values() []string {
	return []string{
		RelevanceHelpful,
		RelevanceNotHelpful,
	}
}

const (
	// RelevanceLevelHigh is a RelevanceLevel enum value
	RelevanceLevelHigh = "HIGH"

	// RelevanceLevelMedium is a RelevanceLevel enum value
	RelevanceLevelMedium = "MEDIUM"

	// RelevanceLevelLow is a RelevanceLevel enum value
	RelevanceLevelLow = "LOW"
)

// RelevanceLevel_Values returns all elements of the RelevanceLevel enum
func RelevanceLevel_Values() []string {
	return []string{
		RelevanceLevelHigh,
		RelevanceLevelMedium,
		RelevanceLevelLow,
	}
}

const (
	// SourceContentTypeKnowledgeContent is a SourceContentType enum value
	SourceContentTypeKnowledgeContent = "KNOWLEDGE_CONTENT"
)

// SourceContentType_Values returns all elements of the SourceContentType enum
func SourceContentType_Values() []string {
	return []string{
		SourceContentTypeKnowledgeContent,
	}
}

const (
	// TargetTypeRecommendation is a TargetType enum value
	TargetTypeRecommendation = "RECOMMENDATION"

	// TargetTypeResult is a TargetType enum value
	TargetTypeResult = "RESULT"
)

// TargetType_Values returns all elements of the TargetType enum
func TargetType_Values() []string {
	return []string{
		TargetTypeRecommendation,
		TargetTypeResult,
	}
}
