@google-shopping/reports 0.11.0 → 0.12.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.
@@ -0,0 +1,1258 @@
1
+ // Copyright 2025 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.shopping.merchant.reports.v1;
18
+
19
+ import "google/api/annotations.proto";
20
+ import "google/api/client.proto";
21
+ import "google/api/field_behavior.proto";
22
+ import "google/protobuf/timestamp.proto";
23
+ import "google/shopping/type/types.proto";
24
+ import "google/type/date.proto";
25
+
26
+ option csharp_namespace = "Google.Shopping.Merchant.Reports.V1";
27
+ option go_package = "cloud.google.com/go/shopping/merchant/reports/apiv1/reportspb;reportspb";
28
+ option java_multiple_files = true;
29
+ option java_outer_classname = "ReportsProto";
30
+ option java_package = "com.google.shopping.merchant.reports.v1";
31
+ option php_namespace = "Google\\Shopping\\Merchant\\Reports\\V1";
32
+ option ruby_package = "Google::Shopping::Merchant::Reports::V1";
33
+
34
+ // Service for retrieving reports and insights about your products, their
35
+ // performance, and their competitive environment on Google.
36
+ service ReportService {
37
+ option (google.api.default_host) = "merchantapi.googleapis.com";
38
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/content";
39
+
40
+ // Retrieves a report defined by a search query. The response might contain
41
+ // fewer rows than specified by `page_size`. Rely on `next_page_token` to
42
+ // determine if there are more rows to be requested.
43
+ rpc Search(SearchRequest) returns (SearchResponse) {
44
+ option (google.api.http) = {
45
+ post: "/reports/v1/{parent=accounts/*}/reports:search"
46
+ body: "*"
47
+ };
48
+ option (google.api.method_signature) = "parent";
49
+ }
50
+ }
51
+
52
+ // Request message for the `ReportService.Search` method.
53
+ message SearchRequest {
54
+ // Required. Id of the account making the call. Must be a standalone account
55
+ // or an MCA subaccount. Format: accounts/{account}
56
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
57
+
58
+ // Required. Query that defines a report to be retrieved.
59
+ //
60
+ // For details on how to construct your query, see the [Query Language
61
+ // guide](/merchant/api/guides/reports/query-language). For the full list of
62
+ // available tables and fields, see the [Available
63
+ // fields](/merchant/api/reference/rest/reports_v1/accounts.reports).
64
+ string query = 2 [(google.api.field_behavior) = REQUIRED];
65
+
66
+ // Optional. Number of `ReportRows` to retrieve in a single page. Defaults to
67
+ // 1000. Values above 5000 are coerced to 5000.
68
+ int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
69
+
70
+ // Optional. Token of the page to retrieve. If not specified, the first page
71
+ // of results is returned. In order to request the next page of results, the
72
+ // value obtained from `next_page_token` in the previous response should be
73
+ // used.
74
+ string page_token = 4 [(google.api.field_behavior) = OPTIONAL];
75
+ }
76
+
77
+ // Response message for the `ReportService.Search` method.
78
+ message SearchResponse {
79
+ // Rows that matched the search query.
80
+ repeated ReportRow results = 1;
81
+
82
+ // Token which can be sent as `page_token` to retrieve the next page. If
83
+ // omitted, there are no subsequent pages.
84
+ string next_page_token = 2;
85
+ }
86
+
87
+ // Result row returned from the search query.
88
+ //
89
+ // Only the message corresponding to the queried table is populated in the
90
+ // response. Within the populated message, only the fields requested explicitly
91
+ // in the query are populated.
92
+ message ReportRow {
93
+ // Fields available for query in `product_performance_view` table.
94
+ ProductPerformanceView product_performance_view = 1;
95
+
96
+ // Fields available for query in `non_product_performance_view` table.
97
+ NonProductPerformanceView non_product_performance_view = 7;
98
+
99
+ // Fields available for query in `product_view` table.
100
+ ProductView product_view = 2;
101
+
102
+ // Fields available for query in `price_competitiveness_product_view` table.
103
+ PriceCompetitivenessProductView price_competitiveness_product_view = 3;
104
+
105
+ // Fields available for query in `price_insights_product_view` table.
106
+ PriceInsightsProductView price_insights_product_view = 4;
107
+
108
+ // Fields available for query in `best_sellers_product_cluster_view` table.
109
+ BestSellersProductClusterView best_sellers_product_cluster_view = 5;
110
+
111
+ // Fields available for query in `best_sellers_brand_view` table.
112
+ BestSellersBrandView best_sellers_brand_view = 6;
113
+
114
+ // Fields available for query in `competitive_visibility_competitor_view`
115
+ // table.
116
+ CompetitiveVisibilityCompetitorView competitive_visibility_competitor_view =
117
+ 8;
118
+
119
+ // Fields available for query in `competitive_visibility_top_merchant_view`
120
+ // table.
121
+ CompetitiveVisibilityTopMerchantView
122
+ competitive_visibility_top_merchant_view = 9;
123
+
124
+ // Fields available for query in `competitive_visibility_benchmark_view`
125
+ // table.
126
+ CompetitiveVisibilityBenchmarkView competitive_visibility_benchmark_view = 10;
127
+ }
128
+
129
+ // Fields available for query in `product_performance_view` table.
130
+ //
131
+ // Product performance data for your account, including performance metrics (for
132
+ // example, `clicks`) and dimensions according to which performance metrics are
133
+ // segmented (for example, `offer_id`). Values of product dimensions, such as
134
+ // `offer_id`, reflect the state of a product at the time of the impression.
135
+ //
136
+ // Segment fields cannot be selected in queries without also selecting at least
137
+ // one metric field.
138
+ //
139
+ // Values are only set for fields requested explicitly in the request's search
140
+ // query.
141
+ message ProductPerformanceView {
142
+ // Marketing method to which metrics apply. Segment.
143
+ optional MarketingMethod.MarketingMethodEnum marketing_method = 1;
144
+
145
+ // Date in the merchant timezone to which metrics apply. Segment.
146
+ //
147
+ // Condition on `date` is required in the `WHERE` clause.
148
+ google.type.Date date = 2;
149
+
150
+ // First day of the week (Monday) of the metrics date in the merchant
151
+ // timezone. Segment.
152
+ google.type.Date week = 3;
153
+
154
+ // Code of the country where the customer is located at the time of the event.
155
+ // Represented in the ISO 3166 format. Segment.
156
+ //
157
+ // If the customer country cannot be determined, a special 'ZZ' code is
158
+ // returned.
159
+ optional string customer_country_code = 4;
160
+
161
+ // Merchant-provided id of the product. Segment.
162
+ optional string offer_id = 5;
163
+
164
+ // Title of the product. Segment.
165
+ optional string title = 6;
166
+
167
+ // Brand of the product. Segment.
168
+ optional string brand = 7;
169
+
170
+ // [Product category (1st
171
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
172
+ // in Google's product taxonomy. Segment.
173
+ optional string category_l1 = 8;
174
+
175
+ // [Product category (2nd
176
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
177
+ // in Google's product taxonomy. Segment.
178
+ optional string category_l2 = 9;
179
+
180
+ // [Product category (3rd
181
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
182
+ // in Google's product taxonomy. Segment.
183
+ optional string category_l3 = 10;
184
+
185
+ // [Product category (4th
186
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
187
+ // in Google's product taxonomy. Segment.
188
+ optional string category_l4 = 11;
189
+
190
+ // [Product category (5th
191
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
192
+ // in Google's product taxonomy. Segment.
193
+ optional string category_l5 = 12;
194
+
195
+ // [Product type (1st
196
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
197
+ // in merchant's own product taxonomy. Segment.
198
+ optional string product_type_l1 = 13;
199
+
200
+ // [Product type (2nd
201
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
202
+ // in merchant's own product taxonomy. Segment.
203
+ optional string product_type_l2 = 14;
204
+
205
+ // [Product type (3rd
206
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
207
+ // in merchant's own product taxonomy. Segment.
208
+ optional string product_type_l3 = 15;
209
+
210
+ // [Product type (4th
211
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
212
+ // in merchant's own product taxonomy. Segment.
213
+ optional string product_type_l4 = 16;
214
+
215
+ // [Product type (5th
216
+ // level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type)
217
+ // in merchant's own product taxonomy. Segment.
218
+ optional string product_type_l5 = 17;
219
+
220
+ // Custom label 0 for custom grouping of products. Segment.
221
+ optional string custom_label0 = 18;
222
+
223
+ // Custom label 1 for custom grouping of products. Segment.
224
+ optional string custom_label1 = 19;
225
+
226
+ // Custom label 2 for custom grouping of products. Segment.
227
+ optional string custom_label2 = 20;
228
+
229
+ // Custom label 3 for custom grouping of products. Segment.
230
+ optional string custom_label3 = 21;
231
+
232
+ // Custom label 4 for custom grouping of products. Segment.
233
+ optional string custom_label4 = 22;
234
+
235
+ // Number of clicks. Metric.
236
+ optional int64 clicks = 23;
237
+
238
+ // Number of times merchant's products are shown. Metric.
239
+ optional int64 impressions = 24;
240
+
241
+ // Click-through rate - the number of clicks merchant's products receive
242
+ // (clicks) divided by the number of times the products are shown
243
+ // (impressions). Metric.
244
+ optional double click_through_rate = 25;
245
+
246
+ // Number of conversions attributed to the product, reported on the conversion
247
+ // date. Depending on the attribution model, a conversion might be distributed
248
+ // across multiple clicks, where each click gets its own credit assigned. This
249
+ // metric is a sum of all such credits. Metric.
250
+ //
251
+ // Available only for the `FREE` traffic source.
252
+ optional double conversions = 26;
253
+
254
+ // Value of conversions attributed to the product, reported on the conversion
255
+ // date. Metric.
256
+ //
257
+ // Available only for the `FREE` traffic source.
258
+ google.shopping.type.Price conversion_value = 27;
259
+
260
+ // Number of conversions divided by the number of clicks, reported on the
261
+ // impression date. Metric.
262
+ //
263
+ // Available only for the `FREE` traffic source.
264
+ optional double conversion_rate = 28;
265
+ }
266
+
267
+ // Fields available for query in `product_view` table.
268
+ //
269
+ // Products in the current inventory. Products in this table are the same as in
270
+ // Products sub-API but not all product attributes from Products sub-API are
271
+ // available for query in this table. In contrast to Products sub-API, this
272
+ // table allows to filter the returned list of products by product attributes.
273
+ // To retrieve a single product by `id` or list all products, Products sub-API
274
+ // should be used.
275
+ //
276
+ // Values are only set for fields requested explicitly in the request's search
277
+ // query.
278
+ //
279
+ message ProductView {
280
+ // Item issue associated with the product.
281
+ message ItemIssue {
282
+ // Issue type.
283
+ message ItemIssueType {
284
+ // Error code of the issue, equivalent to the `code` of [Product
285
+ // issues](https://developers.google.com/shopping-content/guides/product-issues).
286
+ optional string code = 1;
287
+
288
+ // Canonical attribute name for attribute-specific issues.
289
+ optional string canonical_attribute = 2;
290
+ }
291
+
292
+ // How the issue affects the serving of the product.
293
+ message ItemIssueSeverity {
294
+ // Issue severity per reporting context.
295
+ message IssueSeverityPerReportingContext {
296
+ // Reporting context the issue applies to.
297
+ optional google.shopping.type.ReportingContext.ReportingContextEnum
298
+ reporting_context = 1;
299
+
300
+ // List of disapproved countries in the reporting context, represented
301
+ // in ISO 3166 format.
302
+ repeated string disapproved_countries = 2;
303
+
304
+ // List of demoted countries in the reporting context, represented in
305
+ // ISO 3166 format.
306
+ repeated string demoted_countries = 3;
307
+ }
308
+
309
+ // Issue severity aggregated for all reporting contexts.
310
+ enum AggregatedIssueSeverity {
311
+ // Not specified.
312
+ AGGREGATED_ISSUE_SEVERITY_UNSPECIFIED = 0;
313
+
314
+ // Issue disapproves the product in at least one reporting context.
315
+ DISAPPROVED = 1;
316
+
317
+ // Issue demotes the product in all reporting contexts it affects.
318
+ DEMOTED = 2;
319
+
320
+ // Issue resolution is `PENDING_PROCESSING`.
321
+ PENDING = 3;
322
+ }
323
+
324
+ // Issue severity per reporting context.
325
+ repeated IssueSeverityPerReportingContext severity_per_reporting_context =
326
+ 1;
327
+
328
+ // Aggregated severity of the issue for all reporting contexts it affects.
329
+ //
330
+ // **This field can be used for filtering the results.**
331
+ optional AggregatedIssueSeverity aggregated_severity = 2;
332
+ }
333
+
334
+ // How to resolve the issue.
335
+ enum ItemIssueResolution {
336
+ // Not specified.
337
+ ITEM_ISSUE_RESOLUTION_UNSPECIFIED = 0;
338
+
339
+ // The merchant has to fix the issue.
340
+ MERCHANT_ACTION = 1;
341
+
342
+ // The issue will be resolved automatically (for example, image crawl) or
343
+ // through a Google review. No merchant action is required now. Resolution
344
+ // might lead to another issue (for example, if crawl fails).
345
+ PENDING_PROCESSING = 2;
346
+ }
347
+
348
+ // Item issue type.
349
+ ItemIssueType type = 1;
350
+
351
+ // Item issue severity.
352
+ ItemIssueSeverity severity = 2;
353
+
354
+ // Item issue resolution.
355
+ optional ItemIssueResolution resolution = 3;
356
+ }
357
+
358
+ // Status of the product aggregated for all reporting contexts.
359
+ //
360
+ // Here's an example of how the aggregated status is computed:
361
+ //
362
+ // Free listings | Shopping ads | Status
363
+ // --------------|--------------|------------------------------
364
+ // Approved | Approved | ELIGIBLE
365
+ // Approved | Pending | ELIGIBLE
366
+ // Approved | Disapproved | ELIGIBLE_LIMITED
367
+ // Pending | Pending | PENDING
368
+ // Disapproved | Disapproved | NOT_ELIGIBLE_OR_DISAPPROVED
369
+ //
370
+ //
371
+ enum AggregatedReportingContextStatus {
372
+ // Not specified.
373
+ AGGREGATED_REPORTING_CONTEXT_STATUS_UNSPECIFIED = 0;
374
+
375
+ // Product is not eligible or is disapproved for all reporting contexts.
376
+ NOT_ELIGIBLE_OR_DISAPPROVED = 1;
377
+
378
+ // Product's status is pending in all reporting contexts.
379
+ PENDING = 2;
380
+
381
+ // Product is eligible for some (but not all) reporting contexts.
382
+ ELIGIBLE_LIMITED = 3;
383
+
384
+ // Product is eligible for all reporting contexts.
385
+ ELIGIBLE = 4;
386
+ }
387
+
388
+ // A product's [click
389
+ // potential](https://support.google.com/merchants/answer/188488) estimates
390
+ // its performance potential compared to highest performing products of the
391
+ // merchant. Click potential of a product helps merchants to prioritize which
392
+ // products to fix and helps them understand how products are performing
393
+ // against their potential.
394
+ enum ClickPotential {
395
+ // Unknown predicted clicks impact.
396
+ CLICK_POTENTIAL_UNSPECIFIED = 0;
397
+
398
+ // Potential to receive a low number of clicks compared to the highest
399
+ // performing products of the merchant.
400
+ LOW = 1;
401
+
402
+ // Potential to receive a moderate number of clicks compared to the highest
403
+ // performing products of the merchant.
404
+ MEDIUM = 2;
405
+
406
+ // Potential to receive a similar number of clicks as the highest performing
407
+ // products of the merchant.
408
+ HIGH = 3;
409
+ }
410
+
411
+ // REST ID of the product, in the form of
412
+ // `channel~languageCode~feedLabel~offerId`. Merchant API methods that operate
413
+ // on products take this as their `name` parameter.
414
+ //
415
+ // Required in the `SELECT` clause.
416
+ optional string id = 1;
417
+
418
+ // Channel of the product. Can be `ONLINE` or `LOCAL`.
419
+ optional google.shopping.type.Channel.ChannelEnum channel = 28;
420
+
421
+ // Language code of the product in BCP 47 format.
422
+ optional string language_code = 2;
423
+
424
+ // Feed label of the product.
425
+ optional string feed_label = 3;
426
+
427
+ // Merchant-provided id of the product.
428
+ optional string offer_id = 4;
429
+
430
+ // Title of the product.
431
+ optional string title = 5;
432
+
433
+ // Brand of the product.
434
+ optional string brand = 6;
435
+
436
+ // Product category (1st level) in [Google's product
437
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
438
+ optional string category_l1 = 7;
439
+
440
+ // Product category (2nd level) in [Google's product
441
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
442
+ optional string category_l2 = 8;
443
+
444
+ // Product category (3rd level) in [Google's product
445
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
446
+ optional string category_l3 = 9;
447
+
448
+ // Product category (4th level) in [Google's product
449
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
450
+ optional string category_l4 = 10;
451
+
452
+ // Product category (5th level) in [Google's product
453
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
454
+ optional string category_l5 = 11;
455
+
456
+ // Product type (1st level) in merchant's own [product
457
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
458
+ optional string product_type_l1 = 12;
459
+
460
+ // Product type (2nd level) in merchant's own [product
461
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
462
+ optional string product_type_l2 = 13;
463
+
464
+ // Product type (3rd level) in merchant's own [product
465
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
466
+ optional string product_type_l3 = 14;
467
+
468
+ // Product type (4th level) in merchant's own [product
469
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
470
+ optional string product_type_l4 = 15;
471
+
472
+ // Product type (5th level) in merchant's own [product
473
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
474
+ optional string product_type_l5 = 16;
475
+
476
+ // Product price. Absent if the information about the price of the product is
477
+ // not available.
478
+ google.shopping.type.Price price = 17;
479
+
480
+ // [Condition](https://support.google.com/merchants/answer/6324469) of the
481
+ // product.
482
+ optional string condition = 18;
483
+
484
+ // [Availability](https://support.google.com/merchants/answer/6324448) of the
485
+ // product.
486
+ optional string availability = 19;
487
+
488
+ // Normalized [shipping
489
+ // label](https://support.google.com/merchants/answer/6324504) specified in
490
+ // the data source.
491
+ optional string shipping_label = 20;
492
+
493
+ // List of Global Trade Item Numbers (GTINs) of the product.
494
+ repeated string gtin = 21;
495
+
496
+ // Item group id provided by the merchant for grouping variants together.
497
+ optional string item_group_id = 22;
498
+
499
+ // Link to the processed image of the product, hosted on the Google
500
+ // infrastructure.
501
+ optional string thumbnail_link = 23;
502
+
503
+ // The time the merchant created the product in timestamp seconds.
504
+ google.protobuf.Timestamp creation_time = 24;
505
+
506
+ // Expiration date for the product, specified on insertion.
507
+ google.type.Date expiration_date = 25;
508
+
509
+ // Aggregated status.
510
+ optional AggregatedReportingContextStatus
511
+ aggregated_reporting_context_status = 26;
512
+
513
+ // List of item issues for the product.
514
+ //
515
+ // **This field cannot be used for sorting the results.**
516
+ //
517
+ // **Only selected attributes of this field (for example,
518
+ // `item_issues.severity.aggregated_severity`) can be used for filtering the
519
+ // results.**
520
+ repeated ItemIssue item_issues = 27;
521
+
522
+ // Estimated performance potential compared to highest performing products of
523
+ // the merchant.
524
+ ClickPotential click_potential = 29;
525
+
526
+ // Rank of the product based on its click potential. A product with
527
+ // `click_potential_rank` 1 has the highest click potential among the
528
+ // merchant's products that fulfill the search query conditions.
529
+ optional int64 click_potential_rank = 30;
530
+ }
531
+
532
+ // Fields available for query in `price_competitiveness_product_view` table.
533
+ //
534
+ // [Price competitiveness](https://support.google.com/merchants/answer/9626903)
535
+ // report.
536
+ //
537
+ // Values are only set for fields requested explicitly in the request's search
538
+ // query.
539
+ message PriceCompetitivenessProductView {
540
+ // Country of the price benchmark. Represented in the ISO 3166 format.
541
+ //
542
+ // Required in the `SELECT` clause.
543
+ optional string report_country_code = 1;
544
+
545
+ // REST ID of the product, in the form of
546
+ // `channel~languageCode~feedLabel~offerId`. Can be used to join data with the
547
+ // `product_view` table.
548
+ //
549
+ // Required in the `SELECT` clause.
550
+ optional string id = 2;
551
+
552
+ // Merchant-provided id of the product.
553
+ optional string offer_id = 3;
554
+
555
+ // Title of the product.
556
+ optional string title = 4;
557
+
558
+ // Brand of the product.
559
+ optional string brand = 5;
560
+
561
+ // Product category (1st level) in [Google's product
562
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
563
+ optional string category_l1 = 6;
564
+
565
+ // Product category (2nd level) in [Google's product
566
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
567
+ optional string category_l2 = 7;
568
+
569
+ // Product category (3rd level) in [Google's product
570
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
571
+ optional string category_l3 = 8;
572
+
573
+ // Product category (4th level) in [Google's product
574
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
575
+ optional string category_l4 = 9;
576
+
577
+ // Product category (5th level) in [Google's product
578
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
579
+ optional string category_l5 = 10;
580
+
581
+ // Product type (1st level) in merchant's own [product
582
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
583
+ optional string product_type_l1 = 11;
584
+
585
+ // Product type (2nd level) in merchant's own [product
586
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
587
+ optional string product_type_l2 = 12;
588
+
589
+ // Product type (3rd level) in merchant's own [product
590
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
591
+ optional string product_type_l3 = 13;
592
+
593
+ // Product type (4th level) in merchant's own [product
594
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
595
+ optional string product_type_l4 = 14;
596
+
597
+ // Product type (5th level) in merchant's own [product
598
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
599
+ optional string product_type_l5 = 15;
600
+
601
+ // Current price of the product.
602
+ google.shopping.type.Price price = 16;
603
+
604
+ // Latest available price benchmark for the product's catalog in the benchmark
605
+ // country.
606
+ google.shopping.type.Price benchmark_price = 17;
607
+ }
608
+
609
+ // Fields available for query in `price_insights_product_view` table.
610
+ //
611
+ // [Price insights](https://support.google.com/merchants/answer/11916926)
612
+ // report.
613
+ //
614
+ // Values are only set for fields requested explicitly in the request's search
615
+ // query.
616
+ message PriceInsightsProductView {
617
+ // Predicted effectiveness bucket.
618
+ //
619
+ // Effectiveness indicates which products would benefit most from price
620
+ // changes. This rating takes into consideration the performance boost
621
+ // predicted by adjusting the sale price and the difference between your
622
+ // current price and the suggested price. Price suggestions with `HIGH`
623
+ // effectiveness are predicted to drive the largest increase in performance.
624
+ enum Effectiveness {
625
+ // Effectiveness is unknown.
626
+ EFFECTIVENESS_UNSPECIFIED = 0;
627
+
628
+ // Effectiveness is low.
629
+ LOW = 1;
630
+
631
+ // Effectiveness is medium.
632
+ MEDIUM = 2;
633
+
634
+ // Effectiveness is high.
635
+ HIGH = 3;
636
+ }
637
+
638
+ // REST ID of the product, in the form of
639
+ // `channel~languageCode~feedLabel~offerId`. Can be used to join data with the
640
+ // `product_view` table.
641
+ //
642
+ // Required in the `SELECT` clause.
643
+ optional string id = 1;
644
+
645
+ // Merchant-provided id of the product.
646
+ optional string offer_id = 2;
647
+
648
+ // Title of the product.
649
+ optional string title = 3;
650
+
651
+ // Brand of the product.
652
+ optional string brand = 4;
653
+
654
+ // Product category (1st level) in [Google's product
655
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
656
+ optional string category_l1 = 5;
657
+
658
+ // Product category (2nd level) in [Google's product
659
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
660
+ optional string category_l2 = 6;
661
+
662
+ // Product category (3rd level) in [Google's product
663
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
664
+ optional string category_l3 = 7;
665
+
666
+ // Product category (4th level) in [Google's product
667
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
668
+ optional string category_l4 = 8;
669
+
670
+ // Product category (5th level) in [Google's product
671
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
672
+ optional string category_l5 = 9;
673
+
674
+ // Product type (1st level) in merchant's own [product
675
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
676
+ optional string product_type_l1 = 10;
677
+
678
+ // Product type (2nd level) in merchant's own [product
679
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
680
+ optional string product_type_l2 = 11;
681
+
682
+ // Product type (3rd level) in merchant's own [product
683
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
684
+ optional string product_type_l3 = 12;
685
+
686
+ // Product type (4th level) in merchant's own [product
687
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
688
+ optional string product_type_l4 = 13;
689
+
690
+ // Product type (5th level) in merchant's own [product
691
+ // taxonomy](https://support.google.com/merchants/answer/6324406).
692
+ optional string product_type_l5 = 14;
693
+
694
+ // Current price of the product.
695
+ google.shopping.type.Price price = 15;
696
+
697
+ // Latest suggested price for the product.
698
+ google.shopping.type.Price suggested_price = 16;
699
+
700
+ // Predicted change in impressions as a fraction after introducing the
701
+ // suggested price compared to current active price. For example, 0.05 is a 5%
702
+ // predicted increase in impressions.
703
+ optional double predicted_impressions_change_fraction = 17;
704
+
705
+ // Predicted change in clicks as a fraction after introducing the
706
+ // suggested price compared to current active price. For example, 0.05 is a 5%
707
+ // predicted increase in clicks.
708
+ optional double predicted_clicks_change_fraction = 18;
709
+
710
+ // Predicted change in conversions as a fraction after introducing the
711
+ // suggested price compared to current active price. For example, 0.05 is a 5%
712
+ // predicted increase in conversions).
713
+ optional double predicted_conversions_change_fraction = 19;
714
+
715
+ // The predicted effectiveness of applying the price suggestion, bucketed.
716
+ Effectiveness effectiveness = 22;
717
+ }
718
+
719
+ // Fields available for query in `best_sellers_product_cluster_view` table.
720
+ //
721
+ // [Best sellers](https://support.google.com/merchants/answer/9488679) report
722
+ // with top product clusters. A product cluster is a grouping for different
723
+ // offers and variants that represent the same product, for example, Google
724
+ // Pixel 7.
725
+ //
726
+ // Values are only set for fields requested explicitly in the request's search
727
+ // query.
728
+ message BestSellersProductClusterView {
729
+ // Status of the product cluster or brand in your inventory.
730
+ enum InventoryStatus {
731
+ // Not specified.
732
+ INVENTORY_STATUS_UNSPECIFIED = 0;
733
+
734
+ // You have a product for this product cluster or brand in stock.
735
+ IN_STOCK = 1;
736
+
737
+ // You have a product for this product cluster or brand in inventory but it
738
+ // is currently out of stock.
739
+ OUT_OF_STOCK = 2;
740
+
741
+ // You do not have a product for this product cluster or brand in inventory.
742
+ NOT_IN_INVENTORY = 3;
743
+ }
744
+
745
+ // Report date. The value of this field can only be one of the following:
746
+ //
747
+ // * The first day of the week (Monday) for weekly reports,
748
+ // * The first day of the month for monthly reports.
749
+ //
750
+ // Required in the `SELECT` clause. If a `WHERE` condition on `report_date` is
751
+ // not specified in the query, the latest available weekly or monthly report
752
+ // is returned.
753
+ google.type.Date report_date = 1;
754
+
755
+ // Granularity of the report. The ranking can be done over a week or a month
756
+ // timeframe.
757
+ //
758
+ // Required in the `SELECT` clause. Condition on `report_granularity` is
759
+ // required in the `WHERE` clause.
760
+ optional ReportGranularity.ReportGranularityEnum report_granularity = 2;
761
+
762
+ // Country where the ranking is calculated. Represented in the ISO 3166
763
+ // format.
764
+ //
765
+ // Required in the `SELECT` clause. Condition on `report_country_code` is
766
+ // required in the `WHERE` clause.
767
+ optional string report_country_code = 3;
768
+
769
+ // Google product category ID to calculate the ranking for, represented in
770
+ // [Google's product
771
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
772
+ //
773
+ // Required in the `SELECT` clause. If a `WHERE` condition on
774
+ // `report_category_id` is not specified in the query, rankings for all
775
+ // top-level categories are returned.
776
+ optional int64 report_category_id = 4;
777
+
778
+ // Title of the product cluster.
779
+ optional string title = 6;
780
+
781
+ // Brand of the product cluster.
782
+ optional string brand = 7;
783
+
784
+ // Product category (1st level) of the product cluster, represented in
785
+ // [Google's product
786
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
787
+ optional string category_l1 = 8;
788
+
789
+ // Product category (2nd level) of the product cluster, represented in
790
+ // [Google's product
791
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
792
+ optional string category_l2 = 9;
793
+
794
+ // Product category (3rd level) of the product cluster, represented in
795
+ // [Google's product
796
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
797
+ optional string category_l3 = 10;
798
+
799
+ // Product category (4th level) of the product cluster, represented in
800
+ // [Google's product
801
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
802
+ optional string category_l4 = 11;
803
+
804
+ // Product category (5th level) of the product cluster, represented in
805
+ // [Google's product
806
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
807
+ optional string category_l5 = 12;
808
+
809
+ // GTINs of example variants of the product cluster.
810
+ repeated string variant_gtins = 13;
811
+
812
+ // Whether the product cluster is `IN_STOCK` in your product data source in at
813
+ // least one of the countries, `OUT_OF_STOCK` in your product data source in
814
+ // all countries, or `NOT_IN_INVENTORY` at all.
815
+ //
816
+ // The field doesn't take the Best sellers report country filter into account.
817
+ optional InventoryStatus inventory_status = 14;
818
+
819
+ // Whether there is at least one product of the brand currently `IN_STOCK` in
820
+ // your product data source in at least one of the countries, all products are
821
+ // `OUT_OF_STOCK` in your product data source in all countries, or
822
+ // `NOT_IN_INVENTORY`.
823
+ //
824
+ // The field doesn't take the Best sellers report country filter into account.
825
+ optional InventoryStatus brand_inventory_status = 15;
826
+
827
+ // Popularity of the product cluster on Ads and organic surfaces, in the
828
+ // selected category and country, based on the estimated number of units sold.
829
+ optional int64 rank = 16;
830
+
831
+ // Popularity rank in the previous week or month.
832
+ optional int64 previous_rank = 17;
833
+
834
+ // Estimated demand in relation to the product cluster with the highest
835
+ // popularity rank in the same category and country.
836
+ optional RelativeDemand.RelativeDemandEnum relative_demand = 18;
837
+
838
+ // Estimated demand in relation to the product cluster with the highest
839
+ // popularity rank in the same category and country in the previous week or
840
+ // month.
841
+ optional RelativeDemand.RelativeDemandEnum previous_relative_demand = 19;
842
+
843
+ // Change in the estimated demand. Whether it rose, sank or remained flat.
844
+ optional RelativeDemandChangeType.RelativeDemandChangeTypeEnum
845
+ relative_demand_change = 20;
846
+ }
847
+
848
+ // Fields available for query in `best_sellers_brand_view` table.
849
+ //
850
+ // [Best sellers](https://support.google.com/merchants/answer/9488679) report
851
+ // with top brands.
852
+ //
853
+ // Values are only set for fields requested explicitly in the request's search
854
+ // query.
855
+ message BestSellersBrandView {
856
+ // Report date. The value of this field can only be one of the following:
857
+ //
858
+ // * The first day of the week (Monday) for weekly reports,
859
+ // * The first day of the month for monthly reports.
860
+ //
861
+ // Required in the `SELECT` clause. If a `WHERE` condition on `report_date` is
862
+ // not specified in the query, the latest available weekly or monthly report
863
+ // is returned.
864
+ google.type.Date report_date = 1;
865
+
866
+ // Granularity of the report. The ranking can be done over a week or a month
867
+ // timeframe.
868
+ //
869
+ // Required in the `SELECT` clause. Condition on `report_granularity` is
870
+ // required in the `WHERE` clause.
871
+ optional ReportGranularity.ReportGranularityEnum report_granularity = 2;
872
+
873
+ // Country where the ranking is calculated. Represented in the ISO 3166
874
+ // format.
875
+ //
876
+ // Required in the `SELECT` clause. Condition on `report_country_code` is
877
+ // required in the `WHERE` clause.
878
+ optional string report_country_code = 3;
879
+
880
+ // Google product category ID to calculate the ranking for, represented in
881
+ // [Google's product
882
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
883
+ //
884
+ // Required in the `SELECT` clause. If a `WHERE` condition on
885
+ // `report_category_id` is not specified in the query, rankings for all
886
+ // top-level categories are returned.
887
+ optional int64 report_category_id = 4;
888
+
889
+ // Name of the brand.
890
+ optional string brand = 6;
891
+
892
+ // Popularity of the brand on Ads and organic surfaces, in the selected
893
+ // category and country, based on the estimated number of units sold.
894
+ optional int64 rank = 7;
895
+
896
+ // Popularity rank in the previous week or month.
897
+ optional int64 previous_rank = 8;
898
+
899
+ // Estimated demand in relation to the brand with the highest popularity rank
900
+ // in the same category and country.
901
+ optional RelativeDemand.RelativeDemandEnum relative_demand = 9;
902
+
903
+ // Estimated demand in relation to the brand with the highest popularity rank
904
+ // in the same category and country in the previous week or month.
905
+ optional RelativeDemand.RelativeDemandEnum previous_relative_demand = 10;
906
+
907
+ // Change in the estimated demand. Whether it rose, sank or remained flat.
908
+ optional RelativeDemandChangeType.RelativeDemandChangeTypeEnum
909
+ relative_demand_change = 11;
910
+ }
911
+
912
+ // Fields available for query in `non_product_performance_view` table.
913
+ //
914
+ // Performance data on images and online store links leading to your non-product
915
+ // pages. This includes performance metrics (for example, `clicks`)
916
+ // and dimensions according to which performance metrics are segmented (for
917
+ // example, `date`).
918
+ //
919
+ // Segment fields cannot be selected in queries without also selecting at least
920
+ // one metric field.
921
+ //
922
+ // Values are only set for fields requested explicitly in the request's search
923
+ // query.
924
+ message NonProductPerformanceView {
925
+ // Date in the merchant timezone to which metrics apply. Segment.
926
+ //
927
+ // Condition on `date` is required in the `WHERE` clause.
928
+ google.type.Date date = 1;
929
+
930
+ // First day of the week (Monday) of the metrics date in the merchant
931
+ // timezone. Segment.
932
+ google.type.Date week = 2;
933
+
934
+ // Number of clicks on images and online store links leading to your
935
+ // non-product pages. Metric.
936
+ optional int64 clicks = 3;
937
+
938
+ // Number of times images and online store links leading to your non-product
939
+ // pages were shown. Metric.
940
+ optional int64 impressions = 4;
941
+
942
+ // Click-through rate - the number of clicks (`clicks`) divided by the number
943
+ // of impressions (`impressions`) of images and online store links leading to
944
+ // your non-product pages. Metric.
945
+ optional double click_through_rate = 5;
946
+ }
947
+
948
+ // Fields available for query in `competitive_visibility_competitor_view` table.
949
+ //
950
+ // [Competitive
951
+ // visibility](https://support.google.com/merchants/answer/11366442) report with
952
+ // businesses with similar visibility.
953
+ //
954
+ // Values are only set for fields requested explicitly in the request's search
955
+ // query.
956
+ message CompetitiveVisibilityCompetitorView {
957
+ // Date of this row.
958
+ //
959
+ // A condition on `date` is required in the `WHERE` clause.
960
+ google.type.Date date = 1;
961
+
962
+ // Domain of your competitor or your domain, if 'is_your_domain' is true.
963
+ //
964
+ // Required in the `SELECT` clause. Cannot be filtered on in the 'WHERE'
965
+ // clause.
966
+ optional string domain = 2;
967
+
968
+ // True if this row contains data for your domain.
969
+ //
970
+ // Cannot be filtered on in the 'WHERE' clause.
971
+ optional bool is_your_domain = 3;
972
+
973
+ // Country where impressions appeared.
974
+ //
975
+ // Required in the `SELECT` clause. A condition on `report_country_code` is
976
+ // required in the `WHERE` clause.
977
+ optional string report_country_code = 4;
978
+
979
+ // Google product category ID to calculate the report for, represented in
980
+ // [Google's product
981
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
982
+ //
983
+ // Required in the `SELECT` clause. A condition on `report_category_id` is
984
+ // required in the `WHERE` clause.
985
+ optional int64 report_category_id = 5;
986
+
987
+ // Traffic source of impressions.
988
+ //
989
+ // Required in the `SELECT` clause.
990
+ optional TrafficSource.TrafficSourceEnum traffic_source = 6;
991
+
992
+ // Position of the domain in the similar businesses ranking for the selected
993
+ // keys (`date`, `report_category_id`, `report_country_code`,
994
+ // `traffic_source`) based on impressions. 1 is the highest.
995
+ //
996
+ // Cannot be filtered on in the 'WHERE' clause.
997
+ optional int64 rank = 7;
998
+
999
+ // [Ads / organic ratio]
1000
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Cads-free-ratio)
1001
+ // shows how often the domain receives impressions from Shopping ads compared
1002
+ // to organic traffic. The number is rounded and bucketed.
1003
+ //
1004
+ // Cannot be filtered on in the 'WHERE' clause.
1005
+ optional double ads_organic_ratio = 8;
1006
+
1007
+ // [Page overlap rate]
1008
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Cpage-overlap-rate)
1009
+ // shows how frequently competing retailers’ offers are shown together with
1010
+ // your offers on the same page.
1011
+ //
1012
+ // Cannot be filtered on in the 'WHERE' clause.
1013
+ optional double page_overlap_rate = 9;
1014
+
1015
+ // [Higher position rate]
1016
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Chigher-position-rate)
1017
+ // shows how often a competitor’s offer got placed in a higher position on the
1018
+ // page than your offer.
1019
+ //
1020
+ // Cannot be filtered on in the 'WHERE' clause.
1021
+ optional double higher_position_rate = 10;
1022
+
1023
+ // [Relative visibility]
1024
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Crelative-visibility)
1025
+ // shows how often your competitors’ offers are shown compared to your offers.
1026
+ // In other words, this is the number of displayed impressions of a competitor
1027
+ // retailer divided by the number of your displayed impressions during a
1028
+ // selected time range for a selected product category and country.
1029
+ //
1030
+ // Cannot be filtered on in the 'WHERE' clause.
1031
+ optional double relative_visibility = 11;
1032
+ }
1033
+
1034
+ // Fields available for query in `competitive_visibility_top_merchant_view`
1035
+ // table.
1036
+ //
1037
+ // [Competitive
1038
+ // visibility](https://support.google.com/merchants/answer/11366442) report with
1039
+ // business with highest visibility.
1040
+ //
1041
+ // Values are only set for fields requested explicitly in the request's search
1042
+ // query.
1043
+ message CompetitiveVisibilityTopMerchantView {
1044
+ // Date of this row.
1045
+ //
1046
+ // Cannot be selected in the `SELECT` clause. A condition on `date` is
1047
+ // required in the `WHERE` clause.
1048
+ google.type.Date date = 1;
1049
+
1050
+ // Domain of your competitor or your domain, if 'is_your_domain' is true.
1051
+ //
1052
+ // Required in the `SELECT` clause. Cannot be filtered on in the 'WHERE'
1053
+ // clause.
1054
+ optional string domain = 2;
1055
+
1056
+ // True if this row contains data for your domain.
1057
+ //
1058
+ // Cannot be filtered on in the 'WHERE' clause.
1059
+ optional bool is_your_domain = 3;
1060
+
1061
+ // Country where impressions appeared.
1062
+ //
1063
+ // Required in the `SELECT` clause. A condition on `report_country_code` is
1064
+ // required in the `WHERE` clause.
1065
+ optional string report_country_code = 4;
1066
+
1067
+ // Google product category ID to calculate the report for, represented in
1068
+ // [Google's product
1069
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
1070
+ //
1071
+ // Required in the `SELECT` clause. A condition on `report_category_id` is
1072
+ // required in the `WHERE` clause.
1073
+ optional int64 report_category_id = 5;
1074
+
1075
+ // Traffic source of impressions.
1076
+ //
1077
+ // Required in the `SELECT` clause.
1078
+ optional TrafficSource.TrafficSourceEnum traffic_source = 6;
1079
+
1080
+ // Position of the domain in the top merchants ranking for the selected keys
1081
+ // (`date`, `report_category_id`, `report_country_code`, `traffic_source`)
1082
+ // based on impressions. 1 is the highest.
1083
+ //
1084
+ // Cannot be filtered on in the 'WHERE' clause.
1085
+ optional int64 rank = 7;
1086
+
1087
+ // [Ads / organic ratio]
1088
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Cads-free-ratio)
1089
+ // shows how often the domain receives impressions from Shopping ads compared
1090
+ // to organic traffic. The number is rounded and bucketed.
1091
+ //
1092
+ // Cannot be filtered on in the 'WHERE' clause.
1093
+ optional double ads_organic_ratio = 8;
1094
+
1095
+ // [Page overlap rate]
1096
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Cpage-overlap-rate)
1097
+ // shows how frequently competing retailers’ offers are shown together with
1098
+ // your offers on the same page.
1099
+ //
1100
+ // Cannot be filtered on in the 'WHERE' clause.
1101
+ optional double page_overlap_rate = 9;
1102
+
1103
+ // [Higher position rate]
1104
+ // (https://support.google.com/merchants/answer/11366442#zippy=%2Chigher-position-rate)
1105
+ // shows how often a competitor’s offer got placed in a higher position on the
1106
+ // page than your offer.
1107
+ //
1108
+ // Cannot be filtered on in the 'WHERE' clause.
1109
+ optional double higher_position_rate = 10;
1110
+ }
1111
+
1112
+ // Fields available for query in `competitive_visibility_benchmark_view` table.
1113
+ //
1114
+ // [Competitive
1115
+ // visibility](https://support.google.com/merchants/answer/11366442) report with
1116
+ // the category benchmark.
1117
+ //
1118
+ // Values are only set for fields requested explicitly in the request's search
1119
+ // query.
1120
+ message CompetitiveVisibilityBenchmarkView {
1121
+ // Date of this row.
1122
+ //
1123
+ // Required in the `SELECT` clause. A condition on `date` is required in the
1124
+ // `WHERE` clause.
1125
+ google.type.Date date = 1;
1126
+
1127
+ // Country where impressions appeared.
1128
+ //
1129
+ // Required in the `SELECT` clause. A condition on `report_country_code` is
1130
+ // required in the `WHERE` clause.
1131
+ optional string report_country_code = 2;
1132
+
1133
+ // Google product category ID to calculate the report for, represented in
1134
+ // [Google's product
1135
+ // taxonomy](https://support.google.com/merchants/answer/6324436).
1136
+ //
1137
+ // Required in the `SELECT` clause. A condition on `report_category_id` is
1138
+ // required in the `WHERE` clause.
1139
+ optional int64 report_category_id = 3;
1140
+
1141
+ // Traffic source of impressions.
1142
+ //
1143
+ // Required in the `SELECT` clause.
1144
+ optional TrafficSource.TrafficSourceEnum traffic_source = 4;
1145
+
1146
+ // Change in visibility based on impressions for your domain with respect to
1147
+ // the start of the selected time range (or first day with non-zero
1148
+ // impressions).
1149
+ //
1150
+ // Cannot be filtered on in the 'WHERE' clause.
1151
+ optional double your_domain_visibility_trend = 5;
1152
+
1153
+ // Change in visibility based on impressions with respect to the start of the
1154
+ // selected time range (or first day with non-zero impressions) for a
1155
+ // combined set of merchants with highest visibility approximating the
1156
+ // market.
1157
+ //
1158
+ // Cannot be filtered on in the 'WHERE' clause.
1159
+ optional double category_benchmark_visibility_trend = 6;
1160
+ }
1161
+
1162
+ // Marketing method used to promote your products on Google (organic versus
1163
+ // ads).
1164
+ message MarketingMethod {
1165
+ // Marketing method values.
1166
+ enum MarketingMethodEnum {
1167
+ // Not specified.
1168
+ MARKETING_METHOD_ENUM_UNSPECIFIED = 0;
1169
+
1170
+ // Organic marketing.
1171
+ ORGANIC = 1;
1172
+
1173
+ // Ads-based marketing.
1174
+ ADS = 2;
1175
+ }
1176
+ }
1177
+
1178
+ // Granularity of the Best sellers report. Best sellers reports are computed
1179
+ // over a week and a month timeframe.
1180
+ message ReportGranularity {
1181
+ // Report granularity values.
1182
+ enum ReportGranularityEnum {
1183
+ // Not specified.
1184
+ REPORT_GRANULARITY_ENUM_UNSPECIFIED = 0;
1185
+
1186
+ // Report is computed over a week timeframe.
1187
+ WEEKLY = 1;
1188
+
1189
+ // Report is computed over a month timeframe.
1190
+ MONTHLY = 2;
1191
+ }
1192
+ }
1193
+
1194
+ // Relative demand of a product cluster or brand in the Best sellers report.
1195
+ message RelativeDemand {
1196
+ // Relative demand values.
1197
+ enum RelativeDemandEnum {
1198
+ // Not specified.
1199
+ RELATIVE_DEMAND_ENUM_UNSPECIFIED = 0;
1200
+
1201
+ // Demand is 0-5% of the demand of the highest ranked product cluster or
1202
+ // brand.
1203
+ VERY_LOW = 10;
1204
+
1205
+ // Demand is 6-10% of the demand of the highest ranked product cluster or
1206
+ // brand.
1207
+ LOW = 20;
1208
+
1209
+ // Demand is 11-20% of the demand of the highest ranked product cluster or
1210
+ // brand.
1211
+ MEDIUM = 30;
1212
+
1213
+ // Demand is 21-50% of the demand of the highest ranked product cluster or
1214
+ // brand.
1215
+ HIGH = 40;
1216
+
1217
+ // Demand is 51-100% of the demand of the highest ranked product cluster or
1218
+ // brand.
1219
+ VERY_HIGH = 50;
1220
+ }
1221
+ }
1222
+
1223
+ // Relative demand of a product cluster or brand in the Best sellers report
1224
+ // compared to the previous time period.
1225
+ message RelativeDemandChangeType {
1226
+ // Relative demand change type values.
1227
+ enum RelativeDemandChangeTypeEnum {
1228
+ // Not specified.
1229
+ RELATIVE_DEMAND_CHANGE_TYPE_ENUM_UNSPECIFIED = 0;
1230
+
1231
+ // Relative demand is lower than the previous time period.
1232
+ SINKER = 1;
1233
+
1234
+ // Relative demand is equal to the previous time period.
1235
+ FLAT = 2;
1236
+
1237
+ // Relative demand is higher than the previous time period.
1238
+ RISER = 3;
1239
+ }
1240
+ }
1241
+
1242
+ // Traffic source of impressions in the Competitive visibility report.
1243
+ message TrafficSource {
1244
+ // Traffic source values.
1245
+ enum TrafficSourceEnum {
1246
+ // Not specified.
1247
+ TRAFFIC_SOURCE_ENUM_UNSPECIFIED = 0;
1248
+
1249
+ // Organic traffic.
1250
+ ORGANIC = 1;
1251
+
1252
+ // Traffic from ads.
1253
+ ADS = 2;
1254
+
1255
+ // Organic and ads traffic.
1256
+ ALL = 3;
1257
+ }
1258
+ }