@google-cloud/discoveryengine 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +33 -1
  3. package/build/protos/google/cloud/discoveryengine/v1/common.proto +30 -2
  4. package/build/protos/google/cloud/discoveryengine/v1/completion_service.proto +15 -2
  5. package/build/protos/google/cloud/discoveryengine/v1/conversation.proto +114 -0
  6. package/build/protos/google/cloud/discoveryengine/v1/conversational_search_service.proto +303 -0
  7. package/build/protos/google/cloud/discoveryengine/v1/document.proto +8 -5
  8. package/build/protos/google/cloud/discoveryengine/v1/document_service.proto +4 -3
  9. package/build/protos/google/cloud/discoveryengine/v1/import_config.proto +27 -23
  10. package/build/protos/google/cloud/discoveryengine/v1/schema.proto +1 -1
  11. package/build/protos/google/cloud/discoveryengine/v1/search_service.proto +428 -20
  12. package/build/protos/google/cloud/discoveryengine/v1/user_event.proto +48 -39
  13. package/build/protos/google/cloud/discoveryengine/v1/user_event_service.proto +2 -2
  14. package/build/protos/google/cloud/discoveryengine/v1alpha/common.proto +155 -0
  15. package/build/protos/google/cloud/discoveryengine/v1alpha/completion_service.proto +134 -0
  16. package/build/protos/google/cloud/discoveryengine/v1alpha/conversation.proto +138 -0
  17. package/build/protos/google/cloud/discoveryengine/v1alpha/conversational_search_service.proto +306 -0
  18. package/build/protos/google/cloud/discoveryengine/v1alpha/document.proto +121 -0
  19. package/build/protos/google/cloud/discoveryengine/v1alpha/document_service.proto +318 -0
  20. package/build/protos/google/cloud/discoveryengine/v1alpha/import_config.proto +343 -0
  21. package/build/protos/google/cloud/discoveryengine/v1alpha/purge_config.proto +159 -0
  22. package/build/protos/google/cloud/discoveryengine/v1alpha/recommendation_service.proto +221 -0
  23. package/build/protos/google/cloud/discoveryengine/v1alpha/schema.proto +312 -0
  24. package/build/protos/google/cloud/discoveryengine/v1alpha/schema_service.proto +260 -0
  25. package/build/protos/google/cloud/discoveryengine/v1alpha/search_service.proto +851 -0
  26. package/build/protos/google/cloud/discoveryengine/v1alpha/site_search_engine_service.proto +152 -0
  27. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event.proto +475 -0
  28. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event_service.proto +154 -0
  29. package/build/protos/google/cloud/discoveryengine/v1beta/common.proto +6 -0
  30. package/build/protos/google/cloud/discoveryengine/v1beta/conversation.proto +9 -2
  31. package/build/protos/google/cloud/discoveryengine/v1beta/conversational_search_service.proto +25 -0
  32. package/build/protos/google/cloud/discoveryengine/v1beta/search_service.proto +115 -3
  33. package/build/protos/google/cloud/discoveryengine/v1beta/user_event.proto +4 -0
  34. package/build/protos/protos.d.ts +22864 -6680
  35. package/build/protos/protos.js +57205 -16191
  36. package/build/protos/protos.json +5548 -1224
  37. package/build/src/index.d.ts +6 -1
  38. package/build/src/index.js +7 -1
  39. package/build/src/v1/completion_service_client.d.ts +156 -6
  40. package/build/src/v1/completion_service_client.js +188 -4
  41. package/build/src/v1/conversational_search_service_client.d.ts +947 -0
  42. package/build/src/v1/conversational_search_service_client.js +1205 -0
  43. package/build/src/v1/conversational_search_service_client_config.json +68 -0
  44. package/build/src/v1/document_service_client.d.ts +165 -18
  45. package/build/src/v1/document_service_client.js +215 -11
  46. package/build/src/v1/index.d.ts +1 -0
  47. package/build/src/v1/index.js +3 -1
  48. package/build/src/v1/schema_service_client.d.ts +148 -4
  49. package/build/src/v1/schema_service_client.js +207 -5
  50. package/build/src/v1/search_service_client.d.ts +238 -28
  51. package/build/src/v1/search_service_client.js +248 -20
  52. package/build/src/v1/user_event_service_client.d.ts +153 -9
  53. package/build/src/v1/user_event_service_client.js +207 -5
  54. package/build/src/v1alpha/completion_service_client.d.ts +603 -0
  55. package/build/src/v1alpha/completion_service_client.js +843 -0
  56. package/build/src/v1alpha/completion_service_client_config.json +43 -0
  57. package/build/src/v1alpha/conversational_search_service_client.d.ts +998 -0
  58. package/build/src/v1alpha/conversational_search_service_client.js +1275 -0
  59. package/build/src/v1alpha/conversational_search_service_client_config.json +68 -0
  60. package/build/src/v1alpha/document_service_client.d.ts +1140 -0
  61. package/build/src/v1alpha/document_service_client.js +1393 -0
  62. package/build/src/v1alpha/document_service_client_config.json +82 -0
  63. package/build/src/v1alpha/index.d.ts +8 -0
  64. package/build/src/v1alpha/index.js +37 -0
  65. package/build/src/v1alpha/recommendation_service_client.d.ts +735 -0
  66. package/build/src/v1alpha/recommendation_service_client.js +938 -0
  67. package/build/src/v1alpha/recommendation_service_client_config.json +43 -0
  68. package/build/src/v1alpha/schema_service_client.d.ts +935 -0
  69. package/build/src/v1alpha/schema_service_client.js +1327 -0
  70. package/build/src/v1alpha/schema_service_client_config.json +63 -0
  71. package/build/src/v1alpha/search_service_client.d.ts +1208 -0
  72. package/build/src/v1alpha/search_service_client.js +1432 -0
  73. package/build/src/v1alpha/search_service_client_config.json +43 -0
  74. package/build/src/v1alpha/site_search_engine_service_client.d.ts +704 -0
  75. package/build/src/v1alpha/site_search_engine_service_client.js +1087 -0
  76. package/build/src/v1alpha/site_search_engine_service_client_config.json +30 -0
  77. package/build/src/v1alpha/user_event_service_client.d.ts +853 -0
  78. package/build/src/v1alpha/user_event_service_client.js +1174 -0
  79. package/build/src/v1alpha/user_event_service_client_config.json +67 -0
  80. package/build/src/v1beta/completion_service_client.d.ts +55 -4
  81. package/build/src/v1beta/completion_service_client.js +60 -4
  82. package/build/src/v1beta/conversational_search_service_client.d.ts +75 -4
  83. package/build/src/v1beta/conversational_search_service_client.js +60 -4
  84. package/build/src/v1beta/document_service_client.d.ts +55 -4
  85. package/build/src/v1beta/document_service_client.js +61 -5
  86. package/build/src/v1beta/recommendation_service_client.d.ts +55 -4
  87. package/build/src/v1beta/recommendation_service_client.js +60 -4
  88. package/build/src/v1beta/schema_service_client.d.ts +55 -4
  89. package/build/src/v1beta/schema_service_client.js +61 -5
  90. package/build/src/v1beta/search_service_client.d.ts +142 -4
  91. package/build/src/v1beta/search_service_client.js +118 -4
  92. package/build/src/v1beta/user_event_service_client.d.ts +55 -4
  93. package/build/src/v1beta/user_event_service_client.js +61 -5
  94. package/package.json +5 -5
