1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
// This file is @generated by prost-build.
/// A generic data container.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Value {
    /// A value.
    #[prost(oneof = "value::Value", tags = "1, 2, 3, 4, 5")]
    pub value: ::core::option::Option<value::Value>,
}
/// Nested message and enum types in `Value`.
pub mod value {
    /// A value.
    #[allow(clippy::derive_partial_eq_without_eq)]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        /// A boolean.
        #[prost(bool, tag = "1")]
        BooleanValue(bool),
        /// An int64.
        #[prost(int64, tag = "2")]
        Int64Value(i64),
        /// A float.
        #[prost(float, tag = "3")]
        FloatValue(f32),
        /// A double.
        #[prost(double, tag = "4")]
        DoubleValue(f64),
        /// A string.
        #[prost(string, tag = "5")]
        StringValue(::prost::alloc::string::String),
    }
}
/// Metrics data.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Metrics {
    /// Search absolute top impression share is the percentage of your Search ad
    /// impressions that are shown in the most prominent Search position.
    #[prost(double, optional, tag = "183")]
    pub absolute_top_impression_percentage: ::core::option::Option<f64>,
    /// All conversions from interactions (as oppose to view through conversions)
    /// divided by the number of ad interactions.
    #[prost(double, optional, tag = "191")]
    pub all_conversions_from_interactions_rate: ::core::option::Option<f64>,
    /// The value of all conversions.
    #[prost(double, optional, tag = "192")]
    pub all_conversions_value: ::core::option::Option<f64>,
    /// The value of all conversions. When this column is selected with date, the
    /// values in date column means the conversion date. Details for the
    /// by_conversion_date columns are available at
    /// <https://support.google.com/sa360/answer/9250611.>
    #[prost(double, tag = "240")]
    pub all_conversions_value_by_conversion_date: f64,
    /// The total number of conversions. This includes all conversions regardless
    /// of the value of include_in_conversions_metric.
    #[prost(double, optional, tag = "193")]
    pub all_conversions: ::core::option::Option<f64>,
    /// The total number of conversions. This includes all conversions regardless
    /// of the value of include_in_conversions_metric. When this column is selected
    /// with date, the values in date column means the conversion date. Details for
    /// the by_conversion_date columns are available at
    /// <https://support.google.com/sa360/answer/9250611.>
    #[prost(double, tag = "241")]
    pub all_conversions_by_conversion_date: f64,
    /// The value of all conversions divided by the total cost of ad interactions
    /// (such as clicks for text ads or views for video ads).
    #[prost(double, optional, tag = "194")]
    pub all_conversions_value_per_cost: ::core::option::Option<f64>,
    /// The number of times people clicked the "Call" button to call a store during
    /// or after clicking an ad. This number doesn't include whether or not calls
    /// were connected, or the duration of any calls.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "195")]
    pub all_conversions_from_click_to_call: ::core::option::Option<f64>,
    /// The number of times people clicked a "Get directions" button to navigate to
    /// a store after clicking an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "196")]
    pub all_conversions_from_directions: ::core::option::Option<f64>,
    /// The value of all conversions from interactions divided by the total number
    /// of interactions.
    #[prost(double, optional, tag = "197")]
    pub all_conversions_from_interactions_value_per_interaction: ::core::option::Option<
        f64,
    >,
    /// The number of times people clicked a link to view a store's menu after
    /// clicking an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "198")]
    pub all_conversions_from_menu: ::core::option::Option<f64>,
    /// The number of times people placed an order at a store after clicking an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "199")]
    pub all_conversions_from_order: ::core::option::Option<f64>,
    /// The number of other conversions (for example, posting a review or saving a
    /// location for a store) that occurred after people clicked an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "200")]
    pub all_conversions_from_other_engagement: ::core::option::Option<f64>,
    /// Estimated number of times people visited a store after clicking an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "201")]
    pub all_conversions_from_store_visit: ::core::option::Option<f64>,
    /// Clicks that Search Ads 360 has successfully recorded and forwarded to an
    /// advertiser's landing page.
    #[prost(double, optional, tag = "289")]
    pub visits: ::core::option::Option<f64>,
    /// The number of times that people were taken to a store's URL after clicking
    /// an ad.
    ///
    /// This metric applies to feed items only.
    #[prost(double, optional, tag = "202")]
    pub all_conversions_from_store_website: ::core::option::Option<f64>,
    /// The average amount you pay per interaction. This amount is the total cost
    /// of your ads divided by the total number of interactions.
    #[prost(double, optional, tag = "203")]
    pub average_cost: ::core::option::Option<f64>,
    /// The total cost of all clicks divided by the total number of clicks
    /// received.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(double, optional, tag = "317")]
    pub average_cpc: ::core::option::Option<f64>,
    /// Average cost-per-thousand impressions (CPM).
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(double, optional, tag = "318")]
    pub average_cpm: ::core::option::Option<f64>,
    /// The number of clicks.
    #[prost(int64, optional, tag = "131")]
    pub clicks: ::core::option::Option<i64>,
    /// The estimated percent of times that your ad was eligible to show
    /// on the Display Network but didn't because your budget was too low.
    /// Note: Content budget lost impression share is reported in the range of 0
    /// to 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "159")]
    pub content_budget_lost_impression_share: ::core::option::Option<f64>,
    /// The impressions you've received on the Display Network divided
    /// by the estimated number of impressions you were eligible to receive.
    /// Note: Content impression share is reported in the range of 0.1 to 1. Any
    /// value below 0.1 is reported as 0.0999.
    #[prost(double, optional, tag = "160")]
    pub content_impression_share: ::core::option::Option<f64>,
    /// The conversion custom metrics.
    #[prost(message, repeated, tag = "336")]
    pub conversion_custom_metrics: ::prost::alloc::vec::Vec<Value>,
    /// The estimated percentage of impressions on the Display Network
    /// that your ads didn't receive due to poor Ad Rank.
    /// Note: Content rank lost impression share is reported in the range of 0
    /// to 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "163")]
    pub content_rank_lost_impression_share: ::core::option::Option<f64>,
    /// Average biddable conversions (from interaction) per conversion eligible
    /// interaction. Shows how often, on average, an ad interaction leads to a
    /// biddable conversion.
    #[prost(double, optional, tag = "284")]
    pub conversions_from_interactions_rate: ::core::option::Option<f64>,
    /// The value of client account conversions. This only
    /// includes conversion actions which
    /// include_in_client_account_conversions_metric attribute is set to true. If
    /// you use conversion-based bidding, your bid strategies will optimize for
    /// these conversions.
    #[prost(double, optional, tag = "165")]
    pub client_account_conversions_value: ::core::option::Option<f64>,
    /// The sum of biddable conversions value by conversion date. When this
    /// column is selected with date, the values in date column means the
    /// conversion date.
    #[prost(double, tag = "283")]
    pub conversions_value_by_conversion_date: f64,
    /// The value of biddable conversion divided by the total cost of conversion
    /// eligible interactions.
    #[prost(double, optional, tag = "288")]
    pub conversions_value_per_cost: ::core::option::Option<f64>,
    /// The value of conversions from interactions divided by the number of ad
    /// interactions. This only includes conversion actions which
    /// include_in_conversions_metric attribute is set to true. If you use
    /// conversion-based bidding, your bid strategies will optimize for these
    /// conversions.
    #[prost(double, optional, tag = "167")]
    pub conversions_from_interactions_value_per_interaction: ::core::option::Option<f64>,
    /// The number of client account conversions. This only
    /// includes conversion actions which
    /// include_in_client_account_conversions_metric attribute is set to true. If
    /// you use conversion-based bidding, your bid strategies will optimize for
    /// these conversions.
    #[prost(double, optional, tag = "168")]
    pub client_account_conversions: ::core::option::Option<f64>,
    /// The sum of conversions by conversion date for biddable conversion types.
    /// Can be fractional due to attribution modeling. When this column is selected
    /// with date, the values in date column means the conversion date.
    #[prost(double, tag = "282")]
    pub conversions_by_conversion_date: f64,
    /// The sum of your cost-per-click (CPC) and cost-per-thousand impressions
    /// (CPM) costs during this period.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "316")]
    pub cost_micros: ::core::option::Option<i64>,
    /// The cost of ad interactions divided by all conversions.
    #[prost(double, optional, tag = "170")]
    pub cost_per_all_conversions: ::core::option::Option<f64>,
    /// Average conversion eligible cost per biddable conversion.
    #[prost(double, optional, tag = "286")]
    pub cost_per_conversion: ::core::option::Option<f64>,
    /// The cost of ad interactions divided by current model attributed
    /// conversions. This only includes conversion actions which
    /// include_in_conversions_metric attribute is set to true. If you use
    /// conversion-based bidding, your bid strategies will optimize for these
    /// conversions.
    #[prost(double, optional, tag = "172")]
    pub cost_per_current_model_attributed_conversion: ::core::option::Option<f64>,
    /// Conversions from when a customer clicks on an ad on one device,
    /// then converts on a different device or browser.
    /// Cross-device conversions are already included in all_conversions.
    #[prost(double, optional, tag = "173")]
    pub cross_device_conversions: ::core::option::Option<f64>,
    /// The sum of the value of cross-device conversions.
    #[prost(double, optional, tag = "253")]
    pub cross_device_conversions_value: ::core::option::Option<f64>,
    /// The number of clicks your ad receives (Clicks) divided by the number
    /// of times your ad is shown (Impressions).
    #[prost(double, optional, tag = "174")]
    pub ctr: ::core::option::Option<f64>,
    /// The number of conversions. This only includes conversion actions which
    /// include_in_conversions_metric attribute is set to true. If you use
    /// conversion-based bidding, your bid strategies will optimize for these
    /// conversions.
    #[prost(double, optional, tag = "251")]
    pub conversions: ::core::option::Option<f64>,
    /// The sum of conversion values for the conversions included in the
    /// "conversions" field. This metric is useful only if you entered a value for
    /// your conversion actions.
    #[prost(double, optional, tag = "252")]
    pub conversions_value: ::core::option::Option<f64>,
    /// The creative historical quality score.
    #[prost(
        enumeration = "super::enums::quality_score_bucket_enum::QualityScoreBucket",
        tag = "80"
    )]
    pub historical_creative_quality_score: i32,
    /// The quality of historical landing page experience.
    #[prost(
        enumeration = "super::enums::quality_score_bucket_enum::QualityScoreBucket",
        tag = "81"
    )]
    pub historical_landing_page_quality_score: i32,
    /// The historical quality score.
    #[prost(int64, optional, tag = "216")]
    pub historical_quality_score: ::core::option::Option<i64>,
    /// The historical search predicted click through rate (CTR).
    #[prost(
        enumeration = "super::enums::quality_score_bucket_enum::QualityScoreBucket",
        tag = "83"
    )]
    pub historical_search_predicted_ctr: i32,
    /// Count of how often your ad has appeared on a search results page or
    /// website on the Google Network.
    #[prost(int64, optional, tag = "221")]
    pub impressions: ::core::option::Option<i64>,
    /// How often people interact with your ad after it is shown to them.
    /// This is the number of interactions divided by the number of times your ad
    /// is shown.
    #[prost(double, optional, tag = "222")]
    pub interaction_rate: ::core::option::Option<f64>,
    /// The number of interactions.
    /// An interaction is the main user action associated with an ad format-clicks
    /// for text and shopping ads, views for video ads, and so on.
    #[prost(int64, optional, tag = "223")]
    pub interactions: ::core::option::Option<i64>,
    /// The types of payable and free interactions.
    #[prost(
        enumeration = "super::enums::interaction_event_type_enum::InteractionEventType",
        repeated,
        tag = "100"
    )]
    pub interaction_event_types: ::prost::alloc::vec::Vec<i32>,
    /// The percentage of clicks filtered out of your total number of clicks
    /// (filtered + non-filtered clicks) during the reporting period.
    #[prost(double, optional, tag = "224")]
    pub invalid_click_rate: ::core::option::Option<f64>,
    /// Number of clicks Google considers illegitimate and doesn't charge you for.
    #[prost(int64, optional, tag = "225")]
    pub invalid_clicks: ::core::option::Option<i64>,
    /// The percentage of mobile clicks that go to a mobile-friendly page.
    #[prost(double, optional, tag = "229")]
    pub mobile_friendly_clicks_percentage: ::core::option::Option<f64>,
    /// The raw event conversion metrics.
    #[prost(message, repeated, tag = "337")]
    pub raw_event_conversion_metrics: ::prost::alloc::vec::Vec<Value>,
    /// The percentage of the customer's Shopping or Search ad impressions that are
    /// shown in the most prominent Shopping position. See
    /// <https://support.google.com/sa360/answer/9566729>
    /// for details. Any value below 0.1 is reported as 0.0999.
    #[prost(double, optional, tag = "136")]
    pub search_absolute_top_impression_share: ::core::option::Option<f64>,
    /// The number estimating how often your ad wasn't the very first ad among the
    /// top ads in the search results due to a low budget. Note: Search
    /// budget lost absolute top impression share is reported in the range of 0 to
    /// 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "137")]
    pub search_budget_lost_absolute_top_impression_share: ::core::option::Option<f64>,
    /// The estimated percent of times that your ad was eligible to show on the
    /// Search Network but didn't because your budget was too low. Note: Search
    /// budget lost impression share is reported in the range of 0 to 0.9. Any
    /// value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "138")]
    pub search_budget_lost_impression_share: ::core::option::Option<f64>,
    /// The number estimating how often your ad didn't show adjacent to the top
    /// organic search results due to a low budget. Note: Search
    /// budget lost top impression share is reported in the range of 0 to 0.9. Any
    /// value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "139")]
    pub search_budget_lost_top_impression_share: ::core::option::Option<f64>,
    /// The number of clicks you've received on the Search Network
    /// divided by the estimated number of clicks you were eligible to receive.
    /// Note: Search click share is reported in the range of 0.1 to 1. Any value
    /// below 0.1 is reported as 0.0999.
    #[prost(double, optional, tag = "140")]
    pub search_click_share: ::core::option::Option<f64>,
    /// The impressions you've received divided by the estimated number of
    /// impressions you were eligible to receive on the Search Network for search
    /// terms that matched your keywords exactly (or were close variants of your
    /// keyword), regardless of your keyword match types. Note: Search exact match
    /// impression share is reported in the range of 0.1 to 1. Any value below 0.1
    /// is reported as 0.0999.
    #[prost(double, optional, tag = "141")]
    pub search_exact_match_impression_share: ::core::option::Option<f64>,
    /// The impressions you've received on the Search Network divided
    /// by the estimated number of impressions you were eligible to receive.
    /// Note: Search impression share is reported in the range of 0.1 to 1. Any
    /// value below 0.1 is reported as 0.0999.
    #[prost(double, optional, tag = "142")]
    pub search_impression_share: ::core::option::Option<f64>,
    /// The number estimating how often your ad wasn't the very first ad among the
    /// top ads in the search results due to poor Ad Rank.
    /// Note: Search rank lost absolute top impression share is reported in the
    /// range of 0 to 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "143")]
    pub search_rank_lost_absolute_top_impression_share: ::core::option::Option<f64>,
    /// The estimated percentage of impressions on the Search Network
    /// that your ads didn't receive due to poor Ad Rank.
    /// Note: Search rank lost impression share is reported in the range of 0 to
    /// 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "144")]
    pub search_rank_lost_impression_share: ::core::option::Option<f64>,
    /// The number estimating how often your ad didn't show adjacent to the top
    /// organic search results due to poor Ad Rank.
    /// Note: Search rank lost top impression share is reported in the range of 0
    /// to 0.9. Any value above 0.9 is reported as 0.9001.
    #[prost(double, optional, tag = "145")]
    pub search_rank_lost_top_impression_share: ::core::option::Option<f64>,
    /// The impressions you've received among the top ads compared to the estimated
    /// number of impressions you were eligible to receive among the top ads.
    /// Note: Search top impression share is reported in the range of 0.1 to 1. Any
    /// value below 0.1 is reported as 0.0999.
    ///
    /// Top ads are generally above the top organic results, although they may show
    /// below the top organic results on certain queries.
    #[prost(double, optional, tag = "146")]
    pub search_top_impression_share: ::core::option::Option<f64>,
    /// The percent of your ad impressions that are shown adjacent to the top
    /// organic search results.
    #[prost(double, optional, tag = "148")]
    pub top_impression_percentage: ::core::option::Option<f64>,
    /// The value of all conversions divided by the number of all conversions.
    #[prost(double, optional, tag = "150")]
    pub value_per_all_conversions: ::core::option::Option<f64>,
    /// The value of all conversions divided by the number of all conversions. When
    /// this column is selected with date, the values in date column means the
    /// conversion date. Details for the by_conversion_date columns are available
    /// at <https://support.google.com/sa360/answer/9250611.>
    #[prost(double, optional, tag = "244")]
    pub value_per_all_conversions_by_conversion_date: ::core::option::Option<f64>,
    /// The value of biddable conversion divided by the number of biddable
    /// conversions. Shows how much, on average, each of the biddable conversions
    /// is worth.
    #[prost(double, optional, tag = "287")]
    pub value_per_conversion: ::core::option::Option<f64>,
    /// Biddable conversions value by conversion date divided by biddable
    /// conversions by conversion date. Shows how much, on average, each of the
    /// biddable conversions is worth (by conversion date). When this column is
    /// selected with date, the values in date column means the conversion date.
    #[prost(double, optional, tag = "285")]
    pub value_per_conversions_by_conversion_date: ::core::option::Option<f64>,
    /// The total number of view-through conversions.
    /// These happen when a customer sees an image or rich media ad, then later
    /// completes a conversion on your site without interacting with (for example,
    /// clicking on) another ad.
    #[prost(int64, optional, tag = "155")]
    pub client_account_view_through_conversions: ::core::option::Option<i64>,
    /// Client account cross-sell cost of goods sold (COGS) is the total cost
    /// of products sold as a result of advertising a different product.
    /// How it works: You report conversions with cart data for
    /// completed purchases on your website. If the ad that was interacted with
    /// before the purchase has an associated product (see Shopping Ads) then this
    /// product is considered the advertised product. Any product included in the
    /// order the customer places is a sold product. If these products don't match
    /// then this is considered cross-sell. Cross-sell cost of goods sold is the
    /// total cost of the products sold that weren't advertised. Example: Someone
    /// clicked on a Shopping ad for a hat then bought the same hat and a shirt.
    /// The hat has a cost of goods sold value of $3, the shirt has a cost of goods
    /// sold value of $5. The cross-sell cost of goods sold for this order is $5.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "321")]
    pub client_account_cross_sell_cost_of_goods_sold_micros: ::core::option::Option<i64>,
    /// Cross-sell cost of goods sold (COGS) is the total cost of products sold as
    /// a result of advertising a different product.
    /// How it works: You report conversions with cart data for
    /// completed purchases on your website. If the ad that was interacted with
    /// before the purchase has an associated product (see Shopping Ads) then this
    /// product is considered the advertised product. Any product included in the
    /// order the customer places is a sold product. If these products don't match
    /// then this is considered cross-sell. Cross-sell cost of goods sold is the
    /// total cost of the products sold that weren't advertised. Example: Someone
    /// clicked on a Shopping ad for a hat then bought the same hat and a shirt.
    /// The hat has a cost of goods sold value of $3, the shirt has a cost of goods
    /// sold value of $5. The cross-sell cost of goods sold for this order is $5.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "327")]
    pub cross_sell_cost_of_goods_sold_micros: ::core::option::Option<i64>,
    /// Client account cross-sell gross profit is the profit you made from
    /// products sold as a result of advertising a different product, minus cost of
    /// goods sold (COGS).
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the purchase is a sold
    /// product. If these products don't match then this is considered cross-sell.
    /// Cross-sell gross profit is the revenue you made from cross-sell attributed
    /// to your ads minus the cost of the goods sold. Example: Someone clicked on a
    /// Shopping ad for a hat then bought the same hat and a shirt. The shirt is
    /// priced $20 and has a cost of goods sold value of $5. The cross-sell gross
    /// profit of this order is $15 = $20 - $5. This metric is only available if
    /// you report conversions with cart data. This metric is a monetary value and
    /// returned in the customer's currency by default. See the metrics_currency
    /// parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "322")]
    pub client_account_cross_sell_gross_profit_micros: ::core::option::Option<i64>,
    /// Cross-sell gross profit is the profit you made from products sold as a
    /// result of advertising a different product, minus cost of goods sold (COGS).
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the purchase is a sold
    /// product. If these products don't match then this is considered cross-sell.
    /// Cross-sell gross profit is the revenue you made from cross-sell attributed
    /// to your ads minus the cost of the goods sold.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat and a shirt. The shirt is priced $20 and has a cost of goods sold value
    /// of $5. The cross-sell gross profit of this order is $15 = $20 - $5.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "328")]
    pub cross_sell_gross_profit_micros: ::core::option::Option<i64>,
    /// Client account cross-sell revenue is the total amount you made from
    /// products sold as a result of advertising a different product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If these products don't match then this is
    /// considered cross-sell. Cross-sell revenue is the total value you made from
    /// cross-sell attributed to your ads. Example: Someone clicked on a Shopping
    /// ad for a hat then bought the same hat and a shirt. The hat is priced $10
    /// and the shirt is priced $20. The cross-sell revenue of this order is $20.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "323")]
    pub client_account_cross_sell_revenue_micros: ::core::option::Option<i64>,
    /// Cross-sell revenue is the total amount you made from products sold as a
    /// result of advertising a different product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If these products don't match then this is
    /// considered cross-sell. Cross-sell revenue is the total value you made from
    /// cross-sell attributed to your ads. Example: Someone clicked on a Shopping
    /// ad for a hat then bought the same hat and a shirt. The hat is priced $10
    /// and the shirt is priced $20. The cross-sell revenue of this order is $20.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "329")]
    pub cross_sell_revenue_micros: ::core::option::Option<i64>,
    /// Client account cross-sell units sold is
    /// the total number of products sold as a result of advertising a different
    /// product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If these products don't match then this is
    /// considered cross-sell. Cross-sell units sold is the total number of
    /// cross-sold products from all orders attributed to your ads.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat, a shirt and a jacket. The cross-sell units sold in this order is 2.
    /// This metric is only available if you report conversions with cart data.
    #[prost(double, optional, tag = "307")]
    pub client_account_cross_sell_units_sold: ::core::option::Option<f64>,
    /// Cross-sell units sold is the total number of products sold as a result of
    /// advertising a different product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If these products don't match then this is
    /// considered cross-sell. Cross-sell units sold is the total number of
    /// cross-sold products from all orders attributed to your ads.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat, a shirt and a jacket. The cross-sell units sold in this order is 2.
    /// This metric is only available if you report conversions with cart data.
    #[prost(double, optional, tag = "330")]
    pub cross_sell_units_sold: ::core::option::Option<f64>,
    /// Client account lead cost of goods sold (COGS) is the total cost of
    /// products sold as a result of advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with has an associated
    /// product (see Shopping Ads) then this product is considered the advertised
    /// product. Any product included in the order the customer places is a sold
    /// product. If the advertised and sold products match, then the cost of these
    /// goods is counted under lead cost of goods sold. Example: Someone clicked on
    /// a Shopping ad for a hat then bought the same hat and a shirt. The hat has a
    /// cost of goods sold value of $3, the shirt has a cost of goods sold value of
    /// $5. The lead cost of goods sold for this order is $3. This metric is only
    /// available if you report conversions with cart data. This metric is a
    /// monetary value and returned in the customer's currency by default. See the
    /// metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "324")]
    pub client_account_lead_cost_of_goods_sold_micros: ::core::option::Option<i64>,
    /// Lead cost of goods sold (COGS) is the total cost of products sold as a
    /// result of advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with has an associated
    /// product (see Shopping Ads) then this product is considered the advertised
    /// product. Any product included in the order the customer places is a sold
    /// product. If the advertised and sold products match, then the cost of these
    /// goods is counted under lead cost of goods sold. Example: Someone clicked on
    /// a Shopping ad for a hat then bought the same hat and a shirt. The hat has a
    /// cost of goods sold value of $3, the shirt has a cost of goods sold value of
    /// $5. The lead cost of goods sold for this order is $3. This metric is only
    /// available if you report conversions with cart data. This metric is a
    /// monetary value and returned in the customer's currency by default. See the
    /// metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "332")]
    pub lead_cost_of_goods_sold_micros: ::core::option::Option<i64>,
    /// Client account lead gross profit is the profit you made from products
    /// sold as a result of advertising the same product, minus cost of goods sold
    /// (COGS).
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the revenue you made from these sales minus the cost of goods sold is your
    /// lead gross profit. Example: Someone clicked on a Shopping ad for a hat then
    /// bought the same hat and a shirt. The hat is priced $10 and has a cost of
    /// goods sold value of $3. The lead gross profit of this order is $7 = $10 -
    /// $3. This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "325")]
    pub client_account_lead_gross_profit_micros: ::core::option::Option<i64>,
    /// Lead gross profit is the profit you made from products sold as a result of
    /// advertising the same product, minus cost of goods sold (COGS).
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the revenue you made from these sales minus the cost of goods sold is your
    /// lead gross profit. Example: Someone clicked on a Shopping ad for a hat then
    /// bought the same hat and a shirt. The hat is priced $10 and has a cost of
    /// goods sold value of $3. The lead gross profit of this order is $7 = $10 -
    /// $3. This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "333")]
    pub lead_gross_profit_micros: ::core::option::Option<i64>,
    /// Client account lead revenue is the total amount you made from
    /// products sold as a result of advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the total value you made from the sales of these products is shown under
    /// lead revenue. Example: Someone clicked on a Shopping ad for a hat then
    /// bought the same hat and a shirt. The hat is priced $10 and the shirt is
    /// priced $20. The lead revenue of this order is $10. This metric is only
    /// available if you report conversions with cart data. This metric is a
    /// monetary value and returned in the customer's currency by default. See the
    /// metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "326")]
    pub client_account_lead_revenue_micros: ::core::option::Option<i64>,
    /// Lead revenue is the total amount you made from products sold as a result of
    /// advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the total value you made from the sales of these products is shown under
    /// lead revenue.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat and a shirt. The hat is priced $10 and the shirt is priced $20. The
    /// lead revenue of this order is $10.
    /// This metric is only available if you report conversions with cart data.
    /// This metric is a monetary value and returned in the customer's currency by
    /// default. See the metrics_currency parameter at
    /// <https://developers.google.com/search-ads/reporting/query/query-structure#parameters_clause>
    #[prost(int64, optional, tag = "334")]
    pub lead_revenue_micros: ::core::option::Option<i64>,
    /// Client account lead units sold is the total number of
    /// products sold as a result of advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the total number of these products sold is shown under lead units sold.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat, a shirt and a jacket. The lead units sold in this order is 1.
    /// This metric is only available if you report conversions with cart data.
    #[prost(double, optional, tag = "311")]
    pub client_account_lead_units_sold: ::core::option::Option<f64>,
    /// Lead units sold is the total number of products sold as a result of
    /// advertising the same product.
    /// How it works: You report conversions with cart data for completed purchases
    /// on your website. If the ad that was interacted with before the purchase has
    /// an associated product (see Shopping Ads) then this product is considered
    /// the advertised product. Any product included in the order the customer
    /// places is a sold product. If the advertised and sold products match, then
    /// the total number of these products sold is shown under lead units sold.
    /// Example: Someone clicked on a Shopping ad for a hat then bought the same
    /// hat, a shirt and a jacket. The lead units sold in this order is 1.
    /// This metric is only available if you report conversions with cart data.
    #[prost(double, optional, tag = "335")]
    pub lead_units_sold: ::core::option::Option<f64>,
}
/// A keyword criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KeywordInfo {
    /// The text of the keyword (at most 80 characters and 10 words).
    #[prost(string, optional, tag = "3")]
    pub text: ::core::option::Option<::prost::alloc::string::String>,
    /// The match type of the keyword.
    #[prost(
        enumeration = "super::enums::keyword_match_type_enum::KeywordMatchType",
        tag = "2"
    )]
    pub match_type: i32,
}
/// A location criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LocationInfo {
    /// The geo target constant resource name.
    #[prost(string, optional, tag = "2")]
    pub geo_target_constant: ::core::option::Option<::prost::alloc::string::String>,
}
/// A device criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeviceInfo {
    /// Type of the device.
    #[prost(enumeration = "super::enums::device_enum::Device", tag = "1")]
    pub r#type: i32,
}
/// A listing group criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListingGroupInfo {
    /// Type of the listing group.
    #[prost(
        enumeration = "super::enums::listing_group_type_enum::ListingGroupType",
        tag = "1"
    )]
    pub r#type: i32,
}
/// Represents an AdSchedule criterion.
///
/// AdSchedule is specified as the day of the week and a time interval
/// within which ads will be shown.
///
/// No more than six AdSchedules can be added for the same day.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AdScheduleInfo {
    /// Minutes after the start hour at which this schedule starts.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(enumeration = "super::enums::minute_of_hour_enum::MinuteOfHour", tag = "1")]
    pub start_minute: i32,
    /// Minutes after the end hour at which this schedule ends. The schedule is
    /// exclusive of the end minute.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(enumeration = "super::enums::minute_of_hour_enum::MinuteOfHour", tag = "2")]
    pub end_minute: i32,
    /// Starting hour in 24 hour time.
    /// This field must be between 0 and 23, inclusive.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(int32, optional, tag = "6")]
    pub start_hour: ::core::option::Option<i32>,
    /// Ending hour in 24 hour time; 24 signifies end of the day.
    /// This field must be between 0 and 24, inclusive.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(int32, optional, tag = "7")]
    pub end_hour: ::core::option::Option<i32>,
    /// Day of the week the schedule applies to.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(enumeration = "super::enums::day_of_week_enum::DayOfWeek", tag = "5")]
    pub day_of_week: i32,
}
/// An age range criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AgeRangeInfo {
    /// Type of the age range.
    #[prost(enumeration = "super::enums::age_range_type_enum::AgeRangeType", tag = "1")]
    pub r#type: i32,
}
/// A gender criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GenderInfo {
    /// Type of the gender.
    #[prost(enumeration = "super::enums::gender_type_enum::GenderType", tag = "1")]
    pub r#type: i32,
}
/// A User List criterion. Represents a user list that is defined by the
/// advertiser to be targeted.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserListInfo {
    /// The User List resource name.
    #[prost(string, optional, tag = "2")]
    pub user_list: ::core::option::Option<::prost::alloc::string::String>,
}
/// A language criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LanguageInfo {
    /// The language constant resource name.
    #[prost(string, optional, tag = "2")]
    pub language_constant: ::core::option::Option<::prost::alloc::string::String>,
}
/// Represents a criterion for targeting webpages of an advertiser's website.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WebpageInfo {
    /// The name of the criterion that is defined by this parameter. The name value
    /// will be used for identifying, sorting and filtering criteria with this type
    /// of parameters.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(string, optional, tag = "3")]
    pub criterion_name: ::core::option::Option<::prost::alloc::string::String>,
    /// Conditions, or logical expressions, for webpage targeting. The list of
    /// webpage targeting conditions are and-ed together when evaluated
    /// for targeting. An empty list of conditions indicates all pages of the
    /// campaign's website are targeted.
    ///
    /// This field is required for CREATE operations and is prohibited on UPDATE
    /// operations.
    #[prost(message, repeated, tag = "2")]
    pub conditions: ::prost::alloc::vec::Vec<WebpageConditionInfo>,
    /// Website criteria coverage percentage. This is the computed percentage
    /// of website coverage based on the website target, negative website target
    /// and negative keywords in the ad group and campaign. For instance, when
    /// coverage returns as 1, it indicates it has 100% coverage. This field is
    /// read-only.
    #[prost(double, tag = "4")]
    pub coverage_percentage: f64,
}
/// Logical expression for targeting webpages of an advertiser's website.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WebpageConditionInfo {
    /// Operand of webpage targeting condition.
    #[prost(
        enumeration = "super::enums::webpage_condition_operand_enum::WebpageConditionOperand",
        tag = "1"
    )]
    pub operand: i32,
    /// Operator of webpage targeting condition.
    #[prost(
        enumeration = "super::enums::webpage_condition_operator_enum::WebpageConditionOperator",
        tag = "2"
    )]
    pub operator: i32,
    /// Argument of webpage targeting condition.
    #[prost(string, optional, tag = "4")]
    pub argument: ::core::option::Option<::prost::alloc::string::String>,
}
/// A radius around a list of locations specified through a feed.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LocationGroupInfo {
    /// Geo target constant(s) restricting the scope of the geographic area within
    /// the feed. Currently only one geo target constant is allowed.
    #[prost(string, repeated, tag = "6")]
    pub geo_target_constants: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Distance in units specifying the radius around targeted locations.
    /// This is required and must be set in CREATE operations.
    #[prost(int64, optional, tag = "7")]
    pub radius: ::core::option::Option<i64>,
    /// Unit of the radius. Miles and meters are supported for geo target
    /// constants. Milli miles and meters are supported for feed item sets.
    /// This is required and must be set in CREATE operations.
    #[prost(
        enumeration = "super::enums::location_group_radius_units_enum::LocationGroupRadiusUnits",
        tag = "4"
    )]
    pub radius_units: i32,
    /// FeedItemSets whose FeedItems are targeted. If multiple IDs are specified,
    /// then all items that appear in at least one set are targeted. This field
    /// cannot be used with geo_target_constants. This is optional and can only be
    /// set in CREATE operations.
    #[prost(string, repeated, tag = "8")]
    pub feed_item_sets: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// An audience criterion.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AudienceInfo {
    /// The Audience resource name.
    #[prost(string, tag = "1")]
    pub audience: ::prost::alloc::string::String,
}
/// A YouTube asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct YoutubeVideoAsset {
    /// YouTube video id. This is the 11 character string value used in the
    /// YouTube video URL.
    #[prost(string, optional, tag = "2")]
    pub youtube_video_id: ::core::option::Option<::prost::alloc::string::String>,
    /// YouTube video title.
    #[prost(string, tag = "3")]
    pub youtube_video_title: ::prost::alloc::string::String,
}
/// An Image asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageAsset {
    /// File size of the image asset in bytes.
    #[prost(int64, optional, tag = "6")]
    pub file_size: ::core::option::Option<i64>,
    /// MIME type of the image asset.
    #[prost(enumeration = "super::enums::mime_type_enum::MimeType", tag = "3")]
    pub mime_type: i32,
    /// Metadata for this image at its original size.
    #[prost(message, optional, tag = "4")]
    pub full_size: ::core::option::Option<ImageDimension>,
}
/// Metadata for an image at a certain size, either original or resized.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageDimension {
    /// Height of the image.
    #[prost(int64, optional, tag = "4")]
    pub height_pixels: ::core::option::Option<i64>,
    /// Width of the image.
    #[prost(int64, optional, tag = "5")]
    pub width_pixels: ::core::option::Option<i64>,
    /// A URL that returns the image with this height and width.
    #[prost(string, optional, tag = "6")]
    pub url: ::core::option::Option<::prost::alloc::string::String>,
}
/// A Text asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TextAsset {
    /// Text content of the text asset.
    #[prost(string, optional, tag = "2")]
    pub text: ::core::option::Option<::prost::alloc::string::String>,
}
/// A unified callout asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnifiedCalloutAsset {
    /// The callout text.
    /// The length of this string should be between 1 and 25, inclusive.
    #[prost(string, tag = "1")]
    pub callout_text: ::prost::alloc::string::String,
    /// Start date of when this asset is effective and can begin serving, in
    /// yyyy-MM-dd format.
    #[prost(string, tag = "2")]
    pub start_date: ::prost::alloc::string::String,
    /// Last date of when this asset is effective and still serving, in yyyy-MM-dd
    /// format.
    #[prost(string, tag = "3")]
    pub end_date: ::prost::alloc::string::String,
    /// List of non-overlapping schedules specifying all time intervals for which
    /// the asset may serve. There can be a maximum of 6 schedules per day, 42 in
    /// total.
    #[prost(message, repeated, tag = "4")]
    pub ad_schedule_targets: ::prost::alloc::vec::Vec<AdScheduleInfo>,
    /// Whether to show the asset in search user's time zone. Applies to Microsoft
    /// Ads.
    #[prost(bool, tag = "5")]
    pub use_searcher_time_zone: bool,
}
/// A unified sitelink asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnifiedSitelinkAsset {
    /// URL display text for the sitelink.
    /// The length of this string should be between 1 and 25, inclusive.
    #[prost(string, tag = "1")]
    pub link_text: ::prost::alloc::string::String,
    /// First line of the description for the sitelink.
    /// If set, the length should be between 1 and 35, inclusive, and description2
    /// must also be set.
    #[prost(string, tag = "2")]
    pub description1: ::prost::alloc::string::String,
    /// Second line of the description for the sitelink.
    /// If set, the length should be between 1 and 35, inclusive, and description1
    /// must also be set.
    #[prost(string, tag = "3")]
    pub description2: ::prost::alloc::string::String,
    /// Start date of when this asset is effective and can begin serving, in
    /// yyyy-MM-dd format.
    #[prost(string, tag = "4")]
    pub start_date: ::prost::alloc::string::String,
    /// Last date of when this asset is effective and still serving, in yyyy-MM-dd
    /// format.
    #[prost(string, tag = "5")]
    pub end_date: ::prost::alloc::string::String,
    /// List of non-overlapping schedules specifying all time intervals for which
    /// the asset may serve. There can be a maximum of 6 schedules per day, 42 in
    /// total.
    #[prost(message, repeated, tag = "6")]
    pub ad_schedule_targets: ::prost::alloc::vec::Vec<AdScheduleInfo>,
    /// ID used for tracking clicks for the sitelink asset. This is a Yahoo! Japan
    /// only field.
    #[prost(int64, tag = "7")]
    pub tracking_id: i64,
    /// Whether to show the sitelink asset in search user's time zone.
    /// Applies to Microsoft Ads.
    #[prost(bool, tag = "8")]
    pub use_searcher_time_zone: bool,
    /// Whether the preference is for the sitelink asset to be displayed on mobile
    /// devices. Applies to Microsoft Ads.
    #[prost(bool, tag = "9")]
    pub mobile_preferred: bool,
}
/// A Unified Page Feed asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnifiedPageFeedAsset {
    /// The webpage that advertisers want to target.
    #[prost(string, tag = "1")]
    pub page_url: ::prost::alloc::string::String,
    /// Labels used to group the page urls.
    #[prost(string, repeated, tag = "2")]
    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// An asset representing a mobile app.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MobileAppAsset {
    /// Required. A string that uniquely identifies a mobile application. It should
    /// just contain the platform native id, like "com.android.ebay" for Android or
    /// "12345689" for iOS.
    #[prost(string, tag = "1")]
    pub app_id: ::prost::alloc::string::String,
    /// Required. The application store that distributes this specific app.
    #[prost(
        enumeration = "super::enums::mobile_app_vendor_enum::MobileAppVendor",
        tag = "2"
    )]
    pub app_store: i32,
}
/// A unified call asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnifiedCallAsset {
    /// Two-letter country code of the phone number. Examples: 'US', 'us'.
    #[prost(string, tag = "1")]
    pub country_code: ::prost::alloc::string::String,
    /// The advertiser's raw phone number. Examples: '1234567890', '(123)456-7890'
    #[prost(string, tag = "2")]
    pub phone_number: ::prost::alloc::string::String,
    /// Output only. Indicates whether this CallAsset should use its own call
    /// conversion setting, follow the account level setting, or disable call
    /// conversion.
    #[prost(
        enumeration = "super::enums::call_conversion_reporting_state_enum::CallConversionReportingState",
        tag = "3"
    )]
    pub call_conversion_reporting_state: i32,
    /// The conversion action to attribute a call conversion to. If not set, the
    /// default conversion action is used. This field only has effect if
    /// call_conversion_reporting_state is set to
    /// USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION.
    #[prost(string, tag = "4")]
    pub call_conversion_action: ::prost::alloc::string::String,
    /// List of non-overlapping schedules specifying all time intervals for which
    /// the asset may serve. There can be a maximum of 6 schedules per day, 42 in
    /// total.
    #[prost(message, repeated, tag = "5")]
    pub ad_schedule_targets: ::prost::alloc::vec::Vec<AdScheduleInfo>,
    /// Whether the call only shows the phone number without a link to the website.
    /// Applies to Microsoft Ads.
    #[prost(bool, tag = "7")]
    pub call_only: bool,
    /// Whether the call should be enabled on call tracking.
    /// Applies to Microsoft Ads.
    #[prost(bool, tag = "8")]
    pub call_tracking_enabled: bool,
    /// Whether to show the call extension in search user's time zone.
    /// Applies to Microsoft Ads.
    #[prost(bool, tag = "9")]
    pub use_searcher_time_zone: bool,
    /// Start date of when this asset is effective and can begin serving, in
    /// yyyy-MM-dd format.
    #[prost(string, tag = "10")]
    pub start_date: ::prost::alloc::string::String,
    /// Last date of when this asset is effective and still serving, in yyyy-MM-dd
    /// format.
    #[prost(string, tag = "11")]
    pub end_date: ::prost::alloc::string::String,
}
/// A call to action asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CallToActionAsset {
    /// Call to action.
    #[prost(
        enumeration = "super::enums::call_to_action_type_enum::CallToActionType",
        tag = "1"
    )]
    pub call_to_action: i32,
}
/// A unified location asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnifiedLocationAsset {
    /// Place IDs uniquely identify a place in the Google Places database and on
    /// Google Maps.
    /// This field is unique for a given customer ID and asset type. See
    /// <https://developers.google.com/places/web-service/place-id> to learn more
    /// about Place ID.
    #[prost(string, tag = "1")]
    pub place_id: ::prost::alloc::string::String,
    /// The list of business locations for the customer.
    /// This will only be returned if the Location Asset is syncing from the
    /// Business Profile account. It is possible to have multiple Business Profile
    /// listings under the same account that point to the same Place ID.
    #[prost(message, repeated, tag = "2")]
    pub business_profile_locations: ::prost::alloc::vec::Vec<BusinessProfileLocation>,
    /// The type of location ownership.
    /// If the type is BUSINESS_OWNER, it will be served as a location extension.
    /// If the type is AFFILIATE, it will be served as an affiliate location.
    #[prost(
        enumeration = "super::enums::location_ownership_type_enum::LocationOwnershipType",
        tag = "3"
    )]
    pub location_ownership_type: i32,
}
/// Business Profile location data synced from the linked Business Profile
/// account.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BusinessProfileLocation {
    /// Advertiser specified label for the location on the Business Profile
    /// account. This is synced from the Business Profile account.
    #[prost(string, repeated, tag = "1")]
    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Business Profile store code of this location. This is synced from the
    /// Business Profile account.
    #[prost(string, tag = "2")]
    pub store_code: ::prost::alloc::string::String,
    /// Listing ID of this Business Profile location. This is synced from the
    /// linked Business Profile account.
    #[prost(int64, tag = "3")]
    pub listing_id: i64,
}
/// Contains the usage information of the asset.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetUsage {
    /// Resource name of the asset.
    #[prost(string, tag = "1")]
    pub asset: ::prost::alloc::string::String,
    /// The served field type of the asset.
    #[prost(
        enumeration = "super::enums::served_asset_field_type_enum::ServedAssetFieldType",
        tag = "2"
    )]
    pub served_asset_field_type: i32,
}
/// Segment only fields.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Segments {
    /// Ad network type.
    #[prost(
        enumeration = "super::enums::ad_network_type_enum::AdNetworkType",
        tag = "3"
    )]
    pub ad_network_type: i32,
    /// Resource name of the conversion action.
    #[prost(string, optional, tag = "146")]
    pub conversion_action: ::core::option::Option<::prost::alloc::string::String>,
    /// Conversion action category.
    #[prost(
        enumeration = "super::enums::conversion_action_category_enum::ConversionActionCategory",
        tag = "53"
    )]
    pub conversion_action_category: i32,
    /// Conversion action name.
    #[prost(string, optional, tag = "114")]
    pub conversion_action_name: ::core::option::Option<::prost::alloc::string::String>,
    /// The conversion custom dimensions.
    #[prost(message, repeated, tag = "188")]
    pub conversion_custom_dimensions: ::prost::alloc::vec::Vec<Value>,
    /// Date to which metrics apply.
    /// yyyy-MM-dd format, for example, 2018-04-17.
    #[prost(string, optional, tag = "79")]
    pub date: ::core::option::Option<::prost::alloc::string::String>,
    /// Day of the week, for example, MONDAY.
    #[prost(enumeration = "super::enums::day_of_week_enum::DayOfWeek", tag = "5")]
    pub day_of_week: i32,
    /// Device to which metrics apply.
    #[prost(enumeration = "super::enums::device_enum::Device", tag = "1")]
    pub device: i32,
    /// Keyword criterion.
    #[prost(message, optional, tag = "61")]
    pub keyword: ::core::option::Option<Keyword>,
    /// Month as represented by the date of the first day of a month. Formatted as
    /// yyyy-MM-dd.
    #[prost(string, optional, tag = "90")]
    pub month: ::core::option::Option<::prost::alloc::string::String>,
    /// Bidding category (level 1) of the product.
    #[prost(string, optional, tag = "92")]
    pub product_bidding_category_level1: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 2) of the product.
    #[prost(string, optional, tag = "93")]
    pub product_bidding_category_level2: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 3) of the product.
    #[prost(string, optional, tag = "94")]
    pub product_bidding_category_level3: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 4) of the product.
    #[prost(string, optional, tag = "95")]
    pub product_bidding_category_level4: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 5) of the product.
    #[prost(string, optional, tag = "96")]
    pub product_bidding_category_level5: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Brand of the product.
    #[prost(string, optional, tag = "97")]
    pub product_brand: ::core::option::Option<::prost::alloc::string::String>,
    /// Channel of the product.
    #[prost(
        enumeration = "super::enums::product_channel_enum::ProductChannel",
        tag = "30"
    )]
    pub product_channel: i32,
    /// Channel exclusivity of the product.
    #[prost(
        enumeration = "super::enums::product_channel_exclusivity_enum::ProductChannelExclusivity",
        tag = "31"
    )]
    pub product_channel_exclusivity: i32,
    /// Condition of the product.
    #[prost(
        enumeration = "super::enums::product_condition_enum::ProductCondition",
        tag = "32"
    )]
    pub product_condition: i32,
    /// Resource name of the geo target constant for the country of sale of the
    /// product.
    #[prost(string, optional, tag = "98")]
    pub product_country: ::core::option::Option<::prost::alloc::string::String>,
    /// Custom attribute 0 of the product.
    #[prost(string, optional, tag = "99")]
    pub product_custom_attribute0: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 1 of the product.
    #[prost(string, optional, tag = "100")]
    pub product_custom_attribute1: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 2 of the product.
    #[prost(string, optional, tag = "101")]
    pub product_custom_attribute2: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 3 of the product.
    #[prost(string, optional, tag = "102")]
    pub product_custom_attribute3: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 4 of the product.
    #[prost(string, optional, tag = "103")]
    pub product_custom_attribute4: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Item ID of the product.
    #[prost(string, optional, tag = "104")]
    pub product_item_id: ::core::option::Option<::prost::alloc::string::String>,
    /// Resource name of the language constant for the language of the product.
    #[prost(string, optional, tag = "105")]
    pub product_language: ::core::option::Option<::prost::alloc::string::String>,
    /// Bidding category (level 1) of the product sold.
    #[prost(string, optional, tag = "166")]
    pub product_sold_bidding_category_level1: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 2) of the product sold.
    #[prost(string, optional, tag = "167")]
    pub product_sold_bidding_category_level2: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 3) of the product sold.
    #[prost(string, optional, tag = "168")]
    pub product_sold_bidding_category_level3: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 4) of the product sold.
    #[prost(string, optional, tag = "169")]
    pub product_sold_bidding_category_level4: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Bidding category (level 5) of the product sold.
    #[prost(string, optional, tag = "170")]
    pub product_sold_bidding_category_level5: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Brand of the product sold.
    #[prost(string, optional, tag = "171")]
    pub product_sold_brand: ::core::option::Option<::prost::alloc::string::String>,
    /// Condition of the product sold.
    #[prost(
        enumeration = "super::enums::product_condition_enum::ProductCondition",
        tag = "172"
    )]
    pub product_sold_condition: i32,
    /// Custom attribute 0 of the product sold.
    #[prost(string, optional, tag = "173")]
    pub product_sold_custom_attribute0: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 1 of the product sold.
    #[prost(string, optional, tag = "174")]
    pub product_sold_custom_attribute1: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 2 of the product sold.
    #[prost(string, optional, tag = "175")]
    pub product_sold_custom_attribute2: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 3 of the product sold.
    #[prost(string, optional, tag = "176")]
    pub product_sold_custom_attribute3: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Custom attribute 4 of the product sold.
    #[prost(string, optional, tag = "177")]
    pub product_sold_custom_attribute4: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
    /// Item ID of the product sold.
    #[prost(string, optional, tag = "178")]
    pub product_sold_item_id: ::core::option::Option<::prost::alloc::string::String>,
    /// Title of the product sold.
    #[prost(string, optional, tag = "179")]
    pub product_sold_title: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 1) of the product sold.
    #[prost(string, optional, tag = "180")]
    pub product_sold_type_l1: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 2) of the product sold.
    #[prost(string, optional, tag = "181")]
    pub product_sold_type_l2: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 3) of the product sold.
    #[prost(string, optional, tag = "182")]
    pub product_sold_type_l3: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 4) of the product sold.
    #[prost(string, optional, tag = "183")]
    pub product_sold_type_l4: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 5) of the product sold.
    #[prost(string, optional, tag = "184")]
    pub product_sold_type_l5: ::core::option::Option<::prost::alloc::string::String>,
    /// Store ID of the product.
    #[prost(string, optional, tag = "106")]
    pub product_store_id: ::core::option::Option<::prost::alloc::string::String>,
    /// Title of the product.
    #[prost(string, optional, tag = "107")]
    pub product_title: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 1) of the product.
    #[prost(string, optional, tag = "108")]
    pub product_type_l1: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 2) of the product.
    #[prost(string, optional, tag = "109")]
    pub product_type_l2: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 3) of the product.
    #[prost(string, optional, tag = "110")]
    pub product_type_l3: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 4) of the product.
    #[prost(string, optional, tag = "111")]
    pub product_type_l4: ::core::option::Option<::prost::alloc::string::String>,
    /// Type (level 5) of the product.
    #[prost(string, optional, tag = "112")]
    pub product_type_l5: ::core::option::Option<::prost::alloc::string::String>,
    /// Quarter as represented by the date of the first day of a quarter.
    /// Uses the calendar year for quarters, for example, the second quarter of
    /// 2018 starts on 2018-04-01. Formatted as yyyy-MM-dd.
    #[prost(string, optional, tag = "128")]
    pub quarter: ::core::option::Option<::prost::alloc::string::String>,
    /// The raw event conversion dimensions.
    #[prost(message, repeated, tag = "189")]
    pub raw_event_conversion_dimensions: ::prost::alloc::vec::Vec<Value>,
    /// Week as defined as Monday through Sunday, and represented by the date of
    /// Monday. Formatted as yyyy-MM-dd.
    #[prost(string, optional, tag = "130")]
    pub week: ::core::option::Option<::prost::alloc::string::String>,
    /// Year, formatted as yyyy.
    #[prost(int32, optional, tag = "131")]
    pub year: ::core::option::Option<i32>,
    /// Only used with CustomerAsset, CampaignAsset and AdGroupAsset metrics.
    /// Indicates whether the interaction metrics occurred on the asset itself
    /// or a different asset or ad unit.
    /// Interactions (for example, clicks) are counted across all the parts of the
    /// served ad (for example, Ad itself and other components like Sitelinks) when
    /// they are served together. When interaction_on_this_asset is true, it means
    /// the interactions are on this specific asset and when
    /// interaction_on_this_asset is false, it means the interactions is not on
    /// this specific asset but on other parts of the served ad this asset is
    /// served with.
    #[prost(message, optional, tag = "139")]
    pub asset_interaction_target: ::core::option::Option<AssetInteractionTarget>,
}
/// A Keyword criterion segment.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Keyword {
    /// The AdGroupCriterion resource name.
    #[prost(string, optional, tag = "3")]
    pub ad_group_criterion: ::core::option::Option<::prost::alloc::string::String>,
    /// Keyword info.
    #[prost(message, optional, tag = "2")]
    pub info: ::core::option::Option<KeywordInfo>,
}
/// An AssetInteractionTarget segment.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetInteractionTarget {
    /// The asset resource name.
    #[prost(string, tag = "1")]
    pub asset: ::prost::alloc::string::String,
    /// Only used with CustomerAsset, CampaignAsset and AdGroupAsset metrics.
    /// Indicates whether the interaction metrics occurred on the asset itself or a
    /// different asset or ad unit.
    #[prost(bool, tag = "2")]
    pub interaction_on_this_asset: bool,
}
/// A mapping that can be used by custom parameter tags in a
/// `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CustomParameter {
    /// The key matching the parameter tag name.
    #[prost(string, optional, tag = "3")]
    pub key: ::core::option::Option<::prost::alloc::string::String>,
    /// The value to be substituted.
    #[prost(string, optional, tag = "4")]
    pub value: ::core::option::Option<::prost::alloc::string::String>,
}
/// A rule specifying the maximum number of times an ad (or some set of ads) can
/// be shown to a user over a particular time period.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FrequencyCapEntry {}
/// An automated bidding strategy that raises bids for clicks
/// that seem more likely to lead to a conversion and lowers
/// them for clicks where they seem less likely.
///
/// This bidding strategy is deprecated and cannot be created anymore. Use
/// ManualCpc with enhanced_cpc_enabled set to true for equivalent functionality.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EnhancedCpc {}
/// Manual bidding strategy that allows advertiser to set the bid per
/// advertiser-specified action.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ManualCpa {}
/// Manual click-based bidding where user pays per click.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ManualCpc {
    /// Whether bids are to be enhanced based on conversion optimizer data.
    #[prost(bool, optional, tag = "2")]
    pub enhanced_cpc_enabled: ::core::option::Option<bool>,
}
/// Manual impression-based bidding where user pays per thousand impressions.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ManualCpm {}
/// An automated bidding strategy to help get the most conversions for your
/// campaigns while spending your budget.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MaximizeConversions {
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// Mutable for portfolio bidding strategies only.
    #[prost(int64, tag = "2")]
    pub cpc_bid_ceiling_micros: i64,
    /// Minimum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// Mutable for portfolio bidding strategies only.
    #[prost(int64, tag = "3")]
    pub cpc_bid_floor_micros: i64,
    /// The target cost-per-action (CPA) option. This is the average amount that
    /// you would like to spend per conversion action specified in micro units of
    /// the bidding strategy's currency. If set, the bid strategy will get as many
    /// conversions as possible at or below the target cost-per-action. If the
    /// target CPA is not set, the bid strategy will aim to achieve the lowest
    /// possible CPA given the budget.
    #[prost(int64, tag = "4")]
    pub target_cpa_micros: i64,
}
/// An automated bidding strategy to help get the most conversion value for your
/// campaigns while spending your budget.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MaximizeConversionValue {
    /// The target return on ad spend (ROAS) option. If set, the bid strategy will
    /// maximize revenue while averaging the target return on ad spend. If the
    /// target ROAS is high, the bid strategy may not be able to spend the full
    /// budget. If the target ROAS is not set, the bid strategy will aim to
    /// achieve the highest possible ROAS for the budget.
    #[prost(double, optional, tag = "2")]
    pub target_roas: ::core::option::Option<f64>,
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// Mutable for portfolio bidding strategies only.
    #[prost(int64, tag = "3")]
    pub cpc_bid_ceiling_micros: i64,
    /// Minimum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// Mutable for portfolio bidding strategies only.
    #[prost(int64, tag = "4")]
    pub cpc_bid_floor_micros: i64,
}
/// An automated bid strategy that sets bids to help get as many conversions as
/// possible at the target cost-per-acquisition (CPA) you set.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetCpa {
    /// Average CPA target.
    /// This target should be greater than or equal to minimum billable unit based
    /// on the currency for the account.
    #[prost(int64, optional, tag = "4")]
    pub target_cpa_micros: ::core::option::Option<i64>,
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// This should only be set for portfolio bid strategies.
    #[prost(int64, optional, tag = "5")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
    /// Minimum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// This should only be set for portfolio bid strategies.
    #[prost(int64, optional, tag = "6")]
    pub cpc_bid_floor_micros: ::core::option::Option<i64>,
}
/// Target CPM (cost per thousand impressions) is an automated bidding strategy
/// that sets bids to optimize performance given the target CPM you set.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetCpm {}
/// An automated bidding strategy that sets bids so that a certain percentage of
/// search ads are shown at the top of the first page (or other targeted
/// location).
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetImpressionShare {
    /// The targeted location on the search results page.
    #[prost(
        enumeration = "super::enums::target_impression_share_location_enum::TargetImpressionShareLocation",
        tag = "1"
    )]
    pub location: i32,
    /// The chosen fraction of ads to be shown in the targeted location in micros.
    /// For example, 1% equals 10,000.
    #[prost(int64, optional, tag = "4")]
    pub location_fraction_micros: ::core::option::Option<i64>,
    /// The highest CPC bid the automated bidding system is permitted to specify.
    /// This is a required field entered by the advertiser that sets the ceiling
    /// and specified in local micros.
    #[prost(int64, optional, tag = "5")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
}
/// An automated bidding strategy that sets bids based on the target fraction of
/// auctions where the advertiser should outrank a specific competitor.
/// This strategy is deprecated.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetOutrankShare {
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    #[prost(message, optional, tag = "3")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
}
/// An automated bidding strategy that helps you maximize revenue while
/// averaging a specific target return on ad spend (ROAS).
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetRoas {
    /// Required. The chosen revenue (based on conversion data) per unit of spend.
    /// Value must be between 0.01 and 1000.0, inclusive.
    #[prost(double, optional, tag = "4")]
    pub target_roas: ::core::option::Option<f64>,
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// This should only be set for portfolio bid strategies.
    #[prost(int64, optional, tag = "5")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
    /// Minimum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    /// This should only be set for portfolio bid strategies.
    #[prost(int64, optional, tag = "6")]
    pub cpc_bid_floor_micros: ::core::option::Option<i64>,
}
/// An automated bid strategy that sets your bids to help get as many clicks
/// as possible within your budget.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetSpend {
    /// The spend target under which to maximize clicks.
    /// A TargetSpend bidder will attempt to spend the smaller of this value
    /// or the natural throttling spend amount.
    /// If not specified, the budget is used as the spend target.
    /// This field is deprecated and should no longer be used. See
    /// <https://ads-developers.googleblog.com/2020/05/reminder-about-sunset-creation-of.html>
    /// for details.
    #[deprecated]
    #[prost(int64, optional, tag = "3")]
    pub target_spend_micros: ::core::option::Option<i64>,
    /// Maximum bid limit that can be set by the bid strategy.
    /// The limit applies to all keywords managed by the strategy.
    #[prost(int64, optional, tag = "4")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
}
/// A bidding strategy where bids are a fraction of the advertised price for
/// some good or service.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PercentCpc {
    /// Maximum bid limit that can be set by the bid strategy. This is
    /// an optional field entered by the advertiser and specified in local micros.
    /// Note: A zero value is interpreted in the same way as having bid_ceiling
    /// undefined.
    #[prost(int64, optional, tag = "3")]
    pub cpc_bid_ceiling_micros: ::core::option::Option<i64>,
    /// Adjusts the bid for each auction upward or downward, depending on the
    /// likelihood of a conversion. Individual bids may exceed
    /// cpc_bid_ceiling_micros, but the average bid amount for a campaign should
    /// not.
    #[prost(bool, optional, tag = "4")]
    pub enhanced_cpc_enabled: ::core::option::Option<bool>,
}
/// A Search Ads 360 text ad.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchAds360TextAdInfo {
    /// The headline of the ad.
    #[prost(string, optional, tag = "1")]
    pub headline: ::core::option::Option<::prost::alloc::string::String>,
    /// The first line of the ad's description.
    #[prost(string, optional, tag = "2")]
    pub description1: ::core::option::Option<::prost::alloc::string::String>,
    /// The second line of the ad's description.
    #[prost(string, optional, tag = "3")]
    pub description2: ::core::option::Option<::prost::alloc::string::String>,
    /// The displayed URL of the ad.
    #[prost(string, optional, tag = "4")]
    pub display_url: ::core::option::Option<::prost::alloc::string::String>,
    /// The displayed mobile URL of the ad.
    #[prost(string, optional, tag = "5")]
    pub display_mobile_url: ::core::option::Option<::prost::alloc::string::String>,
    /// The tracking id of the ad.
    #[prost(int64, optional, tag = "6")]
    pub ad_tracking_id: ::core::option::Option<i64>,
}
/// A Search Ads 360 expanded text ad.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchAds360ExpandedTextAdInfo {
    /// The headline of the ad.
    #[prost(string, optional, tag = "1")]
    pub headline: ::core::option::Option<::prost::alloc::string::String>,
    /// The second headline of the ad.
    #[prost(string, optional, tag = "2")]
    pub headline2: ::core::option::Option<::prost::alloc::string::String>,
    /// The third headline of the ad.
    #[prost(string, optional, tag = "3")]
    pub headline3: ::core::option::Option<::prost::alloc::string::String>,
    /// The first line of the ad's description.
    #[prost(string, optional, tag = "4")]
    pub description1: ::core::option::Option<::prost::alloc::string::String>,
    /// The second line of the ad's description.
    #[prost(string, optional, tag = "5")]
    pub description2: ::core::option::Option<::prost::alloc::string::String>,
    /// Text appended to the auto-generated visible URL with a delimiter.
    #[prost(string, optional, tag = "6")]
    pub path1: ::core::option::Option<::prost::alloc::string::String>,
    /// Text appended to path1 with a delimiter.
    #[prost(string, optional, tag = "7")]
    pub path2: ::core::option::Option<::prost::alloc::string::String>,
    /// The tracking id of the ad.
    #[prost(int64, optional, tag = "8")]
    pub ad_tracking_id: ::core::option::Option<i64>,
}
/// An expanded dynamic search ad.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchAds360ExpandedDynamicSearchAdInfo {
    /// The first line of the ad's description.
    #[prost(string, optional, tag = "1")]
    pub description1: ::core::option::Option<::prost::alloc::string::String>,
    /// The second line of the ad's description.
    #[prost(string, optional, tag = "2")]
    pub description2: ::core::option::Option<::prost::alloc::string::String>,
    /// The tracking id of the ad.
    #[prost(int64, optional, tag = "3")]
    pub ad_tracking_id: ::core::option::Option<i64>,
}
/// A Search Ads 360 product ad.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchAds360ProductAdInfo {}
/// A Search Ads 360 responsive search ad.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchAds360ResponsiveSearchAdInfo {
    /// Text appended to the auto-generated visible URL with a delimiter.
    #[prost(string, optional, tag = "1")]
    pub path1: ::core::option::Option<::prost::alloc::string::String>,
    /// Text appended to path1 with a delimiter.
    #[prost(string, optional, tag = "2")]
    pub path2: ::core::option::Option<::prost::alloc::string::String>,
    /// The tracking id of the ad.
    #[prost(int64, optional, tag = "3")]
    pub ad_tracking_id: ::core::option::Option<i64>,
}
/// Settings for Real-Time Bidding, a feature only available for campaigns
/// targeting the Ad Exchange network.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RealTimeBiddingSetting {
    /// Whether the campaign is opted in to real-time bidding.
    #[prost(bool, optional, tag = "2")]
    pub opt_in: ::core::option::Option<bool>,
}
/// Settings for the targeting-related features, at the campaign and ad group
/// levels. For more details about the targeting setting, visit
/// <https://support.google.com/google-ads/answer/7365594>
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetingSetting {
    /// The per-targeting-dimension setting to restrict the reach of your campaign
    /// or ad group.
    #[prost(message, repeated, tag = "1")]
    pub target_restrictions: ::prost::alloc::vec::Vec<TargetRestriction>,
}
/// The list of per-targeting-dimension targeting settings.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetRestriction {
    /// The targeting dimension that these settings apply to.
    #[prost(
        enumeration = "super::enums::targeting_dimension_enum::TargetingDimension",
        tag = "1"
    )]
    pub targeting_dimension: i32,
    /// Indicates whether to restrict your ads to show only for the criteria you
    /// have selected for this targeting_dimension, or to target all values for
    /// this targeting_dimension and show ads based on your targeting in other
    /// TargetingDimensions. A value of `true` means that these criteria will only
    /// apply bid modifiers, and not affect targeting. A value of `false` means
    /// that these criteria will restrict targeting as well as applying bid
    /// modifiers.
    #[prost(bool, optional, tag = "3")]
    pub bid_only: ::core::option::Option<bool>,
}
/// A type of label displaying text on a colored background.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TextLabel {
    /// Background color of the label in RGB format. This string must match the
    /// regular expression '^\#(\[a-fA-F0-9\]{6}|\[a-fA-F0-9\]{3})$'.
    /// Note: The background color may not be visible for manager accounts.
    #[prost(string, optional, tag = "3")]
    pub background_color: ::core::option::Option<::prost::alloc::string::String>,
    /// A short description of the label. The length must be no more than 200
    /// characters.
    #[prost(string, optional, tag = "4")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
}