@google-cloud/discoveryengine 0.7.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +6 -0
  3. package/build/protos/google/cloud/discoveryengine/v1beta/common.proto +1 -2
  4. package/build/protos/google/cloud/discoveryengine/v1beta/completion_service.proto +15 -2
  5. package/build/protos/google/cloud/discoveryengine/v1beta/conversation.proto +131 -0
  6. package/build/protos/google/cloud/discoveryengine/v1beta/conversational_search_service.proto +281 -0
  7. package/build/protos/google/cloud/discoveryengine/v1beta/document.proto +6 -5
  8. package/build/protos/google/cloud/discoveryengine/v1beta/document_service.proto +2 -1
  9. package/build/protos/google/cloud/discoveryengine/v1beta/import_config.proto +26 -22
  10. package/build/protos/google/cloud/discoveryengine/v1beta/schema.proto +1 -1
  11. package/build/protos/google/cloud/discoveryengine/v1beta/search_service.proto +193 -47
  12. package/build/protos/google/cloud/discoveryengine/v1beta/user_event.proto +41 -36
  13. package/build/protos/google/cloud/discoveryengine/v1beta/user_event_service.proto +2 -2
  14. package/build/protos/protos.d.ts +6529 -4472
  15. package/build/protos/protos.js +16561 -11622
  16. package/build/protos/protos.json +1842 -1317
  17. package/build/src/v1/completion_service_client.d.ts +6 -7
  18. package/build/src/v1/document_service_client.d.ts +83 -94
  19. package/build/src/v1/document_service_client.js +18 -22
  20. package/build/src/v1/schema_service_client.d.ts +39 -49
  21. package/build/src/v1/schema_service_client.js +17 -22
  22. package/build/src/v1/search_service_client.d.ts +31 -34
  23. package/build/src/v1/search_service_client.js +21 -23
  24. package/build/src/v1/user_event_service_client.d.ts +6 -10
  25. package/build/src/v1/user_event_service_client.js +1 -2
  26. package/build/src/v1beta/completion_service_client.d.ts +106 -8
  27. package/build/src/v1beta/completion_service_client.js +128 -0
  28. package/build/src/v1beta/conversational_search_service_client.d.ts +876 -0
  29. package/build/src/v1beta/conversational_search_service_client.js +1149 -0
  30. package/build/src/v1beta/conversational_search_service_client_config.json +68 -0
  31. package/build/src/v1beta/document_service_client.d.ts +183 -98
  32. package/build/src/v1beta/document_service_client.js +166 -22
  33. package/build/src/v1beta/index.d.ts +1 -0
  34. package/build/src/v1beta/index.js +3 -1
  35. package/build/src/v1beta/recommendation_service_client.d.ts +103 -11
  36. package/build/src/v1beta/recommendation_service_client.js +128 -0
  37. package/build/src/v1beta/schema_service_client.d.ts +132 -49
  38. package/build/src/v1beta/schema_service_client.js +163 -22
  39. package/build/src/v1beta/search_service_client.d.ts +163 -67
  40. package/build/src/v1beta/search_service_client.js +175 -45
  41. package/build/src/v1beta/user_event_service_client.d.ts +104 -15
  42. package/build/src/v1beta/user_event_service_client.js +147 -2
  43. package/package.json +8 -11
