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