//go:build go1.18
// +build go1.18

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package azopenai

// AzureChatEnhancementConfiguration - A representation of the available Azure OpenAI enhancement configurations.
type AzureChatEnhancementConfiguration struct {
	// A representation of the available options for the Azure OpenAI grounding enhancement.
	Grounding *AzureChatGroundingEnhancementConfiguration

	// A representation of the available options for the Azure OpenAI optical character recognition (OCR) enhancement.
	Ocr *AzureChatOCREnhancementConfiguration
}

// AzureChatEnhancements - Represents the output results of Azure enhancements to chat completions, as configured via the
// matching input provided in the request.
type AzureChatEnhancements struct {
	// The grounding enhancement that returns the bounding box of the objects detected in the image.
	Grounding *AzureGroundingEnhancement
}

// AzureChatExtensionConfiguration - A representation of configuration data for a single Azure OpenAI chat extension. This
// will be used by a chat completions request that should use Azure OpenAI chat extensions to augment the response
// behavior. The use of this configuration is compatible only with Azure OpenAI.
type AzureChatExtensionConfiguration struct {
	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type AzureChatExtensionConfiguration.
func (a *AzureChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return a
}

// AzureChatExtensionDataSourceResponseCitation - A single instance of additional context information available when Azure
// OpenAI chat extensions are involved in the generation of a corresponding chat completions response. This context information
// is
// only populated when using an Azure OpenAI request configured to use a matching extension.
type AzureChatExtensionDataSourceResponseCitation struct {
	// REQUIRED; The content of the citation.
	Content *string

	// The chunk ID of the citation.
	ChunkID *string

	// The file path of the citation.
	Filepath *string

	// The rerank score of the retrieved document.
	RerankScore *float64

	// The title of the citation.
	Title *string

	// The URL of the citation.
	URL *string
}

// AzureChatExtensionRetrievedDocument - The retrieved document.
type AzureChatExtensionRetrievedDocument struct {
	// REQUIRED; The content of the citation.
	Content *string

	// REQUIRED; The index of the data source.
	DataSourceIndex *int32

	// REQUIRED; The search queries used to retrieve the document.
	SearchQueries []string

	// The chunk ID of the citation.
	ChunkID *string

	// The file path of the citation.
	Filepath *string

	// Represents the rationale for filtering the document. If the document does not undergo filtering, this field will remain
	// unset.
	FilterReason *AzureChatExtensionRetrieveDocumentFilterReason

	// The original search score of the retrieved document.
	OriginalSearchScore *float64

	// The rerank score of the retrieved document.
	RerankScore *float64

	// The title of the citation.
	Title *string

	// The URL of the citation.
	URL *string
}

// AzureChatExtensionsMessageContext - A representation of the additional context information available when Azure OpenAI
// chat extensions are involved in the generation of a corresponding chat completions response. This context information
// is only populated when using an Azure OpenAI request configured to use a matching extension.
type AzureChatExtensionsMessageContext struct {
	// All the retrieved documents.
	AllRetrievedDocuments []AzureChatExtensionRetrievedDocument

	// The contextual information associated with the Azure chat extensions used for a chat completions request. These messages
	// describe the data source retrievals, plugin invocations, and other intermediate
	// steps taken in the course of generating a chat completions response that was augmented by capabilities from Azure OpenAI
	// chat extensions.
	Citations []AzureChatExtensionDataSourceResponseCitation

	// The detected intent from the chat history, used to pass to the next turn to carry over the context.
	Intent *string
}

// AzureChatGroundingEnhancementConfiguration - A representation of the available options for the Azure OpenAI grounding enhancement.
type AzureChatGroundingEnhancementConfiguration struct {
	// REQUIRED; Specifies whether the enhancement is enabled.
	Enabled *bool
}

// AzureChatOCREnhancementConfiguration - A representation of the available options for the Azure OpenAI optical character
// recognition (OCR) enhancement.
type AzureChatOCREnhancementConfiguration struct {
	// REQUIRED; Specifies whether the enhancement is enabled.
	Enabled *bool
}

// AzureCosmosDBChatExtensionConfiguration - A specific representation of configurable options for Azure Cosmos DB when using
// it as an Azure OpenAI chat extension.
type AzureCosmosDBChatExtensionConfiguration struct {
	// REQUIRED; The parameters to use when configuring Azure OpenAI CosmosDB chat extensions.
	Parameters *AzureCosmosDBChatExtensionParameters

	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type AzureCosmosDBChatExtensionConfiguration.
func (a *AzureCosmosDBChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return &AzureChatExtensionConfiguration{
		Type: a.Type,
	}
}

// AzureCosmosDBChatExtensionParameters - Parameters to use when configuring Azure OpenAI On Your Data chat extensions when
// using Azure Cosmos DB for MongoDB vCore. The supported authentication type is ConnectionString.
type AzureCosmosDBChatExtensionParameters struct {
	// REQUIRED; The name of the Azure Cosmos DB resource container.
	ContainerName *string

	// REQUIRED; The MongoDB vCore database name to use with Azure Cosmos DB.
	DatabaseName *string

	// REQUIRED; The embedding dependency for vector search.
	EmbeddingDependency OnYourDataVectorizationSourceClassification

	// REQUIRED; Customized field mapping behavior to use when interacting with the search index.
	FieldsMapping *AzureCosmosDBFieldMappingOptions

	// REQUIRED; The MongoDB vCore index name to use with Azure Cosmos DB.
	IndexName *string

	// If specified as true, the system will allow partial search results to be used and the request fails if all the queries
	// fail. If not specified, or specified as false, the request will fail if any
	// search query fails.
	AllowPartialResult *bool

	// The authentication method to use when accessing the defined data source. Each data source type supports a specific set
	// of available authentication methods; please see the documentation of the data
	// source for supported mechanisms. If not otherwise provided, On Your Data will attempt to use System Managed Identity (default
	// credential) authentication.
	Authentication OnYourDataAuthenticationOptionsClassification

	// Whether queries should be restricted to use of indexed data.
	InScope *bool

	// The included properties of the output context. If not specified, the default value is citations and intent.
	IncludeContexts []OnYourDataContextProperty

	// The max number of rewritten queries should be send to search provider for one user message. If not specified, the system
	// will decide the number of queries to send.
	MaxSearchQueries *int32

	// The configured strictness of the search relevance filtering. The higher of strictness, the higher of the precision but
	// lower recall of the answer.
	Strictness *int32

	// The configured top number of documents to feature for the configured query.
	TopNDocuments *int32
}

// AzureCosmosDBFieldMappingOptions - Optional settings to control how fields are processed when using a configured Azure
// Cosmos DB resource.
type AzureCosmosDBFieldMappingOptions struct {
	// REQUIRED; The names of index fields that should be treated as content.
	ContentFields []string

	// REQUIRED; The names of fields that represent vector data.
	VectorFields []string

	// The separator pattern that content fields should use.
	ContentFieldsSeparator *string

	// The name of the index field to use as a filepath.
	FilepathField *string

	// The name of the index field to use as a title.
	TitleField *string

	// The name of the index field to use as a URL.
	URLField *string
}

// AzureGroundingEnhancement - The grounding enhancement that returns the bounding box of the objects detected in the image.
type AzureGroundingEnhancement struct {
	// REQUIRED; The lines of text detected by the grounding enhancement.
	Lines []AzureGroundingEnhancementLine
}

// AzureGroundingEnhancementCoordinatePoint - A representation of a single polygon point as used by the Azure grounding enhancement.
type AzureGroundingEnhancementCoordinatePoint struct {
	// REQUIRED; The x-coordinate (horizontal axis) of the point.
	X *float32

	// REQUIRED; The y-coordinate (vertical axis) of the point.
	Y *float32
}

// AzureGroundingEnhancementLine - A content line object consisting of an adjacent sequence of content elements, such as words
// and selection marks.
type AzureGroundingEnhancementLine struct {
	// REQUIRED; An array of spans that represent detected objects and its bounding box information.
	Spans []AzureGroundingEnhancementLineSpan

	// REQUIRED; The text within the line.
	Text *string
}

// AzureGroundingEnhancementLineSpan - A span object that represents a detected object and its bounding box information.
type AzureGroundingEnhancementLineSpan struct {
	// REQUIRED; The length of the span in characters, measured in Unicode codepoints.
	Length *int32

	// REQUIRED; The character offset within the text where the span begins. This offset is defined as the position of the first
	// character of the span, counting from the start of the text as Unicode codepoints.
	Offset *int32

	// REQUIRED; An array of objects representing points in the polygon that encloses the detected object.
	Polygon []AzureGroundingEnhancementCoordinatePoint

	// REQUIRED; The text content of the span that represents the detected object.
	Text *string
}

// AzureSearchChatExtensionConfiguration - A specific representation of configurable options for Azure Search when using it
// as an Azure OpenAI chat extension.
type AzureSearchChatExtensionConfiguration struct {
	// REQUIRED; The parameters to use when configuring Azure Search.
	Parameters *AzureSearchChatExtensionParameters

	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type AzureSearchChatExtensionConfiguration.
func (a *AzureSearchChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return &AzureChatExtensionConfiguration{
		Type: a.Type,
	}
}

// AzureSearchChatExtensionParameters - Parameters for Azure Cognitive Search when used as an Azure OpenAI chat extension.
// The supported authentication types are APIKey, SystemAssignedManagedIdentity and UserAssignedManagedIdentity.
type AzureSearchChatExtensionParameters struct {
	// REQUIRED; The absolute endpoint path for the Azure Cognitive Search resource to use.
	Endpoint *string

	// REQUIRED; The name of the index to use as available in the referenced Azure Cognitive Search resource.
	IndexName *string

	// If specified as true, the system will allow partial search results to be used and the request fails if all the queries
	// fail. If not specified, or specified as false, the request will fail if any
	// search query fails.
	AllowPartialResult *bool

	// The authentication method to use when accessing the defined data source. Each data source type supports a specific set
	// of available authentication methods; please see the documentation of the data
	// source for supported mechanisms. If not otherwise provided, On Your Data will attempt to use System Managed Identity (default
	// credential) authentication.
	Authentication OnYourDataAuthenticationOptionsClassification

	// The embedding dependency for vector search.
	EmbeddingDependency OnYourDataVectorizationSourceClassification

	// Customized field mapping behavior to use when interacting with the search index.
	FieldsMapping *AzureSearchIndexFieldMappingOptions

	// Search filter.
	Filter *string

	// Whether queries should be restricted to use of indexed data.
	InScope *bool

	// The included properties of the output context. If not specified, the default value is citations and intent.
	IncludeContexts []OnYourDataContextProperty

	// The max number of rewritten queries should be send to search provider for one user message. If not specified, the system
	// will decide the number of queries to send.
	MaxSearchQueries *int32

	// The query type to use with Azure Cognitive Search.
	QueryType *AzureSearchQueryType

	// The additional semantic configuration for the query.
	SemanticConfiguration *string

	// The configured strictness of the search relevance filtering. The higher of strictness, the higher of the precision but
	// lower recall of the answer.
	Strictness *int32

	// The configured top number of documents to feature for the configured query.
	TopNDocuments *int32
}

// AzureSearchIndexFieldMappingOptions - Optional settings to control how fields are processed when using a configured Azure
// Search resource.
type AzureSearchIndexFieldMappingOptions struct {
	// The names of index fields that should be treated as content.
	ContentFields []string

	// The separator pattern that content fields should use.
	ContentFieldsSeparator *string

	// The name of the index field to use as a filepath.
	FilepathField *string

	// The names of fields that represent image vector data.
	ImageVectorFields []string

	// The name of the index field to use as a title.
	TitleField *string

	// The name of the index field to use as a URL.
	URLField *string

	// The names of fields that represent vector data.
	VectorFields []string
}

// ContentFilterBlocklistIDResult - Represents the outcome of an evaluation against a custom blocklist as performed by content
// filtering.
type ContentFilterBlocklistIDResult struct {
	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool

	// REQUIRED; The ID of the custom blocklist evaluated.
	ID *string
}

// ContentFilterCitedDetectionResult - Represents the outcome of a detection operation against protected resources as performed
// by content filtering.
type ContentFilterCitedDetectionResult struct {
	// REQUIRED; A value indicating whether detection occurred, irrespective of severity or whether the content was filtered.
	Detected *bool

	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool

	// The license description associated with the detection.
	License *string

	// The internet location associated with the detection.
	URL *string
}

// ContentFilterCompletionTextSpan - Describes a span within generated completion text. Offset 0 is the first UTF32 code point
// of the completion text.
type ContentFilterCompletionTextSpan struct {
	// REQUIRED; Offset of the first UTF32 code point which is excluded from the span. This field is always equal to completionstartoffset
	// for empty spans. This field is always larger than completionstartoffset for
	// non-empty spans.
	CompletionEndOffset *int32

	// REQUIRED; Offset of the UTF32 code point which begins the span.
	CompletionStartOffset *int32
}

// ContentFilterCompletionTextSpanResult - Describes a span within generated completion text.
type ContentFilterCompletionTextSpanResult struct {
	// REQUIRED; The collection of completion text spans.
	Details []ContentFilterCompletionTextSpan

	// REQUIRED; A value indicating whether detection occurred, irrespective of severity or whether the content was filtered.
	Detected *bool

	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool
}

// ContentFilterDetailedResults - Represents a structured collection of result details for content filtering.
type ContentFilterDetailedResults struct {
	// REQUIRED; The collection of detailed blocklist result information.
	Details []ContentFilterBlocklistIDResult

	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool
}

// ContentFilterDetectionResult - Represents the outcome of a detection operation performed by content filtering.
type ContentFilterDetectionResult struct {
	// REQUIRED; A value indicating whether detection occurred, irrespective of severity or whether the content was filtered.
	Detected *bool

	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool
}

// ContentFilterResult - Information about filtered content severity level and if it has been filtered or not.
type ContentFilterResult struct {
	// REQUIRED; A value indicating whether or not the content has been filtered.
	Filtered *bool

	// REQUIRED; Ratings for the intensity and risk level of filtered content.
	Severity *ContentFilterSeverity
}

// ContentFilterResultDetailsForPrompt - Information about content filtering evaluated against input data to Azure OpenAI.
type ContentFilterResultDetailsForPrompt struct {
	// Describes detection results against configured custom blocklists.
	CustomBlocklists *ContentFilterDetailedResults

	// Describes an error returned if the content filtering system is down or otherwise unable to complete the operation in time.
	Error *Error

	// Describes language attacks or uses that include pejorative or discriminatory language with reference to a person or identity
	// group on the basis of certain differentiating attributes of these groups
	// including but not limited to race, ethnicity, nationality, gender identity and expression, sexual orientation, religion,
	// immigration status, ability status, personal appearance, and body size.
	Hate *ContentFilterResult

	// Whether an indirect attack was detected in the prompt.
	IndirectAttack *ContentFilterDetectionResult

	// Whether a jailbreak attempt was detected in the prompt.
	Jailbreak *ContentFilterDetectionResult

	// Describes whether profanity was detected.
	Profanity *ContentFilterDetectionResult

	// Describes language related to physical actions intended to purposely hurt, injure, or damage one’s body, or kill oneself.
	SelfHarm *ContentFilterResult

	// Describes language related to anatomical organs and genitals, romantic relationships, acts portrayed in erotic or affectionate
	// terms, physical sexual acts, including those portrayed as an assault or a
	// forced sexual violent act against one’s will, prostitution, pornography, and abuse.
	Sexual *ContentFilterResult

	// Describes language related to physical actions intended to hurt, injure, damage, or kill someone or something; describes
	// weapons, etc.
	Violence *ContentFilterResult
}

// ContentFilterResultsForChoice - Information about content filtering evaluated against generated model output.
type ContentFilterResultsForChoice struct {
	// Describes detection results against configured custom blocklists.
	CustomBlocklists *ContentFilterDetailedResults

	// Describes an error returned if the content filtering system is down or otherwise unable to complete the operation in time.
	Error *Error

	// Describes language attacks or uses that include pejorative or discriminatory language with reference to a person or identity
	// group on the basis of certain differentiating attributes of these groups
	// including but not limited to race, ethnicity, nationality, gender identity and expression, sexual orientation, religion,
	// immigration status, ability status, personal appearance, and body size.
	Hate *ContentFilterResult

	// Describes whether profanity was detected.
	Profanity *ContentFilterDetectionResult

	// Information about detection of protected code material.
	ProtectedMaterialCode *ContentFilterCitedDetectionResult

	// Information about detection of protected text material.
	ProtectedMaterialText *ContentFilterDetectionResult

	// Describes language related to physical actions intended to purposely hurt, injure, or damage one’s body, or kill oneself.
	SelfHarm *ContentFilterResult

	// Describes language related to anatomical organs and genitals, romantic relationships, acts portrayed in erotic or affectionate
	// terms, physical sexual acts, including those portrayed as an assault or a
	// forced sexual violent act against one’s will, prostitution, pornography, and abuse.
	Sexual *ContentFilterResult

	// Information about detection of ungrounded material.
	UngroundedMaterial *ContentFilterCompletionTextSpanResult

	// Describes language related to physical actions intended to hurt, injure, damage, or kill someone or something; describes
	// weapons, etc.
	Violence *ContentFilterResult
}

// ContentFilterResultsForPrompt - Content filtering results for a single prompt in the request.
type ContentFilterResultsForPrompt struct {
	// REQUIRED; Content filtering results for this prompt
	ContentFilterResults *ContentFilterResultDetailsForPrompt

	// REQUIRED; The index of this prompt in the set of prompt results
	PromptIndex *int32
}

// ElasticsearchChatExtensionConfiguration - A specific representation of configurable options for Elasticsearch when using
// it as an Azure OpenAI chat extension.
type ElasticsearchChatExtensionConfiguration struct {
	// REQUIRED; The parameters to use when configuring Elasticsearch®.
	Parameters *ElasticsearchChatExtensionParameters

	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type ElasticsearchChatExtensionConfiguration.
func (e *ElasticsearchChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return &AzureChatExtensionConfiguration{
		Type: e.Type,
	}
}

// ElasticsearchChatExtensionParameters - Parameters to use when configuring Elasticsearch® as an Azure OpenAI chat extension.
// The supported authentication types are KeyAndKeyId and EncodedAPIKey.
type ElasticsearchChatExtensionParameters struct {
	// REQUIRED; The endpoint of Elasticsearch®.
	Endpoint *string

	// REQUIRED; The index name of Elasticsearch®.
	IndexName *string

	// If specified as true, the system will allow partial search results to be used and the request fails if all the queries
	// fail. If not specified, or specified as false, the request will fail if any
	// search query fails.
	AllowPartialResult *bool

	// The authentication method to use when accessing the defined data source. Each data source type supports a specific set
	// of available authentication methods; please see the documentation of the data
	// source for supported mechanisms. If not otherwise provided, On Your Data will attempt to use System Managed Identity (default
	// credential) authentication.
	Authentication OnYourDataAuthenticationOptionsClassification

	// The embedding dependency for vector search.
	EmbeddingDependency OnYourDataVectorizationSourceClassification

	// The index field mapping options of Elasticsearch®.
	FieldsMapping *ElasticsearchIndexFieldMappingOptions

	// Whether queries should be restricted to use of indexed data.
	InScope *bool

	// The included properties of the output context. If not specified, the default value is citations and intent.
	IncludeContexts []OnYourDataContextProperty

	// The max number of rewritten queries should be send to search provider for one user message. If not specified, the system
	// will decide the number of queries to send.
	MaxSearchQueries *int32

	// The query type of Elasticsearch®.
	QueryType *ElasticsearchQueryType

	// The configured strictness of the search relevance filtering. The higher of strictness, the higher of the precision but
	// lower recall of the answer.
	Strictness *int32

	// The configured top number of documents to feature for the configured query.
	TopNDocuments *int32
}

// ElasticsearchIndexFieldMappingOptions - Optional settings to control how fields are processed when using a configured Elasticsearch®
// resource.
type ElasticsearchIndexFieldMappingOptions struct {
	// The names of index fields that should be treated as content.
	ContentFields []string

	// The separator pattern that content fields should use.
	ContentFieldsSeparator *string

	// The name of the index field to use as a filepath.
	FilepathField *string

	// The name of the index field to use as a title.
	TitleField *string

	// The name of the index field to use as a URL.
	URLField *string

	// The names of fields that represent vector data.
	VectorFields []string
}

// Error - The error object.
type Error struct {
	// REQUIRED; One of a server-defined set of error codes.
	Code *string

	// REQUIRED; A human-readable representation of the error.
	Message *string
}

// MongoDBChatExtensionConfiguration - A specific representation of configurable options for a MongoDB chat extension configuration.
type MongoDBChatExtensionConfiguration struct {
	// REQUIRED; The parameters for the MongoDB chat extension.
	Parameters *MongoDBChatExtensionParameters

	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type MongoDBChatExtensionConfiguration.
func (m *MongoDBChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return &AzureChatExtensionConfiguration{
		Type: m.Type,
	}
}

// MongoDBChatExtensionParameters - Parameters for the MongoDB chat extension. The supported authentication types are AccessToken,
// SystemAssignedManagedIdentity and UserAssignedManagedIdentity.
type MongoDBChatExtensionParameters struct {
	// REQUIRED; The app name for MongoDB.
	AppName *string

	// REQUIRED; The collection name for MongoDB.
	CollectionName *string

	// REQUIRED; The database name for MongoDB.
	DatabaseName *string

	// REQUIRED; The vectorization source to use with the MongoDB chat extension.
	EmbeddingDependency *MongoDBChatExtensionParametersEmbeddingDependency

	// REQUIRED; The endpoint name for MongoDB.
	Endpoint *string

	// REQUIRED; Field mappings to apply to data used by the MongoDB data source. Note that content and vector field mappings
	// are required for MongoDB.
	FieldsMapping *MongoDBChatExtensionParametersFieldsMapping

	// REQUIRED; The name of the MongoDB index.
	IndexName *string

	// If specified as true, the system will allow partial search results to be used and the request fails if all the queries
	// fail. If not specified, or specified as false, the request will fail if any
	// search query fails.
	AllowPartialResult *bool

	// The authentication method to use when accessing the defined data source. Each data source type supports a specific set
	// of available authentication methods; please see the documentation of the data
	// source for supported mechanisms. If not otherwise provided, On Your Data will attempt to use System Managed Identity (default
	// credential) authentication.
	Authentication *OnYourDataUsernameAndPasswordAuthenticationOptions

	// Whether queries should be restricted to use of indexed data.
	InScope *bool

	// The included properties of the output context. If not specified, the default value is citations and intent.
	IncludeContexts []OnYourDataContextProperty

	// The max number of rewritten queries should be send to search provider for one user message. If not specified, the system
	// will decide the number of queries to send.
	MaxSearchQueries *int32

	// The configured strictness of the search relevance filtering. The higher of strictness, the higher of the precision but
	// lower recall of the answer.
	Strictness *int32

	// The configured top number of documents to feature for the configured query.
	TopNDocuments *int32
}

// MongoDBChatExtensionParametersFieldsMapping - Field mappings to apply to data used by the MongoDB data source. Note that
// content and vector field mappings are required for MongoDB.
type MongoDBChatExtensionParametersFieldsMapping struct {
	// REQUIRED
	ContentFields []string

	// REQUIRED
	VectorFields           []string
	ContentFieldsSeparator *string
	FilepathField          *string
	TitleField             *string
	URLField               *string
}

// OnYourDataAPIKeyAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using an API key.
type OnYourDataAPIKeyAuthenticationOptions struct {
	// REQUIRED; The API key to use for authentication.
	Key *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataAPIKeyAuthenticationOptions.
func (o *OnYourDataAPIKeyAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataAccessTokenAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using access
// token.
type OnYourDataAccessTokenAuthenticationOptions struct {
	// REQUIRED; The access token to use for authentication.
	AccessToken *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataAccessTokenAuthenticationOptions.
func (o *OnYourDataAccessTokenAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataAuthenticationOptions - The authentication options for Azure OpenAI On Your Data.
type OnYourDataAuthenticationOptions struct {
	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataAuthenticationOptions.
func (o *OnYourDataAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return o
}

// OnYourDataConnectionStringAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using a
// connection string.
type OnYourDataConnectionStringAuthenticationOptions struct {
	// REQUIRED; The connection string to use for authentication.
	ConnectionString *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataConnectionStringAuthenticationOptions.
func (o *OnYourDataConnectionStringAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataDeploymentNameVectorizationSource - The details of a a vectorization source, used by Azure OpenAI On Your Data
// when applying vector search, that is based on an internal embeddings model deployment name in the same Azure OpenAI resource.
type OnYourDataDeploymentNameVectorizationSource struct {
	// REQUIRED; The embedding model deployment name within the same Azure OpenAI resource. This enables you to use vector search
	// without Azure OpenAI api-key and without Azure OpenAI public network access.
	DeploymentName *string

	// REQUIRED; The type of vectorization source to use.
	Type *OnYourDataVectorizationSourceType

	// The number of dimensions the embeddings should have. Only supported in text-embedding-3 and later models.
	Dimensions *int32
}

// GetOnYourDataVectorizationSource implements the OnYourDataVectorizationSourceClassification interface for type OnYourDataDeploymentNameVectorizationSource.
func (o *OnYourDataDeploymentNameVectorizationSource) GetOnYourDataVectorizationSource() *OnYourDataVectorizationSource {
	return &OnYourDataVectorizationSource{
		Type: o.Type,
	}
}

// OnYourDataEncodedAPIKeyAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using an Elasticsearch
// encoded API key.
type OnYourDataEncodedAPIKeyAuthenticationOptions struct {
	// REQUIRED; The encoded API key to use for authentication.
	EncodedAPIKey *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataEncodedAPIKeyAuthenticationOptions.
func (o *OnYourDataEncodedAPIKeyAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataEndpointVectorizationSource - The details of a a vectorization source, used by Azure OpenAI On Your Data when
// applying vector search, that is based on a public Azure OpenAI endpoint call for embeddings.
type OnYourDataEndpointVectorizationSource struct {
	// REQUIRED; Specifies the authentication options to use when retrieving embeddings from the specified endpoint.
	Authentication OnYourDataVectorSearchAuthenticationOptionsClassification

	// REQUIRED; Specifies the resource endpoint URL from which embeddings should be retrieved. It should be in the format of
	// https://YOURRESOURCENAME.openai.azure.com/openai/deployments/YOURDEPLOYMENTNAME/embeddings.
	// The api-version query parameter is not allowed.
	Endpoint *string

	// REQUIRED; The type of vectorization source to use.
	Type *OnYourDataVectorizationSourceType
}

// GetOnYourDataVectorizationSource implements the OnYourDataVectorizationSourceClassification interface for type OnYourDataEndpointVectorizationSource.
func (o *OnYourDataEndpointVectorizationSource) GetOnYourDataVectorizationSource() *OnYourDataVectorizationSource {
	return &OnYourDataVectorizationSource{
		Type: o.Type,
	}
}

// OnYourDataIntegratedVectorizationSource - Represents the integrated vectorizer defined within the search resource.
type OnYourDataIntegratedVectorizationSource struct {
	// REQUIRED; The type of vectorization source to use.
	Type *OnYourDataVectorizationSourceType
}

// GetOnYourDataVectorizationSource implements the OnYourDataVectorizationSourceClassification interface for type OnYourDataIntegratedVectorizationSource.
func (o *OnYourDataIntegratedVectorizationSource) GetOnYourDataVectorizationSource() *OnYourDataVectorizationSource {
	return &OnYourDataVectorizationSource{
		Type: o.Type,
	}
}

// OnYourDataKeyAndKeyIDAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using an Elasticsearch
// key and key ID pair.
type OnYourDataKeyAndKeyIDAuthenticationOptions struct {
	// REQUIRED; The key to use for authentication.
	Key *string

	// REQUIRED; The key ID to use for authentication.
	KeyID *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataKeyAndKeyIDAuthenticationOptions.
func (o *OnYourDataKeyAndKeyIDAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataModelIDVectorizationSource - The details of a a vectorization source, used by Azure OpenAI On Your Data when
// applying vector search, that is based on a search service model ID. Currently only supported by Elasticsearch®.
type OnYourDataModelIDVectorizationSource struct {
	// REQUIRED; The embedding model ID build inside the search service. Currently only supported by Elasticsearch®.
	ModelID *string

	// REQUIRED; The type of vectorization source to use.
	Type *OnYourDataVectorizationSourceType
}

// GetOnYourDataVectorizationSource implements the OnYourDataVectorizationSourceClassification interface for type OnYourDataModelIDVectorizationSource.
func (o *OnYourDataModelIDVectorizationSource) GetOnYourDataVectorizationSource() *OnYourDataVectorizationSource {
	return &OnYourDataVectorizationSource{
		Type: o.Type,
	}
}

// OnYourDataSystemAssignedManagedIdentityAuthenticationOptions - The authentication options for Azure OpenAI On Your Data
// when using a system-assigned managed identity.
type OnYourDataSystemAssignedManagedIdentityAuthenticationOptions struct {
	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataSystemAssignedManagedIdentityAuthenticationOptions.
func (o *OnYourDataSystemAssignedManagedIdentityAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataUserAssignedManagedIdentityAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when
// using a user-assigned managed identity.
type OnYourDataUserAssignedManagedIdentityAuthenticationOptions struct {
	// REQUIRED; The resource ID of the user-assigned managed identity to use for authentication.
	ManagedIdentityResourceID *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataUserAssignedManagedIdentityAuthenticationOptions.
func (o *OnYourDataUserAssignedManagedIdentityAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataUsernameAndPasswordAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using
// a username and password.
type OnYourDataUsernameAndPasswordAuthenticationOptions struct {
	// REQUIRED; The password.
	Password *string

	// REQUIRED; The authentication type.
	Type *OnYourDataAuthenticationType

	// REQUIRED; The username.
	Username *string
}

// GetOnYourDataAuthenticationOptions implements the OnYourDataAuthenticationOptionsClassification interface for type OnYourDataUsernameAndPasswordAuthenticationOptions.
func (o *OnYourDataUsernameAndPasswordAuthenticationOptions) GetOnYourDataAuthenticationOptions() *OnYourDataAuthenticationOptions {
	return &OnYourDataAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataVectorSearchAPIKeyAuthenticationOptions - The authentication options for Azure OpenAI On Your Data when using
// an API key.
type OnYourDataVectorSearchAPIKeyAuthenticationOptions struct {
	// REQUIRED; The API key to use for authentication.
	Key *string

	// REQUIRED; The type of authentication to use.
	Type *OnYourDataVectorSearchAuthenticationType
}

// GetOnYourDataVectorSearchAuthenticationOptions implements the OnYourDataVectorSearchAuthenticationOptionsClassification
// interface for type OnYourDataVectorSearchAPIKeyAuthenticationOptions.
func (o *OnYourDataVectorSearchAPIKeyAuthenticationOptions) GetOnYourDataVectorSearchAuthenticationOptions() *OnYourDataVectorSearchAuthenticationOptions {
	return &OnYourDataVectorSearchAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataVectorSearchAccessTokenAuthenticationOptions - The authentication options for Azure OpenAI On Your Data vector
// search when using access token.
type OnYourDataVectorSearchAccessTokenAuthenticationOptions struct {
	// REQUIRED; The access token to use for authentication.
	AccessToken *string

	// REQUIRED; The type of authentication to use.
	Type *OnYourDataVectorSearchAuthenticationType
}

// GetOnYourDataVectorSearchAuthenticationOptions implements the OnYourDataVectorSearchAuthenticationOptionsClassification
// interface for type OnYourDataVectorSearchAccessTokenAuthenticationOptions.
func (o *OnYourDataVectorSearchAccessTokenAuthenticationOptions) GetOnYourDataVectorSearchAuthenticationOptions() *OnYourDataVectorSearchAuthenticationOptions {
	return &OnYourDataVectorSearchAuthenticationOptions{
		Type: o.Type,
	}
}

// OnYourDataVectorSearchAuthenticationOptions - The authentication options for Azure OpenAI On Your Data vector search.
type OnYourDataVectorSearchAuthenticationOptions struct {
	// REQUIRED; The type of authentication to use.
	Type *OnYourDataVectorSearchAuthenticationType
}

// GetOnYourDataVectorSearchAuthenticationOptions implements the OnYourDataVectorSearchAuthenticationOptionsClassification
// interface for type OnYourDataVectorSearchAuthenticationOptions.
func (o *OnYourDataVectorSearchAuthenticationOptions) GetOnYourDataVectorSearchAuthenticationOptions() *OnYourDataVectorSearchAuthenticationOptions {
	return o
}

// OnYourDataVectorizationSource - An abstract representation of a vectorization source for Azure OpenAI On Your Data with
// vector search.
type OnYourDataVectorizationSource struct {
	// REQUIRED; The type of vectorization source to use.
	Type *OnYourDataVectorizationSourceType
}

// GetOnYourDataVectorizationSource implements the OnYourDataVectorizationSourceClassification interface for type OnYourDataVectorizationSource.
func (o *OnYourDataVectorizationSource) GetOnYourDataVectorizationSource() *OnYourDataVectorizationSource {
	return o
}

// PineconeChatExtensionConfiguration - A specific representation of configurable options for Pinecone when using it as an
// Azure OpenAI chat extension.
type PineconeChatExtensionConfiguration struct {
	// REQUIRED; The parameters to use when configuring Azure OpenAI chat extensions.
	Parameters *PineconeChatExtensionParameters

	// REQUIRED; The label for the type of an Azure chat extension. This typically corresponds to a matching Azure resource. Azure
	// chat extensions are only compatible with Azure OpenAI.
	Type *AzureChatExtensionType
}

// GetAzureChatExtensionConfiguration implements the AzureChatExtensionConfigurationClassification interface for type PineconeChatExtensionConfiguration.
func (p *PineconeChatExtensionConfiguration) GetAzureChatExtensionConfiguration() *AzureChatExtensionConfiguration {
	return &AzureChatExtensionConfiguration{
		Type: p.Type,
	}
}

// PineconeChatExtensionParameters - Parameters for configuring Azure OpenAI Pinecone chat extensions. The supported authentication
// type is APIKey.
type PineconeChatExtensionParameters struct {
	// REQUIRED; The embedding dependency for vector search.
	EmbeddingDependency OnYourDataVectorizationSourceClassification

	// REQUIRED; The environment name of Pinecone.
	Environment *string

	// REQUIRED; Customized field mapping behavior to use when interacting with the search index.
	FieldsMapping *PineconeFieldMappingOptions

	// REQUIRED; The name of the Pinecone database index.
	IndexName *string

	// If specified as true, the system will allow partial search results to be used and the request fails if all the queries
	// fail. If not specified, or specified as false, the request will fail if any
	// search query fails.
	AllowPartialResult *bool

	// The authentication method to use when accessing the defined data source. Each data source type supports a specific set
	// of available authentication methods; please see the documentation of the data
	// source for supported mechanisms. If not otherwise provided, On Your Data will attempt to use System Managed Identity (default
	// credential) authentication.
	Authentication OnYourDataAuthenticationOptionsClassification

	// Whether queries should be restricted to use of indexed data.
	InScope *bool

	// The included properties of the output context. If not specified, the default value is citations and intent.
	IncludeContexts []OnYourDataContextProperty

	// The max number of rewritten queries should be send to search provider for one user message. If not specified, the system
	// will decide the number of queries to send.
	MaxSearchQueries *int32

	// The configured strictness of the search relevance filtering. The higher of strictness, the higher of the precision but
	// lower recall of the answer.
	Strictness *int32

	// The configured top number of documents to feature for the configured query.
	TopNDocuments *int32
}

// PineconeFieldMappingOptions - Optional settings to control how fields are processed when using a configured Pinecone resource.
type PineconeFieldMappingOptions struct {
	// REQUIRED; The names of index fields that should be treated as content.
	ContentFields []string

	// The separator pattern that content fields should use.
	ContentFieldsSeparator *string

	// The name of the index field to use as a filepath.
	FilepathField *string

	// The name of the index field to use as a title.
	TitleField *string

	// The name of the index field to use as a URL.
	URLField *string
}