@@ -56,6 +56,190 @@ service SearchService {
56
56
  // [SearchService.Search][google.cloud.discoveryengine.v1.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
+
68
+ // A facet specification to perform faceted search.
69
+ message FacetSpec {
70
+ // Specifies how a facet is computed.
71
+ message FacetKey {
72
+ // Required. Supported textual and numerical facet keys in
73
+ // [Document][google.cloud.discoveryengine.v1.Document] object, over which
74
+ // the facet values are computed. Facet key is case-sensitive.
75
+ string key = 1 [(google.api.field_behavior) = REQUIRED];
76
+
77
+ // Set only if values should be bucketed into intervals. Must be set
78
+ // for facets with numerical values. Must not be set for facet with text
79
+ // values. Maximum number of intervals is 30.
80
+ repeated Interval intervals = 2;
81
+
82
+ // Only get facet for the given restricted values. Only supported on
83
+ // textual fields. For example, suppose "category" has three values
84
+ // "Action > 2022", "Action > 2021" and "Sci-Fi > 2022". If set
85
+ // "restricted_values" to "Action > 2022", the "category" facet only
86
+ // contains "Action > 2022". Only supported on textual fields. Maximum
87
+ // is 10.
88
+ repeated string restricted_values = 3;
89
+
90
+ // Only get facet values that start with the given string prefix. For
91
+ // example, suppose "category" has three values "Action > 2022",
92
+ // "Action > 2021" and "Sci-Fi > 2022". If set "prefixes" to "Action", the
93
+ // "category" facet only contains "Action > 2022" and "Action > 2021".
94
+ // Only supported on textual fields. Maximum is 10.
95
+ repeated string prefixes = 4;
96
+
97
+ // Only get facet values that contains the given strings. For example,
98
+ // suppose "category" has three values "Action > 2022",
99
+ // "Action > 2021" and "Sci-Fi > 2022". If set "contains" to "2022", the
100
+ // "category" facet only contains "Action > 2022" and "Sci-Fi > 2022".
101
+ // Only supported on textual fields. Maximum is 10.
102
+ repeated string contains = 5;
103
+
104
+ // True to make facet keys case insensitive when getting faceting
105
+ // values with prefixes or contains; false otherwise.
106
+ bool case_insensitive = 6;
107
+
108
+ // The order in which documents are returned.
109
+ //
110
+ // Allowed values are:
111
+ //
112
+ // * "count desc", which means order by
113
+ // [SearchResponse.Facet.values.count][google.cloud.discoveryengine.v1.SearchResponse.Facet.FacetValue.count]
114
+ // descending.
115
+ //
116
+ // * "value desc", which means order by
117
+ // [SearchResponse.Facet.values.value][google.cloud.discoveryengine.v1.SearchResponse.Facet.FacetValue.value]
118
+ // descending.
119
+ // Only applies to textual facets.
120
+ //
121
+ // If not set, textual values are sorted in [natural
122
+ // order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical
123
+ // intervals are sorted in the order given by
124
+ // [FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1.SearchRequest.FacetSpec.FacetKey.intervals].
125
+ string order_by = 7;
126
+ }
127
+
128
+ // Required. The facet key specification.
129
+ FacetKey facet_key = 1 [(google.api.field_behavior) = REQUIRED];
130
+
131
+ // Maximum of facet values that should be returned for this facet. If
132
+ // unspecified, defaults to 20. The maximum allowed value is 300. Values
133
+ // above 300 are coerced to 300.
134
+ //
135
+ // If this field is negative, an `INVALID_ARGUMENT` is returned.
136
+ int32 limit = 2;
137
+
138
+ // List of keys to exclude when faceting.
139
+ //
140
+ //
141
+ // By default,
142
+ // [FacetKey.key][google.cloud.discoveryengine.v1.SearchRequest.FacetSpec.FacetKey.key]
143
+ // is not excluded from the filter unless it is listed in this field.
144
+ //
145
+ // Listing a facet key in this field allows its values to appear as facet
146
+ // results, even when they are filtered out of search results. Using this
147
+ // field does not affect what search results are returned.
148
+ //
149
+ // For example, suppose there are 100 documents with the color facet "Red"
150
+ // and 200 documents with the color facet "Blue". A query containing the
151
+ // filter "color:ANY("Red")" and having "color" as
152
+ // [FacetKey.key][google.cloud.discoveryengine.v1.SearchRequest.FacetSpec.FacetKey.key]
153
+ // would by default return only "Red" documents in the search results, and
154
+ // also return "Red" with count 100 as the only color facet. Although there
155
+ // are also blue documents available, "Blue" would not be shown as an
156
+ // available facet value.
157
+ //
158
+ // If "color" is listed in "excludedFilterKeys", then the query returns the
159
+ // facet values "Red" with count 100 and "Blue" with count 200, because the
160
+ // "color" key is now excluded from the filter. Because this field doesn't
161
+ // affect search results, the search results are still correctly filtered to
162
+ // return only "Red" documents.
163
+ //
164
+ // A maximum of 100 values are allowed. Otherwise, an `INVALID_ARGUMENT`
165
+ // error is returned.
166
+ repeated string excluded_filter_keys = 3;
167
+
168
+ // Enables dynamic position for this facet. If set to true, the position of
169
+ // this facet among all facets in the response is determined automatically.
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
173
+ // the facets with dynamic position enable and all dynamic facets.
174
+ //
175
+ // For example, you may always want to have rating facet returned in
176
+ // the response, but it's not necessarily to always display the rating facet
177
+ // at the top. In that case, you can set enable_dynamic_position to true so
178
+ // that the position of rating facet in response is determined
179
+ // automatically.
180
+ //
181
+ // Another example, assuming you have the following facets in the request:
182
+ //
183
+ // * "rating", enable_dynamic_position = true
184
+ //
185
+ // * "price", enable_dynamic_position = false
186
+ //
187
+ // * "brands", enable_dynamic_position = false
188
+ //
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
191
+ // ("price", "brands", "rating", "gender") or ("price", "brands", "gender",
192
+ // "rating") depends on how API orders "gender" and "rating" facets.
193
+ // However, notice that "price" and "brands" are always
194
+ // ranked at first and second position because their enable_dynamic_position
195
+ // is false.
196
+ bool enable_dynamic_position = 4;
197
+ }
198
+
199
+ // Boost specification to boost certain documents.
200
+ message BoostSpec {
201
+ // Boost applies to documents which match a condition.
202
+ message ConditionBoostSpec {
203
+ // An expression which specifies a boost condition. The syntax and
204
+ // supported fields are the same as a filter expression. See
205
+ // [SearchRequest.filter][google.cloud.discoveryengine.v1.SearchRequest.filter]
206
+ // for detail syntax and limitations.
207
+ //
208
+ // Examples:
209
+ //
210
+ // * To boost documents with document ID "doc_1" or "doc_2", and
211
+ // color
212
+ // "Red" or "Blue":
213
+ // * (id: ANY("doc_1", "doc_2")) AND (color: ANY("Red","Blue"))
214
+ string condition = 1;
215
+
216
+ // Strength of the condition boost, which should be in [-1, 1]. Negative
217
+ // boost means demotion. Default is 0.0.
218
+ //
219
+ // Setting to 1.0 gives the document a big promotion. However, it does not
220
+ // necessarily mean that the boosted document will be the top result at
221
+ // all times, nor that other documents will be excluded. Results could
222
+ // still be shown even when none of them matches the condition. And
223
+ // results that are significantly more relevant to the search query can
224
+ // still trump your heavily favored but irrelevant documents.
225
+ //
226
+ // Setting to -1.0 gives the document a big demotion. However, results
227
+ // that are deeply relevant might still be shown. The document will have
228
+ // an upstream battle to get a fairly high ranking, but it is not blocked
229
+ // out completely.
230
+ //
231
+ // Setting to 0.0 means no boost applied. The boosting condition is
232
+ // ignored.
233
+ float boost = 2;
234
+ }
235
+
236
+ // Condition boost specifications. If a document matches multiple conditions
237
+ // in the specifictions, boost scores from these specifications are all
238
+ // applied and combined in a non-linear way. Maximum number of
239
+ // specifications is 20.
240
+ repeated ConditionBoostSpec condition_boost_specs = 1;
241
+ }
242
+
59
243
  // Specification to determine under which conditions query expansion should
60
244
  // occur.
61
245
  message QueryExpansionSpec {
@@ -78,6 +262,11 @@ message SearchRequest {
78
262
  // The condition under which query expansion should occur. Default to
79
263
  // [Condition.DISABLED][google.cloud.discoveryengine.v1.SearchRequest.QueryExpansionSpec.Condition.DISABLED].
80
264
  Condition condition = 1;
265
+
266
+ // Whether to pin unexpanded results. If this field is set to true,
267
+ // unexpanded products are always at the top of the search results, followed
268
+ // by the expanded results.
269
+ bool pin_unexpanded_results = 2;
81
270
  }
82
271
 
83
272
  // The specification for query spell correction.
@@ -106,25 +295,91 @@ message SearchRequest {
106
295
  Mode mode = 1;
107
296
  }
108
297
 
109
- // The specification that configs the desired behavior of the UCS content
110
- // search.
298
+ // A specification for configuring the behavior of content search.
111
299
  message ContentSearchSpec {
112
- // The specification that configs the snippet in the search results.
300
+ // A specification for configuring snippets in a search response.
113
301
  message SnippetSpec {
114
- // Max number of snippets returned in each search result.
115
- // If the matching snippets is less than the max_snippet_count, return all
116
- // of the snippets; otherwise, return the max_snippet_count.
302
+ // [DEPRECATED] This field is deprecated. To control snippet return, use
303
+ // `return_snippet` field. For backwards compatibility, we will return
304
+ // snippet if max_snippet_count > 0.
305
+ int32 max_snippet_count = 1 [deprecated = true];
306
+
307
+ // [DEPRECATED] This field is deprecated and will have no affect on the
308
+ // snippet.
309
+ bool reference_only = 2 [deprecated = true];
310
+
311
+ // If `true`, then return snippet. If no snippet can be generated, we
312
+ // return "No snippet is available for this page." A `snippet_status` with
313
+ // `SUCCESS` or `NO_SNIPPET_AVAILABLE` will also be returned.
314
+ bool return_snippet = 3;
315
+ }
316
+
317
+ // A specification for configuring a summary returned in a search
318
+ // response.
319
+ message SummarySpec {
320
+ // The number of top results to generate the summary from. If the number
321
+ // of results returned is less than `summaryResultCount`, the summary is
322
+ // generated from all of the results.
117
323
  //
118
- // At most 5 snippets will be returned for each SearchResult.
119
- int32 max_snippet_count = 1;
324
+ // At most five results can be used to generate a summary.
325
+ int32 summary_result_count = 1;
120
326
 
121
- // if true, only snippet reference is returned.
122
- bool reference_only = 2;
327
+ // Specifies whether to include citations in the summary. The default
328
+ // value is `false`.
329
+ //
330
+ // When this field is set to `true`, summaries include in-line citation
331
+ // numbers.
332
+ //
333
+ // Example summary including citations:
334
+ //
335
+ // BigQuery is Google Cloud's fully managed and completely serverless
336
+ // enterprise data warehouse [1]. BigQuery supports all data types, works
337
+ // across clouds, and has built-in machine learning and business
338
+ // intelligence, all within a unified platform [2, 3].
339
+ //
340
+ // The citation numbers refer to the returned search results and are
341
+ // 1-indexed. For example, [1] means that the sentence is attributed to
342
+ // the first search result. [2, 3] means that the sentence is attributed
343
+ // to both the second and third search results.
344
+ bool include_citations = 2;
345
+
346
+ // Specifies whether to filter out adversarial queries. The default value
347
+ // is `false`.
348
+ //
349
+ // Google employs search-query classification to detect adversarial
350
+ // queries. No summary is returned if the search query is classified as an
351
+ // adversarial query. For example, a user might ask a question regarding
352
+ // negative comments about the company or submit a query designed to
353
+ // generate unsafe, policy-violating output. If this field is set to
354
+ // `true`, we skip generating summaries for adversarial queries and return
355
+ // fallback messages instead.
356
+ bool ignore_adversarial_query = 3;
357
+
358
+ // Specifies whether to filter out queries that are not summary-seeking.
359
+ // The default value is `false`.
360
+ //
361
+ // Google employs search-query classification to detect summary-seeking
362
+ // queries. No summary is returned if the search query is classified as a
363
+ // non-summary seeking query. For example, `why is the sky blue` and `Who
364
+ // is the best soccer player in the world?` are summary-seeking queries,
365
+ // but `SFO airport` and `world cup 2026` are not. They are most likely
366
+ // navigational queries. If this field is set to `true`, we skip
367
+ // generating summaries for non-summary seeking queries and return
368
+ // fallback messages instead.
369
+ bool ignore_non_summary_seeking_query = 4;
370
+
371
+ // Language code for Summary. Use language tags defined by
372
+ // [BCP47][https://www.rfc-editor.org/rfc/bcp/bcp47.txt].
373
+ string language_code = 6;
123
374
  }
124
375
 
125
- // If there is no snippet spec provided, there will be no snippet in the
126
- // search result.
376
+ // If `snippetSpec` is not specified, snippets are not included in the
377
+ // search response.
127
378
  SnippetSpec snippet_spec = 1;
379
+
380
+ // If `summarySpec` is not specified, summaries are not included in the
381
+ // search response.
382
+ SummarySpec summary_spec = 2;
128
383
  }
129
384
 
130
385
  // Required. The resource name of the Search serving config, such as
@@ -150,9 +405,12 @@ message SearchRequest {
150
405
  // Raw search query.
151
406
  string query = 3;
152
407
 
408
+ // Raw image query.
409
+ ImageQuery image_query = 19;
410
+
153
411
  // Maximum number of [Document][google.cloud.discoveryengine.v1.Document]s to
154
412
  // return. If unspecified, defaults to a reasonable value. The maximum allowed
155
- // value is 100. Values above 100 will be coerced to 100.
413
+ // value is 100. Values above 100 are coerced to 100.
156
414
  //
157
415
  // If this field is negative, an `INVALID_ARGUMENT` is returned.
158
416
  int32 page_size = 4;
@@ -177,11 +435,36 @@ message SearchRequest {
177
435
  // If this field is negative, an `INVALID_ARGUMENT` is returned.
178
436
  int32 offset = 6;
179
437
 
438
+ // The filter syntax consists of an expression language for constructing a
439
+ // predicate from one or more fields of the documents being filtered. Filter
440
+ // expression is case-sensitive.
441
+ //
442
+ // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
443
+ string filter = 7;
444
+
445
+ // The order in which documents are returned. Documents can be ordered by
446
+ // a field in an [Document][google.cloud.discoveryengine.v1.Document] object.
447
+ // Leave it unset if ordered by relevance. `order_by` expression is
448
+ // case-sensitive.
449
+ //
450
+ // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
451
+ string order_by = 8;
452
+
180
453
  // Information about the end user.
181
- // Highly recommended for analytics. The user_agent string in UserInfo will
182
- // be used to deduce device_type for analytics.
454
+ // Highly recommended for analytics.
455
+ // [UserInfo.user_agent][google.cloud.discoveryengine.v1.UserInfo.user_agent]
456
+ // is used to deduce `device_type` for analytics.
183
457
  UserInfo user_info = 21;
184
458
 
459
+ // Facet specifications for faceted search. If empty, no facets are returned.
460
+ //
461
+ // A maximum of 100 values are allowed. Otherwise, an `INVALID_ARGUMENT`
462
+ // error is returned.
463
+ repeated FacetSpec facet_specs = 9;
464
+
465
+ // Boost specification to boost certain documents.
466
+ BoostSpec boost_spec = 10;
467
+
185
468
  // Additional search parameters.
186
469
  //
187
470
  // For public website search only, supported values are:
@@ -194,11 +477,11 @@ message SearchRequest {
194
477
  map<string, google.protobuf.Value> params = 11;
195
478
 
196
479
  // The query expansion specification that specifies the conditions under which
197
- // query expansion will occur.
480
+ // query expansion occurs.
198
481
  QueryExpansionSpec query_expansion_spec = 13;
199
482
 
200
483
  // The spell correction specification that specifies the mode under
201
- // which spell correction will take effect.
484
+ // which spell correction takes effect.
202
485
  SpellCorrectionSpec spell_correction_spec = 14;
203
486
 
204
487
  // A unique identifier for tracking visitors. For example, this could be
@@ -217,12 +500,11 @@ message SearchRequest {
217
500
  // characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
218
501
  string user_pseudo_id = 15;
219
502
 
220
- // The content search spec that configs the desired behavior of content
221
- // search.
503
+ // A specification for configuring the behavior of content search.
222
504
  ContentSearchSpec content_search_spec = 24;
223
505
 
224
506
  // Whether to turn on safe search. This is only supported for
225
- // [ContentConfig.PUBLIC_WEBSITE][].
507
+ // website search.
226
508
  bool safe_search = 20;
227
509
 
228
510
  // The user labels applied to a resource must meet the following requirements:
@@ -260,9 +542,118 @@ message SearchResponse {
260
542
  Document document = 2;
261
543
  }
262
544
 
545
+ // A facet result.
546
+ message Facet {
547
+ // A facet value which contains value names and their count.
548
+ message FacetValue {
549
+ // A facet value which contains values.
550
+ oneof facet_value {
551
+ // Text value of a facet, such as "Black" for facet "colors".
552
+ string value = 1;
553
+
554
+ // Interval value for a facet, such as [10, 20) for facet "price". It
555
+ // matches
556
+ // [SearchRequest.FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1.SearchRequest.FacetSpec.FacetKey.intervals].
557
+ Interval interval = 2;
558
+ }
559
+
560
+ // Number of items that have this facet value.
561
+ int64 count = 3;
562
+ }
563
+
564
+ // The key for this facet. E.g., "colors" or "price". It matches
565
+ // [SearchRequest.FacetSpec.FacetKey.key][google.cloud.discoveryengine.v1.SearchRequest.FacetSpec.FacetKey.key].
566
+ string key = 1;
567
+
568
+ // The facet values for this field.
569
+ repeated FacetValue values = 2;
570
+
571
+ // Whether the facet is dynamically generated.
572
+ bool dynamic_facet = 3;
573
+ }
574
+
575
+ // Summary of the top N search result specified by the summary spec.
576
+ message Summary {
577
+ // Safety Attribute categories and their associated confidence scores.
578
+ message SafetyAttributes {
579
+ // The display names of Safety Attribute categories associated with the
580
+ // generated content. Order matches the Scores.
581
+ repeated string categories = 1;
582
+
583
+ // The confidence scores of the each category, higher
584
+ // value means higher confidence. Order matches the Categories.
585
+ repeated float scores = 2;
586
+ }
587
+
588
+ // An Enum for summary-skipped reasons.
589
+ enum SummarySkippedReason {
590
+ // Default value. The summary skipped reason is not specified.
591
+ SUMMARY_SKIPPED_REASON_UNSPECIFIED = 0;
592
+
593
+ // The adversarial query ignored case.
594
+ //
595
+ // Only populated when
596
+ // [SummarySpec.ignore_adversarial_query][google.cloud.discoveryengine.v1.SearchRequest.ContentSearchSpec.SummarySpec.ignore_adversarial_query]
597
+ // is set to `true`.
598
+ ADVERSARIAL_QUERY_IGNORED = 1;
599
+
600
+ // The non-summary seeking query ignored case.
601
+ //
602
+ // Only populated when
603
+ // [SummarySpec.ignore_non_summary_seeking_query][google.cloud.discoveryengine.v1.SearchRequest.ContentSearchSpec.SummarySpec.ignore_non_summary_seeking_query]
604
+ // is set to `true`.
605
+ NON_SUMMARY_SEEKING_QUERY_IGNORED = 2;
606
+
607
+ // The out-of-domain query ignored case.
608
+ //
609
+ // Google skips the summary if there are no high-relevance search results.
610
+ // For example, the data store contains facts about company A but the
611
+ // user query is asking questions about company B.
612
+ OUT_OF_DOMAIN_QUERY_IGNORED = 3;
613
+
614
+ // The potential policy violation case.
615
+ //
616
+ // Google skips the summary if there is a potential policy violation
617
+ // detected. This includes content that may be violent or toxic.
618
+ POTENTIAL_POLICY_VIOLATION = 4;
619
+
620
+ // The LLM addon not enabled case.
621
+ //
622
+ // Google skips the summary if the LLM addon is not enabled.
623
+ LLM_ADDON_NOT_ENABLED = 5;
624
+ }
625
+
626
+ // The summary content.
627
+ string summary_text = 1;
628
+
629
+ // Additional summary-skipped reasons. This provides the reason for ignored
630
+ // cases. If nothing is skipped, this field is not set.
631
+ repeated SummarySkippedReason summary_skipped_reasons = 2;
632
+
633
+ // A collection of Safety Attribute categories and their associated
634
+ // confidence scores.
635
+ SafetyAttributes safety_attributes = 3;
636
+ }
637
+
638
+ // Information describing query expansion including whether expansion has
639
+ // occurred.
640
+ message QueryExpansionInfo {
641
+ // Bool describing whether query expansion has occurred.
642
+ bool expanded_query = 1;
643
+
644
+ // Number of pinned results. This field will only be set when expansion
645
+ // happens and
646
+ // [SearchRequest.QueryExpansionSpec.pin_unexpanded_results][google.cloud.discoveryengine.v1.SearchRequest.QueryExpansionSpec.pin_unexpanded_results]
647
+ // is set to true.
648
+ int64 pinned_result_count = 2;
649
+ }
650
+
263
651
  // A list of matched documents. The order represents the ranking.
264
652
  repeated SearchResult results = 1;
265
653
 
654
+ // Results of facets requested by user.
655
+ repeated Facet facets = 2;
656
+
266
657
  // The estimated total count of matched items irrespective of pagination. The
267
658
  // count of [results][google.cloud.discoveryengine.v1.SearchResponse.results]
268
659
  // returned by pagination may be less than the
@@ -276,6 +667,14 @@ message SearchResponse {
276
667
  // performance.
277
668
  string attribution_token = 4;
278
669
 
670
+ // The URI of a customer-defined redirect page. If redirect action is
671
+ // triggered, no search is performed, and only
672
+ // [redirect_uri][google.cloud.discoveryengine.v1.SearchResponse.redirect_uri]
673
+ // and
674
+ // [attribution_token][google.cloud.discoveryengine.v1.SearchResponse.attribution_token]
675
+ // are set in the response.
676
+ string redirect_uri = 12;
677
+
279
678
  // A token that can be sent as
280
679
  // [SearchRequest.page_token][google.cloud.discoveryengine.v1.SearchRequest.page_token]
281
680
  // to retrieve the next page. If this field is omitted, there are no
@@ -286,4 +685,13 @@ message SearchResponse {
286
685
  // is AUTOMATIC, then the search results are based on corrected_query.
287
686
  // Otherwise the original query is used for search.
288
687
  string corrected_query = 7;
688
+
689
+ // A summary as part of the search results.
690
+ // This field is only returned if
691
+ // [SearchRequest.ContentSearchSpec.summary_spec][google.cloud.discoveryengine.v1.SearchRequest.ContentSearchSpec.summary_spec]
692
+ // is set.
693
+ Summary summary = 9;
694
+
695
+ // Query expansion information for the returned results.
696
+ QueryExpansionInfo query_expansion_info = 14;
289
697
  }