@@ -55,11 +55,15 @@ message GcsSource {
55
55
  // have a valid
56
56
  // [Document.id][google.cloud.discoveryengine.v1beta.Document.id].
57
57
  // * `content`: Unstructured data (e.g. PDF, HTML). Each file matched by
58
- // `input_uris` will become a document, with the ID set to the first 128
58
+ // `input_uris` becomes a document, with the ID set to the first 128
59
59
  // bits of SHA256(URI) encoded as a hex string.
60
60
  // * `custom`: One custom data JSON per row in arbitrary format that conforms
61
- // the defined [Schema][google.cloud.discoveryengine.v1beta.Schema] of the
62
- // data store. This can only be used by the GENERIC Data Store vertical.
61
+ // to the defined [Schema][google.cloud.discoveryengine.v1beta.Schema] of
62
+ // the data store. This can only be used by Gen App Builder.
63
+ // * `csv`: A CSV file with header conforming to the defined
64
+ // [Schema][google.cloud.discoveryengine.v1beta.Schema] of the
65
+ // data store. Each entry after the header is imported as a Document.
66
+ // This can only be used by Gen App Builder.
63
67
  //
64
68
  // Supported values for user even imports:
65
69
  //
@@ -111,9 +115,9 @@ message BigQuerySource {
111
115
  // [Document.json_data][google.cloud.discoveryengine.v1beta.Document.json_data]
112
116
  // or
113
117
  // [Document.struct_data][google.cloud.discoveryengine.v1beta.Document.struct_data].
114
- // * `custom`: One custom data per row in arbitrary format that conforms the
115
- // defined [Schema][google.cloud.discoveryengine.v1beta.Schema] of the data
116
- // store. This can only be used by the GENERIC Data Store vertical.
118
+ // * `custom`: One custom data per row in arbitrary format that conforms to
119
+ // the defined [Schema][google.cloud.discoveryengine.v1beta.Schema] of the
120
+ // data store. This can only be used by Gen App Builder.
117
121
  string data_schema = 6;
118
122
  }
119
123
 
@@ -122,7 +126,7 @@ message ImportErrorConfig {
122
126
  // Required. Errors destination.
123
127
  oneof destination {
124
128
  // Cloud Storage prefix for import errors. This must be an empty,
125
- // existing Cloud Storage directory. Import errors will be written to
129
+ // existing Cloud Storage directory. Import errors are written to
126
130
  // sharded files in this directory, one per line, as a JSON-encoded
127
131
  // `google.rpc.Status` message.
128
132
  string gcs_prefix = 1;
@@ -137,16 +141,16 @@ message ImportUserEventsRequest {
137
141
  repeated UserEvent user_events = 1 [(google.api.field_behavior) = REQUIRED];
138
142
  }
139
143
 
140
- // The desired input source of the user event data.
144
+ // Required - The desired input source of the user event data.
141
145
  oneof source {
142
- // Required. The Inline source for the input content for UserEvents.
143
- InlineSource inline_source = 2 [(google.api.field_behavior) = REQUIRED];
146
+ // The Inline source for the input content for UserEvents.
147
+ InlineSource inline_source = 2;
144
148
 
145
- // Required. Cloud Storage location for the input content.
146
- GcsSource gcs_source = 3 [(google.api.field_behavior) = REQUIRED];
149
+ // Cloud Storage location for the input content.
150
+ GcsSource gcs_source = 3;
147
151
 
148
- // Required. BigQuery input source.
149
- BigQuerySource bigquery_source = 4 [(google.api.field_behavior) = REQUIRED];
152
+ // BigQuery input source.
153
+ BigQuerySource bigquery_source = 4;
150
154
  }
151
155
 
152
156
  // Required. Parent DataStore resource name, of the form
@@ -182,7 +186,7 @@ message ImportUserEventsResponse {
182
186
  int64 unjoined_events_count = 4;
183
187
  }
184
188
 
185
- // Metadata related to the progress of the Import operation. This will be
189
+ // Metadata related to the progress of the Import operation. This is
186
190
  // returned by the google.longrunning.Operation.metadata field.
187
191
  message ImportUserEventsMetadata {
188
192
  // Operation create time.
@@ -199,8 +203,8 @@ message ImportUserEventsMetadata {
199
203
  int64 failure_count = 4;
200
204
  }
201
205
 
202
- // Metadata related to the progress of the ImportDocuments operation. This will
203
- // be returned by the google.longrunning.Operation.metadata field.
206
+ // Metadata related to the progress of the ImportDocuments operation. This is
207
+ // returned by the google.longrunning.Operation.metadata field.
204
208
  message ImportDocumentsMetadata {
205
209
  // Operation create time.
206
210
  google.protobuf.Timestamp create_time = 1;
@@ -229,7 +233,7 @@ message ImportDocumentsRequest {
229
233
  // Indicates how imported documents are reconciled with the existing documents
230
234
  // created or imported before.
231
235
  enum ReconciliationMode {
232
- // Defaults to INCREMENTAL.
236
+ // Defaults to `INCREMENTAL`.
233
237
  RECONCILIATION_MODE_UNSPECIFIED = 0;
234
238
 
235
239
  // Inserts new documents or updates existing documents.
@@ -281,7 +285,7 @@ message ImportDocumentsRequest {
281
285
  // `false`, [Document.id][google.cloud.discoveryengine.v1beta.Document.id]s
282
286
  // have to be specified using
283
287
  // [id_field][google.cloud.discoveryengine.v1beta.ImportDocumentsRequest.id_field],
284
- // otherwises, documents without IDs will fail to be imported.
288
+ // otherwise, documents without IDs fail to be imported.
285
289
  //
286
290
  // Only set this field when using
287
291
  // [GcsSource][google.cloud.discoveryengine.v1beta.GcsSource] or
@@ -290,7 +294,7 @@ message ImportDocumentsRequest {
290
294
  // [GcsSource.data_schema][google.cloud.discoveryengine.v1beta.GcsSource.data_schema]
291
295
  // or
292
296
  // [BigQuerySource.data_schema][google.cloud.discoveryengine.v1beta.BigQuerySource.data_schema]
293
- // is `custom`. Otherwise, an INVALID_ARGUMENT error is thrown.
297
+ // is `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
294
298
  bool auto_generate_ids = 8;
295
299
 
296
300
  // The field in the Cloud Storage and BigQuery sources that indicates the
@@ -302,12 +306,12 @@ message ImportDocumentsRequest {
302
306
  // [BigQuerySource][google.cloud.discoveryengine.v1beta.BigQuerySource] it is
303
307
  // the column name of the BigQuery table where the unique ids are stored.
304
308
  //
305
- // The values of the JSON field or the BigQuery column will be used as the
309
+ // The values of the JSON field or the BigQuery column are used as the
306
310
  // [Document.id][google.cloud.discoveryengine.v1beta.Document.id]s. The JSON
307
311
  // field or the BigQuery column must be of string type, and the values must be
308
312
  // set as valid strings conform to
309
313
  // [RFC-1034](https://tools.ietf.org/html/rfc1034) with 1-63 characters.
310
- // Otherwise, documents without valid IDs will fail to be imported.
314
+ // Otherwise, documents without valid IDs fail to be imported.
311
315
  //
312
316
  // Only set this field when using
313
317
  // [GcsSource][google.cloud.discoveryengine.v1beta.GcsSource] or
@@ -40,7 +40,7 @@ message Schema {
40
40
  // Schema representation. One of
41
41
  // [struct_schema][google.cloud.discoveryengine.v1beta.Schema.struct_schema]
42
42
  // or [json_schema][google.cloud.discoveryengine.v1beta.Schema.json_schema]
43
- // should be provided otherwise an INVALID_ARGUMENT error is thrown.
43
+ // should be provided otherwise an `INVALID_ARGUMENT` error is thrown.
44
44
  oneof schema {
45
45
  // The structured representation of the schema.
46
46
  google.protobuf.Struct struct_schema = 2;
@@ -56,6 +56,15 @@ service SearchService {
56
56
  // [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
57
57
  // method.
58
58
  message SearchRequest {
59
+ // Specifies the image query input.
60
+ message ImageQuery {
61
+ oneof image {
62
+ // Base64 encoded image bytes. Supported image formats: JPEG, PNG, and
63
+ // BMP.
64
+ string image_bytes = 1;
65
+ }
66
+ }
67
+
59
68
  // A facet specification to perform faceted search.
60
69
  message FacetSpec {
61
70
  // Specifies how a facet is computed.
@@ -65,7 +74,7 @@ message SearchRequest {
65
74
  // which the facet values are computed. Facet key is case-sensitive.
66
75
  string key = 1 [(google.api.field_behavior) = REQUIRED];
67
76
 
68
- // Set only if values should be bucketized into intervals. Must be set
77
+ // Set only if values should be bucketed into intervals. Must be set
69
78
  // for facets with numerical values. Must not be set for facet with text
70
79
  // values. Maximum number of intervals is 30.
71
80
  repeated Interval intervals = 2;
@@ -73,22 +82,22 @@ message SearchRequest {
73
82
  // Only get facet for the given restricted values. Only supported on
74
83
  // textual fields. For example, suppose "category" has three values
75
84
  // "Action > 2022", "Action > 2021" and "Sci-Fi > 2022". If set
76
- // "restricted_values" to "Action > 2022", the "category" facet will only
77
- // contain "Action > 2022". Only supported on textual fields. Maximum
85
+ // "restricted_values" to "Action > 2022", the "category" facet only
86
+ // contains "Action > 2022". Only supported on textual fields. Maximum
78
87
  // is 10.
79
88
  repeated string restricted_values = 3;
80
89
 
81
90
  // Only get facet values that start with the given string prefix. For
82
91
  // example, suppose "category" has three values "Action > 2022",
83
92
  // "Action > 2021" and "Sci-Fi > 2022". If set "prefixes" to "Action", the
84
- // "category" facet will only contain "Action > 2022" and "Action > 2021".
93
+ // "category" facet only contains "Action > 2022" and "Action > 2021".
85
94
  // Only supported on textual fields. Maximum is 10.
86
95
  repeated string prefixes = 4;
87
96
 
88
97
  // Only get facet values that contains the given strings. For example,
89
98
  // suppose "category" has three values "Action > 2022",
90
99
  // "Action > 2021" and "Sci-Fi > 2022". If set "contains" to "2022", the
91
- // "category" facet will only contain "Action > 2022" and "Sci-Fi > 2022".
100
+ // "category" facet only contains "Action > 2022" and "Sci-Fi > 2022".
92
101
  // Only supported on textual fields. Maximum is 10.
93
102
  repeated string contains = 5;
94
103
 
@@ -121,7 +130,7 @@ message SearchRequest {
121
130
 
122
131
  // Maximum of facet values that should be returned for this facet. If
123
132
  // unspecified, defaults to 20. The maximum allowed value is 300. Values
124
- // above 300 will be coerced to 300.
133
+ // above 300 are coerced to 300.
125
134
  //
126
135
  // If this field is negative, an `INVALID_ARGUMENT` is returned.
127
136
  int32 limit = 2;
@@ -158,15 +167,15 @@ message SearchRequest {
158
167
 
159
168
  // Enables dynamic position for this facet. If set to true, the position of
160
169
  // this facet among all facets in the response is determined automatically.
161
- // It will be ordered together with dynamic facets if dynamic
162
- // facets is enabled. If set to false, the position of this facet in the
163
- // response will be the same as in the request, and it will be ranked before
170
+ // If dynamic facets are enabled, it is ordered together.
171
+ // If set to false, the position of this facet in the
172
+ // response is the same as in the request, and it is ranked before
164
173
  // the facets with dynamic position enable and all dynamic facets.
165
174
  //
166
175
  // For example, you may always want to have rating facet returned in
167
176
  // the response, but it's not necessarily to always display the rating facet
168
177
  // at the top. In that case, you can set enable_dynamic_position to true so
169
- // that the position of rating facet in response will be determined
178
+ // that the position of rating facet in response is determined
170
179
  // automatically.
171
180
  //
172
181
  // Another example, assuming you have the following facets in the request:
@@ -177,13 +186,13 @@ message SearchRequest {
177
186
  //
178
187
  // * "brands", enable_dynamic_position = false
179
188
  //
180
- // And also you have a dynamic facets enable, which will generate a facet
181
- // 'gender'. Then the final order of the facets in the response can be
189
+ // And also you have a dynamic facets enabled, which generates a facet
190
+ // `gender`. Then the final order of the facets in the response can be
182
191
  // ("price", "brands", "rating", "gender") or ("price", "brands", "gender",
183
192
  // "rating") depends on how API orders "gender" and "rating" facets.
184
- // However, notice that "price" and "brands" will always be
185
- // ranked at 1st and 2nd position since their enable_dynamic_position are
186
- // false.
193
+ // However, notice that "price" and "brands" are always
194
+ // ranked at first and second position because their enable_dynamic_position
195
+ // is false.
187
196
  bool enable_dynamic_position = 4;
188
197
  }
189
198
 
@@ -281,40 +290,132 @@ message SearchRequest {
281
290
  Mode mode = 1;
282
291
  }
283
292
 
284
- // The specification that configs the desired behavior of the UCS content
285
- // search.
293
+ // A specification for configuring the behavior of content search.
286
294
  message ContentSearchSpec {
287
- // The specification that configs the snippet in the search results.
295
+ // A specification for configuring snippets in a search response.
288
296
  message SnippetSpec {
289
- // Max number of snippets returned in each search result.
290
- // If the matching snippets is less than the max_snippet_count, return all
291
- // of the snippets; otherwise, return the max_snippet_count.
292
- //
293
- // At most 5 snippets will be returned for each SearchResult.
294
- int32 max_snippet_count = 1;
295
-
296
- // if true, only snippet reference is returned.
297
- bool reference_only = 2;
297
+ // [DEPRECATED] This field is deprecated. To control snippet return, use
298
+ // `return_snippet` field. For backwards compatibility, we will return
299
+ // snippet if max_snippet_count > 0.
300
+ int32 max_snippet_count = 1 [deprecated = true];
301
+
302
+ // [DEPRECATED] This field is deprecated and will have no affect on the
303
+ // snippet.
304
+ bool reference_only = 2 [deprecated = true];
305
+
306
+ // If `true`, then return snippet. If no snippet can be generated, we
307
+ // return "No snippet is available for this page." A `snippet_status` with
308
+ // `SUCCESS` or `NO_SNIPPET_AVAILABLE` will also be returned.
309
+ bool return_snippet = 3;
298
310
  }
299
311
 
300
- // The specification that configs the summary in the search response.
312
+ // A specification for configuring a summary returned in a search
313
+ // response.
301
314
  message SummarySpec {
302
- // The number of top results the summary should be generated from.
303
- // If the number of returned results is less than summary_result_count,
304
- // then the summary would be derived from all the results; otherwise, the
305
- // summary would be derived from the top results.
315
+ // The number of top results to generate the summary from. If the number
316
+ // of results returned is less than `summaryResultCount`, the summary is
317
+ // generated from all of the results.
306
318
  //
307
- // At most 5 results can be used for generating summary.
319
+ // At most five results can be used to generate a summary.
308
320
  int32 summary_result_count = 1;
321
+
322
+ // Specifies whether to include citations in the summary. The default
323
+ // value is `false`.
324
+ //
325
+ // When this field is set to `true`, summaries include in-line citation
326
+ // numbers.
327
+ //
328
+ // Example summary including citations:
329
+ //
330
+ // BigQuery is Google Cloud's fully managed and completely serverless
331
+ // enterprise data warehouse [1]. BigQuery supports all data types, works
332
+ // across clouds, and has built-in machine learning and business
333
+ // intelligence, all within a unified platform [2, 3].
334
+ //
335
+ // The citation numbers refer to the returned search results and are
336
+ // 1-indexed. For example, [1] means that the sentence is attributed to
337
+ // the first search result. [2, 3] means that the sentence is attributed
338
+ // to both the second and third search results.
339
+ bool include_citations = 2;
340
+
341
+ // Specifies whether to filter out adversarial queries. The default value
342
+ // is `false`.
343
+ //
344
+ // Google employs search-query classification to detect adversarial
345
+ // queries. No summary is returned if the search query is classified as an
346
+ // adversarial query. For example, a user might ask a question regarding
347
+ // negative comments about the company or submit a query designed to
348
+ // generate unsafe, policy-violating output. If this field is set to
349
+ // `true`, we skip generating summaries for adversarial queries and return
350
+ // fallback messages instead.
351
+ bool ignore_adversarial_query = 3;
352
+
353
+ // Specifies whether to filter out queries that are not summary-seeking.
354
+ // The default value is `false`.
355
+ //
356
+ // Google employs search-query classification to detect summary-seeking
357
+ // queries. No summary is returned if the search query is classified as a
358
+ // non-summary seeking query. For example, `why is the sky blue` and `Who
359
+ // is the best soccer player in the world?` are summary-seeking queries,
360
+ // but `SFO airport` and `world cup 2026` are not. They are most likely
361
+ // navigational queries. If this field is set to `true`, we skip
362
+ // generating summaries for non-summary seeking queries and return
363
+ // fallback messages instead.
364
+ bool ignore_non_summary_seeking_query = 4;
365
+ }
366
+
367
+ // A specification for configuring the extractive content in a search
368
+ // response.
369
+ message ExtractiveContentSpec {
370
+ // The maximum number of extractive answers returned in each search
371
+ // result.
372
+ //
373
+ // An extractive answer is a verbatim answer extracted from the original
374
+ // document, which provides a precise and contextually relevant answer to
375
+ // the search query.
376
+ //
377
+ // If the number of matching answers is less than the
378
+ // `max_extractive_answer_count`, return all of the answers. Otherwise,
379
+ // return the `max_extractive_answer_count`.
380
+ //
381
+ // At most one answer is returned for each
382
+ // [SearchResult][google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult].
383
+ int32 max_extractive_answer_count = 1;
384
+
385
+ // The max number of extractive segments returned in each search result.
386
+ // Only applied if the
387
+ // [DataStore][google.cloud.discoveryengine.v1beta.DataStore] is set to
388
+ // [DataStore.ContentConfig.CONTENT_REQUIRED][google.cloud.discoveryengine.v1beta.DataStore.ContentConfig.CONTENT_REQUIRED]
389
+ // or
390
+ // [DataStore.solution_types][google.cloud.discoveryengine.v1beta.DataStore.solution_types]
391
+ // is
392
+ // [SOLUTION_TYPE_CHAT][google.cloud.discoveryengine.v1beta.SolutionType.SOLUTION_TYPE_CHAT].
393
+ //
394
+ // An extractive segment is a text segment extracted from the original
395
+ // document that is relevant to the search query, and, in general, more
396
+ // verbose than an extractive answer. The segment could then be used as
397
+ // input for LLMs to generate summaries and answers.
398
+ //
399
+ // If the number of matching segments is less than
400
+ // `max_extractive_segment_count`, return all of the segments. Otherwise,
401
+ // return the `max_extractive_segment_count`.
402
+ //
403
+ // Currently one segment is returned for each
404
+ // [SearchResult][google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult].
405
+ int32 max_extractive_segment_count = 2;
309
406
  }
310
407
 
311
- // If there is no snippet spec provided, there will be no snippet in the
312
- // search result.
408
+ // If `snippetSpec` is not specified, snippets are not included in the
409
+ // search response.
313
410
  SnippetSpec snippet_spec = 1;
314
411
 
315
- // If there is no summary spec provided, there will be no summary in the
412
+ // If `summarySpec` is not specified, summaries are not included in the
316
413
  // search response.
317
414
  SummarySpec summary_spec = 2;
415
+
416
+ // If there is no extractive_content_spec provided, there will be no
417
+ // extractive answer in the search response.
418
+ ExtractiveContentSpec extractive_content_spec = 3;
318
419
  }
319
420
 
320
421
  // Required. The resource name of the Search serving config, such as
@@ -340,9 +441,12 @@ message SearchRequest {
340
441
  // Raw search query.
341
442
  string query = 3;
342
443
 
444
+ // Raw image query.
445
+ ImageQuery image_query = 19;
446
+
343
447
  // Maximum number of [Document][google.cloud.discoveryengine.v1beta.Document]s
344
448
  // to return. If unspecified, defaults to a reasonable value. The maximum
345
- // allowed value is 100. Values above 100 will be coerced to 100.
449
+ // allowed value is 100. Values above 100 are coerced to 100.
346
450
  //
347
451
  // If this field is negative, an `INVALID_ARGUMENT` is returned.
348
452
  int32 page_size = 4;
@@ -374,17 +478,18 @@ message SearchRequest {
374
478
  // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
375
479
  string filter = 7;
376
480
 
377
- // The order in which documents are returned. Document can be ordered by
481
+ // The order in which documents are returned. Documents can be ordered by
378
482
  // a field in an [Document][google.cloud.discoveryengine.v1beta.Document]
379
- // object. Leave it unset if ordered by relevance. OrderBy expression is
483
+ // object. Leave it unset if ordered by relevance. `order_by` expression is
380
484
  // case-sensitive.
381
485
  //
382
- // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
486
+ // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
383
487
  string order_by = 8;
384
488
 
385
489
  // Information about the end user.
386
- // Highly recommended for analytics. The user_agent string in UserInfo will
387
- // be used to deduce device_type for analytics.
490
+ // Highly recommended for analytics.
491
+ // [UserInfo.user_agent][google.cloud.discoveryengine.v1beta.UserInfo.user_agent]
492
+ // is used to deduce `device_type` for analytics.
388
493
  UserInfo user_info = 21;
389
494
 
390
495
  // Facet specifications for faceted search. If empty, no facets are returned.
@@ -408,11 +513,11 @@ message SearchRequest {
408
513
  map<string, google.protobuf.Value> params = 11;
409
514
 
410
515
  // The query expansion specification that specifies the conditions under which
411
- // query expansion will occur.
516
+ // query expansion occurs.
412
517
  QueryExpansionSpec query_expansion_spec = 13;
413
518
 
414
519
  // The spell correction specification that specifies the mode under
415
- // which spell correction will take effect.
520
+ // which spell correction takes effect.
416
521
  SpellCorrectionSpec spell_correction_spec = 14;
417
522
 
418
523
  // A unique identifier for tracking visitors. For example, this could be
@@ -431,12 +536,11 @@ message SearchRequest {
431
536
  // characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
432
537
  string user_pseudo_id = 15;
433
538
 
434
- // The content search spec that configs the desired behavior of content
435
- // search.
539
+ // A specification for configuring the behavior of content search.
436
540
  ContentSearchSpec content_search_spec = 24;
437
541
 
438
542
  // Whether to turn on safe search. This is only supported for
439
- // [ContentConfig.PUBLIC_WEBSITE][].
543
+ // website search.
440
544
  bool safe_search = 20;
441
545
 
442
546
  // The user labels applied to a resource must meet the following requirements:
@@ -518,12 +622,46 @@ message SearchResponse {
518
622
 
519
623
  // A list of ranked refinement attributes.
520
624
  repeated RefinementAttribute refinement_attributes = 1;
625
+
626
+ // Suggested follow-up questions.
627
+ repeated string follow_up_questions = 2;
521
628
  }
522
629
 
523
630
  // Summary of the top N search result specified by the summary spec.
524
631
  message Summary {
632
+ // An Enum for summary-skipped reasons.
633
+ enum SummarySkippedReason {
634
+ // Default value. The summary skipped reason is not specified.
635
+ SUMMARY_SKIPPED_REASON_UNSPECIFIED = 0;
636
+
637
+ // The adversarial query ignored case.
638
+ //
639
+ // Only populated when
640
+ // [SummarySpec.ignore_adversarial_query][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ignore_adversarial_query]
641
+ // is set to `true`.
642
+ ADVERSARIAL_QUERY_IGNORED = 1;
643
+
644
+ // The non-summary seeking query ignored case.
645
+ //
646
+ // Only populated when
647
+ // [SummarySpec.ignore_non_summary_seeking_query][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ignore_non_summary_seeking_query]
648
+ // is set to `true`.
649
+ NON_SUMMARY_SEEKING_QUERY_IGNORED = 2;
650
+
651
+ // The out-of-domain query ignored case.
652
+ //
653
+ // Google skips the summary if there are no high-relevance search results.
654
+ // For example, the data store contains facts about company A but the
655
+ // user query is asking questions about company B.
656
+ OUT_OF_DOMAIN_QUERY_IGNORED = 3;
657
+ }
658
+
525
659
  // The summary content.
526
660
  string summary_text = 1;
661
+
662
+ // Additional summary-skipped reasons. This provides the reason for ignored
663
+ // cases. If nothing is skipped, this field is not set.
664
+ repeated SummarySkippedReason summary_skipped_reasons = 2;
527
665
  }
528
666
 
529
667
  // A list of matched documents. The order represents the ranking.
@@ -549,6 +687,14 @@ message SearchResponse {
549
687
  // performance.
550
688
  string attribution_token = 4;
551
689
 
690
+ // The URI of a customer-defined redirect page. If redirect action is
691
+ // triggered, no search is performed, and only
692
+ // [redirect_uri][google.cloud.discoveryengine.v1beta.SearchResponse.redirect_uri]
693
+ // and
694
+ // [attribution_token][google.cloud.discoveryengine.v1beta.SearchResponse.attribution_token]
695
+ // are set in the response.
696
+ string redirect_uri = 12;
697
+
552
698
  // A token that can be sent as
553
699
  // [SearchRequest.page_token][google.cloud.discoveryengine.v1beta.SearchRequest.page_token]
554
700
  // to retrieve the next page. If this field is omitted, there are no