From fb8aa2ad9cb60212ea7ef1dc535a7d7f3e060580 Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Wed, 1 May 2024 14:19:51 +0000 Subject: [PATCH 1/8] Auto-generated. Updating Vectara public protos. (a35abced31a122305cf72002a42f58a3bd8a8e20). --- admin.proto | 286 ------- admin_account.proto | 33 - admin_apikey.proto | 146 ---- admin_job.proto | 85 --- admin_metric.proto | 84 -- admin_security.proto | 25 - admin_user.proto | 125 --- attribute.proto | 16 - chat.proto | 106 --- common.proto | 98 --- core_services.proto | 51 -- custom_dim.proto | 16 - indexing.proto | 58 -- indexing_core.proto | 45 -- list_documents.proto | 49 -- .../options/annotations.proto | 44 -- protoc-gen-openapiv2/options/openapiv2.proto | 720 ------------------ services.proto | 268 ------- serving.proto | 338 -------- status.proto | 203 ----- 20 files changed, 2796 deletions(-) delete mode 100644 admin.proto delete mode 100644 admin_account.proto delete mode 100644 admin_apikey.proto delete mode 100644 admin_job.proto delete mode 100644 admin_metric.proto delete mode 100644 admin_security.proto delete mode 100644 admin_user.proto delete mode 100644 attribute.proto delete mode 100644 chat.proto delete mode 100644 common.proto delete mode 100644 core_services.proto delete mode 100644 custom_dim.proto delete mode 100644 indexing.proto delete mode 100644 indexing_core.proto delete mode 100644 list_documents.proto delete mode 100644 protoc-gen-openapiv2/options/annotations.proto delete mode 100644 protoc-gen-openapiv2/options/openapiv2.proto delete mode 100644 services.proto delete mode 100644 serving.proto delete mode 100644 status.proto diff --git a/admin.proto b/admin.proto deleted file mode 100644 index 987c6f7..0000000 --- a/admin.proto +++ /dev/null @@ -1,286 +0,0 @@ -syntax = "proto3"; - -import "protoc-gen-openapiv2/options/annotations.proto"; - -import "admin_apikey.proto"; -import "admin_metric.proto"; -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminProtos"; - -package com.vectara.admin; - -/****************************************************************************** - Corpus Management (add, remove corpora, star a corpus) - ******************************************************************************/ - -message Corpus { - // The Corpus ID. - // This value is ignored during Corpus creation. - uint32 id = 1; - // The name of the corpus. - string name = 2; - // A description for the corpus. - string description = 3; - // The time at which the corpus was provisioned. - // This value is ignored during Corpus creation. - int64 dt_provision = 4; - // Whether the corpus is enabled for use or not. - // This value is ignored during Corpus creation. - bool enabled = 5; - - - bool swap_qenc = 6; - // The default query encoder is designed for normal question-answering types - // of queries when the text contains the answer. Swapping the index encoder - // is generally rare, but can be used to help directly match questions to - // questions. This can be useful if you have a FAQ dataset and you want to - // directly match the user question to the question in the FAQ. - bool swap_ienc = 7; - // When a corpus is "textless", Vectara does not store the original text. - // Instead, Vectara converts the text to vectors and only retains metadata. - bool textless = 8; - // Encryption is on by default and cannot be turned off. - bool encrypted = 9; - - // This is an advanced setting for changing the underlying model type. The - // default value is "1", which is Vectara's high-performing global model. - // Underlying models may be swapped for some paying customers by contacting - // our support team. - uint64 encoder_id = 10; - // An optional maximum size of the metadata that each document can contain. - uint32 metadata_max_bytes = 11; - - - repeated Dimension custom_dimensions = 13; - repeated FilterAttribute filter_attributes = 14; -} - -// A custom dimension is additional numeric metadata that you want to affect -// Vectara's scoring. For example, these could be "number of stars" ratings, -// or other business metrics like a product's margins that you want to use -// to boost where a result is in the list. -message Dimension { - // The name of the custom dimension. The maximum length of the name is - // 8 characters. - string name = 1; - // A description for the custom dimension. - string description = 2; - - // The default weight to give this dimension when running queries. A value of - // 0.0, for example, gives it no weight at all. - double serving_default = 3; - // The default value to give to documents for this custom dimension. - double indexing_default = 4; -} - -// Defines metadata fields that can be used in predicate queries. -message FilterAttribute { - // Name of the field, as seen in metadata. - string name = 5; - // An optional description. - string description = 10; - // Whether the field is indexed for maximum query speed. - bool indexed = 15; - // The data type of the attribute. - FilterAttributeType type = 20; - // Whether the attribute lives at the document or part level. - FilterAttributeLevel level = 25; -} - -enum FilterAttributeType { - FILTER_ATTRIBUTE_TYPE__UNDEFINED = 0; - FILTER_ATTRIBUTE_TYPE__INTEGER = 5; - FILTER_ATTRIBUTE_TYPE__INTEGER_LIST = 10; - FILTER_ATTRIBUTE_TYPE__REAL = 15; - FILTER_ATTRIBUTE_TYPE__REAL_LIST = 20; - FILTER_ATTRIBUTE_TYPE__TEXT = 25; - FILTER_ATTRIBUTE_TYPE__TEXT_LIST = 30; - FILTER_ATTRIBUTE_TYPE__BOOLEAN = 35; -} - -enum FilterAttributeLevel { - FILTER_ATTRIBUTE_LEVEL__UNDEFINED = 0; - // Document-level attribute - FILTER_ATTRIBUTE_LEVEL__DOCUMENT = 5; - // Part-level attribute - FILTER_ATTRIBUTE_LEVEL__DOCUMENT_PART = 10; -} - -message CreateCorpusRequest { - Corpus corpus = 1; -} - -message CreateCorpusResponse { - // The Corpus ID that was created. - uint32 corpus_id = 1; - Status status = 2; -} - -message DeleteCorpusRequest { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { required: [ "customerId", "corpusId" ] } - example: "{ \"corpusId\": 1 }" - }; - - // The Customer ID that contains the corpus to be deleted. - uint32 customer_id = 1; - // The Corpus ID to be deleted. - uint32 corpus_id = 2 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - minimum: 1 - }]; -} - -message DeleteCorpusResponse { - Status status = 1; -} - -message ResetCorpusRequest { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { required: [ "customerId", "corpusId" ] } - example: "{ \"corpusId\": 1 }" - }; - - // The Customer ID that contains the corpus to be reset. - uint32 customer_id = 1; - // The Corpus ID to be reset. - uint32 corpus_id = 2 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - minimum: 1 - }]; -} - -message ResetCorpusResponse { - Status status = 1; -} - -message ListCorporaRequest { - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { required: [ "numResults" ] } - example: "{ \"numResults\": 10, \"filter\": \"[Tt][Ee][Ss][Tt]\" }" - }; - - // A regex over the names and descriptions to match corpora against. - string filter = 2 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "\"[Tt][Ee][Ss][Tt]\"" - }]; - - // The maximum results to return. - uint32 num_results = 4 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - minimum: 1 - }]; - - // A key that is passed in to retrieve a specific page of results. - bytes page_key = 5; -} - -message ListCorporaResponse { - repeated Corpus corpus = 1; - - // A key that is passed into a subsequent result in order to - // retrieve the next page of results. - bytes page_key = 2; - Status status = 1000; -} - -message UpdateCorpusEnablementRequest { - // The corpus to enable or disable. - uint32 corpus_id = 1; - // If true, enable the corpus. Otherwise, disable it. - bool enable = 2; -} - -message UpdateCorpusEnablementResponse { - Status status = 1; -} - -message CorpusSize { - // The time at which the size was calculated. - int64 epoch_secs = 1; - - // The size of the corpus. - uint64 size = 2; -} - -message ReadCorpusRequest { - // Corpora IDs to read. - repeated uint32 corpus_id = 1; - - // Subset of information to read. - // Set to true to read basic information about the corpus such as id, name, - // description, enabled, etc. - bool read_basic_info = 1000; - // Set to true to read the size of the corpus. - bool read_size = 1001; - // Set to true to read the API keys associated with the corpus. - bool read_api_keys = 1003; - // Set to true to read the custom dimensions of the corpus. - bool read_custom_dimensions = 1004; - // Set to true to read the filter attributes of the corpus. - bool read_filter_attributes = 1005; -} - -message ReadCorpusResponse { - // A Corpus information object containing the requested information. - message CorpusInfo { - // Only requested fields are populated. - Corpus corpus = 1; - // Status of the corpus. - Status corpus_status = 1001; - // Size of the corpus. Only populated if read_size is true. - CorpusSize size = 2; - // Status of the size. - Status size_status = 1002; - // API keys associated with the corpus. Only populated if read_api_keys is true. - repeated ApiKey api_key = 4; - // Status of the API keys. - Status api_key_status = 1004; - // Custom dimensions of the corpus. Only populated if read_custom_dimensions is true. - repeated Dimension custom_dimension = 5; - // Status of the custom dimensions. - Status custom_dimension_status = 1005; - // Filter attributes of the corpus. Only populated if read_filter_attributes is true. - repeated FilterAttribute filter_attribute = 6; - // Status of the filter attributes. - Status filter_attribute_status = 1006; - } - - // Information about the requested corpora. - repeated CorpusInfo corpora = 1; -} - -message ComputeCorpusSizeRequest { - // The corpus for which to compute the size. - uint32 corpus_id = 1; -} - -message ComputeCorpusSizeResponse { - // The size of the corpus. - CorpusSize size = 1; - // The status of the size computation. - Status status = 2; -} - -message ReplaceCorpusFilterAttrsRequest { - // The corpus for which to update filters. - uint32 corpus_id = 1; - // The filters to set. The existing filters are replaced with this list of filters. - repeated FilterAttribute filter_attributes = 10; -} - -message ReplaceCorpusFilterAttrsResponse { - Status status = 1000; - - // If 'status' represents success, this contains the ID assigned to the job - // for updating the list of filters. This ID can be used to query the status - // of the job. - string job_id = 10; -} - - diff --git a/admin_account.proto b/admin_account.proto deleted file mode 100644 index 35801d4..0000000 --- a/admin_account.proto +++ /dev/null @@ -1,33 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminAccountProtos"; - -package com.vectara.admin; - -// Please note that this is an expensive operation, and the requests can be throttled -// by the platform. -message ComputeAccountSizeRequest { -} - -// A TextSize object represents the size of stored text. -message TextSize { - // Count of actual characters in the text that will be searched. - uint64 num_chars = 1; - // Count of metadata characters such as URL, author, date of creation etc. - uint64 num_metadata_chars = 2; -} - -message ComputeAccountSizeResponse { - // One TextSize represents one cluster. The account size is a sum of all the sizes. - // Generally, this will only have one value. - repeated TextSize size = 1; - // Status response of the operation. - Status status = 2; -} - - diff --git a/admin_apikey.proto b/admin_apikey.proto deleted file mode 100644 index 6b0aadd..0000000 --- a/admin_apikey.proto +++ /dev/null @@ -1,146 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminApiKeyProtos"; - -package com.vectara.admin; - -/****************************************************************************** - API Keys - ******************************************************************************/ -// Types of ApiKey. -enum ApiKeyType { - API_KEY_TYPE__UNDEFINED = 0; - // ApiKey for serving. Only gives access to query data. - API_KEY_TYPE__SERVING = 1; - // ApiKey for serving and indexing. Gives access to both query and index data. - API_KEY_TYPE__SERVING_INDEXING = 2; - // ApiKey for personal access key. - API_KEY_TYPE__PERSONAL = 3; -} - -// Status of ApiKey. -enum ApiKeyStatus { - UNKNOWN = 0; - ENABLED = 1; - DISABLED = 2; - DELETED = 3; -} - -// Represents an ApiKey. -// An ApiKey provides anonymous access to common tasks such as index data, query data, etc. -message ApiKey { - string id = 1; - // Description of the ApiKey. - string description = 2; - // Type of the ApiKey. - ApiKeyType key_type = 3; - // Whether the ApiKey is enabled. - bool enabled = 4; - // Seconds sinch Epoch when the ApiKey becomes active. - optional int64 ts_start = 5; - // Seconds sinch Epoch when the ApiKey becomes inactive. - optional int64 ts_end = 6; - // Status of the ApiKey. - ApiKeyStatus status = 7; -} - -// This request can be used to create one or more ApiKeys. -// Every ApiKey is bound to one or more corpora. -message CreateApiKeyRequest { - // ApiKey data to create the ApiKey bound to one or more corpora. - message ApiKeyCorpus { - // Description of the ApiKey. - string description = 1; - // Type of the ApiKey. - ApiKeyType api_key_type = 3; - // List of corpus ids to bind the ApiKey to. - repeated uint32 corpus_id = 2; - } - // List of ApiKey data to create. - repeated ApiKeyCorpus api_key_data = 1; -} - -// Response of the CreateApiKeyRequest. -message CreateApiKeyResponse { - // A valid key or Status of the ApiKey creation (in case of failure). - message ApiKeyOrStatus { - // A valid ApiKey. - string key_id = 1; - // Status of the ApiKey creation. - Status status = 2; - } - // List of ApiKeyOrStatus corresponding to the list of ApiKey data in request. - repeated ApiKeyOrStatus response = 1; -} - -message ListApiKeysRequest { - // Max results to return. - uint32 num_results = 1; - // A key that is passed to retrieve a specific page of results. - // Leave empty to retrieve first page. Subsequent page requests should - // use the page key returned in previous response, and all other - // fields are ignored. - bytes page_key = 2; - // [Optional] Get API keys of these types. - // Default: If not set, API_KEY_TYPE__SERVING and API_KEY_TYPE__SERVING_INDEXING are returned. - repeated ApiKeyType api_key_type = 3; - // If set, returns corpus name & id associated with api keys. - bool read_corpora_info = 1000; -} - -message ListApiKeysResponse { - // A message containing ApiKey and associated corpora. - message KeyAndCorpora{ - // ApiKey data. - ApiKey api_key = 1; - // Message containing corpus name and id. - message CorpusInfo { - // Corpus id. - uint32 id = 1; - // Corpus name. - string name = 2; - } - // List of corpora associated with the ApiKey. - repeated CorpusInfo corpus = 2; - } - - // List of ApiKey and associated corpora. - repeated KeyAndCorpora key_data = 1; - // A key that is passed into a subsequent result in order to - // retrieve the next page of results. - bytes page_key = 2; - // Status of the ListApiKeysRequest. - Status status = 1000; -} - -message DeleteApiKeyRequest { - // List of ApiKey ids to delete. - repeated string key_id = 1; -} - -message DeleteApiKeyResponse { - // Status of the DeleteApiKeyRequest. - repeated Status status = 1000; -} - -message EnableApiKeyRequest { - message ApiKeyEnablement { - // ApiKey id to enable or disable. - string key_id = 1; - // Enable or disable using this variable - bool enable = 2; - } - // List of ApiKey ids to enable or disable. - repeated ApiKeyEnablement key_enablement = 1; -} - -message EnableApiKeyResponse { - // List of Status such as OK, FAILED corresponding to the EnableApiKeyRequest. - repeated Status status = 1000; -} - diff --git a/admin_job.proto b/admin_job.proto deleted file mode 100644 index ab96564..0000000 --- a/admin_job.proto +++ /dev/null @@ -1,85 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminJobProtos"; - -package com.vectara.admin; - -// Type of jobs. -enum JobType { - JOB__UNKNOWN = 0; - JOB__CORPUS_REBUILD_VECTOR_INDEX = 1; - JOB__CORPUS_REPLACE_FILTER_ATTRS = 2; -} - -// The state of a job. -enum JobState { - JOB_STATE__UNKNOWN = 0; - JOB_STATE__QUEUED = 5; - JOB_STATE__STARTED = 10; - JOB_STATE__COMPLETED = 15; - JOB_STATE__FAILED = 20; - JOB_STATE__TRANSIENT_FAILURE_RETRY_IMMINENT = 25; - JOB_STATE__ABORTED = 30; -} - -message ListJobsRequest { - // Optional filters. If specified, the filters are logically ANDed. - // - // [Optional] If specified, return the job for this id. - string job_id = 1; - // [Optional] If specified, return jobs for these corpora only. - repeated uint32 corpus_id = 2; - - // [Optional] Get jobs that were created since this epoch timestamp. - // Max allowed value is 180 days ago. Default is 180 days. - int64 epoch_secs = 3; - - // [Optional] Get jobs with these states. If not specified, all job - // states are fetched. - // Default: If not set, JOB_STATE__QUEUED and JOB_STATE__STARTED are returned. - repeated JobState state = 4; - - // Maximum results to return. Max allowed value is 100. - uint32 num_results = 25; - // A key that is passed in to retrieve a specific page of results. - // Leave empty to retrieve first page. Subsequent page request should - // use the page key returned in previous response, and all other - // fields are ignored. - bytes page_key = 30; -} - -// Represents a job in the system. -// A job is typically a long running unit of work for achieving a particular outcome. -// Example job: replace filter attributes of a corpus. -message Job { - string id = 1; - JobType type = 2; - // Set if the job belongs to a corpus. - repeated uint32 corpus_id = 3; - JobState state = 4; - - // Epoch (secs) when the job was created. - int64 ts_create = 10; - // Epoch (secs) when the job was started. Not set if the job - // hasn't started yet. - int64 ts_start = 15; - // Epoch (secs) when the job completed. Not set if the job - // hasn't completed yet. - int64 ts_complete = 16; - // Handle of the user that created this job. - string user_handle = 17; -} - -message ListJobsResponse { - repeated Status status = 1000; - repeated Job job = 10; - - // A key that is passed into a subsequent result in order to - // retrieve the next page of results. - bytes page_key = 500; -} diff --git a/admin_metric.proto b/admin_metric.proto deleted file mode 100644 index 3c0381e..0000000 --- a/admin_metric.proto +++ /dev/null @@ -1,84 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminMetricProtos"; - -package com.vectara.admin; - -/****************************************************************************** - Metrics (get request rate etc.) - ******************************************************************************/ - -// This window is used to specify a time range for metrics -message AbsoluteWindow { - int64 start_epoch_secs = 1; - int64 end_epoch_secs = 2; -} - -// The request type for usage metrics -message UsageMetricsRequest { - // The type of metric to get - enum MetricType { - METRICTYPE__NONE = 0; - METRICTYPE__INDEXING = 1; - METRICTYPE__SERVING = 2; - } - - // The corpus for which the metric is requested. - uint32 corpus_id = 1; - // The time period for which the metric is requested. - AbsoluteWindow window = 2; - // The type of metric to get. - MetricType type = 3; - // The response stats will be aggregated by this interval. Minimum aggregation interval is 1 minute. - // Supported granularity units for aggregation are days, hours and minutes. - // For example, If 2.5 days (in seconds) are passed, results will be aggregated by 2 days. - // Similarly, if 7.6 hours (in seconds) are passed, results will be aggregated by 7 hours. - int64 aggregation_interval_secs = 4; -} - -// Indexing data -message IndexingMetric { - // The number of documents indexed - uint64 doc_count = 1; - // The number of document parts indexed - uint64 doc_part_count = 2; - // The number of bytes indexed. - // In case of Upload API, this is the actual bytes extracted from the document and not - // the size of the document. - // In case of Index API, this is the combined size of text in all the sections of the document. - uint64 doc_part_bytes = 3; - // The start time for this metric - int64 start_epoch_secs = 4; -} - -// Serving/querying data -message ServingMetric { - // The number of rows read - uint64 rows_read = 1; - // The number of queries - uint64 query_count = 2; - // The start time for this metric - int64 start_epoch_secs = 3; -} - -message UsageMetricsResponse { - // The response for a single interval - message IntervalValue { - // Interval containing value for either Indexing or Serving - oneof value { - IndexingMetric indexing_value = 1; - ServingMetric serving_value = 2; - } - } - - // List of IntervalValue containing values for either Indexing or Serving. These are - // aggregated by the interval specified in the request. - repeated IntervalValue values = 1; - // The status response of the request - Status status = 2; -} diff --git a/admin_security.proto b/admin_security.proto deleted file mode 100644 index 95f7a58..0000000 --- a/admin_security.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminSecurityProtos"; - -package com.vectara.admin; - - -enum CustomerRole { - CustomerRole_None = 0; - // The owner is the root user of the account. Only an owner can shut - // down the account completely. - CustomerRole_Owner = 1; - // An account administrator can do things like create corpora, add or remove users etc. - CustomerRole_Admin = 2; - // View and modify billing-related information for the account. - CustomerRole_Billing_Admin = 3; - // View and modify corpus-related information for the account. - CustomerRole_Corpus_Admin = 4; -} - diff --git a/admin_user.proto b/admin_user.proto deleted file mode 100644 index 2901aaf..0000000 --- a/admin_user.proto +++ /dev/null @@ -1,125 +0,0 @@ -syntax = "proto3"; - -import "admin_security.proto"; -import "status.proto"; - -option go_package = "vectara.com/public/proto/admin"; - -option java_package = "com.vectara.admin"; -option java_outer_classname = "AdminUserProtos"; - -package com.vectara.admin; - -// Represents a user in an account. -// A user is a person or an application that has access to the system. -message User { - // Unique ID for the user. This is required for deleting, enabling, disabling a user - // or to reset their password. This can be retrieved via ListUsers API or it is also - // returned as part of ManageUser API when a new user is created. - uint32 id = 1; - // Name of the user. This is required for creating a new user. - string handle = 3; - // Type of user - UserType type = 4; - // Comment about the user - string comment = 5; - // Seconds since epoch when the user was created. - int64 ts_create = 6; - // ID of the user who created this user. - uint32 id_create = 7; - // Email address associated with the user. This is required for creating a new user. - string email = 10; - // Status of the user such as ACTIVE, DISABLED etc. - UserStatus user_status = 11; - // List of customer level roles - repeated CustomerRole role = 12; -} - -enum UserType { - USER_TYPE__NONE = 0; - // A normal user - USER_TYPE__USER = 1; - // A user that is authenticated by an external identity provider such as Google etc. - USER_TYPE__FEDERATED_USER = 2; - // An application client. Please note that this doesn't work with ManageUser API. - // To create an App Client, use the ManageAppClient API. - USER_TYPE__APP_CLIENT = 3; -} - -enum UserStatus { - USER_STATUS__NONE = 0; - // User is active - USER_STATUS__ACTIVE = 1; - // User is disabled - USER_STATUS__DISABLED = 2; -} - -enum ListUsersType { - LIST_USERS_TYPE__NONE = 0; - // Only List users with customer account-level authorizations. - LIST_USERS_TYPE__CUSTOMER = 2; - // List All the users - LIST_USERS_TYPE__ALL = 3; -} - -message ListUsersRequest { - // Type of users that we want to retrieve - ListUsersType list_users_type = 3; - // A key that is passed to retrieve a specific page of results. - // Leave empty to retrieve first page. Subsequent page requests should - // use the page key returned in previous response, and all other - // fields are ignored. - bytes page_key = 4; - // Number of results to return. - uint32 num_results = 5; -} - -message ListUsersResponse { - // List of users - repeated User user = 1; - // A key that is passed into a subsequent result in order to - // retrieve the next page of results. - bytes page_key = 2; - // Status response of the request such as OK, FAILED etc. - Status status = 1000; -} - -enum UserActionType { - USER_ACTION_TYPE__NONE = 0; - // Add User - USER_ACTION_TYPE__ADD = 1; - // Delete User - USER_ACTION_TYPE__DELETE = 2; - // Disable User - USER_ACTION_TYPE__DISABLE = 3; - // Enable User - USER_ACTION_TYPE__ENABLE = 4; - // Reset User Password - USER_ACTION_TYPE__RESET_PASSWORD = 5; -} - -message ManageUserRequest { - // User and action to be performed on user - message UserAction { - // User object - User user = 1; - // Action to be performed on user - UserActionType user_action_type = 2; - } - // List of users and actions to be performed on them - repeated UserAction user_action = 1; -} - -message ManageUserResponse { - // List of users and their status - message UserResponse { - // User object - User user = 1; - // Status response of the request such as OK, FAILED etc. - Status status = 1000; - } - // List of users alongwith relative status such as OK, FAILED etc. - repeated UserResponse response = 1; -} - - diff --git a/attribute.proto b/attribute.proto deleted file mode 100644 index 1d08396..0000000 --- a/attribute.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "com.vectara"; -option java_outer_classname = "AttributeProtos"; - -option go_package = "vectara.com/public/proto/common"; - -package com.vectara; - -// A key/value pair representing a document attribute (metadata item). -message Attribute { - // Name of the document metadata attribute. - string name = 5; - // Value of the document metadata attribute. - string value = 10; -} diff --git a/chat.proto b/chat.proto deleted file mode 100644 index 75473cc..0000000 --- a/chat.proto +++ /dev/null @@ -1,106 +0,0 @@ -syntax = "proto3"; - -import "status.proto"; - -option java_package = "com.vectara.chat"; -option java_outer_classname = "ChatProtos"; - -option go_package = "vectara.com/public/proto/chat"; - -package com.vectara.chat; - -// A turn in a conversation is a single exchange of query and answer. -// A conversation is composed of several turns. -message Turn { - // The ID of the turn. The ID of the first turn in a conversation is the same as the - // ID of the conversation. This is unique within the chat history corpus. - string id = 1; - // The ID of the conversation this turn belongs to. This is the same as the ID of the - // first turn in the conversation. - string conversation_id = 5; - // The query text. - string query = 10; - // The answer text. - string answer = 15; - // Whether this turn is enabled. If a turn is disabled, it will not be used when - // generating answers for subsequent queries in the conversation. - bool enabled = 20; - // The time at which this turn was created. - int64 epoch_secs = 25; -} - -// A chat contains several back-and-forth messages called turns. -message Conversation { - // The ID of the conversation. This is unique within the chat history corpus. - string id = 1; - // The turns comprising this conversation. - repeated Turn turn = 5; -} - -message ListConversationsRequest { - - // Maximum number of conversations to return per page. - uint32 num_results = 5; - - // A key that is passed in to retrieve a specific page of results. - // Leave empty to retrieve the first page. Subsequent page request should - // use the page key returned in previous response, and all other - // fields are ignored. - bytes page_key = 10; -} - -message ListConversationsResponse { - // The first turn in each conversation. - // This doesn't comprise all turns in each conversation; only the first turn of each - // conversation is returned. - repeated Turn conversation = 1; - Status status = 5; - - // A key that is passed in to retrieve a specific page of results. - // Pass this as is in to the next request to retrieve the next page of results. - bytes page_key = 10; -} - -message ReadConversationsRequest { - // The IDs of the conversations to read. Limit: 10 conversations. - repeated string conversation_id = 5; -} - -message ReadConversationsResponse { - repeated Conversation Conversation = 1; - Status status = 5; -} - -message DeleteConversationsRequest { - // The IDs of the conversations to delete. Limit: 1000 conversations. - repeated string conversation_id = 5; -} - -message DeleteConversationsResponse { - Status status = 1; -} - -message DeleteTurnsRequest { - // The ID of the conversations from which to delete turns. - string conversation_id = 5; - // The ID of the turn to start deletion from. All turns in this conversation starting from this - // turn (inclusive) will be deleted. - string turn_id = 10; -} - -message DeleteTurnsResponse { - Status status = 1; -} - -message DisableTurnsRequest { - // The ID of the conversations from which to disable turns. - string conversation_id = 5; - // The ID of the turn to start disabling from. All turns in this conversation starting from this - // turn will be disabled. - string turn_id = 10; -} - -message DisableTurnsResponse { - Status status = 1; -} - diff --git a/common.proto b/common.proto deleted file mode 100644 index c021314..0000000 --- a/common.proto +++ /dev/null @@ -1,98 +0,0 @@ -syntax = "proto3"; - -option java_package = "com.vectara"; -option java_outer_classname = "CommonProtos"; - -option go_package = "vectara.com/public/proto/common"; - -package com.vectara; - -// Languages supported by Vectara. -message Language { - enum Code { - UNKNOWN = 0; - - // English. - ENG = 1; - // German. - DEU = 2; - // French. - FRA = 3; - // Chinese. - ZHO = 4; - // Korean. - KOR = 5; - // Arabic. - ARA = 6; - // Russian. - RUS = 7; - // Thai. - THA = 8; - // Dutch. - NLD = 9; - // Italian. - ITA = 10; - // Portuguese. - POR = 11; - // Spanish. - SPA = 12; - // Japanese. - JPN = 13; - // Polish. - POL = 14; - // Turkish. - TUR = 15; - // Vietnamese. - VIE = 16; - // Indonesian. - IND = 17; - // Czech. - CES = 18; - // Ukrainian. - UKR = 19; - // Greek. - ELL = 20; - // Hebrew. - HEB = 21; - // Farsi/Persian. - FAS = 22; - // Hindi. - HIN = 23; - // Urdu. - URD = 24; - // Swedish. - SWE = 25; - // Bengali. - BEN = 26; - // Malay. - MSA = 27; - // Romanian. - RON = 28; - - // Let the platform detect the language. - AUTO = 5000; - } -} - - // Request to delete a document from an index. -message DeleteDocumentRequest { - // The Customer ID to issue the request for. - int64 customer_id = 1; - // The Corpus ID that contains the document. - int64 corpus_id = 2; - // The Document ID to be deleted. - string document_id = 3; -} - -message DeleteDocumentResponse { -} - -// Encapsulates storage quota consumed by indexed documents. -// NextId: 3 -message StorageQuota { - // The number of chars from the document that consumed the storage quota. - int64 num_chars = 1; - // The number of chars in the metadata of the document that consumed the - // storage quota. - int64 num_metadata_chars = 2; -} diff --git a/core_services.proto b/core_services.proto deleted file mode 100644 index c2c8a5c..0000000 --- a/core_services.proto +++ /dev/null @@ -1,51 +0,0 @@ -// These are public services that we only share with some of our customers. - -syntax = "proto3"; - -import "common.proto"; -import "indexing_core.proto"; -import "status.proto"; -import "google/api/annotations.proto"; - -option java_package = "com.vectara"; -option java_outer_classname = "CoreServiceProtos"; - -option go_package = "vectara.com/public/proto/coreservices"; - -package com.vectara; - -// Request to index a document. -message IndexCoreDocumentRequest { - // The Customer ID to issue the request for. - int64 customer_id = 1; - // The Corpus ID to index the document into. - int64 corpus_id = 2; - com.vectara.indexing.CoreDocument document = 3; -} - -message IndexCoreDocumentResponse { - // If ALREADY_EXISTS, it means the document was already indexed, and no new quota was consumed. - Status status = 1; - - // The storage quota needed for the document indexed in the request. - // If "status" is ALREADY_EXISTS, it means that the document was already in the index prior to - // this request. In such cases, quota is not consumed again and the value in this field - // represents the quota consumed when the document was indexed the first time. - StorageQuota quota_consumed = 2; -} - -service CoreIndexService { - rpc Index(IndexCoreDocumentRequest) returns (IndexCoreDocumentResponse) { - option (google.api.http) = { - post: "/v1/core/index" - body: "*" - }; - } - - rpc Delete(DeleteDocumentRequest) returns (DeleteDocumentResponse) { - option (google.api.http) = { - post: "/v1/core/delete-doc" - body: "*" - }; - } -} diff --git a/custom_dim.proto b/custom_dim.proto deleted file mode 100644 index 63f7fc3..0000000 --- a/custom_dim.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "com.vectara.indexing"; -option java_outer_classname = "CustomDimProtos"; - -option go_package = "vectara.com/public/proto/customdim"; - -package com.vectara.indexing; - -// The value of a custom dimension. A valid list of custom dimensions is defined ahead of time for a corpus. -message CustomDimension { - // The name of the dimension. - string name = 1; - // The value of the dimension. - double value = 2; -} diff --git a/indexing.proto b/indexing.proto deleted file mode 100644 index 2081389..0000000 --- a/indexing.proto +++ /dev/null @@ -1,58 +0,0 @@ -syntax = "proto3"; - -import "custom_dim.proto"; - -option java_package = "com.vectara.indexing"; -option java_outer_classname = "IndexingProtos"; - -option go_package = "vectara.com/public/proto/indexing"; - -package com.vectara.indexing; - -// A section within a structured document. -message Section { - // Optionally, the unique ID of this section. If set, it will be returned as - // metadata in query results. - int32 id = 1; - // Optionally, the title of the section. This may be empty. - string title = 2; - // The text of the section. This should never be empty. - string text = 3; - // Metadata about this section. This should be a json string. It is passed - // through the system, without being used at indexing time. It can be - // retrieved at query time. - string metadata_json = 4; - // A list of custom dimension values that are included in the generated - // representation of all subsections (i.e. sections contains by this section). - repeated CustomDimension custom_dims = 5; - - // A list of subsections. - repeated Section section = 10; -} - -// A document to index. -message Document { - // Client assigned document ID to this document. - string document_id = 1; - // The title of the document. - string title = 2; - // An optional description for the document. - string description = 3; - // Metadata about the document. This is a string containing a JSON - // object. It can be an arbitrary object except that any keys - // that match a metadata filter of the corpus must have the - // same value type as metadata filter's value type. - // - // A query can use this object to filter if the object's key/value pair - // has been defined as a metadata filter. - // - // The whole object will be in the query result. - string metadata_json = 4; - // A list of custom dimension values that are included in the generated - // representation of all sections. - repeated CustomDimension custom_dims = 5; - - // The actual content of the document, structured as a repeating list - // of sections. - repeated Section section = 10; -} diff --git a/indexing_core.proto b/indexing_core.proto deleted file mode 100644 index 479e5db..0000000 --- a/indexing_core.proto +++ /dev/null @@ -1,45 +0,0 @@ -syntax = "proto3"; - -import "custom_dim.proto"; - -option java_package = "com.vectara.indexing"; -option java_outer_classname = "CoreIndexingProtos"; - -option go_package = "vectara.com/public/proto/indexingcore"; - -package com.vectara.indexing; - -// Part of a document. A document consists of several such parts. -message CoreDocumentPart { - // A part of the document. e.g., a sentence. - string text = 1; - // Context of the part. - string context = 2; - // Metadata about this part of the document. This should be a json string. - // It is passed through the system, without being used at indexing time. It - // can be retrieved at query time. - string metadata_json = 3; - // A list of custom dimension values that are included in the generated - // representation of this part. These are optional and take on the corpus - // default custom dimension value if not explicitly provided for the document - repeated CustomDimension custom_dims = 4; -} - -// A document to index. -message CoreDocument { - // A document ID to assign to this document. - string document_id = 1; - // Metadata about the document. This should be a json string. It can be - // retrieved at query time. - string metadata_json = 2; - // All parts of this document. - repeated CoreDocumentPart parts = 3; - // This field provides a way to specify a blanket context for all parts. If - // the context in a part is empty, this context will be used. - string default_part_context = 4; - // A list of custom dimension values that are included in the generated - // representation of all parts. - repeated CustomDimension custom_dims = 5; -} - - diff --git a/list_documents.proto b/list_documents.proto deleted file mode 100644 index 0040bf1..0000000 --- a/list_documents.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; - -import "attribute.proto"; - -option java_package = "com.vectara.lists"; -option java_outer_classname = "ListProtos"; - -option go_package = "vectara.com/public/proto/lists"; - -package com.vectara.lists; - -// Request to list documents in a corpus. -message ListDocumentsRequest { - // The Corpus ID. - uint32 corpus_id = 5; - - // Maximum number of results to be returned by the server. - // Max is 1000. - // If the value is larger than 1000, it will be capped to 1000. - uint32 num_results = 10; - // Key of the specific page of the list results to return. - // Null/empty value means the very first page of the results is requested. - bytes page_key = 15; - - // Filter on document metadata. If empty, no filtering is done. - // Otherwise, only documents that match all of the specified metadata - // will be returned. The syntax is the same as for QueryRequest.metadata. - string metadata_filter = 20; -} - -// Response of listing documents in a corpus. -message ListDocumentsResponse { - // Document information format of each document in the list. - message DocumentInfo { - // The document ID that was used when indexing the document. - string id = 1; - // Document metadata. - repeated Attribute metadata = 5; - } - - // The list of documents. - repeated DocumentInfo document = 1; - // Represents the pagination key to retrieve the next page of results. - // If the value is "", it means no further results for the request. - // To retrieve the next page of results, client shall pass the value of next_page_key in the subsequent - // ListDocumentsRequest method call (in the request message's page_key field). - bytes next_page_key = 5; -} - diff --git a/protoc-gen-openapiv2/options/annotations.proto b/protoc-gen-openapiv2/options/annotations.proto deleted file mode 100644 index d63d3c8..0000000 --- a/protoc-gen-openapiv2/options/annotations.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax = "proto3"; - -package grpc.gateway.protoc_gen_openapiv2.options; - -import "google/protobuf/descriptor.proto"; -import "protoc-gen-openapiv2/options/openapiv2.proto"; - -option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; - -extend google.protobuf.FileOptions { - // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. - // - // All IDs are the same, as assigned. It is okay that they are the same, as they extend - // different descriptor messages. - Swagger openapiv2_swagger = 1042; -} -extend google.protobuf.MethodOptions { - // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. - // - // All IDs are the same, as assigned. It is okay that they are the same, as they extend - // different descriptor messages. - Operation openapiv2_operation = 1042; -} -extend google.protobuf.MessageOptions { - // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. - // - // All IDs are the same, as assigned. It is okay that they are the same, as they extend - // different descriptor messages. - Schema openapiv2_schema = 1042; -} -extend google.protobuf.ServiceOptions { - // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. - // - // All IDs are the same, as assigned. It is okay that they are the same, as they extend - // different descriptor messages. - Tag openapiv2_tag = 1042; -} -extend google.protobuf.FieldOptions { - // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. - // - // All IDs are the same, as assigned. It is okay that they are the same, as they extend - // different descriptor messages. - JSONSchema openapiv2_field = 1042; -} diff --git a/protoc-gen-openapiv2/options/openapiv2.proto b/protoc-gen-openapiv2/options/openapiv2.proto deleted file mode 100644 index 34ddb52..0000000 --- a/protoc-gen-openapiv2/options/openapiv2.proto +++ /dev/null @@ -1,720 +0,0 @@ -syntax = "proto3"; - -package grpc.gateway.protoc_gen_openapiv2.options; - -import "google/protobuf/struct.proto"; - -option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; - -// Scheme describes the schemes supported by the OpenAPI Swagger -// and Operation objects. -enum Scheme { - UNKNOWN = 0; - HTTP = 1; - HTTPS = 2; - WS = 3; - WSS = 4; -} - -// `Swagger` is a representation of OpenAPI v2 specification's Swagger object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#swaggerObject -// -// Example: -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { -// info: { -// title: "Echo API"; -// version: "1.0"; -// description: ""; -// contact: { -// name: "gRPC-Gateway project"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway"; -// email: "none@example.com"; -// }; -// license: { -// name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; -// }; -// }; -// schemes: HTTPS; -// consumes: "application/json"; -// produces: "application/json"; -// }; -// -message Swagger { - // Specifies the OpenAPI Specification version being used. It can be - // used by the OpenAPI UI and other clients to interpret the API listing. The - // value MUST be "2.0". - string swagger = 1; - // Provides metadata about the API. The metadata can be used by the - // clients if needed. - Info info = 2; - // The host (name or ip) serving the API. This MUST be the host only and does - // not include the scheme nor sub-paths. It MAY include a port. If the host is - // not included, the host serving the documentation is to be used (including - // the port). The host does not support path templating. - string host = 3; - // The base path on which the API is served, which is relative to the host. If - // it is not included, the API is served directly under the host. The value - // MUST start with a leading slash (/). The basePath does not support path - // templating. - // Note that using `base_path` does not change the endpoint paths that are - // generated in the resulting OpenAPI file. If you wish to use `base_path` - // with relatively generated OpenAPI paths, the `base_path` prefix must be - // manually removed from your `google.api.http` paths and your code changed to - // serve the API from the `base_path`. - string base_path = 4; - // The transfer protocol of the API. Values MUST be from the list: "http", - // "https", "ws", "wss". If the schemes is not included, the default scheme to - // be used is the one used to access the OpenAPI definition itself. - repeated Scheme schemes = 5; - // A list of MIME types the APIs can consume. This is global to all APIs but - // can be overridden on specific API calls. Value MUST be as described under - // Mime Types. - repeated string consumes = 6; - // A list of MIME types the APIs can produce. This is global to all APIs but - // can be overridden on specific API calls. Value MUST be as described under - // Mime Types. - repeated string produces = 7; - // field 8 is reserved for 'paths'. - reserved 8; - // field 9 is reserved for 'definitions', which at this time are already - // exposed as and customizable as proto messages. - reserved 9; - // An object to hold responses that can be used across operations. This - // property does not define global responses for all operations. - map responses = 10; - // Security scheme definitions that can be used across the specification. - SecurityDefinitions security_definitions = 11; - // A declaration of which security schemes are applied for the API as a whole. - // The list of values describes alternative security schemes that can be used - // (that is, there is a logical OR between the security requirements). - // Individual operations can override this definition. - repeated SecurityRequirement security = 12; - // A list of tags for API documentation control. Tags can be used for logical - // grouping of operations by resources or any other qualifier. - repeated Tag tags = 13; - // Additional external documentation. - ExternalDocumentation external_docs = 14; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 15; -} - -// `Operation` is a representation of OpenAPI v2 specification's Operation object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#operationObject -// -// Example: -// -// service EchoService { -// rpc Echo(SimpleMessage) returns (SimpleMessage) { -// option (google.api.http) = { -// get: "/v1/example/echo/{id}" -// }; -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { -// summary: "Get a message."; -// operation_id: "getMessage"; -// tags: "echo"; -// responses: { -// key: "200" -// value: { -// description: "OK"; -// } -// } -// }; -// } -// } -message Operation { - // A list of tags for API documentation control. Tags can be used for logical - // grouping of operations by resources or any other qualifier. - repeated string tags = 1; - // A short summary of what the operation does. For maximum readability in the - // swagger-ui, this field SHOULD be less than 120 characters. - string summary = 2; - // A verbose explanation of the operation behavior. GFM syntax can be used for - // rich text representation. - string description = 3; - // Additional external documentation for this operation. - ExternalDocumentation external_docs = 4; - // Unique string used to identify the operation. The id MUST be unique among - // all operations described in the API. Tools and libraries MAY use the - // operationId to uniquely identify an operation, therefore, it is recommended - // to follow common programming naming conventions. - string operation_id = 5; - // A list of MIME types the operation can consume. This overrides the consumes - // definition at the OpenAPI Object. An empty value MAY be used to clear the - // global definition. Value MUST be as described under Mime Types. - repeated string consumes = 6; - // A list of MIME types the operation can produce. This overrides the produces - // definition at the OpenAPI Object. An empty value MAY be used to clear the - // global definition. Value MUST be as described under Mime Types. - repeated string produces = 7; - // field 8 is reserved for 'parameters'. - reserved 8; - // The list of possible responses as they are returned from executing this - // operation. - map responses = 9; - // The transfer protocol for the operation. Values MUST be from the list: - // "http", "https", "ws", "wss". The value overrides the OpenAPI Object - // schemes definition. - repeated Scheme schemes = 10; - // Declares this operation to be deprecated. Usage of the declared operation - // should be refrained. Default value is false. - bool deprecated = 11; - // A declaration of which security schemes are applied for this operation. The - // list of values describes alternative security schemes that can be used - // (that is, there is a logical OR between the security requirements). This - // definition overrides any declared top-level security. To remove a top-level - // security declaration, an empty array can be used. - repeated SecurityRequirement security = 12; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 13; - // Custom parameters such as HTTP request headers. - // See: https://swagger.io/docs/specification/2-0/describing-parameters/ - // and https://swagger.io/specification/v2/#parameter-object. - Parameters parameters = 14; -} - -// `Parameters` is a representation of OpenAPI v2 specification's parameters object. -// Note: This technically breaks compatibility with the OpenAPI 2 definition structure as we only -// allow header parameters to be set here since we do not want users specifying custom non-header -// parameters beyond those inferred from the Protobuf schema. -// See: https://swagger.io/specification/v2/#parameter-object -message Parameters { - // `Headers` is one or more HTTP header parameter. - // See: https://swagger.io/docs/specification/2-0/describing-parameters/#header-parameters - repeated HeaderParameter headers = 1; -} - -// `HeaderParameter` a HTTP header parameter. -// See: https://swagger.io/specification/v2/#parameter-object -message HeaderParameter { - // `Type` is a a supported HTTP header type. - // See https://swagger.io/specification/v2/#parameterType. - enum Type { - UNKNOWN = 0; - STRING = 1; - NUMBER = 2; - INTEGER = 3; - BOOLEAN = 4; - } - - // `Name` is the header name. - string name = 1; - // `Description` is a short description of the header. - string description = 2; - // `Type` is the type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. - // See: https://swagger.io/specification/v2/#parameterType. - Type type = 3; - // `Format` The extending format for the previously mentioned type. - string format = 4; - // `Required` indicates if the header is optional - bool required = 5; - // field 6 is reserved for 'items', but in OpenAPI-specific way. - reserved 6; - // field 7 is reserved `Collection Format`. Determines the format of the array if type array is used. - reserved 7; -} - -// `Header` is a representation of OpenAPI v2 specification's Header object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#headerObject -// -message Header { - // `Description` is a short description of the header. - string description = 1; - // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. - string type = 2; - // `Format` The extending format for the previously mentioned type. - string format = 3; - // field 4 is reserved for 'items', but in OpenAPI-specific way. - reserved 4; - // field 5 is reserved `Collection Format` Determines the format of the array if type array is used. - reserved 5; - // `Default` Declares the value of the header that the server will use if none is provided. - // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. - // Unlike JSON Schema this value MUST conform to the defined type for the header. - string default = 6; - // field 7 is reserved for 'maximum'. - reserved 7; - // field 8 is reserved for 'exclusiveMaximum'. - reserved 8; - // field 9 is reserved for 'minimum'. - reserved 9; - // field 10 is reserved for 'exclusiveMinimum'. - reserved 10; - // field 11 is reserved for 'maxLength'. - reserved 11; - // field 12 is reserved for 'minLength'. - reserved 12; - // 'Pattern' See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3. - string pattern = 13; - // field 14 is reserved for 'maxItems'. - reserved 14; - // field 15 is reserved for 'minItems'. - reserved 15; - // field 16 is reserved for 'uniqueItems'. - reserved 16; - // field 17 is reserved for 'enum'. - reserved 17; - // field 18 is reserved for 'multipleOf'. - reserved 18; -} - -// `Response` is a representation of OpenAPI v2 specification's Response object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#responseObject -// -message Response { - // `Description` is a short description of the response. - // GFM syntax can be used for rich text representation. - string description = 1; - // `Schema` optionally defines the structure of the response. - // If `Schema` is not provided, it means there is no content to the response. - Schema schema = 2; - // `Headers` A list of headers that are sent with the response. - // `Header` name is expected to be a string in the canonical format of the MIME header key - // See: https://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey - map headers = 3; - // `Examples` gives per-mimetype response examples. - // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#example-object - map examples = 4; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 5; -} - -// `Info` is a representation of OpenAPI v2 specification's Info object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#infoObject -// -// Example: -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { -// info: { -// title: "Echo API"; -// version: "1.0"; -// description: ""; -// contact: { -// name: "gRPC-Gateway project"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway"; -// email: "none@example.com"; -// }; -// license: { -// name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; -// }; -// }; -// ... -// }; -// -message Info { - // The title of the application. - string title = 1; - // A short description of the application. GFM syntax can be used for rich - // text representation. - string description = 2; - // The Terms of Service for the API. - string terms_of_service = 3; - // The contact information for the exposed API. - Contact contact = 4; - // The license information for the exposed API. - License license = 5; - // Provides the version of the application API (not to be confused - // with the specification version). - string version = 6; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 7; -} - -// `Contact` is a representation of OpenAPI v2 specification's Contact object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#contactObject -// -// Example: -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { -// info: { -// ... -// contact: { -// name: "gRPC-Gateway project"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway"; -// email: "none@example.com"; -// }; -// ... -// }; -// ... -// }; -// -message Contact { - // The identifying name of the contact person/organization. - string name = 1; - // The URL pointing to the contact information. MUST be in the format of a - // URL. - string url = 2; - // The email address of the contact person/organization. MUST be in the format - // of an email address. - string email = 3; -} - -// `License` is a representation of OpenAPI v2 specification's License object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#licenseObject -// -// Example: -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { -// info: { -// ... -// license: { -// name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; -// }; -// ... -// }; -// ... -// }; -// -message License { - // The license name used for the API. - string name = 1; - // A URL to the license used for the API. MUST be in the format of a URL. - string url = 2; -} - -// `ExternalDocumentation` is a representation of OpenAPI v2 specification's -// ExternalDocumentation object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject -// -// Example: -// -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { -// ... -// external_docs: { -// description: "More about gRPC-Gateway"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway"; -// } -// ... -// }; -// -message ExternalDocumentation { - // A short description of the target documentation. GFM syntax can be used for - // rich text representation. - string description = 1; - // The URL for the target documentation. Value MUST be in the format - // of a URL. - string url = 2; -} - -// `Schema` is a representation of OpenAPI v2 specification's Schema object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject -// -message Schema { - JSONSchema json_schema = 1; - // Adds support for polymorphism. The discriminator is the schema property - // name that is used to differentiate between other schema that inherit this - // schema. The property name used MUST be defined at this schema and it MUST - // be in the required property list. When used, the value MUST be the name of - // this schema or any schema that inherits it. - string discriminator = 2; - // Relevant only for Schema "properties" definitions. Declares the property as - // "read only". This means that it MAY be sent as part of a response but MUST - // NOT be sent as part of the request. Properties marked as readOnly being - // true SHOULD NOT be in the required list of the defined schema. Default - // value is false. - bool read_only = 3; - // field 4 is reserved for 'xml'. - reserved 4; - // Additional external documentation for this schema. - ExternalDocumentation external_docs = 5; - // A free-form property to include an example of an instance for this schema in JSON. - // This is copied verbatim to the output. - string example = 6; -} - -// `JSONSchema` represents properties from JSON Schema taken, and as used, in -// the OpenAPI v2 spec. -// -// This includes changes made by OpenAPI v2. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject -// -// See also: https://cswr.github.io/JsonSchema/spec/basic_types/, -// https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json -// -// Example: -// -// message SimpleMessage { -// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { -// json_schema: { -// title: "SimpleMessage" -// description: "A simple message." -// required: ["id"] -// } -// }; -// -// // Id represents the message identifier. -// string id = 1; [ -// (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { -// description: "The unique identifier of the simple message." -// }]; -// } -// -message JSONSchema { - // field 1 is reserved for '$id', omitted from OpenAPI v2. - reserved 1; - // field 2 is reserved for '$schema', omitted from OpenAPI v2. - reserved 2; - // Ref is used to define an external reference to include in the message. - // This could be a fully qualified proto message reference, and that type must - // be imported into the protofile. If no message is identified, the Ref will - // be used verbatim in the output. - // For example: - // `ref: ".google.protobuf.Timestamp"`. - string ref = 3; - // field 4 is reserved for '$comment', omitted from OpenAPI v2. - reserved 4; - // The title of the schema. - string title = 5; - // A short description of the schema. - string description = 6; - string default = 7; - bool read_only = 8; - // A free-form property to include a JSON example of this field. This is copied - // verbatim to the output swagger.json. Quotes must be escaped. - // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject - string example = 9; - double multiple_of = 10; - // Maximum represents an inclusive upper limit for a numeric instance. The - // value of MUST be a number, - double maximum = 11; - bool exclusive_maximum = 12; - // minimum represents an inclusive lower limit for a numeric instance. The - // value of MUST be a number, - double minimum = 13; - bool exclusive_minimum = 14; - uint64 max_length = 15; - uint64 min_length = 16; - string pattern = 17; - // field 18 is reserved for 'additionalItems', omitted from OpenAPI v2. - reserved 18; - // field 19 is reserved for 'items', but in OpenAPI-specific way. - // TODO(ivucica): add 'items'? - reserved 19; - uint64 max_items = 20; - uint64 min_items = 21; - bool unique_items = 22; - // field 23 is reserved for 'contains', omitted from OpenAPI v2. - reserved 23; - uint64 max_properties = 24; - uint64 min_properties = 25; - repeated string required = 26; - // field 27 is reserved for 'additionalProperties', but in OpenAPI-specific - // way. TODO(ivucica): add 'additionalProperties'? - reserved 27; - // field 28 is reserved for 'definitions', omitted from OpenAPI v2. - reserved 28; - // field 29 is reserved for 'properties', but in OpenAPI-specific way. - // TODO(ivucica): add 'additionalProperties'? - reserved 29; - // following fields are reserved, as the properties have been omitted from - // OpenAPI v2: - // patternProperties, dependencies, propertyNames, const - reserved 30 to 33; - // Items in 'array' must be unique. - repeated string array = 34; - - enum JSONSchemaSimpleTypes { - UNKNOWN = 0; - ARRAY = 1; - BOOLEAN = 2; - INTEGER = 3; - NULL = 4; - NUMBER = 5; - OBJECT = 6; - STRING = 7; - } - - repeated JSONSchemaSimpleTypes type = 35; - // `Format` - string format = 36; - // following fields are reserved, as the properties have been omitted from - // OpenAPI v2: contentMediaType, contentEncoding, if, then, else - reserved 37 to 41; - // field 42 is reserved for 'allOf', but in OpenAPI-specific way. - // TODO(ivucica): add 'allOf'? - reserved 42; - // following fields are reserved, as the properties have been omitted from - // OpenAPI v2: - // anyOf, oneOf, not - reserved 43 to 45; - // Items in `enum` must be unique https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1 - repeated string enum = 46; - - // Additional field level properties used when generating the OpenAPI v2 file. - FieldConfiguration field_configuration = 1001; - - // 'FieldConfiguration' provides additional field level properties used when generating the OpenAPI v2 file. - // These properties are not defined by OpenAPIv2, but they are used to control the generation. - message FieldConfiguration { - // Alternative parameter name when used as path parameter. If set, this will - // be used as the complete parameter name when this field is used as a path - // parameter. Use this to avoid having auto generated path parameter names - // for overlapping paths. - string path_param_name = 47; - } - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 48; -} - -// `Tag` is a representation of OpenAPI v2 specification's Tag object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#tagObject -// -message Tag { - // The name of the tag. Use it to allow override of the name of a - // global Tag object, then use that name to reference the tag throughout the - // OpenAPI file. - string name = 1; - // A short description for the tag. GFM syntax can be used for rich text - // representation. - string description = 2; - // Additional external documentation for this tag. - ExternalDocumentation external_docs = 3; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 4; -} - -// `SecurityDefinitions` is a representation of OpenAPI v2 specification's -// Security Definitions object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityDefinitionsObject -// -// A declaration of the security schemes available to be used in the -// specification. This does not enforce the security schemes on the operations -// and only serves to provide the relevant details for each scheme. -message SecurityDefinitions { - // A single security scheme definition, mapping a "name" to the scheme it - // defines. - map security = 1; -} - -// `SecurityScheme` is a representation of OpenAPI v2 specification's -// Security Scheme object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securitySchemeObject -// -// Allows the definition of a security scheme that can be used by the -// operations. Supported schemes are basic authentication, an API key (either as -// a header or as a query parameter) and OAuth2's common flows (implicit, -// password, application and access code). -message SecurityScheme { - // The type of the security scheme. Valid values are "basic", - // "apiKey" or "oauth2". - enum Type { - TYPE_INVALID = 0; - TYPE_BASIC = 1; - TYPE_API_KEY = 2; - TYPE_OAUTH2 = 3; - } - - // The location of the API key. Valid values are "query" or "header". - enum In { - IN_INVALID = 0; - IN_QUERY = 1; - IN_HEADER = 2; - } - - // The flow used by the OAuth2 security scheme. Valid values are - // "implicit", "password", "application" or "accessCode". - enum Flow { - FLOW_INVALID = 0; - FLOW_IMPLICIT = 1; - FLOW_PASSWORD = 2; - FLOW_APPLICATION = 3; - FLOW_ACCESS_CODE = 4; - } - - // The type of the security scheme. Valid values are "basic", - // "apiKey" or "oauth2". - Type type = 1; - // A short description for security scheme. - string description = 2; - // The name of the header or query parameter to be used. - // Valid for apiKey. - string name = 3; - // The location of the API key. Valid values are "query" or - // "header". - // Valid for apiKey. - In in = 4; - // The flow used by the OAuth2 security scheme. Valid values are - // "implicit", "password", "application" or "accessCode". - // Valid for oauth2. - Flow flow = 5; - // The authorization URL to be used for this flow. This SHOULD be in - // the form of a URL. - // Valid for oauth2/implicit and oauth2/accessCode. - string authorization_url = 6; - // The token URL to be used for this flow. This SHOULD be in the - // form of a URL. - // Valid for oauth2/password, oauth2/application and oauth2/accessCode. - string token_url = 7; - // The available scopes for the OAuth2 security scheme. - // Valid for oauth2. - Scopes scopes = 8; - // Custom properties that start with "x-" such as "x-foo" used to describe - // extra functionality that is not covered by the standard OpenAPI Specification. - // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ - map extensions = 9; -} - -// `SecurityRequirement` is a representation of OpenAPI v2 specification's -// Security Requirement object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityRequirementObject -// -// Lists the required security schemes to execute this operation. The object can -// have multiple security schemes declared in it which are all required (that -// is, there is a logical AND between the schemes). -// -// The name used for each property MUST correspond to a security scheme -// declared in the Security Definitions. -message SecurityRequirement { - // If the security scheme is of type "oauth2", then the value is a list of - // scope names required for the execution. For other security scheme types, - // the array MUST be empty. - message SecurityRequirementValue { - repeated string scope = 1; - } - // Each name must correspond to a security scheme which is declared in - // the Security Definitions. If the security scheme is of type "oauth2", - // then the value is a list of scope names required for the execution. - // For other security scheme types, the array MUST be empty. - map security_requirement = 1; -} - -// `Scopes` is a representation of OpenAPI v2 specification's Scopes object. -// -// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#scopesObject -// -// Lists the available scopes for an OAuth2 security scheme. -message Scopes { - // Maps between a name of a scope to a short description of it (as the value - // of the property). - map scope = 1; -} diff --git a/services.proto b/services.proto deleted file mode 100644 index 22eba7d..0000000 --- a/services.proto +++ /dev/null @@ -1,268 +0,0 @@ -syntax = "proto3"; - -import "admin_account.proto"; -import "admin_apikey.proto"; -import "admin.proto"; -import "admin_job.proto"; -import "admin_metric.proto"; -import "admin_security.proto"; -import "admin_user.proto"; - -import "chat.proto"; -import "common.proto"; -import "indexing.proto"; -import "serving.proto"; -import "status.proto"; -import "list_documents.proto"; -import "google/api/annotations.proto"; - -option java_package = "com.vectara"; -option java_outer_classname = "ServiceProtos"; - -option go_package = "vectara.com/public/proto/services"; - -package com.vectara; - -// Request to index a document. -message IndexDocumentRequest { - // The Customer ID to issue the request for. - int64 customer_id = 1; - // The Corpus ID to index the document into. - int64 corpus_id = 2; - // The Document to index. - com.vectara.indexing.Document document = 3; -} - -message IndexDocumentResponse { - // If ALREADY_EXISTS, it means the document was already indexed, and no new quota was consumed. - Status status = 1; - - // The storage quota needed for the document indexed in the request. - // If "status" is ALREADY_EXISTS, it means that the document was already in the index prior to - // this request. In such cases, quota is not consumed again and the value in this field - // represents the quota consumed when the document was indexed the first time. - StorageQuota quota_consumed = 2; -} - -service IndexService { - rpc Index(IndexDocumentRequest) returns (IndexDocumentResponse) { - option (google.api.http) = { - post: "/v1/index" - body: "*" - }; - } - - rpc Delete(DeleteDocumentRequest) returns (DeleteDocumentResponse) { - option (google.api.http) = { - post: "/v1/delete-doc" - body: "*" - }; - } -} - -service QueryService { - // A standard single-request, single-response endpoint designed for high performance. - rpc Query(com.vectara.serving.BatchQueryRequest) - returns (com.vectara.serving.BatchQueryResponse) { - option (google.api.http) = { - post: "/v1/query" - body: "*" - }; - } - - // A streamed response interface when lower latency is absolutely critical. - rpc StreamQuery(com.vectara.serving.BatchQueryRequest) - returns (stream com.vectara.serving.QueryResponsePart) { - } -} - - -service AdminService { - rpc CreateCorpus(com.vectara.admin.CreateCorpusRequest) returns (com.vectara.admin.CreateCorpusResponse){ - option (google.api.http) = { - post: "/v1/create-corpus" - body: "*" - }; - } - - rpc DeleteCorpus(com.vectara.admin.DeleteCorpusRequest) returns (com.vectara.admin.DeleteCorpusResponse){ - option (google.api.http) = { - post: "/v1/delete-corpus" - body: "*" - }; - } - - rpc ResetCorpus(com.vectara.admin.ResetCorpusRequest) returns (com.vectara.admin.ResetCorpusResponse){ - option (google.api.http) = { - post: "/v1/reset-corpus" - body: "*" - }; - } - - rpc ListCorpora(com.vectara.admin.ListCorporaRequest) - returns (com.vectara.admin.ListCorporaResponse) { - option (google.api.http) = { - post: "/v1/list-corpora" - body: "*" - }; - } - - rpc ListJobs(com.vectara.admin.ListJobsRequest) returns (com.vectara.admin.ListJobsResponse) { - option (google.api.http) = { - post: "/v1/list-jobs" - body: "*" - }; - } - - // Return information about corpora. - rpc ReadCorpus(com.vectara.admin.ReadCorpusRequest) - returns (com.vectara.admin.ReadCorpusResponse) { - option (google.api.http) = { - post: "/v1/read-corpus" - body: "*" - }; - } - - rpc ComputeCorpusSize(com.vectara.admin.ComputeCorpusSizeRequest) - returns (com.vectara.admin.ComputeCorpusSizeResponse) { - option (google.api.http) = { - post: "/v1/compute-corpus-size" - body: "*" - }; - } - - rpc ComputeAccountSize(com.vectara.admin.ComputeAccountSizeRequest) - returns (com.vectara.admin.ComputeAccountSizeResponse) { - option (google.api.http) = { - post: "/v1/compute-account-size" - body: "*" - }; - } - - rpc ListUsers(com.vectara.admin.ListUsersRequest) - returns (com.vectara.admin.ListUsersResponse) { - option (google.api.http) = { - post: "/v1/list-users" - body: "*" - }; - } - - rpc ManageUser(com.vectara.admin.ManageUserRequest) - returns (com.vectara.admin.ManageUserResponse) { - option (google.api.http) = { - post: "/v1/manage-user" - body: "*" - }; - } - - rpc UpdateCorpusEnablement(com.vectara.admin.UpdateCorpusEnablementRequest) returns (com.vectara.admin.UpdateCorpusEnablementResponse) { - option (google.api.http) = { - post: "/v1/update-corpus-enablement" - body: "*" - }; - } - - rpc ReplaceCorpusFilterAttrs(com.vectara.admin.ReplaceCorpusFilterAttrsRequest) returns (com.vectara.admin.ReplaceCorpusFilterAttrsResponse) { - option (google.api.http) = { - post: "/v1/replace-corpus-filter-attrs" - body: "*" - }; - } - - // Get metric usage of either sliding windows or between two timestamps - rpc GetUsageMetrics(com.vectara.admin.UsageMetricsRequest) returns (com.vectara.admin.UsageMetricsResponse){ - option (google.api.http) = { - post: "/v1/get-usage-metrics" - body: "*" - }; - } - - rpc CreateApiKey(com.vectara.admin.CreateApiKeyRequest) returns (com.vectara.admin.CreateApiKeyResponse) { - option (google.api.http) = { - post: "/v1/create-api-key" - body: "*" - }; - } - - rpc EnableApiKey(com.vectara.admin.EnableApiKeyRequest) returns (com.vectara.admin.EnableApiKeyResponse) { - option (google.api.http) = { - post: "/v1/enable-api-key" - body: "*" - }; - } - - rpc DeleteApiKey(com.vectara.admin.DeleteApiKeyRequest) returns (com.vectara.admin.DeleteApiKeyResponse) { - option (google.api.http) = { - post: "/v1/delete-api-key" - body: "*" - }; - } - - rpc ListApiKeys(com.vectara.admin.ListApiKeysRequest) returns (com.vectara.admin.ListApiKeysResponse) { - option (google.api.http) = { - post: "/v1/list-api-keys" - body: "*" - }; - } - -} - -// Service for working with documents. -service DocumentService { - // Returns a list of documents for customer/corpus with pagination and optional document metadata filtering. - rpc ListDocuments(com.vectara.lists.ListDocumentsRequest) returns (com.vectara.lists.ListDocumentsResponse) { - option (google.api.http) = { - post: "/v1/list-documents" - body: "*" - }; - } -} - -// Service for working with chat conversations. -service ChatService { - - // List all conversations. - rpc ListConversations(com.vectara.chat.ListConversationsRequest) - returns (com.vectara.chat.ListConversationsResponse) { - option (google.api.http) = { - post: "/v1/list-conversations" - body: "*" - }; - } - - // Read all turns within the passed conversations. - rpc ReadConversations(com.vectara.chat.ReadConversationsRequest) - returns (com.vectara.chat.ReadConversationsResponse) { - option (google.api.http) = { - post: "/v1/read-conversations" - body: "*" - }; - } - - // Delete conversations (including all turns in it). - rpc DeleteConversations(com.vectara.chat.DeleteConversationsRequest) - returns (com.vectara.chat.DeleteConversationsResponse) { - option (google.api.http) = { - post: "/v1/delete-conversations" - body: "*" - }; - } - - // Delete turns. - rpc DeleteTurns(com.vectara.chat.DeleteTurnsRequest) - returns (com.vectara.chat.DeleteTurnsResponse) { - option (google.api.http) = { - post: "/v1/delete-turns" - body: "*" - }; - } - - // Disable turn. The turn will no longer be used in conversations. - rpc DisableTurns(com.vectara.chat.DisableTurnsRequest) - returns (com.vectara.chat.DisableTurnsResponse) { - option (google.api.http) = { - post: "/v1/disable-turns" - body: "*" - }; - } -} diff --git a/serving.proto b/serving.proto deleted file mode 100644 index a389b3b..0000000 --- a/serving.proto +++ /dev/null @@ -1,338 +0,0 @@ -syntax = "proto3"; - -import "protoc-gen-openapiv2/options/annotations.proto"; - -import "status.proto"; - -option java_package = "com.vectara.serving"; -option java_outer_classname = "ServingProtos"; - -option go_package = "vectara.com/public/proto/serving"; - -package com.vectara.serving; - -// Defined the weight of a custom dimension at query time. -message CustomDimension { - string name = 1; - double weight = 2; -} - -// Configuration for a linear interpolation. -message LinearInterpolation { - // Controls the weight given to lexical matches. The final score, S, is then: - // S = (lambda) * (lexical score) + (1 - lambda) * (dense score) - float lambda = 1; -} - -message CorpusKey { - // The Customer ID. - uint32 customer_id = 5; - // The Corpus ID. - uint32 corpus_id = 10; - - // Semantics controls the interpretation of the query string by the - // server, and can be used to override the default semantics assigned - // in the corpus definition. - enum Semantics { - // Use corpus-assigned semantics. This is the most common setting. - DEFAULT = 0; - // Use query semantics. This is also common. - QUERY = 1; - // Use response semantics. Usage of this is rare. - RESPONSE = 2; - } - Semantics semantics = 15; - - // Weights on custom dimensions for the corpus. - repeated CustomDimension dim = 20; - - string metadata_filter = 25; - - LinearInterpolation lexical_interpolation_config = 30; -} - - -message SummarizationRequest { - // The name of the summarizer+prompt combination to use for summarization. - string summarizer_prompt_name = 3; - // Maximum number of results to summarize. - uint32 max_summarized_results = 15; - // ISO 639-1 or ISO 639-3 language code for the response, or "auto" to indicate that - // the auto-detected language of the incoming query should be used. - string response_lang = 20; - - - // Vectara manages both system and user roles and prompts for the generative - // LLM out of the box by default. However, Scale customers can override the - // prompt_text via this variable. The prompt_text is in the form of an - // Apache Velocity template. For more details on how to configure the - // prompt_text, see the long-form documentation at - // https://docs.vectara.com/docs/prompts/vectara-prompt-engine - // See https://vectara.com/pricing/ for more details on becoming a Scale customer. - string prompt_text = 200; - - // Debugging the generative prompt is currently a Scale-only feature. - // See https://vectara.com/pricing/ for more details on becoming a Scale customer. - bool debug = 205; - - // Controls the length of the summary. - // This is a rough estimate and not a hard limit: the end summary can be longer or shorter - // than this value. This is currently a Scale-only feature. - // See https://vectara.com/pricing/ for more details on becoming a Scale customer. - uint32 response_chars = 210; - - // Parameters for the summarizer model. These are currently a Scale-only feature. - // See https://vectara.com/pricing/ for more details on becoming a Scale customer. - // WARNING: This is an experimental feature, and breakable at any point with virtually no - // notice. It is meant for experimentation to converge on optimal parameters that can then - // be set in the prompt definitions. - message ModelParams { - optional uint32 max_tokens = 5; - // The sampling temperature to use. Higher values make the summary more random, while lower - // values make it more focused and deterministic. - optional float temperature = 10; - // Higher values penalize new tokens based on their existing frequency in the text so far, - // decreasing the model's likelihood to repeat the same line verbatim. - optional float frequency_penalty = 15; - // Higher values penalize new tokens based on whether they appear in the text so far, - // increasing the model's likelihood to talk about new topics. - optional float presence_penalty = 20; - } - ModelParams model_params = 215; - - - // If present, the query will be treated as a chat query. - // When using chat, only one summarization request is allowed per query. - ChatRequest chat = 225; -} - - -message QueryRequest { - // The query text to use from the end user. - string query = 5; - - - // The start position in the result set - uint32 start = 15; - // The number of results to return. - uint32 num_results = 20; - message ContextConfig { - // chars_before is used for showing the end user the characters leading up - // to the result snippet. This can help the end-user understand the - // context of that result. Ignored if sentences_before is set. - int32 chars_before = 5 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "30" - }]; - - // chars_after is used for showing the end user the characters after the - // result snippet. This can help the end-user understand the context of - // that result. Ignored if sentences_before is set. - int32 chars_after = 10 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "30" - }]; - - // sentences_before is used for showing the end user the sentences leading - // up to the result snippet. This can help the end-user understand the - // context of that result. - int32 sentences_before = 15 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "3" - }]; - - // sentences_after is used for showing the end user the sentences leading - // up to the result snippet. This can help the end-user understand the - // context of that result. - int32 sentences_after = 20 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "3" - }]; - - // The tag that wraps the snippet at the start. Often this is used to - // provide a start HTML/XML tag or some other delimiter you can use in an - // application to understand where to provide highlighting in your UI and - // understand where the context before ends and the snippet begins. - string start_tag = 25 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "\"\"" - }]; - - // The tag that wraps the snippet at the end. Often this is used to provide - // a start HTML/XML tag or some other delimiter you can use in an - // application to understand where to provide highlighting in your UI and - // understand where the snippet ends and the context after begins. - string end_tag = 30 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - example: "\"\"" - }]; - } - ContextConfig context_config = 22; - - // The query is run on all these corpora, and the results are - // merged together in the response, ranked by score. - repeated CorpusKey corpus_key = 25; - - // Configuration options to apply to the reranking. - message RerankingConfig { - // Which reranking model to use if reranking. Currently, the only IDs - // available are: - // - 272725717, HuggingFace Open Source x-attentional reranker - // - 272725718, Maximum Marginal Relevance Reranker - uint32 reranker_id = 5; - - // Reranker-specific parameters. The numbering starts from 100, and moves - // upwards in increments of 5. - optional MMRConfig mmr_config = 100; - } - RerankingConfig reranking_config = 30; - - // Optionally, one or more requests to summarize the results. - repeated SummarizationRequest summary = 35; - -} - - -// The chat request. -message ChatRequest { - // Whether to store the query/answer pair. - bool store = 5; - - // The conversation id of the chat. - // If empty, a new conversation will be started. - string conversation_id = 15; -} - -message Chat { - // The conversation id of the chat. - string conversation_id = 5; - // The id assigned to this query and answer. - string turn_id = 10; - - - // Any errors when processing the chat request. - Status status = 1000; -} - -message Attribute { - string name = 5; - string value = 10; -} - -message Summary { - // The summary text. - string text = 10; - - // ISO 639 language code of the summary. If the requested language was set to "AUTO", the - // summary language is the same as the auto-detected language of the query. - string lang = 15; - - - // Populated if chat was requested in the SummaryRequest. - Chat chat = 205; - - // Statuses are marked “repeated” for consistency and flexibility. A failed - // summary should bubble up into the status code of the entire ResponseSet. - repeated Status status = 1000; - // Populated for streaming requests only. - int32 future_id = 1010; -} - -message Response { - string text = 5; - // The score used for ranking results. The higher the score, the better the match. - float score = 10; - repeated Attribute metadata = 20; - // Use this ID to find the document in the ResponseSet. - uint32 document_index = 25; - CorpusKey corpus_key = 30; - -} - -message ResponseSet { - repeated Response response = 5; - // Potentially multiple warnings. - repeated Status status = 10; - - message Document { - string id = 5; - repeated Attribute metadata = 10; - } - repeated Document document = 15; - - // A summary. If using synchronous APIs for querying, the summary will be - // included directly in this response. However, if using the streaming APIs - // for query, the summary messages only set the future_id field. Later, as - // summary results are computed and returned over the stream, the future_id - // within the summary can be used for correlation. - repeated Summary summary = 25; - - // Populated for streaming requests only. - int32 future_id = 1010; -} - -message BatchQueryRequest { - repeated QueryRequest query = 5; -} - -message BatchQueryResponse { - // The response sets for queries within the batch. If using synchronous APIs - // for querying, the response set will be included directly in the response. - // However, if using the streaming APIs for query, the response set messages - // only set the future_id field. Later, as response sets are computed and - // returned over the stream, the future_id within the summary can be used for - // correlation. - repeated ResponseSet response_set = 5; - - repeated Status status = 1000; - PerformanceMetrics metrics = 1005; -} - -// This message contains individual partial results that are returned -// asynchronously by the streaming interface. -message QueryResponsePart { - // The top-level query response. This is sent exactly once over the stream. - BatchQueryResponse batch_query_response = 5; - - // A response set. Use the future_id for correlation. One of these is sent - // for every query in the batch. - ResponseSet response_set = 10; - - // A summary set. Use the future_id for correlation. One of these is sent - // for every summary that's requested. - Summary summary = 15; - - // A status code at the level of a BatchQueryResponse. - repeated Status status = 1000; -} - -// Basic performance metrics that can be attached to a server response. -message PerformanceMetrics { - // How long it took to encode the query. - uint32 query_encode_ms = 5; - // How long it took to retrieve relevant results. - uint32 retrieval_ms = 10; - // How long it took to retrieve user data. - uint32 userdata_retrieval_ms = 15; - // How long it took to rerank the results. - uint32 rerank_ms = 20; -} - -//Configuration for the maximum marginal relevance (MMR) reranker. -message MMRConfig { - // Intuitively, this bias controls how much the reranker should favor - // diversity over relevance. A bias of 1 means that relevance is not - // considered at all, while a bias of 0 means that diversity is not - // considered. A score of 0.8 means that diversity counts for 80% of the - // score, and relevance for 20%. - // - // The bias is defined as (1 - lambda), where lambda is defined as in - // the original paper, "The Use of MMR, Diversity-Based Reranking for - // Reordering Documents and Producing Summaries" by Carbonell and Goldstein, - // 1998. - float diversity_bias = 5 [ - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { - description: "The diversity bias. Higher values indicate more diversity." - example: "0.3" - }]; -} diff --git a/status.proto b/status.proto deleted file mode 100644 index aa81c84..0000000 --- a/status.proto +++ /dev/null @@ -1,203 +0,0 @@ -syntax = "proto3"; - -import "google/protobuf/any.proto"; - -option java_package = "com.vectara"; -option java_outer_classname = "StatusProtos"; - -option go_package = "vectara.com/public/proto/status"; - -package com.vectara; - -message Status { - StatusCode code = 1; - string status_detail = 2; - -} - -enum StatusCode { // Reasons for an error - OK = 0; - FAILURE = 1; - - // gRPC Codes ---------------------------------------------------------------- - - UNKNOWN = 2; - INVALID_ARGUMENT = 3; - DEADLINE_EXCEEDED = 4; - ALREADY_EXISTS = 6; - PERMISSION_DENIED = 7; - RESOURCE_EXHAUSTED = 8; - FAILED_PRECONDITION = 9; - ABORTED = 10; - OUT_OF_RANGE = 11; - UNIMPLEMENTED = 12; - INTERNAL = 13; - UNAVAILABLE = 14; - DATA_LOSS = 15; - UNAUTHENTICATED = 16; - - // HTTP Codes ---------------------------------------------------------------- - - BAD_REQUEST = 400; - UNAUTHORIZED = 401; - FORBIDDEN = 403; - NOT_FOUND = 404; - METHOD_NOT_ALLOWED = 405; - CONFLICT = 409; - UNSUPPORTED_MEDIA_TYPE = 415; - TOO_MANY_REQUESTS = 429; - INTERNAL_SERVER_ERROR = 500; - NOT_IMPLEMENTED = 501; - SERVICE_UNAVAILABLE = 503; - INSUFFICIENT_STORAGE = 507; - - UNPARSEABLE_RESPONSE = 1000; - - // General Failures----------------------------------------------------------- - - DISABLED_CUSTOMER = 1100; - INVALID_CUSTOMER_ID = 1101; - DISABLED_CORPUS = 1102; - INVALID_CORPUS_ID = 1103; - DISABLED_API_KEY = 1104; - EXPIRED_API_KEY = 1105; - INVALID_API_KEY = 1106; - // The customer managed key is inaccessible. This can be for various reasons, e.g., - // the key does not exist, or the platform does not have permissions to use it. - CMK_INACCESSIBLE = 1107; - - // Serving Query ------------------------------------------------------------- - - QRY__DISABLED_CORPUS = 1500; - QRY__DOCUMENT_DB_FAILURE = 1505; - QRY__ENCODER_FAILURE = 1510; - QRY__INTERRUPTED = 1515; - QRY__INVALID_CORPUS = 1520; - QRY__INVALID_START = 1525; - QRY__INVALID_NUM_RESULTS = 1530; - QRY__INVALID_CONTEXT = 1531; - QRY__MISSING_QUERY = 1535; - QRY__MISSING_CORPUS = 1540; - QRY__TIMEOUT = 1545; - QRY__TOO_MANY_CORPORA = 1550; - QRY__TOO_MANY_QUERIES = 1555; - QRY__VECTOR_INDEX_FAILURE = 1560; - QRY__INVALID_DIMENSION = 1565; - QRY__INVALID_CLIENTKEY = 1570; - QRY__DECRYPTION_FAILURE = 1575; - QRY__INVALID_RERANKER = 1580; - QRY__PARTIAL_RERANK = 1585; - QRY__RERANK_FAILURE = 1590; - QRY__TOO_MANY_RESULT_ROWS = 1595; - QRY__PARTIAL_RETRIEVAL = 1600; - - // The summarization prompt is invalid. - QRY__SMRY__INVALID_SUMMARIZER_PROMPT = 1660; - // The requested language for summarization is invalid. It must be a - // valid ISO 639-3 code. - QRY__SMRY__INVALID_SUMMARY_LANG = 1665; - // The requested language for summarization is valid, but not supported - // by the Vectara platform. - QRY__SMRY__UNSUPPORTED_SUMMARY_LANG = 1670; - // Fewer than the requested number of results were summarized. - QRY__SMRY__PARTIAL_SUMMARY = 1675; - // There were no query results to generate the summary. - QRY__SMRY__NO_QUERY_RESULTS = 1680; - - // Generative failures while serving queries. - QRY__GEN__NO_QUERY_RESULTS = 1650 [deprecated = true]; - QRY__GEN__UNPARSEABLE_MODEL_PARAMS = 1651 [deprecated = true]; - - // Connection specs ---------------------------------------------------------- - - CX_SPECS__INVALID_JSON = 2000; - CX_SPECS__UNREGISTERED_TYPE = 2005; - CX_SPECS__MISSING_SPEC = 2010; - CX_SPECS__MISSING_TYPE = 2011; - CX_SPECS__UNPARSEABLE_SPEC = 2015; - - // Admin Service ------------------------------------------------------------- - - ADM__INVALID_CUSTOMER_ID = 2500; - ADM__INVALID_CORPUS_ID = 2501; - ADM__INVALID_ENCODER_ID = 2502; - ADM__INVALID_ROLE_ID = 2503; - ADM__ROLE_ALREADY_EXISTS = 2504; - ADM__ONLY_ONE_OWNER_SUPPORTED = 2505; - ADM__INVALID_PERMISSION = 2506; - ADM__ROLECREATION_FAILURE = 2507; - ADM__USER_EMAIL_NOT_AVAIALBLE = 2508; - ADM__USERNAME_NOT_AVAILABLE = 2509; - - ADM__SIGNUP_MISSING_NAME = 2510; - ADM__SIGNUP_MISSING_ORG = 2511; - ADM__SIGNUP_MISSING_EMAIL = 2512; - ADM__SIGNUP_MISSING_PAYMENT = 2513; - ADM__SIGNUP_MISSING_PLAN = 2514; - ADM__SIGNUP_MISSING_PASSWORD = 2515; - - ADM__SIGNUP_INVALID_NAME = 2516; - ADM__SIGNUP_INVALID_ORG = 2517; - ADM__SIGNUP_INVALID_EMAIL = 2518; - ADM__SIGNUP_INVALID_PAYMENT = 2519; - ADM__SIGNUP_INVALID_PLAN = 2520; - ADM__SIGNUP_INVALID_PASSWORD = 2521; - ADM__SIGNUP_INVALID_ACCOUNT_ALIAS = 2530; - ADM__SIGNUP_INVALID_EMAIL_VALIDATION_CODE = 2531; - ADM__SIGNUP_MISSING_COUNTRY_CODE = 2532; - ADM__SIGNUP_ROOT_EMAIL_NOT_AVAILABLE = 2533; - - ADM__CUST_MARK_DELETE_FAILED = 2522; - ADM__CUST_FAISS_DEALLOC_FAILED = 2523; - ADM__CUST_ALREADY_ACTIVE = 2534; - ADM__CUST_REACTIVATE_FAILED = 2535; - ADM__CUST_ENABLEMENT_FAILED = 2536; - - ADM__CORPUS_LIMIT_REACHED = 2524; - - ADM__STRIPE_CARD_DECLINED = 2525; - ADM__STRIPE_PROCESSING_ERROR = 2526; - - ADM__EMAIL_VALIDATION_REQUEST_NOT_FOUND = 2540; - ADM__EMAIL_NOT_VALIDATED = 2541; - - ADM__CHANGE_PLAN__NO_CURRENT_PLAN = 2550; - ADM__CHANGE_PLAN__REQUIRES_MANUAL_CHANGE = 2551; - ADM__CHANGE_PLAN__INVALID_PLAN_ID = 2552; - ADM__CHANGE_PLAN__NO_PAYMENT_SOURCE = 2553; - ADM__CHANGE_PLAN__INVALID_EFFECTIVE_DATE = 2554; - ADM__CHANGE_PLAN__CONFLICTING_CHANGE = 2555; - - // Schema Services ----------------------------------------------------------- - - SCM__MISCONFIGURED_CONNECTION = 3000; - - // StatDB Errors - STATS_DB_READ_FAILURE = 3550; - - // Vector Database ----------------------------------------------------------- - - VDB__TEXT_READ_FAILURE = 4000; - - // Index rebuild codes ------------------------------------------------------ - REBUILD__LOW_RECALL = 4500; - REBUILD__INDEX_UPLOAD_FAILURE = 4505; - REBUILD__UPDATE_JOURNAL_FAILURE = 4510; - REBUILD__UPDATE_FAISSPARAMS_FAILURE = 4515; - REBUILD__NO_DATA = 4520; - REBUILD__EVALUATION = 4525; - - // Indexing ------------------------------------------------------------------ - - IDX__TRANSIENT_PARTIAL_DELETION_FAILURE = 5000; - IDX__PERMANENT_PARTIAL_DELETION_FAILURE = 5001; - - // Calibration --------------------------------------------------------------- - - CALB__INVALID_JSON = 5500; - CALB__INVALID_SPEC = 5501; - CALB__UNREGISTERED_TYPE = 5505; - CALB__MISSING_SPEC = 5510; - CALB__MISSING_TYPE = 5511; - CALB__UNPARSABLE_SPEC = 5515; -} From 4a8c57beaab65ecc5920e06661e66d814733f797 Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Wed, 1 May 2024 14:31:20 +0000 Subject: [PATCH 2/8] Auto-generated. Updating Vectara public protos. (e20273e10ba98df4fb29251ea09ca6f91820f5a4). --- admin.proto | 286 +++++++ admin_account.proto | 33 + admin_apikey.proto | 148 ++++ admin_job.proto | 85 +++ admin_metric.proto | 84 ++ admin_security.proto | 25 + admin_user.proto | 125 +++ attribute.proto | 16 + chat.proto | 106 +++ common.proto | 98 +++ core_services.proto | 52 ++ currency.proto | 204 +++++ custom_dim.proto | 16 + indexing.proto | 58 ++ indexing_core.proto | 45 ++ list_documents.proto | 49 ++ .../options/annotations.proto | 44 ++ protoc-gen-openapiv2/options/openapiv2.proto | 720 ++++++++++++++++++ services.proto | 287 +++++++ serving.proto | 400 ++++++++++ status.proto | 304 ++++++++ 21 files changed, 3185 insertions(+) create mode 100755 admin.proto create mode 100755 admin_account.proto create mode 100755 admin_apikey.proto create mode 100755 admin_job.proto create mode 100755 admin_metric.proto create mode 100755 admin_security.proto create mode 100755 admin_user.proto create mode 100755 attribute.proto create mode 100755 chat.proto create mode 100755 common.proto create mode 100755 core_services.proto create mode 100755 currency.proto create mode 100755 custom_dim.proto create mode 100755 indexing.proto create mode 100755 indexing_core.proto create mode 100755 list_documents.proto create mode 100644 protoc-gen-openapiv2/options/annotations.proto create mode 100644 protoc-gen-openapiv2/options/openapiv2.proto create mode 100755 services.proto create mode 100755 serving.proto create mode 100755 status.proto diff --git a/admin.proto b/admin.proto new file mode 100755 index 0000000..987c6f7 --- /dev/null +++ b/admin.proto @@ -0,0 +1,286 @@ +syntax = "proto3"; + +import "protoc-gen-openapiv2/options/annotations.proto"; + +import "admin_apikey.proto"; +import "admin_metric.proto"; +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminProtos"; + +package com.vectara.admin; + +/****************************************************************************** + Corpus Management (add, remove corpora, star a corpus) + ******************************************************************************/ + +message Corpus { + // The Corpus ID. + // This value is ignored during Corpus creation. + uint32 id = 1; + // The name of the corpus. + string name = 2; + // A description for the corpus. + string description = 3; + // The time at which the corpus was provisioned. + // This value is ignored during Corpus creation. + int64 dt_provision = 4; + // Whether the corpus is enabled for use or not. + // This value is ignored during Corpus creation. + bool enabled = 5; + + + bool swap_qenc = 6; + // The default query encoder is designed for normal question-answering types + // of queries when the text contains the answer. Swapping the index encoder + // is generally rare, but can be used to help directly match questions to + // questions. This can be useful if you have a FAQ dataset and you want to + // directly match the user question to the question in the FAQ. + bool swap_ienc = 7; + // When a corpus is "textless", Vectara does not store the original text. + // Instead, Vectara converts the text to vectors and only retains metadata. + bool textless = 8; + // Encryption is on by default and cannot be turned off. + bool encrypted = 9; + + // This is an advanced setting for changing the underlying model type. The + // default value is "1", which is Vectara's high-performing global model. + // Underlying models may be swapped for some paying customers by contacting + // our support team. + uint64 encoder_id = 10; + // An optional maximum size of the metadata that each document can contain. + uint32 metadata_max_bytes = 11; + + + repeated Dimension custom_dimensions = 13; + repeated FilterAttribute filter_attributes = 14; +} + +// A custom dimension is additional numeric metadata that you want to affect +// Vectara's scoring. For example, these could be "number of stars" ratings, +// or other business metrics like a product's margins that you want to use +// to boost where a result is in the list. +message Dimension { + // The name of the custom dimension. The maximum length of the name is + // 8 characters. + string name = 1; + // A description for the custom dimension. + string description = 2; + + // The default weight to give this dimension when running queries. A value of + // 0.0, for example, gives it no weight at all. + double serving_default = 3; + // The default value to give to documents for this custom dimension. + double indexing_default = 4; +} + +// Defines metadata fields that can be used in predicate queries. +message FilterAttribute { + // Name of the field, as seen in metadata. + string name = 5; + // An optional description. + string description = 10; + // Whether the field is indexed for maximum query speed. + bool indexed = 15; + // The data type of the attribute. + FilterAttributeType type = 20; + // Whether the attribute lives at the document or part level. + FilterAttributeLevel level = 25; +} + +enum FilterAttributeType { + FILTER_ATTRIBUTE_TYPE__UNDEFINED = 0; + FILTER_ATTRIBUTE_TYPE__INTEGER = 5; + FILTER_ATTRIBUTE_TYPE__INTEGER_LIST = 10; + FILTER_ATTRIBUTE_TYPE__REAL = 15; + FILTER_ATTRIBUTE_TYPE__REAL_LIST = 20; + FILTER_ATTRIBUTE_TYPE__TEXT = 25; + FILTER_ATTRIBUTE_TYPE__TEXT_LIST = 30; + FILTER_ATTRIBUTE_TYPE__BOOLEAN = 35; +} + +enum FilterAttributeLevel { + FILTER_ATTRIBUTE_LEVEL__UNDEFINED = 0; + // Document-level attribute + FILTER_ATTRIBUTE_LEVEL__DOCUMENT = 5; + // Part-level attribute + FILTER_ATTRIBUTE_LEVEL__DOCUMENT_PART = 10; +} + +message CreateCorpusRequest { + Corpus corpus = 1; +} + +message CreateCorpusResponse { + // The Corpus ID that was created. + uint32 corpus_id = 1; + Status status = 2; +} + +message DeleteCorpusRequest { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { required: [ "customerId", "corpusId" ] } + example: "{ \"corpusId\": 1 }" + }; + + // The Customer ID that contains the corpus to be deleted. + uint32 customer_id = 1; + // The Corpus ID to be deleted. + uint32 corpus_id = 2 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + minimum: 1 + }]; +} + +message DeleteCorpusResponse { + Status status = 1; +} + +message ResetCorpusRequest { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { required: [ "customerId", "corpusId" ] } + example: "{ \"corpusId\": 1 }" + }; + + // The Customer ID that contains the corpus to be reset. + uint32 customer_id = 1; + // The Corpus ID to be reset. + uint32 corpus_id = 2 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + minimum: 1 + }]; +} + +message ResetCorpusResponse { + Status status = 1; +} + +message ListCorporaRequest { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { required: [ "numResults" ] } + example: "{ \"numResults\": 10, \"filter\": \"[Tt][Ee][Ss][Tt]\" }" + }; + + // A regex over the names and descriptions to match corpora against. + string filter = 2 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"[Tt][Ee][Ss][Tt]\"" + }]; + + // The maximum results to return. + uint32 num_results = 4 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + minimum: 1 + }]; + + // A key that is passed in to retrieve a specific page of results. + bytes page_key = 5; +} + +message ListCorporaResponse { + repeated Corpus corpus = 1; + + // A key that is passed into a subsequent result in order to + // retrieve the next page of results. + bytes page_key = 2; + Status status = 1000; +} + +message UpdateCorpusEnablementRequest { + // The corpus to enable or disable. + uint32 corpus_id = 1; + // If true, enable the corpus. Otherwise, disable it. + bool enable = 2; +} + +message UpdateCorpusEnablementResponse { + Status status = 1; +} + +message CorpusSize { + // The time at which the size was calculated. + int64 epoch_secs = 1; + + // The size of the corpus. + uint64 size = 2; +} + +message ReadCorpusRequest { + // Corpora IDs to read. + repeated uint32 corpus_id = 1; + + // Subset of information to read. + // Set to true to read basic information about the corpus such as id, name, + // description, enabled, etc. + bool read_basic_info = 1000; + // Set to true to read the size of the corpus. + bool read_size = 1001; + // Set to true to read the API keys associated with the corpus. + bool read_api_keys = 1003; + // Set to true to read the custom dimensions of the corpus. + bool read_custom_dimensions = 1004; + // Set to true to read the filter attributes of the corpus. + bool read_filter_attributes = 1005; +} + +message ReadCorpusResponse { + // A Corpus information object containing the requested information. + message CorpusInfo { + // Only requested fields are populated. + Corpus corpus = 1; + // Status of the corpus. + Status corpus_status = 1001; + // Size of the corpus. Only populated if read_size is true. + CorpusSize size = 2; + // Status of the size. + Status size_status = 1002; + // API keys associated with the corpus. Only populated if read_api_keys is true. + repeated ApiKey api_key = 4; + // Status of the API keys. + Status api_key_status = 1004; + // Custom dimensions of the corpus. Only populated if read_custom_dimensions is true. + repeated Dimension custom_dimension = 5; + // Status of the custom dimensions. + Status custom_dimension_status = 1005; + // Filter attributes of the corpus. Only populated if read_filter_attributes is true. + repeated FilterAttribute filter_attribute = 6; + // Status of the filter attributes. + Status filter_attribute_status = 1006; + } + + // Information about the requested corpora. + repeated CorpusInfo corpora = 1; +} + +message ComputeCorpusSizeRequest { + // The corpus for which to compute the size. + uint32 corpus_id = 1; +} + +message ComputeCorpusSizeResponse { + // The size of the corpus. + CorpusSize size = 1; + // The status of the size computation. + Status status = 2; +} + +message ReplaceCorpusFilterAttrsRequest { + // The corpus for which to update filters. + uint32 corpus_id = 1; + // The filters to set. The existing filters are replaced with this list of filters. + repeated FilterAttribute filter_attributes = 10; +} + +message ReplaceCorpusFilterAttrsResponse { + Status status = 1000; + + // If 'status' represents success, this contains the ID assigned to the job + // for updating the list of filters. This ID can be used to query the status + // of the job. + string job_id = 10; +} + + diff --git a/admin_account.proto b/admin_account.proto new file mode 100755 index 0000000..35801d4 --- /dev/null +++ b/admin_account.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminAccountProtos"; + +package com.vectara.admin; + +// Please note that this is an expensive operation, and the requests can be throttled +// by the platform. +message ComputeAccountSizeRequest { +} + +// A TextSize object represents the size of stored text. +message TextSize { + // Count of actual characters in the text that will be searched. + uint64 num_chars = 1; + // Count of metadata characters such as URL, author, date of creation etc. + uint64 num_metadata_chars = 2; +} + +message ComputeAccountSizeResponse { + // One TextSize represents one cluster. The account size is a sum of all the sizes. + // Generally, this will only have one value. + repeated TextSize size = 1; + // Status response of the operation. + Status status = 2; +} + + diff --git a/admin_apikey.proto b/admin_apikey.proto new file mode 100755 index 0000000..918273f --- /dev/null +++ b/admin_apikey.proto @@ -0,0 +1,148 @@ +syntax = "proto3"; + +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminApiKeyProtos"; + +package com.vectara.admin; + +/****************************************************************************** + API Keys + ******************************************************************************/ +// Types of ApiKey. +enum ApiKeyType { + API_KEY_TYPE__UNDEFINED = 0; + // ApiKey for serving. Only gives access to query data. + API_KEY_TYPE__SERVING = 1; + // ApiKey for serving and indexing. Gives access to both query and index data. + API_KEY_TYPE__SERVING_INDEXING = 2; + // ApiKey for personal access key. + API_KEY_TYPE__PERSONAL = 3; +} + +// Status of ApiKey. +enum ApiKeyStatus { + UNKNOWN = 0; + ENABLED = 1; + DISABLED = 2; + DELETED = 3; +} + +// Represents an ApiKey. +// An ApiKey provides anonymous access to common tasks such as index data, query data, etc. +message ApiKey { + string id = 1; + // Description of the ApiKey. + string description = 2; + // Type of the ApiKey. + ApiKeyType key_type = 3; + // Whether the ApiKey is enabled. + bool enabled = 4; + // Seconds sinch Epoch when the ApiKey becomes active. + optional int64 ts_start = 5; + // Seconds sinch Epoch when the ApiKey becomes inactive. + optional int64 ts_end = 6; + // Status of the ApiKey. + ApiKeyStatus status = 7; + // An id of the key that is not sensitive. + uint32 public_id = 8; +} + +// This request can be used to create one or more ApiKeys. +// Every ApiKey is bound to one or more corpora. +message CreateApiKeyRequest { + // ApiKey data to create the ApiKey bound to one or more corpora. + message ApiKeyCorpus { + // Description of the ApiKey. + string description = 1; + // Type of the ApiKey. + ApiKeyType api_key_type = 3; + // List of corpus ids to bind the ApiKey to. + repeated uint32 corpus_id = 2; + } + // List of ApiKey data to create. + repeated ApiKeyCorpus api_key_data = 1; +} + +// Response of the CreateApiKeyRequest. +message CreateApiKeyResponse { + // A valid key or Status of the ApiKey creation (in case of failure). + message ApiKeyOrStatus { + // A valid ApiKey. + string key_id = 1; + // Status of the ApiKey creation. + Status status = 2; + } + // List of ApiKeyOrStatus corresponding to the list of ApiKey data in request. + repeated ApiKeyOrStatus response = 1; +} + +message ListApiKeysRequest { + // Max results to return. + uint32 num_results = 1; + // A key that is passed to retrieve a specific page of results. + // Leave empty to retrieve first page. Subsequent page requests should + // use the page key returned in previous response, and all other + // fields are ignored. + bytes page_key = 2; + // [Optional] Get API keys of these types. + // Default: If not set, API_KEY_TYPE__SERVING and API_KEY_TYPE__SERVING_INDEXING are returned. + repeated ApiKeyType api_key_type = 3; + // If set, returns corpus name & id associated with api keys. + bool read_corpora_info = 1000; +} + +message ListApiKeysResponse { + // A message containing ApiKey and associated corpora. + message KeyAndCorpora{ + // ApiKey data. + ApiKey api_key = 1; + // Message containing corpus name and id. + message CorpusInfo { + // Corpus id. + uint32 id = 1; + // Corpus name. + string name = 2; + } + // List of corpora associated with the ApiKey. + repeated CorpusInfo corpus = 2; + } + + // List of ApiKey and associated corpora. + repeated KeyAndCorpora key_data = 1; + // A key that is passed into a subsequent result in order to + // retrieve the next page of results. + bytes page_key = 2; + // Status of the ListApiKeysRequest. + Status status = 1000; +} + +message DeleteApiKeyRequest { + // List of ApiKey ids to delete. + repeated string key_id = 1; +} + +message DeleteApiKeyResponse { + // Status of the DeleteApiKeyRequest. + repeated Status status = 1000; +} + +message EnableApiKeyRequest { + message ApiKeyEnablement { + // ApiKey id to enable or disable. + string key_id = 1; + // Enable or disable using this variable + bool enable = 2; + } + // List of ApiKey ids to enable or disable. + repeated ApiKeyEnablement key_enablement = 1; +} + +message EnableApiKeyResponse { + // List of Status such as OK, FAILED corresponding to the EnableApiKeyRequest. + repeated Status status = 1000; +} + diff --git a/admin_job.proto b/admin_job.proto new file mode 100755 index 0000000..ab96564 --- /dev/null +++ b/admin_job.proto @@ -0,0 +1,85 @@ +syntax = "proto3"; + +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminJobProtos"; + +package com.vectara.admin; + +// Type of jobs. +enum JobType { + JOB__UNKNOWN = 0; + JOB__CORPUS_REBUILD_VECTOR_INDEX = 1; + JOB__CORPUS_REPLACE_FILTER_ATTRS = 2; +} + +// The state of a job. +enum JobState { + JOB_STATE__UNKNOWN = 0; + JOB_STATE__QUEUED = 5; + JOB_STATE__STARTED = 10; + JOB_STATE__COMPLETED = 15; + JOB_STATE__FAILED = 20; + JOB_STATE__TRANSIENT_FAILURE_RETRY_IMMINENT = 25; + JOB_STATE__ABORTED = 30; +} + +message ListJobsRequest { + // Optional filters. If specified, the filters are logically ANDed. + // + // [Optional] If specified, return the job for this id. + string job_id = 1; + // [Optional] If specified, return jobs for these corpora only. + repeated uint32 corpus_id = 2; + + // [Optional] Get jobs that were created since this epoch timestamp. + // Max allowed value is 180 days ago. Default is 180 days. + int64 epoch_secs = 3; + + // [Optional] Get jobs with these states. If not specified, all job + // states are fetched. + // Default: If not set, JOB_STATE__QUEUED and JOB_STATE__STARTED are returned. + repeated JobState state = 4; + + // Maximum results to return. Max allowed value is 100. + uint32 num_results = 25; + // A key that is passed in to retrieve a specific page of results. + // Leave empty to retrieve first page. Subsequent page request should + // use the page key returned in previous response, and all other + // fields are ignored. + bytes page_key = 30; +} + +// Represents a job in the system. +// A job is typically a long running unit of work for achieving a particular outcome. +// Example job: replace filter attributes of a corpus. +message Job { + string id = 1; + JobType type = 2; + // Set if the job belongs to a corpus. + repeated uint32 corpus_id = 3; + JobState state = 4; + + // Epoch (secs) when the job was created. + int64 ts_create = 10; + // Epoch (secs) when the job was started. Not set if the job + // hasn't started yet. + int64 ts_start = 15; + // Epoch (secs) when the job completed. Not set if the job + // hasn't completed yet. + int64 ts_complete = 16; + // Handle of the user that created this job. + string user_handle = 17; +} + +message ListJobsResponse { + repeated Status status = 1000; + repeated Job job = 10; + + // A key that is passed into a subsequent result in order to + // retrieve the next page of results. + bytes page_key = 500; +} diff --git a/admin_metric.proto b/admin_metric.proto new file mode 100755 index 0000000..3c0381e --- /dev/null +++ b/admin_metric.proto @@ -0,0 +1,84 @@ +syntax = "proto3"; + +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminMetricProtos"; + +package com.vectara.admin; + +/****************************************************************************** + Metrics (get request rate etc.) + ******************************************************************************/ + +// This window is used to specify a time range for metrics +message AbsoluteWindow { + int64 start_epoch_secs = 1; + int64 end_epoch_secs = 2; +} + +// The request type for usage metrics +message UsageMetricsRequest { + // The type of metric to get + enum MetricType { + METRICTYPE__NONE = 0; + METRICTYPE__INDEXING = 1; + METRICTYPE__SERVING = 2; + } + + // The corpus for which the metric is requested. + uint32 corpus_id = 1; + // The time period for which the metric is requested. + AbsoluteWindow window = 2; + // The type of metric to get. + MetricType type = 3; + // The response stats will be aggregated by this interval. Minimum aggregation interval is 1 minute. + // Supported granularity units for aggregation are days, hours and minutes. + // For example, If 2.5 days (in seconds) are passed, results will be aggregated by 2 days. + // Similarly, if 7.6 hours (in seconds) are passed, results will be aggregated by 7 hours. + int64 aggregation_interval_secs = 4; +} + +// Indexing data +message IndexingMetric { + // The number of documents indexed + uint64 doc_count = 1; + // The number of document parts indexed + uint64 doc_part_count = 2; + // The number of bytes indexed. + // In case of Upload API, this is the actual bytes extracted from the document and not + // the size of the document. + // In case of Index API, this is the combined size of text in all the sections of the document. + uint64 doc_part_bytes = 3; + // The start time for this metric + int64 start_epoch_secs = 4; +} + +// Serving/querying data +message ServingMetric { + // The number of rows read + uint64 rows_read = 1; + // The number of queries + uint64 query_count = 2; + // The start time for this metric + int64 start_epoch_secs = 3; +} + +message UsageMetricsResponse { + // The response for a single interval + message IntervalValue { + // Interval containing value for either Indexing or Serving + oneof value { + IndexingMetric indexing_value = 1; + ServingMetric serving_value = 2; + } + } + + // List of IntervalValue containing values for either Indexing or Serving. These are + // aggregated by the interval specified in the request. + repeated IntervalValue values = 1; + // The status response of the request + Status status = 2; +} diff --git a/admin_security.proto b/admin_security.proto new file mode 100755 index 0000000..95f7a58 --- /dev/null +++ b/admin_security.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminSecurityProtos"; + +package com.vectara.admin; + + +enum CustomerRole { + CustomerRole_None = 0; + // The owner is the root user of the account. Only an owner can shut + // down the account completely. + CustomerRole_Owner = 1; + // An account administrator can do things like create corpora, add or remove users etc. + CustomerRole_Admin = 2; + // View and modify billing-related information for the account. + CustomerRole_Billing_Admin = 3; + // View and modify corpus-related information for the account. + CustomerRole_Corpus_Admin = 4; +} + diff --git a/admin_user.proto b/admin_user.proto new file mode 100755 index 0000000..2901aaf --- /dev/null +++ b/admin_user.proto @@ -0,0 +1,125 @@ +syntax = "proto3"; + +import "admin_security.proto"; +import "status.proto"; + +option go_package = "vectara.com/public/proto/admin"; + +option java_package = "com.vectara.admin"; +option java_outer_classname = "AdminUserProtos"; + +package com.vectara.admin; + +// Represents a user in an account. +// A user is a person or an application that has access to the system. +message User { + // Unique ID for the user. This is required for deleting, enabling, disabling a user + // or to reset their password. This can be retrieved via ListUsers API or it is also + // returned as part of ManageUser API when a new user is created. + uint32 id = 1; + // Name of the user. This is required for creating a new user. + string handle = 3; + // Type of user + UserType type = 4; + // Comment about the user + string comment = 5; + // Seconds since epoch when the user was created. + int64 ts_create = 6; + // ID of the user who created this user. + uint32 id_create = 7; + // Email address associated with the user. This is required for creating a new user. + string email = 10; + // Status of the user such as ACTIVE, DISABLED etc. + UserStatus user_status = 11; + // List of customer level roles + repeated CustomerRole role = 12; +} + +enum UserType { + USER_TYPE__NONE = 0; + // A normal user + USER_TYPE__USER = 1; + // A user that is authenticated by an external identity provider such as Google etc. + USER_TYPE__FEDERATED_USER = 2; + // An application client. Please note that this doesn't work with ManageUser API. + // To create an App Client, use the ManageAppClient API. + USER_TYPE__APP_CLIENT = 3; +} + +enum UserStatus { + USER_STATUS__NONE = 0; + // User is active + USER_STATUS__ACTIVE = 1; + // User is disabled + USER_STATUS__DISABLED = 2; +} + +enum ListUsersType { + LIST_USERS_TYPE__NONE = 0; + // Only List users with customer account-level authorizations. + LIST_USERS_TYPE__CUSTOMER = 2; + // List All the users + LIST_USERS_TYPE__ALL = 3; +} + +message ListUsersRequest { + // Type of users that we want to retrieve + ListUsersType list_users_type = 3; + // A key that is passed to retrieve a specific page of results. + // Leave empty to retrieve first page. Subsequent page requests should + // use the page key returned in previous response, and all other + // fields are ignored. + bytes page_key = 4; + // Number of results to return. + uint32 num_results = 5; +} + +message ListUsersResponse { + // List of users + repeated User user = 1; + // A key that is passed into a subsequent result in order to + // retrieve the next page of results. + bytes page_key = 2; + // Status response of the request such as OK, FAILED etc. + Status status = 1000; +} + +enum UserActionType { + USER_ACTION_TYPE__NONE = 0; + // Add User + USER_ACTION_TYPE__ADD = 1; + // Delete User + USER_ACTION_TYPE__DELETE = 2; + // Disable User + USER_ACTION_TYPE__DISABLE = 3; + // Enable User + USER_ACTION_TYPE__ENABLE = 4; + // Reset User Password + USER_ACTION_TYPE__RESET_PASSWORD = 5; +} + +message ManageUserRequest { + // User and action to be performed on user + message UserAction { + // User object + User user = 1; + // Action to be performed on user + UserActionType user_action_type = 2; + } + // List of users and actions to be performed on them + repeated UserAction user_action = 1; +} + +message ManageUserResponse { + // List of users and their status + message UserResponse { + // User object + User user = 1; + // Status response of the request such as OK, FAILED etc. + Status status = 1000; + } + // List of users alongwith relative status such as OK, FAILED etc. + repeated UserResponse response = 1; +} + + diff --git a/attribute.proto b/attribute.proto new file mode 100755 index 0000000..1d08396 --- /dev/null +++ b/attribute.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +option java_package = "com.vectara"; +option java_outer_classname = "AttributeProtos"; + +option go_package = "vectara.com/public/proto/common"; + +package com.vectara; + +// A key/value pair representing a document attribute (metadata item). +message Attribute { + // Name of the document metadata attribute. + string name = 5; + // Value of the document metadata attribute. + string value = 10; +} diff --git a/chat.proto b/chat.proto new file mode 100755 index 0000000..75473cc --- /dev/null +++ b/chat.proto @@ -0,0 +1,106 @@ +syntax = "proto3"; + +import "status.proto"; + +option java_package = "com.vectara.chat"; +option java_outer_classname = "ChatProtos"; + +option go_package = "vectara.com/public/proto/chat"; + +package com.vectara.chat; + +// A turn in a conversation is a single exchange of query and answer. +// A conversation is composed of several turns. +message Turn { + // The ID of the turn. The ID of the first turn in a conversation is the same as the + // ID of the conversation. This is unique within the chat history corpus. + string id = 1; + // The ID of the conversation this turn belongs to. This is the same as the ID of the + // first turn in the conversation. + string conversation_id = 5; + // The query text. + string query = 10; + // The answer text. + string answer = 15; + // Whether this turn is enabled. If a turn is disabled, it will not be used when + // generating answers for subsequent queries in the conversation. + bool enabled = 20; + // The time at which this turn was created. + int64 epoch_secs = 25; +} + +// A chat contains several back-and-forth messages called turns. +message Conversation { + // The ID of the conversation. This is unique within the chat history corpus. + string id = 1; + // The turns comprising this conversation. + repeated Turn turn = 5; +} + +message ListConversationsRequest { + + // Maximum number of conversations to return per page. + uint32 num_results = 5; + + // A key that is passed in to retrieve a specific page of results. + // Leave empty to retrieve the first page. Subsequent page request should + // use the page key returned in previous response, and all other + // fields are ignored. + bytes page_key = 10; +} + +message ListConversationsResponse { + // The first turn in each conversation. + // This doesn't comprise all turns in each conversation; only the first turn of each + // conversation is returned. + repeated Turn conversation = 1; + Status status = 5; + + // A key that is passed in to retrieve a specific page of results. + // Pass this as is in to the next request to retrieve the next page of results. + bytes page_key = 10; +} + +message ReadConversationsRequest { + // The IDs of the conversations to read. Limit: 10 conversations. + repeated string conversation_id = 5; +} + +message ReadConversationsResponse { + repeated Conversation Conversation = 1; + Status status = 5; +} + +message DeleteConversationsRequest { + // The IDs of the conversations to delete. Limit: 1000 conversations. + repeated string conversation_id = 5; +} + +message DeleteConversationsResponse { + Status status = 1; +} + +message DeleteTurnsRequest { + // The ID of the conversations from which to delete turns. + string conversation_id = 5; + // The ID of the turn to start deletion from. All turns in this conversation starting from this + // turn (inclusive) will be deleted. + string turn_id = 10; +} + +message DeleteTurnsResponse { + Status status = 1; +} + +message DisableTurnsRequest { + // The ID of the conversations from which to disable turns. + string conversation_id = 5; + // The ID of the turn to start disabling from. All turns in this conversation starting from this + // turn will be disabled. + string turn_id = 10; +} + +message DisableTurnsResponse { + Status status = 1; +} + diff --git a/common.proto b/common.proto new file mode 100755 index 0000000..c021314 --- /dev/null +++ b/common.proto @@ -0,0 +1,98 @@ +syntax = "proto3"; + +option java_package = "com.vectara"; +option java_outer_classname = "CommonProtos"; + +option go_package = "vectara.com/public/proto/common"; + +package com.vectara; + +// Languages supported by Vectara. +message Language { + enum Code { + UNKNOWN = 0; + + // English. + ENG = 1; + // German. + DEU = 2; + // French. + FRA = 3; + // Chinese. + ZHO = 4; + // Korean. + KOR = 5; + // Arabic. + ARA = 6; + // Russian. + RUS = 7; + // Thai. + THA = 8; + // Dutch. + NLD = 9; + // Italian. + ITA = 10; + // Portuguese. + POR = 11; + // Spanish. + SPA = 12; + // Japanese. + JPN = 13; + // Polish. + POL = 14; + // Turkish. + TUR = 15; + // Vietnamese. + VIE = 16; + // Indonesian. + IND = 17; + // Czech. + CES = 18; + // Ukrainian. + UKR = 19; + // Greek. + ELL = 20; + // Hebrew. + HEB = 21; + // Farsi/Persian. + FAS = 22; + // Hindi. + HIN = 23; + // Urdu. + URD = 24; + // Swedish. + SWE = 25; + // Bengali. + BEN = 26; + // Malay. + MSA = 27; + // Romanian. + RON = 28; + + // Let the platform detect the language. + AUTO = 5000; + } +} + + // Request to delete a document from an index. +message DeleteDocumentRequest { + // The Customer ID to issue the request for. + int64 customer_id = 1; + // The Corpus ID that contains the document. + int64 corpus_id = 2; + // The Document ID to be deleted. + string document_id = 3; +} + +message DeleteDocumentResponse { +} + +// Encapsulates storage quota consumed by indexed documents. +// NextId: 3 +message StorageQuota { + // The number of chars from the document that consumed the storage quota. + int64 num_chars = 1; + // The number of chars in the metadata of the document that consumed the + // storage quota. + int64 num_metadata_chars = 2; +} diff --git a/core_services.proto b/core_services.proto new file mode 100755 index 0000000..9cf7b38 --- /dev/null +++ b/core_services.proto @@ -0,0 +1,52 @@ +// These are public services that we only share with some of our customers. + +syntax = "proto3"; + +import "common.proto"; +import "indexing_core.proto"; +import "status.proto"; +import "google/api/annotations.proto"; + +option java_package = "com.vectara"; +option java_outer_classname = "CoreServiceProtos"; + +option go_package = "vectara.com/public/proto/coreservices"; + +package com.vectara; + +// Request to index a document. +message IndexCoreDocumentRequest { + // The Customer ID to issue the request for. + int64 customer_id = 1; + // The Corpus ID to index the document into. + int64 corpus_id = 2; + // The document being indexed. + com.vectara.indexing.CoreDocument document = 3; +} + +message IndexCoreDocumentResponse { + // Refer to IndexDocumentResponse in services.proto for the indexing error responses. + Status status = 1; + + // The storage quota needed for the document indexed in the request. + // If "status" is ALREADY_EXISTS, it means that the document was already in the index prior to + // this request. In such cases, quota is not consumed again and the value in this field + // represents the quota consumed when the document was indexed the first time. + StorageQuota quota_consumed = 2; +} + +service CoreIndexService { + rpc Index(IndexCoreDocumentRequest) returns (IndexCoreDocumentResponse) { + option (google.api.http) = { + post: "/v1/core/index" + body: "*" + }; + } + + rpc Delete(DeleteDocumentRequest) returns (DeleteDocumentResponse) { + option (google.api.http) = { + post: "/v1/core/delete-doc" + body: "*" + }; + } +} diff --git a/currency.proto b/currency.proto new file mode 100755 index 0000000..dc50003 --- /dev/null +++ b/currency.proto @@ -0,0 +1,204 @@ +syntax = "proto3"; + +option java_package = "com.vectara.currency"; +option java_outer_classname = "CurrencyProtos"; + +option go_package = "vectara.com/public/proto/currency"; + +package com.vectara.currency; + +// Currency Support + +// Represents an amount along with its currency. +message CurrencyAmount { + // The amount. Values are scaled by a factor of 1000, so for instance, 12130 + // is 12.13. + int64 amount = 1; + CurrencyCode currency = 2; +} + +// ISO 4217 currency codes. The three-digit numbers assigned to each currency +// code are also defined by the standard, and generally correspond to the +// ISO 3166 numeric country code where the currency is used. +enum CurrencyCode { + UNK = 0; // Unknown + AED = 784; + AFN = 971; + ALL = 8; + AMD = 51; + ANG = 532; + AOA = 973; + ARS = 032; + AUD = 036; + AWG = 533; + AZN = 944; + BAM = 977; + BBD = 52; + BDT = 50; + BGN = 975; + BHD = 48; + BIF = 108; + BMD = 60; + BND = 96; + BOB = 68; + BOV = 984; + BRL = 986; + BSD = 44; + BTN = 64; + BWP = 72; + BYN = 933; + BYR = 974; + BZD = 84; + CAD = 124; + CDF = 976; + CHE = 947; + CHF = 756; + CHW = 948; + CLF = 990; + CLP = 152; + CNY = 156; + COP = 170; + COU = 970; + CRC = 188; + CUC = 931; + CUP = 192; + CVE = 132; + CZK = 203; + DJF = 262; + DKK = 208; + DOP = 214; + DZD = 12; + EGP = 818; + ERN = 232; + ETB = 230; + EUR = 978; + FJD = 242; + FKP = 238; + GBP = 826; + GEL = 981; + GHS = 936; + GIP = 292; + GMD = 270; + GNF = 324; + GTQ = 320; + GYD = 328; + HKD = 344; + HNL = 340; + HRK = 191; + HTG = 332; + HUF = 348; + IDR = 360; + ILS = 376; + INR = 356; + IQD = 368; + IRR = 364; + ISK = 352; + JMD = 388; + JOD = 400; + JPY = 392; + KES = 404; + KGS = 417; + KHR = 116; + KMF = 174; + KPW = 408; + KRW = 410; + KWD = 414; + KYD = 136; + KZT = 398; + LAK = 418; + LBP = 422; + LKR = 144; + LRD = 430; + LSL = 426; + LYD = 434; + MAD = 504; + MDL = 498; + MGA = 969; + MKD = 807; + MMK = 104; + MNT = 496; + MOP = 446; + MRO = 478; + MUR = 480; + MVR = 462; + MWK = 454; + MXN = 484; + MXV = 979; + MYR = 458; + MZN = 943; + NAD = 516; + NGN = 566; + NIO = 558; + NOK = 578; + NPR = 524; + NZD = 554; + OMR = 512; + PAB = 590; + PEN = 604; + PGK = 598; + PHP = 608; + PKR = 586; + PLN = 985; + PYG = 600; + QAR = 634; + RON = 946; + RSD = 941; + RUB = 643; + RWF = 646; + SAR = 682; + SBD = 90; + SCR = 690; + SDG = 938; + SEK = 752; + SGD = 702; + SHP = 654; + SLL = 694; + SOS = 706; + SRD = 968; + SSP = 728; + STD = 678; + SVC = 222; + SYP = 760; + SZL = 748; + THB = 764; + TJS = 972; + TMT = 934; + TND = 788; + TOP = 776; + TRY = 949; + TTD = 780; + TWD = 901; + TZS = 834; + UAH = 980; + UGX = 800; + USD = 840; + USN = 997; + UYI = 940; + UYU = 858; + UZS = 860; + VEF = 937; + VND = 704; + VUV = 548; + WST = 882; + XAF = 950; + XAG = 961; + XAU = 959; + XBA = 955; + XBB = 956; + XBC = 957; + XBD = 958; + XCD = 951; + XDR = 960; + XOF = 952; + XPD = 964; + XPF = 953; + XPT = 962; + XSU = 994; + XTS = 963; + XUA = 965; + XXX = 999; + YER = 886; + ZAR = 710; + ZMW = 967; + ZWL = 932; +} diff --git a/custom_dim.proto b/custom_dim.proto new file mode 100755 index 0000000..63f7fc3 --- /dev/null +++ b/custom_dim.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +option java_package = "com.vectara.indexing"; +option java_outer_classname = "CustomDimProtos"; + +option go_package = "vectara.com/public/proto/customdim"; + +package com.vectara.indexing; + +// The value of a custom dimension. A valid list of custom dimensions is defined ahead of time for a corpus. +message CustomDimension { + // The name of the dimension. + string name = 1; + // The value of the dimension. + double value = 2; +} diff --git a/indexing.proto b/indexing.proto new file mode 100755 index 0000000..2081389 --- /dev/null +++ b/indexing.proto @@ -0,0 +1,58 @@ +syntax = "proto3"; + +import "custom_dim.proto"; + +option java_package = "com.vectara.indexing"; +option java_outer_classname = "IndexingProtos"; + +option go_package = "vectara.com/public/proto/indexing"; + +package com.vectara.indexing; + +// A section within a structured document. +message Section { + // Optionally, the unique ID of this section. If set, it will be returned as + // metadata in query results. + int32 id = 1; + // Optionally, the title of the section. This may be empty. + string title = 2; + // The text of the section. This should never be empty. + string text = 3; + // Metadata about this section. This should be a json string. It is passed + // through the system, without being used at indexing time. It can be + // retrieved at query time. + string metadata_json = 4; + // A list of custom dimension values that are included in the generated + // representation of all subsections (i.e. sections contains by this section). + repeated CustomDimension custom_dims = 5; + + // A list of subsections. + repeated Section section = 10; +} + +// A document to index. +message Document { + // Client assigned document ID to this document. + string document_id = 1; + // The title of the document. + string title = 2; + // An optional description for the document. + string description = 3; + // Metadata about the document. This is a string containing a JSON + // object. It can be an arbitrary object except that any keys + // that match a metadata filter of the corpus must have the + // same value type as metadata filter's value type. + // + // A query can use this object to filter if the object's key/value pair + // has been defined as a metadata filter. + // + // The whole object will be in the query result. + string metadata_json = 4; + // A list of custom dimension values that are included in the generated + // representation of all sections. + repeated CustomDimension custom_dims = 5; + + // The actual content of the document, structured as a repeating list + // of sections. + repeated Section section = 10; +} diff --git a/indexing_core.proto b/indexing_core.proto new file mode 100755 index 0000000..479e5db --- /dev/null +++ b/indexing_core.proto @@ -0,0 +1,45 @@ +syntax = "proto3"; + +import "custom_dim.proto"; + +option java_package = "com.vectara.indexing"; +option java_outer_classname = "CoreIndexingProtos"; + +option go_package = "vectara.com/public/proto/indexingcore"; + +package com.vectara.indexing; + +// Part of a document. A document consists of several such parts. +message CoreDocumentPart { + // A part of the document. e.g., a sentence. + string text = 1; + // Context of the part. + string context = 2; + // Metadata about this part of the document. This should be a json string. + // It is passed through the system, without being used at indexing time. It + // can be retrieved at query time. + string metadata_json = 3; + // A list of custom dimension values that are included in the generated + // representation of this part. These are optional and take on the corpus + // default custom dimension value if not explicitly provided for the document + repeated CustomDimension custom_dims = 4; +} + +// A document to index. +message CoreDocument { + // A document ID to assign to this document. + string document_id = 1; + // Metadata about the document. This should be a json string. It can be + // retrieved at query time. + string metadata_json = 2; + // All parts of this document. + repeated CoreDocumentPart parts = 3; + // This field provides a way to specify a blanket context for all parts. If + // the context in a part is empty, this context will be used. + string default_part_context = 4; + // A list of custom dimension values that are included in the generated + // representation of all parts. + repeated CustomDimension custom_dims = 5; +} + + diff --git a/list_documents.proto b/list_documents.proto new file mode 100755 index 0000000..0040bf1 --- /dev/null +++ b/list_documents.proto @@ -0,0 +1,49 @@ +syntax = "proto3"; + +import "attribute.proto"; + +option java_package = "com.vectara.lists"; +option java_outer_classname = "ListProtos"; + +option go_package = "vectara.com/public/proto/lists"; + +package com.vectara.lists; + +// Request to list documents in a corpus. +message ListDocumentsRequest { + // The Corpus ID. + uint32 corpus_id = 5; + + // Maximum number of results to be returned by the server. + // Max is 1000. + // If the value is larger than 1000, it will be capped to 1000. + uint32 num_results = 10; + // Key of the specific page of the list results to return. + // Null/empty value means the very first page of the results is requested. + bytes page_key = 15; + + // Filter on document metadata. If empty, no filtering is done. + // Otherwise, only documents that match all of the specified metadata + // will be returned. The syntax is the same as for QueryRequest.metadata. + string metadata_filter = 20; +} + +// Response of listing documents in a corpus. +message ListDocumentsResponse { + // Document information format of each document in the list. + message DocumentInfo { + // The document ID that was used when indexing the document. + string id = 1; + // Document metadata. + repeated Attribute metadata = 5; + } + + // The list of documents. + repeated DocumentInfo document = 1; + // Represents the pagination key to retrieve the next page of results. + // If the value is "", it means no further results for the request. + // To retrieve the next page of results, client shall pass the value of next_page_key in the subsequent + // ListDocumentsRequest method call (in the request message's page_key field). + bytes next_page_key = 5; +} + diff --git a/protoc-gen-openapiv2/options/annotations.proto b/protoc-gen-openapiv2/options/annotations.proto new file mode 100644 index 0000000..d63d3c8 --- /dev/null +++ b/protoc-gen-openapiv2/options/annotations.proto @@ -0,0 +1,44 @@ +syntax = "proto3"; + +package grpc.gateway.protoc_gen_openapiv2.options; + +import "google/protobuf/descriptor.proto"; +import "protoc-gen-openapiv2/options/openapiv2.proto"; + +option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; + +extend google.protobuf.FileOptions { + // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. + // + // All IDs are the same, as assigned. It is okay that they are the same, as they extend + // different descriptor messages. + Swagger openapiv2_swagger = 1042; +} +extend google.protobuf.MethodOptions { + // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. + // + // All IDs are the same, as assigned. It is okay that they are the same, as they extend + // different descriptor messages. + Operation openapiv2_operation = 1042; +} +extend google.protobuf.MessageOptions { + // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. + // + // All IDs are the same, as assigned. It is okay that they are the same, as they extend + // different descriptor messages. + Schema openapiv2_schema = 1042; +} +extend google.protobuf.ServiceOptions { + // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. + // + // All IDs are the same, as assigned. It is okay that they are the same, as they extend + // different descriptor messages. + Tag openapiv2_tag = 1042; +} +extend google.protobuf.FieldOptions { + // ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project. + // + // All IDs are the same, as assigned. It is okay that they are the same, as they extend + // different descriptor messages. + JSONSchema openapiv2_field = 1042; +} diff --git a/protoc-gen-openapiv2/options/openapiv2.proto b/protoc-gen-openapiv2/options/openapiv2.proto new file mode 100644 index 0000000..34ddb52 --- /dev/null +++ b/protoc-gen-openapiv2/options/openapiv2.proto @@ -0,0 +1,720 @@ +syntax = "proto3"; + +package grpc.gateway.protoc_gen_openapiv2.options; + +import "google/protobuf/struct.proto"; + +option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"; + +// Scheme describes the schemes supported by the OpenAPI Swagger +// and Operation objects. +enum Scheme { + UNKNOWN = 0; + HTTP = 1; + HTTPS = 2; + WS = 3; + WSS = 4; +} + +// `Swagger` is a representation of OpenAPI v2 specification's Swagger object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#swaggerObject +// +// Example: +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { +// info: { +// title: "Echo API"; +// version: "1.0"; +// description: ""; +// contact: { +// name: "gRPC-Gateway project"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway"; +// email: "none@example.com"; +// }; +// license: { +// name: "BSD 3-Clause License"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// }; +// }; +// schemes: HTTPS; +// consumes: "application/json"; +// produces: "application/json"; +// }; +// +message Swagger { + // Specifies the OpenAPI Specification version being used. It can be + // used by the OpenAPI UI and other clients to interpret the API listing. The + // value MUST be "2.0". + string swagger = 1; + // Provides metadata about the API. The metadata can be used by the + // clients if needed. + Info info = 2; + // The host (name or ip) serving the API. This MUST be the host only and does + // not include the scheme nor sub-paths. It MAY include a port. If the host is + // not included, the host serving the documentation is to be used (including + // the port). The host does not support path templating. + string host = 3; + // The base path on which the API is served, which is relative to the host. If + // it is not included, the API is served directly under the host. The value + // MUST start with a leading slash (/). The basePath does not support path + // templating. + // Note that using `base_path` does not change the endpoint paths that are + // generated in the resulting OpenAPI file. If you wish to use `base_path` + // with relatively generated OpenAPI paths, the `base_path` prefix must be + // manually removed from your `google.api.http` paths and your code changed to + // serve the API from the `base_path`. + string base_path = 4; + // The transfer protocol of the API. Values MUST be from the list: "http", + // "https", "ws", "wss". If the schemes is not included, the default scheme to + // be used is the one used to access the OpenAPI definition itself. + repeated Scheme schemes = 5; + // A list of MIME types the APIs can consume. This is global to all APIs but + // can be overridden on specific API calls. Value MUST be as described under + // Mime Types. + repeated string consumes = 6; + // A list of MIME types the APIs can produce. This is global to all APIs but + // can be overridden on specific API calls. Value MUST be as described under + // Mime Types. + repeated string produces = 7; + // field 8 is reserved for 'paths'. + reserved 8; + // field 9 is reserved for 'definitions', which at this time are already + // exposed as and customizable as proto messages. + reserved 9; + // An object to hold responses that can be used across operations. This + // property does not define global responses for all operations. + map responses = 10; + // Security scheme definitions that can be used across the specification. + SecurityDefinitions security_definitions = 11; + // A declaration of which security schemes are applied for the API as a whole. + // The list of values describes alternative security schemes that can be used + // (that is, there is a logical OR between the security requirements). + // Individual operations can override this definition. + repeated SecurityRequirement security = 12; + // A list of tags for API documentation control. Tags can be used for logical + // grouping of operations by resources or any other qualifier. + repeated Tag tags = 13; + // Additional external documentation. + ExternalDocumentation external_docs = 14; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 15; +} + +// `Operation` is a representation of OpenAPI v2 specification's Operation object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#operationObject +// +// Example: +// +// service EchoService { +// rpc Echo(SimpleMessage) returns (SimpleMessage) { +// option (google.api.http) = { +// get: "/v1/example/echo/{id}" +// }; +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { +// summary: "Get a message."; +// operation_id: "getMessage"; +// tags: "echo"; +// responses: { +// key: "200" +// value: { +// description: "OK"; +// } +// } +// }; +// } +// } +message Operation { + // A list of tags for API documentation control. Tags can be used for logical + // grouping of operations by resources or any other qualifier. + repeated string tags = 1; + // A short summary of what the operation does. For maximum readability in the + // swagger-ui, this field SHOULD be less than 120 characters. + string summary = 2; + // A verbose explanation of the operation behavior. GFM syntax can be used for + // rich text representation. + string description = 3; + // Additional external documentation for this operation. + ExternalDocumentation external_docs = 4; + // Unique string used to identify the operation. The id MUST be unique among + // all operations described in the API. Tools and libraries MAY use the + // operationId to uniquely identify an operation, therefore, it is recommended + // to follow common programming naming conventions. + string operation_id = 5; + // A list of MIME types the operation can consume. This overrides the consumes + // definition at the OpenAPI Object. An empty value MAY be used to clear the + // global definition. Value MUST be as described under Mime Types. + repeated string consumes = 6; + // A list of MIME types the operation can produce. This overrides the produces + // definition at the OpenAPI Object. An empty value MAY be used to clear the + // global definition. Value MUST be as described under Mime Types. + repeated string produces = 7; + // field 8 is reserved for 'parameters'. + reserved 8; + // The list of possible responses as they are returned from executing this + // operation. + map responses = 9; + // The transfer protocol for the operation. Values MUST be from the list: + // "http", "https", "ws", "wss". The value overrides the OpenAPI Object + // schemes definition. + repeated Scheme schemes = 10; + // Declares this operation to be deprecated. Usage of the declared operation + // should be refrained. Default value is false. + bool deprecated = 11; + // A declaration of which security schemes are applied for this operation. The + // list of values describes alternative security schemes that can be used + // (that is, there is a logical OR between the security requirements). This + // definition overrides any declared top-level security. To remove a top-level + // security declaration, an empty array can be used. + repeated SecurityRequirement security = 12; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 13; + // Custom parameters such as HTTP request headers. + // See: https://swagger.io/docs/specification/2-0/describing-parameters/ + // and https://swagger.io/specification/v2/#parameter-object. + Parameters parameters = 14; +} + +// `Parameters` is a representation of OpenAPI v2 specification's parameters object. +// Note: This technically breaks compatibility with the OpenAPI 2 definition structure as we only +// allow header parameters to be set here since we do not want users specifying custom non-header +// parameters beyond those inferred from the Protobuf schema. +// See: https://swagger.io/specification/v2/#parameter-object +message Parameters { + // `Headers` is one or more HTTP header parameter. + // See: https://swagger.io/docs/specification/2-0/describing-parameters/#header-parameters + repeated HeaderParameter headers = 1; +} + +// `HeaderParameter` a HTTP header parameter. +// See: https://swagger.io/specification/v2/#parameter-object +message HeaderParameter { + // `Type` is a a supported HTTP header type. + // See https://swagger.io/specification/v2/#parameterType. + enum Type { + UNKNOWN = 0; + STRING = 1; + NUMBER = 2; + INTEGER = 3; + BOOLEAN = 4; + } + + // `Name` is the header name. + string name = 1; + // `Description` is a short description of the header. + string description = 2; + // `Type` is the type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. + // See: https://swagger.io/specification/v2/#parameterType. + Type type = 3; + // `Format` The extending format for the previously mentioned type. + string format = 4; + // `Required` indicates if the header is optional + bool required = 5; + // field 6 is reserved for 'items', but in OpenAPI-specific way. + reserved 6; + // field 7 is reserved `Collection Format`. Determines the format of the array if type array is used. + reserved 7; +} + +// `Header` is a representation of OpenAPI v2 specification's Header object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#headerObject +// +message Header { + // `Description` is a short description of the header. + string description = 1; + // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. + string type = 2; + // `Format` The extending format for the previously mentioned type. + string format = 3; + // field 4 is reserved for 'items', but in OpenAPI-specific way. + reserved 4; + // field 5 is reserved `Collection Format` Determines the format of the array if type array is used. + reserved 5; + // `Default` Declares the value of the header that the server will use if none is provided. + // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. + // Unlike JSON Schema this value MUST conform to the defined type for the header. + string default = 6; + // field 7 is reserved for 'maximum'. + reserved 7; + // field 8 is reserved for 'exclusiveMaximum'. + reserved 8; + // field 9 is reserved for 'minimum'. + reserved 9; + // field 10 is reserved for 'exclusiveMinimum'. + reserved 10; + // field 11 is reserved for 'maxLength'. + reserved 11; + // field 12 is reserved for 'minLength'. + reserved 12; + // 'Pattern' See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3. + string pattern = 13; + // field 14 is reserved for 'maxItems'. + reserved 14; + // field 15 is reserved for 'minItems'. + reserved 15; + // field 16 is reserved for 'uniqueItems'. + reserved 16; + // field 17 is reserved for 'enum'. + reserved 17; + // field 18 is reserved for 'multipleOf'. + reserved 18; +} + +// `Response` is a representation of OpenAPI v2 specification's Response object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#responseObject +// +message Response { + // `Description` is a short description of the response. + // GFM syntax can be used for rich text representation. + string description = 1; + // `Schema` optionally defines the structure of the response. + // If `Schema` is not provided, it means there is no content to the response. + Schema schema = 2; + // `Headers` A list of headers that are sent with the response. + // `Header` name is expected to be a string in the canonical format of the MIME header key + // See: https://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey + map headers = 3; + // `Examples` gives per-mimetype response examples. + // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#example-object + map examples = 4; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 5; +} + +// `Info` is a representation of OpenAPI v2 specification's Info object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#infoObject +// +// Example: +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { +// info: { +// title: "Echo API"; +// version: "1.0"; +// description: ""; +// contact: { +// name: "gRPC-Gateway project"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway"; +// email: "none@example.com"; +// }; +// license: { +// name: "BSD 3-Clause License"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// }; +// }; +// ... +// }; +// +message Info { + // The title of the application. + string title = 1; + // A short description of the application. GFM syntax can be used for rich + // text representation. + string description = 2; + // The Terms of Service for the API. + string terms_of_service = 3; + // The contact information for the exposed API. + Contact contact = 4; + // The license information for the exposed API. + License license = 5; + // Provides the version of the application API (not to be confused + // with the specification version). + string version = 6; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 7; +} + +// `Contact` is a representation of OpenAPI v2 specification's Contact object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#contactObject +// +// Example: +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { +// info: { +// ... +// contact: { +// name: "gRPC-Gateway project"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway"; +// email: "none@example.com"; +// }; +// ... +// }; +// ... +// }; +// +message Contact { + // The identifying name of the contact person/organization. + string name = 1; + // The URL pointing to the contact information. MUST be in the format of a + // URL. + string url = 2; + // The email address of the contact person/organization. MUST be in the format + // of an email address. + string email = 3; +} + +// `License` is a representation of OpenAPI v2 specification's License object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#licenseObject +// +// Example: +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { +// info: { +// ... +// license: { +// name: "BSD 3-Clause License"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// }; +// ... +// }; +// ... +// }; +// +message License { + // The license name used for the API. + string name = 1; + // A URL to the license used for the API. MUST be in the format of a URL. + string url = 2; +} + +// `ExternalDocumentation` is a representation of OpenAPI v2 specification's +// ExternalDocumentation object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject +// +// Example: +// +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { +// ... +// external_docs: { +// description: "More about gRPC-Gateway"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway"; +// } +// ... +// }; +// +message ExternalDocumentation { + // A short description of the target documentation. GFM syntax can be used for + // rich text representation. + string description = 1; + // The URL for the target documentation. Value MUST be in the format + // of a URL. + string url = 2; +} + +// `Schema` is a representation of OpenAPI v2 specification's Schema object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject +// +message Schema { + JSONSchema json_schema = 1; + // Adds support for polymorphism. The discriminator is the schema property + // name that is used to differentiate between other schema that inherit this + // schema. The property name used MUST be defined at this schema and it MUST + // be in the required property list. When used, the value MUST be the name of + // this schema or any schema that inherits it. + string discriminator = 2; + // Relevant only for Schema "properties" definitions. Declares the property as + // "read only". This means that it MAY be sent as part of a response but MUST + // NOT be sent as part of the request. Properties marked as readOnly being + // true SHOULD NOT be in the required list of the defined schema. Default + // value is false. + bool read_only = 3; + // field 4 is reserved for 'xml'. + reserved 4; + // Additional external documentation for this schema. + ExternalDocumentation external_docs = 5; + // A free-form property to include an example of an instance for this schema in JSON. + // This is copied verbatim to the output. + string example = 6; +} + +// `JSONSchema` represents properties from JSON Schema taken, and as used, in +// the OpenAPI v2 spec. +// +// This includes changes made by OpenAPI v2. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject +// +// See also: https://cswr.github.io/JsonSchema/spec/basic_types/, +// https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json +// +// Example: +// +// message SimpleMessage { +// option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { +// json_schema: { +// title: "SimpleMessage" +// description: "A simple message." +// required: ["id"] +// } +// }; +// +// // Id represents the message identifier. +// string id = 1; [ +// (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { +// description: "The unique identifier of the simple message." +// }]; +// } +// +message JSONSchema { + // field 1 is reserved for '$id', omitted from OpenAPI v2. + reserved 1; + // field 2 is reserved for '$schema', omitted from OpenAPI v2. + reserved 2; + // Ref is used to define an external reference to include in the message. + // This could be a fully qualified proto message reference, and that type must + // be imported into the protofile. If no message is identified, the Ref will + // be used verbatim in the output. + // For example: + // `ref: ".google.protobuf.Timestamp"`. + string ref = 3; + // field 4 is reserved for '$comment', omitted from OpenAPI v2. + reserved 4; + // The title of the schema. + string title = 5; + // A short description of the schema. + string description = 6; + string default = 7; + bool read_only = 8; + // A free-form property to include a JSON example of this field. This is copied + // verbatim to the output swagger.json. Quotes must be escaped. + // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject + string example = 9; + double multiple_of = 10; + // Maximum represents an inclusive upper limit for a numeric instance. The + // value of MUST be a number, + double maximum = 11; + bool exclusive_maximum = 12; + // minimum represents an inclusive lower limit for a numeric instance. The + // value of MUST be a number, + double minimum = 13; + bool exclusive_minimum = 14; + uint64 max_length = 15; + uint64 min_length = 16; + string pattern = 17; + // field 18 is reserved for 'additionalItems', omitted from OpenAPI v2. + reserved 18; + // field 19 is reserved for 'items', but in OpenAPI-specific way. + // TODO(ivucica): add 'items'? + reserved 19; + uint64 max_items = 20; + uint64 min_items = 21; + bool unique_items = 22; + // field 23 is reserved for 'contains', omitted from OpenAPI v2. + reserved 23; + uint64 max_properties = 24; + uint64 min_properties = 25; + repeated string required = 26; + // field 27 is reserved for 'additionalProperties', but in OpenAPI-specific + // way. TODO(ivucica): add 'additionalProperties'? + reserved 27; + // field 28 is reserved for 'definitions', omitted from OpenAPI v2. + reserved 28; + // field 29 is reserved for 'properties', but in OpenAPI-specific way. + // TODO(ivucica): add 'additionalProperties'? + reserved 29; + // following fields are reserved, as the properties have been omitted from + // OpenAPI v2: + // patternProperties, dependencies, propertyNames, const + reserved 30 to 33; + // Items in 'array' must be unique. + repeated string array = 34; + + enum JSONSchemaSimpleTypes { + UNKNOWN = 0; + ARRAY = 1; + BOOLEAN = 2; + INTEGER = 3; + NULL = 4; + NUMBER = 5; + OBJECT = 6; + STRING = 7; + } + + repeated JSONSchemaSimpleTypes type = 35; + // `Format` + string format = 36; + // following fields are reserved, as the properties have been omitted from + // OpenAPI v2: contentMediaType, contentEncoding, if, then, else + reserved 37 to 41; + // field 42 is reserved for 'allOf', but in OpenAPI-specific way. + // TODO(ivucica): add 'allOf'? + reserved 42; + // following fields are reserved, as the properties have been omitted from + // OpenAPI v2: + // anyOf, oneOf, not + reserved 43 to 45; + // Items in `enum` must be unique https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1 + repeated string enum = 46; + + // Additional field level properties used when generating the OpenAPI v2 file. + FieldConfiguration field_configuration = 1001; + + // 'FieldConfiguration' provides additional field level properties used when generating the OpenAPI v2 file. + // These properties are not defined by OpenAPIv2, but they are used to control the generation. + message FieldConfiguration { + // Alternative parameter name when used as path parameter. If set, this will + // be used as the complete parameter name when this field is used as a path + // parameter. Use this to avoid having auto generated path parameter names + // for overlapping paths. + string path_param_name = 47; + } + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 48; +} + +// `Tag` is a representation of OpenAPI v2 specification's Tag object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#tagObject +// +message Tag { + // The name of the tag. Use it to allow override of the name of a + // global Tag object, then use that name to reference the tag throughout the + // OpenAPI file. + string name = 1; + // A short description for the tag. GFM syntax can be used for rich text + // representation. + string description = 2; + // Additional external documentation for this tag. + ExternalDocumentation external_docs = 3; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 4; +} + +// `SecurityDefinitions` is a representation of OpenAPI v2 specification's +// Security Definitions object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityDefinitionsObject +// +// A declaration of the security schemes available to be used in the +// specification. This does not enforce the security schemes on the operations +// and only serves to provide the relevant details for each scheme. +message SecurityDefinitions { + // A single security scheme definition, mapping a "name" to the scheme it + // defines. + map security = 1; +} + +// `SecurityScheme` is a representation of OpenAPI v2 specification's +// Security Scheme object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securitySchemeObject +// +// Allows the definition of a security scheme that can be used by the +// operations. Supported schemes are basic authentication, an API key (either as +// a header or as a query parameter) and OAuth2's common flows (implicit, +// password, application and access code). +message SecurityScheme { + // The type of the security scheme. Valid values are "basic", + // "apiKey" or "oauth2". + enum Type { + TYPE_INVALID = 0; + TYPE_BASIC = 1; + TYPE_API_KEY = 2; + TYPE_OAUTH2 = 3; + } + + // The location of the API key. Valid values are "query" or "header". + enum In { + IN_INVALID = 0; + IN_QUERY = 1; + IN_HEADER = 2; + } + + // The flow used by the OAuth2 security scheme. Valid values are + // "implicit", "password", "application" or "accessCode". + enum Flow { + FLOW_INVALID = 0; + FLOW_IMPLICIT = 1; + FLOW_PASSWORD = 2; + FLOW_APPLICATION = 3; + FLOW_ACCESS_CODE = 4; + } + + // The type of the security scheme. Valid values are "basic", + // "apiKey" or "oauth2". + Type type = 1; + // A short description for security scheme. + string description = 2; + // The name of the header or query parameter to be used. + // Valid for apiKey. + string name = 3; + // The location of the API key. Valid values are "query" or + // "header". + // Valid for apiKey. + In in = 4; + // The flow used by the OAuth2 security scheme. Valid values are + // "implicit", "password", "application" or "accessCode". + // Valid for oauth2. + Flow flow = 5; + // The authorization URL to be used for this flow. This SHOULD be in + // the form of a URL. + // Valid for oauth2/implicit and oauth2/accessCode. + string authorization_url = 6; + // The token URL to be used for this flow. This SHOULD be in the + // form of a URL. + // Valid for oauth2/password, oauth2/application and oauth2/accessCode. + string token_url = 7; + // The available scopes for the OAuth2 security scheme. + // Valid for oauth2. + Scopes scopes = 8; + // Custom properties that start with "x-" such as "x-foo" used to describe + // extra functionality that is not covered by the standard OpenAPI Specification. + // See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + map extensions = 9; +} + +// `SecurityRequirement` is a representation of OpenAPI v2 specification's +// Security Requirement object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityRequirementObject +// +// Lists the required security schemes to execute this operation. The object can +// have multiple security schemes declared in it which are all required (that +// is, there is a logical AND between the schemes). +// +// The name used for each property MUST correspond to a security scheme +// declared in the Security Definitions. +message SecurityRequirement { + // If the security scheme is of type "oauth2", then the value is a list of + // scope names required for the execution. For other security scheme types, + // the array MUST be empty. + message SecurityRequirementValue { + repeated string scope = 1; + } + // Each name must correspond to a security scheme which is declared in + // the Security Definitions. If the security scheme is of type "oauth2", + // then the value is a list of scope names required for the execution. + // For other security scheme types, the array MUST be empty. + map security_requirement = 1; +} + +// `Scopes` is a representation of OpenAPI v2 specification's Scopes object. +// +// See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#scopesObject +// +// Lists the available scopes for an OAuth2 security scheme. +message Scopes { + // Maps between a name of a scope to a short description of it (as the value + // of the property). + map scope = 1; +} diff --git a/services.proto b/services.proto new file mode 100755 index 0000000..9f3447c --- /dev/null +++ b/services.proto @@ -0,0 +1,287 @@ +syntax = "proto3"; + +import "admin_account.proto"; +import "admin_apikey.proto"; +import "admin.proto"; +import "admin_job.proto"; +import "admin_metric.proto"; +import "admin_security.proto"; +import "admin_user.proto"; + +import "chat.proto"; +import "common.proto"; +import "indexing.proto"; +import "serving.proto"; +import "status.proto"; +import "list_documents.proto"; +import "google/api/annotations.proto"; + +option java_package = "com.vectara"; +option java_outer_classname = "ServiceProtos"; + +option go_package = "vectara.com/public/proto/services"; + +package com.vectara; + +// Request to index a document. +message IndexDocumentRequest { + // The Customer ID to issue the request for. + int64 customer_id = 1; + // The Corpus ID to index the document into. + int64 corpus_id = 2; + // The Document to index. + com.vectara.indexing.Document document = 3; +} + +message IndexDocumentResponse { + // ALREADY_EXISTS (6) The document has already been indexed, and no new quota was consumed. + // RESOURCE_EXHAUSTED (8): The indexing request cannot complete because the system is out of resources. This error may be due to too many simultaneous requests or you exceeded your quota. + // CONFLICT (409): The Document ID already exists. Indexing doesn't support updating documents. + // The new request does not match the previous request for the Document ID. If you would like + // to update the document, delete it first, and then add it to the index again. + // TOO_MANY_REQUESTS (429): The server is overloaded, or you sent too many indexing requests + // to the server in a short amount of time. This is similar to RESOURCE_EXHAUSTED. + // IDX__TRANSIENT_PARTIAL_DELETION_FAILURE (5000): The indexing request resulted in a transient error during the partial deletion of documents. Try the request again. + // IDX__PERMANENT_PARTIAL_DELETION_FAILURE (5001): The indexing request resulted in a + // permanent error during the partial deletion of documents. See https://status.vectara.com + // for the latest info on any outages. If the problem persists, please contact us via support + // or via our community forums at https://discuss.vectara.com if you’re a Growth user. + // during the partial deletion of documents. + // + // Some common relevant error codes may also be returned for corresponding errors, + // for example, PERMISSION_DENIED, DISABLED_CUSTOMER, NOT_FOUND. + Status status = 1; + + // The storage quota needed for the document indexed in the request. + // If "status" is ALREADY_EXISTS, it means that the document was already in the index prior to + // this request. In such cases, quota is not consumed again and the value in this field + // represents the quota consumed when the document was indexed the first time. + StorageQuota quota_consumed = 2; +} + +service IndexService { + rpc Index(IndexDocumentRequest) returns (IndexDocumentResponse) { + option (google.api.http) = { + post: "/v1/index" + body: "*" + }; + } + + rpc Delete(DeleteDocumentRequest) returns (DeleteDocumentResponse) { + option (google.api.http) = { + post: "/v1/delete-doc" + body: "*" + }; + } +} + +service QueryService { + // A standard single-request, single-response endpoint designed for high performance. + rpc Query(com.vectara.serving.BatchQueryRequest) + returns (com.vectara.serving.BatchQueryResponse) { + option (google.api.http) = { + post: "/v1/query" + body: "*" + }; + } + + // A streamed response interface when lower latency is absolutely critical. + rpc StreamQuery(com.vectara.serving.BatchQueryRequest) + returns (stream com.vectara.serving.QueryResponsePart) { + option (google.api.http) = { + post: "/v1/stream-query" + body: "*" + }; + } +} + + +service AdminService { + rpc CreateCorpus(com.vectara.admin.CreateCorpusRequest) returns (com.vectara.admin.CreateCorpusResponse){ + option (google.api.http) = { + post: "/v1/create-corpus" + body: "*" + }; + } + + rpc DeleteCorpus(com.vectara.admin.DeleteCorpusRequest) returns (com.vectara.admin.DeleteCorpusResponse){ + option (google.api.http) = { + post: "/v1/delete-corpus" + body: "*" + }; + } + + rpc ResetCorpus(com.vectara.admin.ResetCorpusRequest) returns (com.vectara.admin.ResetCorpusResponse){ + option (google.api.http) = { + post: "/v1/reset-corpus" + body: "*" + }; + } + + rpc ListCorpora(com.vectara.admin.ListCorporaRequest) + returns (com.vectara.admin.ListCorporaResponse) { + option (google.api.http) = { + post: "/v1/list-corpora" + body: "*" + }; + } + + rpc ListJobs(com.vectara.admin.ListJobsRequest) returns (com.vectara.admin.ListJobsResponse) { + option (google.api.http) = { + post: "/v1/list-jobs" + body: "*" + }; + } + + // Return information about corpora. + rpc ReadCorpus(com.vectara.admin.ReadCorpusRequest) + returns (com.vectara.admin.ReadCorpusResponse) { + option (google.api.http) = { + post: "/v1/read-corpus" + body: "*" + }; + } + + rpc ComputeCorpusSize(com.vectara.admin.ComputeCorpusSizeRequest) + returns (com.vectara.admin.ComputeCorpusSizeResponse) { + option (google.api.http) = { + post: "/v1/compute-corpus-size" + body: "*" + }; + } + + rpc ComputeAccountSize(com.vectara.admin.ComputeAccountSizeRequest) + returns (com.vectara.admin.ComputeAccountSizeResponse) { + option (google.api.http) = { + post: "/v1/compute-account-size" + body: "*" + }; + } + + rpc ListUsers(com.vectara.admin.ListUsersRequest) + returns (com.vectara.admin.ListUsersResponse) { + option (google.api.http) = { + post: "/v1/list-users" + body: "*" + }; + } + + rpc ManageUser(com.vectara.admin.ManageUserRequest) + returns (com.vectara.admin.ManageUserResponse) { + option (google.api.http) = { + post: "/v1/manage-user" + body: "*" + }; + } + + rpc UpdateCorpusEnablement(com.vectara.admin.UpdateCorpusEnablementRequest) returns (com.vectara.admin.UpdateCorpusEnablementResponse) { + option (google.api.http) = { + post: "/v1/update-corpus-enablement" + body: "*" + }; + } + + rpc ReplaceCorpusFilterAttrs(com.vectara.admin.ReplaceCorpusFilterAttrsRequest) returns (com.vectara.admin.ReplaceCorpusFilterAttrsResponse) { + option (google.api.http) = { + post: "/v1/replace-corpus-filter-attrs" + body: "*" + }; + } + + // Get metric usage of either sliding windows or between two timestamps + rpc GetUsageMetrics(com.vectara.admin.UsageMetricsRequest) returns (com.vectara.admin.UsageMetricsResponse){ + option (google.api.http) = { + post: "/v1/get-usage-metrics" + body: "*" + }; + } + + rpc CreateApiKey(com.vectara.admin.CreateApiKeyRequest) returns (com.vectara.admin.CreateApiKeyResponse) { + option (google.api.http) = { + post: "/v1/create-api-key" + body: "*" + }; + } + + rpc EnableApiKey(com.vectara.admin.EnableApiKeyRequest) returns (com.vectara.admin.EnableApiKeyResponse) { + option (google.api.http) = { + post: "/v1/enable-api-key" + body: "*" + }; + } + + rpc DeleteApiKey(com.vectara.admin.DeleteApiKeyRequest) returns (com.vectara.admin.DeleteApiKeyResponse) { + option (google.api.http) = { + post: "/v1/delete-api-key" + body: "*" + }; + } + + rpc ListApiKeys(com.vectara.admin.ListApiKeysRequest) returns (com.vectara.admin.ListApiKeysResponse) { + option (google.api.http) = { + post: "/v1/list-api-keys" + body: "*" + }; + } + +} + +// Service for working with documents. +service DocumentService { + // Returns a list of documents for customer/corpus with pagination and optional document metadata filtering. + rpc ListDocuments(com.vectara.lists.ListDocumentsRequest) returns (com.vectara.lists.ListDocumentsResponse) { + option (google.api.http) = { + post: "/v1/list-documents" + body: "*" + }; + } +} + +// Service for working with chat conversations. +service ChatService { + + // List all conversations. + rpc ListConversations(com.vectara.chat.ListConversationsRequest) + returns (com.vectara.chat.ListConversationsResponse) { + option (google.api.http) = { + post: "/v1/list-conversations" + body: "*" + }; + } + + // Read all turns within the passed conversations. + rpc ReadConversations(com.vectara.chat.ReadConversationsRequest) + returns (com.vectara.chat.ReadConversationsResponse) { + option (google.api.http) = { + post: "/v1/read-conversations" + body: "*" + }; + } + + // Delete conversations (including all turns in it). + rpc DeleteConversations(com.vectara.chat.DeleteConversationsRequest) + returns (com.vectara.chat.DeleteConversationsResponse) { + option (google.api.http) = { + post: "/v1/delete-conversations" + body: "*" + }; + } + + // Delete turns. + rpc DeleteTurns(com.vectara.chat.DeleteTurnsRequest) + returns (com.vectara.chat.DeleteTurnsResponse) { + option (google.api.http) = { + post: "/v1/delete-turns" + body: "*" + }; + } + + // Disable turn. The turn will no longer be used in conversations. + rpc DisableTurns(com.vectara.chat.DisableTurnsRequest) + returns (com.vectara.chat.DisableTurnsResponse) { + option (google.api.http) = { + post: "/v1/disable-turns" + body: "*" + }; + } +} diff --git a/serving.proto b/serving.proto new file mode 100755 index 0000000..6386adb --- /dev/null +++ b/serving.proto @@ -0,0 +1,400 @@ +syntax = "proto3"; + +import "protoc-gen-openapiv2/options/annotations.proto"; + +import "status.proto"; + +option java_package = "com.vectara.serving"; +option java_outer_classname = "ServingProtos"; + +option go_package = "vectara.com/public/proto/serving"; + +package com.vectara.serving; + +// Defined the weight of a custom dimension at query time. +message CustomDimension { + // The name of the custom dimension. + string name = 1; + // The weight of the custom dimension on the query side. This gets multipled + // by the matching index custom dimension weight and added to the score. + double weight = 2; +} + +// Configuration for a linear interpolation. +message LinearInterpolation { + // Controls the weight given to lexical matches. The final score, S, is then: + // S = (lambda) * (lexical score) + (1 - lambda) * (dense score) + float lambda = 1 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "0.025" + }]; + } + +// Object to specify how each corpus in a query is searched. +message CorpusKey { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { + required: [ "corpus_id" ] + } + example: "{ \"corpus_id\": 12 }" + }; + // The Customer ID. + uint32 customer_id = 5; + // The Corpus ID. + uint32 corpus_id = 10; + + // Semantics controls the interpretation of the query string by the + // server, and can be used to override the default semantics assigned + // in the corpus definition. + enum Semantics { + // Use corpus-assigned semantics. This is the most common setting. + DEFAULT = 0; + // Use query semantics. This is also common. + QUERY = 1; + // Use response semantics. Usage of this is rare. + RESPONSE = 2; + } + Semantics semantics = 15; + + // Weights on custom dimensions for the corpus. + repeated CustomDimension dim = 20; + + // Filter the documents and document parts based on their metadata. + // See https://docs.vectara.com/docs/learn/metadata-search-filtering/filter-overview + // for a detailed explanation on how to create a metadata filter. + string metadata_filter = 25; + + // Object determining how the final search result scores + // are influenced by the lexical score. + LinearInterpolation lexical_interpolation_config = 30; +} + + +// How a LLM uses the search results to provide a response to a query. +message SummarizationRequest { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { + required: [ "max_summarized_results", "response_lang" ] + } + example: "{ \"max_summarized_results\": 10, \"response_lang\": \"en\" }" + }; + // The name of the summarizer+prompt combination to use for summarization. + string summarizer_prompt_name = 3; + // Maximum number of results to summarize. + uint32 max_summarized_results = 15; + // ISO 639-1 or ISO 639-3 language code for the response, or "auto" to indicate that + // the auto-detected language of the incoming query should be used. + string response_lang = 20; + + + // Vectara manages both system and user roles and prompts for the generative + // LLM out of the box by default. However, Scale customers can override the + // prompt_text via this variable. The prompt_text is in the form of an + // Apache Velocity template. For more details on how to configure the + // prompt_text, see the long-form documentation at + // https://docs.vectara.com/docs/prompts/vectara-prompt-engine + // See https://vectara.com/pricing/ for more details on becoming a Scale customer. + string prompt_text = 200; + + // Debugging the generative prompt is currently a Scale-only feature. + // See https://vectara.com/pricing/ for more details on becoming a Scale customer. + bool debug = 205; + + // Controls the length of the summary. + // This is a rough estimate and not a hard limit: the end summary can be longer or shorter + // than this value. This is currently a Scale-only feature. + // See https://vectara.com/pricing/ for more details on becoming a Scale customer. + uint32 response_chars = 210; + + // Parameters for the summarizer model. These are currently a Scale-only feature. + // See https://vectara.com/pricing/ for more details on becoming a Scale customer. + // WARNING: This is an experimental feature, and breakable at any point with virtually no + // notice. It is meant for experimentation to converge on optimal parameters that can then + // be set in the prompt definitions. + message ModelParams { + optional uint32 max_tokens = 5; + // The sampling temperature to use. Higher values make the summary more random, while lower + // values make it more focused and deterministic. + optional float temperature = 10; + // Higher values penalize new tokens based on their existing frequency in the text so far, + // decreasing the model's likelihood to repeat the same line verbatim. + optional float frequency_penalty = 15; + // Higher values penalize new tokens based on whether they appear in the text so far, + // increasing the model's likelihood to talk about new topics. + optional float presence_penalty = 20; + } + ModelParams model_params = 215; + + + // If present, the query will be treated as a chat query. + // When using chat, only one summarization request is allowed per query. + ChatRequest chat = 225; + + // If unset or true, the response will include the factual consistency score. + optional bool factual_consistency_score = 230; +} + + +message QueryRequest { + // The query text to use from the end user. + string query = 5; + + + // The start position in the result set + uint32 start = 15; + // The number of results to return. + uint32 num_results = 20; + // Allows processing a matched document part text before being returned + // as a search result. Allows a search result to have more of the document + // than just the matched document part. + message ContextConfig { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { + required: [ "sentences_before", "sentences_after", "start_tag", "end_tag" ] + } + example: "{ \"sentences_before\": 3, \"sentences_after\": 3, \"start_tag\": \"\", \"end_tag\": \"\" }" + }; + // chars_before is used for showing the end user the characters leading up + // to the result snippet. This can help the end-user understand the + // context of that result. Ignored if sentences_before is set. + int32 chars_before = 5 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "30" + }]; + + // chars_after is used for showing the end user the characters after the + // result snippet. This can help the end-user understand the context of + // that result. Ignored if sentences_before is set. + int32 chars_after = 10 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "30" + }]; + + // sentences_before is used for showing the end user the sentences leading + // up to the result snippet. This can help the end-user understand the + // context of that result. + int32 sentences_before = 15 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "3" + }]; + + // sentences_after is used for showing the end user the sentences leading + // up to the result snippet. This can help the end-user understand the + // context of that result. + int32 sentences_after = 20 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "3" + }]; + + // The tag that wraps the snippet at the start. Often this is used to + // provide a start HTML/XML tag or some other delimiter you can use in an + // application to understand where to provide highlighting in your UI and + // understand where the context before ends and the snippet begins. + string start_tag = 25 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"\"" + }]; + + // The tag that wraps the snippet at the end. Often this is used to provide + // a start HTML/XML tag or some other delimiter you can use in an + // application to understand where to provide highlighting in your UI and + // understand where the snippet ends and the context after begins. + string end_tag = 30 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + example: "\"\"" + }]; + } + ContextConfig context_config = 22; + + // The query is run on all these corpora, and the results are + // merged together in the response, ranked by score. + repeated CorpusKey corpus_key = 25; + + // Configuration options to apply to the reranking. + message RerankingConfig { + // Which reranking model to use if reranking. Currently, the only IDs + // available are: + // - 272725717, HuggingFace Open Source x-attentional reranker + // - 272725718, Maximum Marginal Relevance Reranker + uint32 reranker_id = 5; + + // Reranker-specific parameters. The numbering starts from 100, and moves + // upwards in increments of 5. + optional MMRConfig mmr_config = 100; + } + RerankingConfig reranking_config = 30; + + // Optionally, one or more requests to summarize the results. + repeated SummarizationRequest summary = 35; + +} + + +// The chat request. +message ChatRequest { + // Whether to store the query/answer pair. + bool store = 5; + + // The conversation id of the chat. + // If empty, a new conversation will be started. + string conversation_id = 15; +} + +// Values needed to refer to the chat later. +message Chat { + // The conversation id of the chat. + string conversation_id = 5; + // The id assigned to this query and answer. + string turn_id = 10; + + + // Any errors when processing the chat request. + Status status = 1000; +} + +message Attribute { + string name = 5; + string value = 10; +} + +message FactualConsistency { + // The probability that the summary is factually consistent with the results in the ResponseSet. + float score = 5; + // The factual consistency status. + Status status = 1000; +} + +message Summary { + // The summary text. + string text = 10; + + // ISO 639 language code of the summary. If the requested language was set to "AUTO", the + // summary language is the same as the auto-detected language of the query. + string lang = 15; + + + // Populated if chat was requested in the SummaryRequest. + Chat chat = 205; + // Populated if factual_consistency_score was requested in the SummaryRequest. + FactualConsistency factual_consistency = 210; + // Determines if the summary is done. + // `false` if the summary is in-progress for streaming requests, otherwise `true`. + // this only refers to summary text generation, Factual Consistency will come later if requested. + bool done = 215; + // Statuses are marked “repeated” for consistency and flexibility. A failed + // summary should bubble up into the status code of the entire ResponseSet. + repeated Status status = 1000; + // Populated for streaming requests only. + int32 future_id = 1010; +} + +// A document part that matched a query. +message Response { + // The text of the document part after being modified by the context config. + string text = 5; + // The score used for ranking results. The higher the score, the better the match. + float score = 10; + // Document part level metadata. + repeated Attribute metadata = 20; + // Use this ID to find the document in the ResponseSet. + uint32 document_index = 25; + // The original parameters for the search that resulted in this document part + // response. + CorpusKey corpus_key = 30; + +} + +message ResponseSet { + // Search results for the query. + repeated Response response = 5; + // Potentially multiple warnings. + repeated Status status = 10; + + message Document { + // The document id. + string id = 5; + // Document level metadata. + repeated Attribute metadata = 10; + } + // Document level metadata for document parts that are in the response. + repeated Document document = 15; + + // A summary. If using synchronous APIs for querying, the summary will be + // included directly in this response. However, if using the streaming APIs + // for query, the summary messages only set the future_id field. Later, as + // summary results are computed and returned over the stream, the future_id + // within the summary can be used for correlation. + repeated Summary summary = 25; + + // Populated for streaming requests only. This id should matched against + // the query response in order to know which query generated this object. + int32 future_id = 1010; +} + +message BatchQueryRequest { + // Each request can have multiple queries that result in multiple search + // results. Each query can search multiple corpora. + repeated QueryRequest query = 5; +} + +message BatchQueryResponse { + // The response sets for queries within the batch. If using synchronous APIs + // for querying, the response set will be included directly in the response. + // However, if using the streaming APIs for query, the response set messages + // only set the future_id field. Later, as response sets are computed and + // returned over the stream, the future_id within the summary can be used for + // correlation. + repeated ResponseSet response_set = 5; + + repeated Status status = 1000; + PerformanceMetrics metrics = 1005; +} + +// This message contains individual partial results that are returned +// asynchronously by the streaming interface. +message QueryResponsePart { + // The top-level query response. This is sent exactly once over the stream. + BatchQueryResponse batch_query_response = 5; + + // A response set. Use the future_id for correlation. One of these is sent + // for every query in the batch. + ResponseSet response_set = 10; + + // A summary set. Use the future_id for correlation. One of these is sent + // for every summary that's requested. + Summary summary = 15; + + // A status code at the level of a BatchQueryResponse. + repeated Status status = 1000; +} + +// Basic performance metrics that can be attached to a server response. +message PerformanceMetrics { + // How long it took to encode the query. + uint32 query_encode_ms = 5; + // How long it took to retrieve relevant results. + uint32 retrieval_ms = 10; + // How long it took to retrieve user data. + uint32 userdata_retrieval_ms = 15; + // How long it took to rerank the results. + uint32 rerank_ms = 20; +} + +//Configuration for the maximum marginal relevance (MMR) reranker. +message MMRConfig { + // Intuitively, this bias controls how much the reranker should favor + // diversity over relevance. A bias of 1 means that relevance is not + // considered at all, while a bias of 0 means that diversity is not + // considered. A score of 0.8 means that diversity counts for 80% of the + // score, and relevance for 20%. + // + // The bias is defined as (1 - lambda), where lambda is defined as in + // the original paper, "The Use of MMR, Diversity-Based Reranking for + // Reordering Documents and Producing Summaries" by Carbonell and Goldstein, + // 1998. + float diversity_bias = 5 [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "The diversity bias. Higher values indicate more diversity." + example: "0.3" + }]; +} diff --git a/status.proto b/status.proto new file mode 100755 index 0000000..1d64ab2 --- /dev/null +++ b/status.proto @@ -0,0 +1,304 @@ +syntax = "proto3"; + +import "google/protobuf/any.proto"; + +option java_package = "com.vectara"; +option java_outer_classname = "StatusProtos"; + +option go_package = "vectara.com/public/proto/status"; + +package com.vectara; + +message Status { + StatusCode code = 1; + string status_detail = 2; + +} + +enum StatusCode { // Reasons for an error + // OK (0): The request completed successfully. + OK = 0; + // FAILURE (1): A non-user error occurred. This is similar to INTERNAL, UNKNOWN, and + // INTERNAL_SERVER_ERROR error codes. Try your request again with backoff. + // See https://status.vectara.com for the latest info on any outages. + // If the problem persists, please contact us via support or via our community forums + // at https://discuss.vectara.com if you’re a Growth user. + FAILURE = 1; + + // gRPC Codes ---------------------------------------------------------------- + + + // UNKNOWN (2): An internal server exception occurred. This is similar to INTERNAL, + // FAILURE, and INTERNAL_SERVER_ERROR error codes. Try your request again + // with backoff. See https://status.vectara.com for the latest info on any outages. + // If the problem persists, please contact us via support or via our community forums + // at https://discuss.vectara.com if you’re a Growth user. + UNKNOWN = 2; + // INVALID_ARGUMENT (3): The request contains an invalid argument. Verify the argument values and try again. + INVALID_ARGUMENT = 3; + // DEADLINE_EXCEEDED (4): The request took too long to complete. Retry with a larger timeout value. + DEADLINE_EXCEEDED = 4; + ALREADY_EXISTS = 6; + // PERMISSION_DENIED (7): The caller does not have permission to perform this operation. Verify that your credentials have the appropriate access. + PERMISSION_DENIED = 7; + // RESOURCE_EXHAUSTED (8): The request cannot complete because the system is out of resources. This error may be due to too many simultaneous requests or you exceeded your quota. + RESOURCE_EXHAUSTED = 8; + // FAILED_PRECONDITION (9): The request failed because your system does not meet the correct preconditions. + FAILED_PRECONDITION = 9; + // ABORTED (10): The indexing request was aborted because of a system error. Try again later. + ABORTED = 10; + OUT_OF_RANGE = 11; + // UNIMPLEMENTED (12): The request contains an unsupported operation. Verify the values and try again. + UNIMPLEMENTED = 12; + // INTERNAL (13): A non-user error occurred. This is similar to FAILURE, UNKNOWN, and + // INTERNAL_SERVER_ERROR error codes. Try your request again with backoff. + // See https://status.vectara.com for the latest info on any outages. + // If the problem persists, please contact us via support or via our community forums + // at https://discuss.vectara.com if you’re a Growth user. + INTERNAL = 13; + // UNAVAILABLE (14): The service you requested is currently unavailable. Check our status page at status.vectara.com for more information. + UNAVAILABLE = 14; + DATA_LOSS = 15; + // UNAUTHENTICATED (16): The indexing request does not have valid authentication credentials. Verify that you have attached authentication credentials with the request. + UNAUTHENTICATED = 16; + + // HTTP Codes ---------------------------------------------------------------- + + // BAD_REQUEST (400): You tried a bad request. Verify the values and try again. + BAD_REQUEST = 400; + // UNAUTHORIZED (401): The request is not authorized. Verify that your credentials have the appropriate access. + UNAUTHORIZED = 401; + // FORBIDDEN (403): You do not have the appropriate access rights for this request. + FORBIDDEN = 403; + // NOT_FOUND (404): An object you specified for the request does not exist. Verify the values and try again. + NOT_FOUND = 404; + // METHOD_NOT_ALLOWED (405): Invalid method invoked, please check your request. + METHOD_NOT_ALLOWED = 405; + CONFLICT = 409; + UNSUPPORTED_MEDIA_TYPE = 415; + // TOO_MANY_REQUESTS (429): The server is overloaded, or you sent too many requests + // to the server in a short amount of time. This is similar to RESOURCE_EXHAUSTED. + TOO_MANY_REQUESTS = 429; + // INTERNAL_SERVER_ERROR (500): The request failed because of critical system error. Check our status page at status.vectara.com. + INTERNAL_SERVER_ERROR = 500; + // NOT_IMPLEMENTED (501): The server either does not recognize the request method, or it lacks the ability to fulfil the request. + NOT_IMPLEMENTED = 501; + // SERVICE_UNAVAILABLE (503): The server is not available. Check the status page at status.vectara.com for more information. + SERVICE_UNAVAILABLE = 503; + // INSUFFICIENT_STORAGE (507): Your account does not have enough storage to complete the indexing request. Contact support or upgrade your plan. + INSUFFICIENT_STORAGE = 507; + UNPARSEABLE_RESPONSE = 1000; + + // General Failures----------------------------------------------------------- + + // DISABLED_CUSTOMER (1100): The Customer ID is currently disabled. + DISABLED_CUSTOMER = 1100; + // INVALID_CUSTOMER_ID (1101): The Customer ID is invalid or does not exist. + INVALID_CUSTOMER_ID = 1101; + // DISABLED_CORPUS (1102): The request specified a disabled Corpus ID. Verify the status of your corpus and try again. + DISABLED_CORPUS = 1102; + // INVALID_CORPUS_ID (1103): The request specified an invalid Corpus ID. Verify the Corpus ID and try again. + INVALID_CORPUS_ID = 1103; + // DISABLED_API_KEY (1104): The request specified a disabled API key. Verify the API key or contact your administrator. + DISABLED_API_KEY = 1104; + // EXPIRED_API_KEY (1105): The request specified an expired API key. Contact your administrator. + EXPIRED_API_KEY = 1105; + // INVALID_API_KEY (1106): The request specified an invalid API key. Verify the API key and try + INVALID_API_KEY = 1106; + // The customer managed key is inaccessible. This can be for various reasons, e.g., + // the key does not exist, or the platform does not have permissions to use it. + CMK_INACCESSIBLE = 1107; + + // Serving Query ------------------------------------------------------------- + + // One or more corpora you tried to query are in a disabled status. + // Contact your administrator to enable the corpus. + QRY__DISABLED_CORPUS = 1500; + // A failure occured in reading the query result text or metadata which indicates a + // significant system issue. Paid customers should contact support for + // assistance. For other users, we recommend visiting our forums or Discord + // channel for guidance and community support. + QRY__DOCUMENT_DB_FAILURE = 1505; + // A failure occured while encoding the query because the encoder was either unavailable + // or unreachable. Visit our system outages page at https://status.vectara.com to + // see if there are any global outages. If there is no outage, paid customers + // should contact support. + QRY__ENCODER_FAILURE = 1510; + // The query execution was unexpectedly interupted on our server and you might only + // have partial results. Try again and if the problem persists, paid customers should + // contact support. For other users, we recommend visiting our forums or Discord + // channel for guidance and community support. + QRY__INTERRUPTED = 1515; + // You specified a corpus ID that does not exist. Go back and verify that this + // corpus exists. Visit the following link in the Console UI, substituting the ID + // with your corpus value https://console.vectara.com/console/corpus/ID/overview + QRY__INVALID_CORPUS = 1520; + // The start position value must be 0 or higher. If you used a value less than 0, + // this error appears. + QRY__INVALID_START = 1525; + // The num_results value must be a postiive integer and not less than or equal to 0. + // If you still get this error, you need an upper limit set at the account level. + // Contact support. + QRY__INVALID_NUM_RESULTS = 1530; + QRY__INVALID_CONTEXT = 1531; + QRY__MISSING_QUERY = 1535; + // You did not specify a corpus ID in the query. Try again and make sure that you + // specify a valid corpus ID. + QRY__MISSING_CORPUS = 1540; + // The request has timed out and the system has not finished processing. Try again + // with a longer timeout value in seconds or minutes that you can specify in the + // optional timeout header. Example values include 30S or 1M. + QRY__TIMEOUT = 1545; + // Your query specifies too many corpora. This limit is set at the account level. + QRY__TOO_MANY_CORPORA = 1550; + // You specified too many queries in the request. The limit is set at the account + // level. Try again with fewer queries. + QRY__TOO_MANY_QUERIES = 1555; + // An unexpected error or failure occured in the vector database. Visit our system + // outages page at https://status.vectara.com to see if there are any global + // outages. If there is no outage, paid customers should contact support. For other + // users, we recommend visiting our forums or Discord channel for guidance. + QRY__VECTOR_INDEX_FAILURE = 1560; + // You specified an invalid custom dimension name in the query. Go to the corpus + // overview page and make sure you have the correct custom dimension name, + // substituting the ID for your value + // https://console.vectara.com/console/corpus/ID/overview + QRY__INVALID_DIMENSION = 1565; + QRY__INVALID_CLIENTKEY = 1570; + // A failure occured and your text or metadata cannot be decrypted. Visit our system + // outages page at https://status.vectara.com to see if there are any global outages. + // If there is no outage, paid customers should contact support. For other users, + // we recommend visiting our forums or Discord channel for guidance and community support. + QRY__DECRYPTION_FAILURE = 1575; + // You specified a reranker ID that does not exist. If you specified the correct ID, + // paid customers should contact support. For other users, we recommend visiting + // our forums or Discord channel for guidance and community support. + QRY__INVALID_RERANKER = 1580; + // The reranking limit was exceeded and only part of the results were reranked. + // For efficient processing, rerankers apply a maximum limit per request, such + // as 200 for MMR. Paid customers should contact support. For other users, we + // recommend visiting our forums or Discord channel. + QRY__PARTIAL_RERANK = 1585; + // The reranker failed to rerank the results. Paid customers should contact + // support. For other users, we recommend visiting our forums or Discord channel. + QRY__RERANK_FAILURE = 1590; + // The requested start position or number of results exceeds the set limit. Reduce + // the start position or the number of requested results. Limits vary per customer, + // so we recommend contacting support. + QRY__TOO_MANY_RESULT_ROWS = 1595; + QRY__PARTIAL_RETRIEVAL = 1600; + + // The summarization prompt is invalid. + QRY__SMRY__INVALID_SUMMARIZER_PROMPT = 1660; + // The requested language for summarization is invalid. It must be a + // valid ISO 639-3 code. + QRY__SMRY__INVALID_SUMMARY_LANG = 1665; + // The requested language for summarization is valid, but not supported + // by the Vectara platform. + QRY__SMRY__UNSUPPORTED_SUMMARY_LANG = 1670; + // Fewer than the requested number of results were summarized. + QRY__SMRY__PARTIAL_SUMMARY = 1675; + // There were no query results to generate the summary. + QRY__SMRY__NO_QUERY_RESULTS = 1680; + // The summary is in a language that the Evaluation Model doesn't support. + QRY__SMRY__EVAL_UNSUPPORTED_LANG = 1685; + // The Evaluation Model failed to evaluate the summary for factual consistency. + QRY__SMRY__EVAL_FAILURE = 1690; + + // Generative failures while serving queries. + QRY__GEN__NO_QUERY_RESULTS = 1650 [deprecated = true]; + QRY__GEN__UNPARSEABLE_MODEL_PARAMS = 1651 [deprecated = true]; + + // Connection specs ---------------------------------------------------------- + + CX_SPECS__INVALID_JSON = 2000; + CX_SPECS__UNREGISTERED_TYPE = 2005; + CX_SPECS__MISSING_SPEC = 2010; + CX_SPECS__MISSING_TYPE = 2011; + CX_SPECS__UNPARSEABLE_SPEC = 2015; + + // Admin Service ------------------------------------------------------------- + + ADM__INVALID_CUSTOMER_ID = 2500; + ADM__INVALID_CORPUS_ID = 2501; + ADM__INVALID_ENCODER_ID = 2502; + ADM__INVALID_ROLE_ID = 2503; + ADM__ROLE_ALREADY_EXISTS = 2504; + ADM__ONLY_ONE_OWNER_SUPPORTED = 2505; + ADM__INVALID_PERMISSION = 2506; + ADM__ROLECREATION_FAILURE = 2507; + ADM__USER_EMAIL_NOT_AVAIALBLE = 2508; + ADM__USERNAME_NOT_AVAILABLE = 2509; + + ADM__SIGNUP_MISSING_NAME = 2510; + ADM__SIGNUP_MISSING_ORG = 2511; + ADM__SIGNUP_MISSING_EMAIL = 2512; + ADM__SIGNUP_MISSING_PAYMENT = 2513; + ADM__SIGNUP_MISSING_PLAN = 2514; + ADM__SIGNUP_MISSING_PASSWORD = 2515; + + ADM__SIGNUP_INVALID_NAME = 2516; + ADM__SIGNUP_INVALID_ORG = 2517; + ADM__SIGNUP_INVALID_EMAIL = 2518; + ADM__SIGNUP_INVALID_PAYMENT = 2519; + ADM__SIGNUP_INVALID_PLAN = 2520; + ADM__SIGNUP_INVALID_PASSWORD = 2521; + ADM__SIGNUP_INVALID_ACCOUNT_ALIAS = 2530; + ADM__SIGNUP_INVALID_EMAIL_VALIDATION_CODE = 2531; + ADM__SIGNUP_MISSING_COUNTRY_CODE = 2532; + ADM__SIGNUP_ROOT_EMAIL_NOT_AVAILABLE = 2533; + + ADM__CUST_MARK_DELETE_FAILED = 2522; + ADM__CUST_FAISS_DEALLOC_FAILED = 2523; + ADM__CUST_ALREADY_ACTIVE = 2534; + ADM__CUST_REACTIVATE_FAILED = 2535; + ADM__CUST_ENABLEMENT_FAILED = 2536; + + ADM__CORPUS_LIMIT_REACHED = 2524; + + ADM__STRIPE_CARD_DECLINED = 2525; + ADM__STRIPE_PROCESSING_ERROR = 2526; + + ADM__EMAIL_VALIDATION_REQUEST_NOT_FOUND = 2540; + ADM__EMAIL_NOT_VALIDATED = 2541; + + ADM__CHANGE_PLAN__NO_CURRENT_PLAN = 2550; + ADM__CHANGE_PLAN__REQUIRES_MANUAL_CHANGE = 2551; + ADM__CHANGE_PLAN__INVALID_PLAN_ID = 2552; + ADM__CHANGE_PLAN__NO_PAYMENT_SOURCE = 2553; + ADM__CHANGE_PLAN__INVALID_EFFECTIVE_DATE = 2554; + ADM__CHANGE_PLAN__CONFLICTING_CHANGE = 2555; + + // Schema Services ----------------------------------------------------------- + + SCM__MISCONFIGURED_CONNECTION = 3000; + + // StatDB Errors + STATS_DB_READ_FAILURE = 3550; + + // Vector Database ----------------------------------------------------------- + + VDB__TEXT_READ_FAILURE = 4000; + + // Index rebuild codes ------------------------------------------------------ + REBUILD__LOW_RECALL = 4500; + REBUILD__INDEX_UPLOAD_FAILURE = 4505; + REBUILD__UPDATE_JOURNAL_FAILURE = 4510; + REBUILD__UPDATE_FAISSPARAMS_FAILURE = 4515; + REBUILD__NO_DATA = 4520; + REBUILD__EVALUATION = 4525; + + // Indexing ------------------------------------------------------------------ + + IDX__TRANSIENT_PARTIAL_DELETION_FAILURE = 5000; + IDX__PERMANENT_PARTIAL_DELETION_FAILURE = 5001; + + // Calibration --------------------------------------------------------------- + + CALB__INVALID_JSON = 5500; + CALB__INVALID_SPEC = 5501; + CALB__UNREGISTERED_TYPE = 5505; + CALB__MISSING_SPEC = 5510; + CALB__MISSING_TYPE = 5511; + CALB__UNPARSABLE_SPEC = 5515; +} From b7d555c0c8c717d0192c2fb97d54c98f62fb8767 Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Tue, 14 May 2024 22:57:22 +0000 Subject: [PATCH 3/8] Auto-generated. Updating Vectara public protos. (a90130634b50a73e75b8c8b09fb4cbef80275fd0). --- serving.proto | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/serving.proto b/serving.proto index 6386adb..8f3221d 100755 --- a/serving.proto +++ b/serving.proto @@ -125,6 +125,8 @@ message SummarizationRequest { } ModelParams model_params = 215; + // Parameters for the citation style. + CitationParams citation_params = 220; // If present, the query will be treated as a chat query. // When using chat, only one summarization request is allowed per query. @@ -229,6 +231,40 @@ message QueryRequest { } +// Citation parameters for the summary. +message CitationParams { + // The citation style to be used in summary. + // Can be one of: + // NUMERIC (default) -> [1], [2] ... + // NONE -> no citations + // HTML -> 'N' + // MARKDOWN -> [1](https://my.doc/foo) + CitationStyle style = 5; + // The url pattern if the citation_style is set to HTML or MARKDOWN. + // The pattern can access part and doc fields. + // i.e. https://my.doc/foo/{doc.id}/{part.id} + optional string url_pattern = 10; + // The text pattern if the citation_style is set to HTML or MARKDOWN. + // This pattern defaults to N being the index of result if it is not set. + // Final result looks like in this case: [N](https://my.doc/foo) + // It can also be customized to access the part/doc fields by passing + // the field name in curly braces. e.g., {doc.title} or {part.page} + // Final result would look like [Title](https://my.doc/foo/2/1) + optional string text_pattern = 15; +} + +// The citation style to be used in summary. They are used to reference +// the source of the information from the documents in the summary. +enum CitationStyle { + // Default style. E.g., [1], [2] + NUMERIC = 0; + // No citations. + NONE = 1; + // HTML E.g. [N] + HTML = 2; + // MARKDOWN E.g. [N](https://my.doc/foo) + MARKDOWN = 3; +} // The chat request. message ChatRequest { From cb05f79e79a2ec6727f5d93cc7ddc5d03c4b676f Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Wed, 15 May 2024 00:27:36 +0000 Subject: [PATCH 4/8] Auto-generated. Updating Vectara public protos. (43bd8df244bc9eaf138181a5566f182fa331da13). --- currency.proto | 204 ------------------------------------------------- 1 file changed, 204 deletions(-) delete mode 100755 currency.proto diff --git a/currency.proto b/currency.proto deleted file mode 100755 index dc50003..0000000 --- a/currency.proto +++ /dev/null @@ -1,204 +0,0 @@ -syntax = "proto3"; - -option java_package = "com.vectara.currency"; -option java_outer_classname = "CurrencyProtos"; - -option go_package = "vectara.com/public/proto/currency"; - -package com.vectara.currency; - -// Currency Support - -// Represents an amount along with its currency. -message CurrencyAmount { - // The amount. Values are scaled by a factor of 1000, so for instance, 12130 - // is 12.13. - int64 amount = 1; - CurrencyCode currency = 2; -} - -// ISO 4217 currency codes. The three-digit numbers assigned to each currency -// code are also defined by the standard, and generally correspond to the -// ISO 3166 numeric country code where the currency is used. -enum CurrencyCode { - UNK = 0; // Unknown - AED = 784; - AFN = 971; - ALL = 8; - AMD = 51; - ANG = 532; - AOA = 973; - ARS = 032; - AUD = 036; - AWG = 533; - AZN = 944; - BAM = 977; - BBD = 52; - BDT = 50; - BGN = 975; - BHD = 48; - BIF = 108; - BMD = 60; - BND = 96; - BOB = 68; - BOV = 984; - BRL = 986; - BSD = 44; - BTN = 64; - BWP = 72; - BYN = 933; - BYR = 974; - BZD = 84; - CAD = 124; - CDF = 976; - CHE = 947; - CHF = 756; - CHW = 948; - CLF = 990; - CLP = 152; - CNY = 156; - COP = 170; - COU = 970; - CRC = 188; - CUC = 931; - CUP = 192; - CVE = 132; - CZK = 203; - DJF = 262; - DKK = 208; - DOP = 214; - DZD = 12; - EGP = 818; - ERN = 232; - ETB = 230; - EUR = 978; - FJD = 242; - FKP = 238; - GBP = 826; - GEL = 981; - GHS = 936; - GIP = 292; - GMD = 270; - GNF = 324; - GTQ = 320; - GYD = 328; - HKD = 344; - HNL = 340; - HRK = 191; - HTG = 332; - HUF = 348; - IDR = 360; - ILS = 376; - INR = 356; - IQD = 368; - IRR = 364; - ISK = 352; - JMD = 388; - JOD = 400; - JPY = 392; - KES = 404; - KGS = 417; - KHR = 116; - KMF = 174; - KPW = 408; - KRW = 410; - KWD = 414; - KYD = 136; - KZT = 398; - LAK = 418; - LBP = 422; - LKR = 144; - LRD = 430; - LSL = 426; - LYD = 434; - MAD = 504; - MDL = 498; - MGA = 969; - MKD = 807; - MMK = 104; - MNT = 496; - MOP = 446; - MRO = 478; - MUR = 480; - MVR = 462; - MWK = 454; - MXN = 484; - MXV = 979; - MYR = 458; - MZN = 943; - NAD = 516; - NGN = 566; - NIO = 558; - NOK = 578; - NPR = 524; - NZD = 554; - OMR = 512; - PAB = 590; - PEN = 604; - PGK = 598; - PHP = 608; - PKR = 586; - PLN = 985; - PYG = 600; - QAR = 634; - RON = 946; - RSD = 941; - RUB = 643; - RWF = 646; - SAR = 682; - SBD = 90; - SCR = 690; - SDG = 938; - SEK = 752; - SGD = 702; - SHP = 654; - SLL = 694; - SOS = 706; - SRD = 968; - SSP = 728; - STD = 678; - SVC = 222; - SYP = 760; - SZL = 748; - THB = 764; - TJS = 972; - TMT = 934; - TND = 788; - TOP = 776; - TRY = 949; - TTD = 780; - TWD = 901; - TZS = 834; - UAH = 980; - UGX = 800; - USD = 840; - USN = 997; - UYI = 940; - UYU = 858; - UZS = 860; - VEF = 937; - VND = 704; - VUV = 548; - WST = 882; - XAF = 950; - XAG = 961; - XAU = 959; - XBA = 955; - XBB = 956; - XBC = 957; - XBD = 958; - XCD = 951; - XDR = 960; - XOF = 952; - XPD = 964; - XPF = 953; - XPT = 962; - XSU = 994; - XTS = 963; - XUA = 965; - XXX = 999; - YER = 886; - ZAR = 710; - ZMW = 967; - ZWL = 932; -} From 005c55bd7bef6cb230fa39a75c9da4e93e874e5f Mon Sep 17 00:00:00 2001 From: Paul Wozniczka <25128922+pwoznic@users.noreply.github.com> Date: Tue, 14 May 2024 21:03:28 -0500 Subject: [PATCH 5/8] Update serving.proto --- serving.proto | 80 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/serving.proto b/serving.proto index 04e206d..7fcf550 100644 --- a/serving.proto +++ b/serving.proto @@ -13,7 +13,10 @@ package com.vectara.serving; // Defined the weight of a custom dimension at query time. message CustomDimension { + // The name of the custom dimension. string name = 1; + // The weight of the custom dimension on the query side. This gets multipled + // by the matching index custom dimension weight and added to the score. double weight = 2; } @@ -27,6 +30,7 @@ message LinearInterpolation { }]; } +// Object to specify how each corpus in a query is searched. message CorpusKey { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { @@ -55,12 +59,18 @@ message CorpusKey { // Weights on custom dimensions for the corpus. repeated CustomDimension dim = 20; + // Filter the documents and document parts based on their metadata. + // See https://docs.vectara.com/docs/learn/metadata-search-filtering/filter-overview + // for a detailed explanation on how to create a metadata filter. string metadata_filter = 25; + // Object determining how the final search result scores + // are influenced by the lexical score. LinearInterpolation lexical_interpolation_config = 30; } +// How a LLM uses the search results to provide a response to a query. message SummarizationRequest { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { @@ -115,6 +125,8 @@ message SummarizationRequest { } ModelParams model_params = 215; + // Parameters for the citation style. + CitationParams citation_params = 220; // If present, the query will be treated as a chat query. // When using chat, only one summarization request is allowed per query. @@ -134,13 +146,16 @@ message QueryRequest { uint32 start = 15; // The number of results to return. uint32 num_results = 20; + // Allows processing a matched document part text before being returned + // as a search result. Allows a search result to have more of the document + // than just the matched document part. message ContextConfig { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { - required: [ "sentences_before", "sentences_after", "start_tag", "end_tag" ] - } - example: "{ \"sentences_before\": 3, \"sentences_after\": 3, \"start_tag\": \"\", \"end_tag\": \"\" }" - }; + json_schema: { + required: [ "sentences_before", "sentences_after", "start_tag", "end_tag" ] + } + example: "{ \"sentences_before\": 3, \"sentences_after\": 3, \"start_tag\": \"\", \"end_tag\": \"\" }" + }; // chars_before is used for showing the end user the characters leading up // to the result snippet. This can help the end-user understand the // context of that result. Ignored if sentences_before is set. @@ -216,6 +231,40 @@ message QueryRequest { } +// Citation parameters for the summary. +message CitationParams { + // The citation style to be used in summary. + // Can be one of: + // NUMERIC (default) -> [1], [2] ... + // NONE -> no citations + // HTML -> 'N' + // MARKDOWN -> [1](https://my.doc/foo) + CitationStyle style = 5; + // The url pattern if the citation_style is set to HTML or MARKDOWN. + // The pattern can access part and doc fields. + // i.e. https://my.doc/foo/{doc.id}/{part.id} + optional string url_pattern = 10; + // The text pattern if the citation_style is set to HTML or MARKDOWN. + // This pattern defaults to N being the index of result if it is not set. + // Final result looks like in this case: [N](https://my.doc/foo) + // It can also be customized to access the part/doc fields by passing + // the field name in curly braces. e.g., {doc.title} or {part.page} + // Final result would look like [Title](https://my.doc/foo/2/1) + optional string text_pattern = 15; +} + +// The citation style to be used in summary. They are used to reference +// the source of the information from the documents in the summary. +enum CitationStyle { + // Default style. E.g., [1], [2] + NUMERIC = 0; + // No citations. + NONE = 1; + // HTML E.g. [N] + HTML = 2; + // MARKDOWN E.g. [N](https://my.doc/foo) + MARKDOWN = 3; +} // The chat request. message ChatRequest { @@ -227,6 +276,7 @@ message ChatRequest { string conversation_id = 15; } +// Values needed to refer to the chat later. message Chat { // The conversation id of the chat. string conversation_id = 5; @@ -261,43 +311,48 @@ message Summary { // Populated if chat was requested in the SummaryRequest. Chat chat = 205; - // Populated if factual_consistency_score was requested in the SummaryRequest. FactualConsistency factual_consistency = 210; - // Determines if the summary is done. // `false` if the summary is in-progress for streaming requests, otherwise `true`. // this only refers to summary text generation, Factual Consistency will come later if requested. bool done = 215; - // Statuses are marked “repeated” for consistency and flexibility. A failed // summary should bubble up into the status code of the entire ResponseSet. repeated Status status = 1000; // Populated for streaming requests only. int32 future_id = 1010; - } +// A document part that matched a query. message Response { + // The text of the document part after being modified by the context config. string text = 5; // The score used for ranking results. The higher the score, the better the match. float score = 10; + // Document part level metadata. repeated Attribute metadata = 20; // Use this ID to find the document in the ResponseSet. uint32 document_index = 25; + // The original parameters for the search that resulted in this document part + // response. CorpusKey corpus_key = 30; } message ResponseSet { + // Search results for the query. repeated Response response = 5; // Potentially multiple warnings. repeated Status status = 10; message Document { + // The document id. string id = 5; + // Document level metadata. repeated Attribute metadata = 10; } + // Document level metadata for document parts that are in the response. repeated Document document = 15; // A summary. If using synchronous APIs for querying, the summary will be @@ -307,11 +362,14 @@ message ResponseSet { // within the summary can be used for correlation. repeated Summary summary = 25; - // Populated for streaming requests only. + // Populated for streaming requests only. This id should matched against + // the query response in order to know which query generated this object. int32 future_id = 1010; } message BatchQueryRequest { + // Each request can have multiple queries that result in multiple search + // results. Each query can search multiple corpora. repeated QueryRequest query = 5; } @@ -375,4 +433,4 @@ message MMRConfig { description: "The diversity bias. Higher values indicate more diversity." example: "0.3" }]; -} +} \ No newline at end of file From 83b11cab15d90cccd934ca9cfe5d1a5338623024 Mon Sep 17 00:00:00 2001 From: Paul Wozniczka <25128922+pwoznic@users.noreply.github.com> Date: Tue, 14 May 2024 21:03:59 -0500 Subject: [PATCH 6/8] Update serving.proto --- serving.proto | 80 +++++++-------------------------------------------- 1 file changed, 11 insertions(+), 69 deletions(-) diff --git a/serving.proto b/serving.proto index 7fcf550..04e206d 100644 --- a/serving.proto +++ b/serving.proto @@ -13,10 +13,7 @@ package com.vectara.serving; // Defined the weight of a custom dimension at query time. message CustomDimension { - // The name of the custom dimension. string name = 1; - // The weight of the custom dimension on the query side. This gets multipled - // by the matching index custom dimension weight and added to the score. double weight = 2; } @@ -30,7 +27,6 @@ message LinearInterpolation { }]; } -// Object to specify how each corpus in a query is searched. message CorpusKey { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { @@ -59,18 +55,12 @@ message CorpusKey { // Weights on custom dimensions for the corpus. repeated CustomDimension dim = 20; - // Filter the documents and document parts based on their metadata. - // See https://docs.vectara.com/docs/learn/metadata-search-filtering/filter-overview - // for a detailed explanation on how to create a metadata filter. string metadata_filter = 25; - // Object determining how the final search result scores - // are influenced by the lexical score. LinearInterpolation lexical_interpolation_config = 30; } -// How a LLM uses the search results to provide a response to a query. message SummarizationRequest { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { @@ -125,8 +115,6 @@ message SummarizationRequest { } ModelParams model_params = 215; - // Parameters for the citation style. - CitationParams citation_params = 220; // If present, the query will be treated as a chat query. // When using chat, only one summarization request is allowed per query. @@ -146,16 +134,13 @@ message QueryRequest { uint32 start = 15; // The number of results to return. uint32 num_results = 20; - // Allows processing a matched document part text before being returned - // as a search result. Allows a search result to have more of the document - // than just the matched document part. message ContextConfig { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { - json_schema: { - required: [ "sentences_before", "sentences_after", "start_tag", "end_tag" ] - } - example: "{ \"sentences_before\": 3, \"sentences_after\": 3, \"start_tag\": \"\", \"end_tag\": \"\" }" - }; + json_schema: { + required: [ "sentences_before", "sentences_after", "start_tag", "end_tag" ] + } + example: "{ \"sentences_before\": 3, \"sentences_after\": 3, \"start_tag\": \"\", \"end_tag\": \"\" }" + }; // chars_before is used for showing the end user the characters leading up // to the result snippet. This can help the end-user understand the // context of that result. Ignored if sentences_before is set. @@ -231,40 +216,6 @@ message QueryRequest { } -// Citation parameters for the summary. -message CitationParams { - // The citation style to be used in summary. - // Can be one of: - // NUMERIC (default) -> [1], [2] ... - // NONE -> no citations - // HTML -> 'N' - // MARKDOWN -> [1](https://my.doc/foo) - CitationStyle style = 5; - // The url pattern if the citation_style is set to HTML or MARKDOWN. - // The pattern can access part and doc fields. - // i.e. https://my.doc/foo/{doc.id}/{part.id} - optional string url_pattern = 10; - // The text pattern if the citation_style is set to HTML or MARKDOWN. - // This pattern defaults to N being the index of result if it is not set. - // Final result looks like in this case: [N](https://my.doc/foo) - // It can also be customized to access the part/doc fields by passing - // the field name in curly braces. e.g., {doc.title} or {part.page} - // Final result would look like [Title](https://my.doc/foo/2/1) - optional string text_pattern = 15; -} - -// The citation style to be used in summary. They are used to reference -// the source of the information from the documents in the summary. -enum CitationStyle { - // Default style. E.g., [1], [2] - NUMERIC = 0; - // No citations. - NONE = 1; - // HTML E.g. [N] - HTML = 2; - // MARKDOWN E.g. [N](https://my.doc/foo) - MARKDOWN = 3; -} // The chat request. message ChatRequest { @@ -276,7 +227,6 @@ message ChatRequest { string conversation_id = 15; } -// Values needed to refer to the chat later. message Chat { // The conversation id of the chat. string conversation_id = 5; @@ -311,48 +261,43 @@ message Summary { // Populated if chat was requested in the SummaryRequest. Chat chat = 205; + // Populated if factual_consistency_score was requested in the SummaryRequest. FactualConsistency factual_consistency = 210; + // Determines if the summary is done. // `false` if the summary is in-progress for streaming requests, otherwise `true`. // this only refers to summary text generation, Factual Consistency will come later if requested. bool done = 215; + // Statuses are marked “repeated” for consistency and flexibility. A failed // summary should bubble up into the status code of the entire ResponseSet. repeated Status status = 1000; // Populated for streaming requests only. int32 future_id = 1010; + } -// A document part that matched a query. message Response { - // The text of the document part after being modified by the context config. string text = 5; // The score used for ranking results. The higher the score, the better the match. float score = 10; - // Document part level metadata. repeated Attribute metadata = 20; // Use this ID to find the document in the ResponseSet. uint32 document_index = 25; - // The original parameters for the search that resulted in this document part - // response. CorpusKey corpus_key = 30; } message ResponseSet { - // Search results for the query. repeated Response response = 5; // Potentially multiple warnings. repeated Status status = 10; message Document { - // The document id. string id = 5; - // Document level metadata. repeated Attribute metadata = 10; } - // Document level metadata for document parts that are in the response. repeated Document document = 15; // A summary. If using synchronous APIs for querying, the summary will be @@ -362,14 +307,11 @@ message ResponseSet { // within the summary can be used for correlation. repeated Summary summary = 25; - // Populated for streaming requests only. This id should matched against - // the query response in order to know which query generated this object. + // Populated for streaming requests only. int32 future_id = 1010; } message BatchQueryRequest { - // Each request can have multiple queries that result in multiple search - // results. Each query can search multiple corpora. repeated QueryRequest query = 5; } @@ -433,4 +375,4 @@ message MMRConfig { description: "The diversity bias. Higher values indicate more diversity." example: "0.3" }]; -} \ No newline at end of file +} From a83b2175b6731fd0ddf1bd42ca41776df239e7d5 Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Wed, 29 May 2024 13:23:47 +0000 Subject: [PATCH 7/8] Auto-generated. Updating Vectara public protos. (3d3b6e8495472a032b1d288bf119f202e14786a0). --- serving.proto | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/serving.proto b/serving.proto index e2861bd..a16dde1 100755 --- a/serving.proto +++ b/serving.proto @@ -122,6 +122,10 @@ message SummarizationRequest { // Higher values penalize new tokens based on whether they appear in the text so far, // increasing the model's likelihood to talk about new topics. optional float presence_penalty = 20; + // This feature is in Beta. If specified, the LLM will make a best effort to sample deterministically, + // such that repeated requests with the same seed and parameters should return the same result. + // Note:- Seed value is only used when temperature is set to 0. + optional uint32 seed = 25; } ModelParams model_params = 215; @@ -216,8 +220,8 @@ message QueryRequest { message RerankingConfig { // Which reranking model to use if reranking. Currently, the only IDs // available are: - // - 272725717, HuggingFace Open Source x-attentional reranker // - 272725718, Maximum Marginal Relevance Reranker + // - 272725719, Vectara Multilingual Reranker v1 Reranker uint32 reranker_id = 5; // Reranker-specific parameters. The numbering starts from 100, and moves @@ -322,7 +326,6 @@ message Summary { repeated Status status = 1000; // Populated for streaming requests only. int32 future_id = 1010; - } // A document part that matched a query. From 66ab7e16b1d296fba06a5275b5236b333cc69b5b Mon Sep 17 00:00:00 2001 From: bitbucket-pipelines Date: Thu, 15 Aug 2024 16:16:31 +0000 Subject: [PATCH 8/8] Auto-generated. Updating Vectara public protos. (cd64312c808e9e859bfd0f5c156fc292ee99914f). --- admin.proto | 20 ++++++++++++++++++++ common.proto | 1 + core_services.proto | 1 + services.proto | 9 +++++++++ serving.proto | 9 +++++++++ 5 files changed, 40 insertions(+) diff --git a/admin.proto b/admin.proto index 987c6f7..12841a6 100755 --- a/admin.proto +++ b/admin.proto @@ -57,8 +57,10 @@ message Corpus { repeated Dimension custom_dimensions = 13; repeated FilterAttribute filter_attributes = 14; + } + // A custom dimension is additional numeric metadata that you want to affect // Vectara's scoring. For example, these could be "number of stars" ratings, // or other business metrics like a product's margins that you want to use @@ -120,6 +122,20 @@ message CreateCorpusResponse { Status status = 2; } +message UpdateCorpusRequest { + // Corpus id to update. + uint32 id = 1; + // Name to be updated. + optional string name = 2; + // Description to be updated. + optional string description = 3; +} + +message UpdateCorpusResponse { + // The Status of the update. + Status status = 1; +} + message DeleteCorpusRequest { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { required: [ "customerId", "corpusId" ] } @@ -205,6 +221,8 @@ message CorpusSize { int64 epoch_secs = 1; // The size of the corpus. + // This is the sum of the number of characters in the + // text and metadata of all documents in the corpus. uint64 size = 2; } @@ -224,6 +242,7 @@ message ReadCorpusRequest { bool read_custom_dimensions = 1004; // Set to true to read the filter attributes of the corpus. bool read_filter_attributes = 1005; + } message ReadCorpusResponse { @@ -249,6 +268,7 @@ message ReadCorpusResponse { repeated FilterAttribute filter_attribute = 6; // Status of the filter attributes. Status filter_attribute_status = 1006; + } // Information about the requested corpora. diff --git a/common.proto b/common.proto index c021314..4dfab22 100755 --- a/common.proto +++ b/common.proto @@ -96,3 +96,4 @@ message StorageQuota { // storage quota. int64 num_metadata_chars = 2; } + diff --git a/core_services.proto b/core_services.proto index 9cf7b38..0b92cda 100755 --- a/core_services.proto +++ b/core_services.proto @@ -22,6 +22,7 @@ message IndexCoreDocumentRequest { int64 corpus_id = 2; // The document being indexed. com.vectara.indexing.CoreDocument document = 3; + } message IndexCoreDocumentResponse { diff --git a/services.proto b/services.proto index 9f3447c..43bea94 100755 --- a/services.proto +++ b/services.proto @@ -31,6 +31,7 @@ message IndexDocumentRequest { int64 corpus_id = 2; // The Document to index. com.vectara.indexing.Document document = 3; + } message IndexDocumentResponse { @@ -104,6 +105,14 @@ service AdminService { }; } + rpc UpdateCorpus(com.vectara.admin.UpdateCorpusRequest) + returns (com.vectara.admin.UpdateCorpusResponse) { + option (google.api.http) = { + post: "/v1/update-corpus" + body: "*" + }; + } + rpc DeleteCorpus(com.vectara.admin.DeleteCorpusRequest) returns (com.vectara.admin.DeleteCorpusResponse){ option (google.api.http) = { post: "/v1/delete-corpus" diff --git a/serving.proto b/serving.proto index a16dde1..e85282f 100755 --- a/serving.proto +++ b/serving.proto @@ -163,6 +163,8 @@ message QueryRequest { // chars_before is used for showing the end user the characters leading up // to the result snippet. This can help the end-user understand the // context of that result. Ignored if sentences_before is set. + // Vectara will capture the full sentence that contains the captured characters, + // so as to not lose the meaning caused by a truncated word or sentence. int32 chars_before = 5 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "30" @@ -171,6 +173,8 @@ message QueryRequest { // chars_after is used for showing the end user the characters after the // result snippet. This can help the end-user understand the context of // that result. Ignored if sentences_before is set. + // Vectara will capture the full sentence that contains the captured characters, + // so as to not lose the meaning caused by a truncated word or sentence. int32 chars_after = 10 [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { example: "30" @@ -227,6 +231,10 @@ message QueryRequest { // Reranker-specific parameters. The numbering starts from 100, and moves // upwards in increments of 5. optional MMRConfig mmr_config = 100; + + // User function that will be executed on each search result. + // May return a double or null. If this is null the item is skipped. + optional string user_function = 105; } RerankingConfig reranking_config = 30; @@ -366,6 +374,7 @@ message ResponseSet { // within the summary can be used for correlation. repeated Summary summary = 25; + // Populated for streaming requests only. This id should matched against // the query response in order to know which query generated this object. int32 future_id = 1010;