@google-cloud/discoveryengine 0.7.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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