google-apis-merchantapi_products_v1beta 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1907 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module MerchantapiProductsV1beta
24
+
25
+ # Attributes.
26
+ class Attributes
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Additional URLs of images of the item.
30
+ # Corresponds to the JSON property `additionalImageLinks`
31
+ # @return [Array<String>]
32
+ attr_accessor :additional_image_links
33
+
34
+ # Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
35
+ # Corresponds to the JSON property `adsGrouping`
36
+ # @return [String]
37
+ attr_accessor :ads_grouping
38
+
39
+ # Similar to ads_grouping, but only works on CPC.
40
+ # Corresponds to the JSON property `adsLabels`
41
+ # @return [Array<String>]
42
+ attr_accessor :ads_labels
43
+
44
+ # Allows advertisers to override the item URL when the product is shown within
45
+ # the context of Product ads.
46
+ # Corresponds to the JSON property `adsRedirect`
47
+ # @return [String]
48
+ attr_accessor :ads_redirect
49
+
50
+ # Set to true if the item is targeted towards adults.
51
+ # Corresponds to the JSON property `adult`
52
+ # @return [Boolean]
53
+ attr_accessor :adult
54
+ alias_method :adult?, :adult
55
+
56
+ # Target [age group](https://support.google.com/merchants/answer/6324463) of the
57
+ # item.
58
+ # Corresponds to the JSON property `ageGroup`
59
+ # @return [String]
60
+ attr_accessor :age_group
61
+
62
+ # The price represented as a number and currency.
63
+ # Corresponds to the JSON property `autoPricingMinPrice`
64
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
65
+ attr_accessor :auto_pricing_min_price
66
+
67
+ # Availability status of the item.
68
+ # Corresponds to the JSON property `availability`
69
+ # @return [String]
70
+ attr_accessor :availability
71
+
72
+ # The day a pre-ordered product becomes available for delivery, in [ISO 8601](
73
+ # http://en.wikipedia.org/wiki/ISO_8601) format.
74
+ # Corresponds to the JSON property `availabilityDate`
75
+ # @return [String]
76
+ attr_accessor :availability_date
77
+
78
+ # Brand of the item.
79
+ # Corresponds to the JSON property `brand`
80
+ # @return [String]
81
+ attr_accessor :brand
82
+
83
+ # URL for the canonical version of your item's landing page.
84
+ # Corresponds to the JSON property `canonicalLink`
85
+ # @return [String]
86
+ attr_accessor :canonical_link
87
+
88
+ # Product Certifications, for example for energy efficiency labeling of products
89
+ # recorded in the [EU EPREL](https://eprel.ec.europa.eu/screen/home) database.
90
+ # See the [Help Center](https://support.google.com/merchants/answer/13528839)
91
+ # article for more information.
92
+ # Corresponds to the JSON property `certifications`
93
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::Certification>]
94
+ attr_accessor :certifications
95
+
96
+ # Extra fields to export to the Cloud Retail program.
97
+ # Corresponds to the JSON property `cloudExportAdditionalProperties`
98
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::CloudExportAdditionalProperties>]
99
+ attr_accessor :cloud_export_additional_properties
100
+
101
+ # Color of the item.
102
+ # Corresponds to the JSON property `color`
103
+ # @return [String]
104
+ attr_accessor :color
105
+
106
+ # Condition or state of the item.
107
+ # Corresponds to the JSON property `condition`
108
+ # @return [String]
109
+ attr_accessor :condition
110
+
111
+ # The price represented as a number and currency.
112
+ # Corresponds to the JSON property `costOfGoodsSold`
113
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
114
+ attr_accessor :cost_of_goods_sold
115
+
116
+ # Custom label 0 for custom grouping of items in a Shopping campaign.
117
+ # Corresponds to the JSON property `customLabel0`
118
+ # @return [String]
119
+ attr_accessor :custom_label0
120
+
121
+ # Custom label 1 for custom grouping of items in a Shopping campaign.
122
+ # Corresponds to the JSON property `customLabel1`
123
+ # @return [String]
124
+ attr_accessor :custom_label1
125
+
126
+ # Custom label 2 for custom grouping of items in a Shopping campaign.
127
+ # Corresponds to the JSON property `customLabel2`
128
+ # @return [String]
129
+ attr_accessor :custom_label2
130
+
131
+ # Custom label 3 for custom grouping of items in a Shopping campaign.
132
+ # Corresponds to the JSON property `customLabel3`
133
+ # @return [String]
134
+ attr_accessor :custom_label3
135
+
136
+ # Custom label 4 for custom grouping of items in a Shopping campaign.
137
+ # Corresponds to the JSON property `customLabel4`
138
+ # @return [String]
139
+ attr_accessor :custom_label4
140
+
141
+ # Description of the item.
142
+ # Corresponds to the JSON property `description`
143
+ # @return [String]
144
+ attr_accessor :description
145
+
146
+ # The date time when an offer becomes visible in search results across Google’s
147
+ # YouTube surfaces, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
148
+ # See [Disclosure date]( https://support.google.com/merchants/answer/13034208)
149
+ # for more information.
150
+ # Corresponds to the JSON property `disclosureDate`
151
+ # @return [String]
152
+ attr_accessor :disclosure_date
153
+
154
+ # An identifier for an item for dynamic remarketing campaigns.
155
+ # Corresponds to the JSON property `displayAdsId`
156
+ # @return [String]
157
+ attr_accessor :display_ads_id
158
+
159
+ # URL directly to your item's landing page for dynamic remarketing campaigns.
160
+ # Corresponds to the JSON property `displayAdsLink`
161
+ # @return [String]
162
+ attr_accessor :display_ads_link
163
+
164
+ # Advertiser-specified recommendations.
165
+ # Corresponds to the JSON property `displayAdsSimilarIds`
166
+ # @return [Array<String>]
167
+ attr_accessor :display_ads_similar_ids
168
+
169
+ # Title of an item for dynamic remarketing campaigns.
170
+ # Corresponds to the JSON property `displayAdsTitle`
171
+ # @return [String]
172
+ attr_accessor :display_ads_title
173
+
174
+ # Offer margin for dynamic remarketing campaigns.
175
+ # Corresponds to the JSON property `displayAdsValue`
176
+ # @return [Float]
177
+ attr_accessor :display_ads_value
178
+
179
+ # The energy efficiency class as defined in EU directive 2010/30/EU.
180
+ # Corresponds to the JSON property `energyEfficiencyClass`
181
+ # @return [String]
182
+ attr_accessor :energy_efficiency_class
183
+
184
+ # The list of destinations to exclude for this target (corresponds to unchecked
185
+ # check boxes in Merchant Center).
186
+ # Corresponds to the JSON property `excludedDestinations`
187
+ # @return [Array<String>]
188
+ attr_accessor :excluded_destinations
189
+
190
+ # Date on which the item should expire, as specified upon insertion, in [ISO
191
+ # 8601](http://en.wikipedia.org/wiki/ISO_8601) format. The actual expiration
192
+ # date is exposed in `productstatuses` as [googleExpirationDate](https://support.
193
+ # google.com/merchants/answer/6324499) and might be earlier if `expirationDate`
194
+ # is too far in the future.
195
+ # Corresponds to the JSON property `expirationDate`
196
+ # @return [String]
197
+ attr_accessor :expiration_date
198
+
199
+ # Required for multi-seller accounts. Use this attribute if you're a marketplace
200
+ # uploading products for various sellers to your multi-seller account.
201
+ # Corresponds to the JSON property `externalSellerId`
202
+ # @return [String]
203
+ attr_accessor :external_seller_id
204
+
205
+ # Conditions to be met for a product to have free shipping.
206
+ # Corresponds to the JSON property `freeShippingThreshold`
207
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::FreeShippingThreshold>]
208
+ attr_accessor :free_shipping_threshold
209
+
210
+ # Target gender of the item.
211
+ # Corresponds to the JSON property `gender`
212
+ # @return [String]
213
+ attr_accessor :gender
214
+
215
+ # Google's category of the item (see [Google product taxonomy](https://support.
216
+ # google.com/merchants/answer/1705911)). When querying products, this field will
217
+ # contain the user provided value. There is currently no way to get back the
218
+ # auto assigned google product categories through the API.
219
+ # Corresponds to the JSON property `googleProductCategory`
220
+ # @return [String]
221
+ attr_accessor :google_product_category
222
+
223
+ # Global Trade Item Number ([GTIN](https://support.google.com/merchants/answer/
224
+ # 188494#gtin)) of the item.
225
+ # Corresponds to the JSON property `gtin`
226
+ # @return [String]
227
+ attr_accessor :gtin
228
+
229
+ # Set this value to false when the item does not have unique product identifiers
230
+ # appropriate to its category, such as GTIN, MPN, and brand. Defaults to true,
231
+ # if not provided.
232
+ # Corresponds to the JSON property `identifierExists`
233
+ # @return [Boolean]
234
+ attr_accessor :identifier_exists
235
+ alias_method :identifier_exists?, :identifier_exists
236
+
237
+ # URL of an image of the item.
238
+ # Corresponds to the JSON property `imageLink`
239
+ # @return [String]
240
+ attr_accessor :image_link
241
+
242
+ # The list of destinations to include for this target (corresponds to checked
243
+ # check boxes in Merchant Center). Default destinations are always included
244
+ # unless provided in `excludedDestinations`.
245
+ # Corresponds to the JSON property `includedDestinations`
246
+ # @return [Array<String>]
247
+ attr_accessor :included_destinations
248
+
249
+ # A message that represents installment.
250
+ # Corresponds to the JSON property `installment`
251
+ # @return [Google::Apis::MerchantapiProductsV1beta::Installment]
252
+ attr_accessor :installment
253
+
254
+ # Whether the item is a merchant-defined bundle. A bundle is a custom grouping
255
+ # of different products sold by a merchant for a single price.
256
+ # Corresponds to the JSON property `isBundle`
257
+ # @return [Boolean]
258
+ attr_accessor :is_bundle
259
+ alias_method :is_bundle?, :is_bundle
260
+
261
+ # Shared identifier for all variants of the same product.
262
+ # Corresponds to the JSON property `itemGroupId`
263
+ # @return [String]
264
+ attr_accessor :item_group_id
265
+
266
+ # Additional URLs of lifestyle images of the item, used to explicitly identify
267
+ # images that showcase your item in a real-world context. See the [Help Center
268
+ # article](https://support.google.com/merchants/answer/9103186) for more
269
+ # information.
270
+ # Corresponds to the JSON property `lifestyleImageLinks`
271
+ # @return [Array<String>]
272
+ attr_accessor :lifestyle_image_links
273
+
274
+ # URL directly linking to your item's page on your online store.
275
+ # Corresponds to the JSON property `link`
276
+ # @return [String]
277
+ attr_accessor :link
278
+
279
+ # Link template for merchant hosted local storefront.
280
+ # Corresponds to the JSON property `linkTemplate`
281
+ # @return [String]
282
+ attr_accessor :link_template
283
+
284
+ # A message that represents loyalty points.
285
+ # Corresponds to the JSON property `loyaltyPoints`
286
+ # @return [Google::Apis::MerchantapiProductsV1beta::LoyaltyPoints]
287
+ attr_accessor :loyalty_points
288
+
289
+ # A list of loyalty program information that is used to surface loyalty benefits
290
+ # (for example, better pricing, points, etc) to the user of this item.
291
+ # Corresponds to the JSON property `loyaltyPrograms`
292
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::LoyaltyProgram>]
293
+ attr_accessor :loyalty_programs
294
+
295
+ # The material of which the item is made.
296
+ # Corresponds to the JSON property `material`
297
+ # @return [String]
298
+ attr_accessor :material
299
+
300
+ # The energy efficiency class as defined in EU directive 2010/30/EU.
301
+ # Corresponds to the JSON property `maxEnergyEfficiencyClass`
302
+ # @return [String]
303
+ attr_accessor :max_energy_efficiency_class
304
+
305
+ # Maximal product handling time (in business days).
306
+ # Corresponds to the JSON property `maxHandlingTime`
307
+ # @return [Fixnum]
308
+ attr_accessor :max_handling_time
309
+
310
+ # The energy efficiency class as defined in EU directive 2010/30/EU.
311
+ # Corresponds to the JSON property `minEnergyEfficiencyClass`
312
+ # @return [String]
313
+ attr_accessor :min_energy_efficiency_class
314
+
315
+ # Minimal product handling time (in business days).
316
+ # Corresponds to the JSON property `minHandlingTime`
317
+ # @return [Fixnum]
318
+ attr_accessor :min_handling_time
319
+
320
+ # URL for the mobile-optimized version of your item's landing page.
321
+ # Corresponds to the JSON property `mobileLink`
322
+ # @return [String]
323
+ attr_accessor :mobile_link
324
+
325
+ # Link template for merchant hosted local storefront optimized for mobile
326
+ # devices.
327
+ # Corresponds to the JSON property `mobileLinkTemplate`
328
+ # @return [String]
329
+ attr_accessor :mobile_link_template
330
+
331
+ # Manufacturer Part Number ([MPN](https://support.google.com/merchants/answer/
332
+ # 188494#mpn)) of the item.
333
+ # Corresponds to the JSON property `mpn`
334
+ # @return [String]
335
+ attr_accessor :mpn
336
+
337
+ # The number of identical products in a merchant-defined multipack.
338
+ # Corresponds to the JSON property `multipack`
339
+ # @return [Fixnum]
340
+ attr_accessor :multipack
341
+
342
+ # The item's pattern (for example, polka dots).
343
+ # Corresponds to the JSON property `pattern`
344
+ # @return [String]
345
+ attr_accessor :pattern
346
+
347
+ # Publication of this item will be temporarily [paused](https://support.google.
348
+ # com/merchants/answer/11909930).
349
+ # Corresponds to the JSON property `pause`
350
+ # @return [String]
351
+ attr_accessor :pause
352
+
353
+ # The pick up option for the item.
354
+ # Corresponds to the JSON property `pickupMethod`
355
+ # @return [String]
356
+ attr_accessor :pickup_method
357
+
358
+ # Item store pickup timeline.
359
+ # Corresponds to the JSON property `pickupSla`
360
+ # @return [String]
361
+ attr_accessor :pickup_sla
362
+
363
+ # The price represented as a number and currency.
364
+ # Corresponds to the JSON property `price`
365
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
366
+ attr_accessor :price
367
+
368
+ # Technical specification or additional product details.
369
+ # Corresponds to the JSON property `productDetails`
370
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::ProductDetail>]
371
+ attr_accessor :product_details
372
+
373
+ # The dimension of the product.
374
+ # Corresponds to the JSON property `productHeight`
375
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductDimension]
376
+ attr_accessor :product_height
377
+
378
+ # Bullet points describing the most relevant highlights of a product.
379
+ # Corresponds to the JSON property `productHighlights`
380
+ # @return [Array<String>]
381
+ attr_accessor :product_highlights
382
+
383
+ # The dimension of the product.
384
+ # Corresponds to the JSON property `productLength`
385
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductDimension]
386
+ attr_accessor :product_length
387
+
388
+ # Categories of the item (formatted as in [product data specification](https://
389
+ # support.google.com/merchants/answer/188494#product_type)).
390
+ # Corresponds to the JSON property `productTypes`
391
+ # @return [Array<String>]
392
+ attr_accessor :product_types
393
+
394
+ # The weight of the product.
395
+ # Corresponds to the JSON property `productWeight`
396
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductWeight]
397
+ attr_accessor :product_weight
398
+
399
+ # The dimension of the product.
400
+ # Corresponds to the JSON property `productWidth`
401
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductDimension]
402
+ attr_accessor :product_width
403
+
404
+ # The unique ID of a promotion.
405
+ # Corresponds to the JSON property `promotionIds`
406
+ # @return [Array<String>]
407
+ attr_accessor :promotion_ids
408
+
409
+ # The price represented as a number and currency.
410
+ # Corresponds to the JSON property `salePrice`
411
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
412
+ attr_accessor :sale_price
413
+
414
+ # Represents a time interval, encoded as a Timestamp start (inclusive) and a
415
+ # Timestamp end (exclusive). The start must be less than or equal to the end.
416
+ # When the start equals the end, the interval is empty (matches no time). When
417
+ # both start and end are unspecified, the interval matches any time.
418
+ # Corresponds to the JSON property `salePriceEffectiveDate`
419
+ # @return [Google::Apis::MerchantapiProductsV1beta::Interval]
420
+ attr_accessor :sale_price_effective_date
421
+
422
+ # The quantity of the product that is available for selling on Google. Supported
423
+ # only for online products.
424
+ # Corresponds to the JSON property `sellOnGoogleQuantity`
425
+ # @return [Fixnum]
426
+ attr_accessor :sell_on_google_quantity
427
+
428
+ # Shipping rules.
429
+ # Corresponds to the JSON property `shipping`
430
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::Shipping>]
431
+ attr_accessor :shipping
432
+
433
+ # The ShippingDimension of the product.
434
+ # Corresponds to the JSON property `shippingHeight`
435
+ # @return [Google::Apis::MerchantapiProductsV1beta::ShippingDimension]
436
+ attr_accessor :shipping_height
437
+
438
+ # The shipping label of the product, used to group product in account-level
439
+ # shipping rules.
440
+ # Corresponds to the JSON property `shippingLabel`
441
+ # @return [String]
442
+ attr_accessor :shipping_label
443
+
444
+ # The ShippingDimension of the product.
445
+ # Corresponds to the JSON property `shippingLength`
446
+ # @return [Google::Apis::MerchantapiProductsV1beta::ShippingDimension]
447
+ attr_accessor :shipping_length
448
+
449
+ # The ShippingWeight of the product.
450
+ # Corresponds to the JSON property `shippingWeight`
451
+ # @return [Google::Apis::MerchantapiProductsV1beta::ShippingWeight]
452
+ attr_accessor :shipping_weight
453
+
454
+ # The ShippingDimension of the product.
455
+ # Corresponds to the JSON property `shippingWidth`
456
+ # @return [Google::Apis::MerchantapiProductsV1beta::ShippingDimension]
457
+ attr_accessor :shipping_width
458
+
459
+ # List of country codes (ISO 3166-1 alpha-2) to exclude the offer from Shopping
460
+ # Ads destination. Countries from this list are removed from countries
461
+ # configured in data source settings.
462
+ # Corresponds to the JSON property `shoppingAdsExcludedCountries`
463
+ # @return [Array<String>]
464
+ attr_accessor :shopping_ads_excluded_countries
465
+
466
+ # Size of the item. Only one value is allowed. For variants with different sizes,
467
+ # insert a separate product for each size with the same `itemGroupId` value (
468
+ # see [https://support.google.com/merchants/answer/6324492](size definition)).
469
+ # Corresponds to the JSON property `size`
470
+ # @return [String]
471
+ attr_accessor :size
472
+
473
+ # System in which the size is specified. Recommended for apparel items.
474
+ # Corresponds to the JSON property `sizeSystem`
475
+ # @return [String]
476
+ attr_accessor :size_system
477
+
478
+ # The cut of the item. It can be used to represent combined size types for
479
+ # apparel items. Maximum two of size types can be provided (see [https://support.
480
+ # google.com/merchants/answer/6324497](size type)).
481
+ # Corresponds to the JSON property `sizeTypes`
482
+ # @return [Array<String>]
483
+ attr_accessor :size_types
484
+
485
+ # Structured description, for algorithmically (AI)-generated descriptions.
486
+ # Corresponds to the JSON property `structuredDescription`
487
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductStructuredDescription]
488
+ attr_accessor :structured_description
489
+
490
+ # Structured title, for algorithmically (AI)-generated titles.
491
+ # Corresponds to the JSON property `structuredTitle`
492
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductStructuredTitle]
493
+ attr_accessor :structured_title
494
+
495
+ # The SubscriptionCost of the product.
496
+ # Corresponds to the JSON property `subscriptionCost`
497
+ # @return [Google::Apis::MerchantapiProductsV1beta::SubscriptionCost]
498
+ attr_accessor :subscription_cost
499
+
500
+ # The tax category of the product, used to configure detailed tax nexus in
501
+ # account-level tax settings.
502
+ # Corresponds to the JSON property `taxCategory`
503
+ # @return [String]
504
+ attr_accessor :tax_category
505
+
506
+ # Tax information.
507
+ # Corresponds to the JSON property `taxes`
508
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::Tax>]
509
+ attr_accessor :taxes
510
+
511
+ # Title of the item.
512
+ # Corresponds to the JSON property `title`
513
+ # @return [String]
514
+ attr_accessor :title
515
+
516
+ # The transit time label of the product, used to group product in account-level
517
+ # transit time tables.
518
+ # Corresponds to the JSON property `transitTimeLabel`
519
+ # @return [String]
520
+ attr_accessor :transit_time_label
521
+
522
+ # The UnitPricingBaseMeasure of the product.
523
+ # Corresponds to the JSON property `unitPricingBaseMeasure`
524
+ # @return [Google::Apis::MerchantapiProductsV1beta::UnitPricingBaseMeasure]
525
+ attr_accessor :unit_pricing_base_measure
526
+
527
+ # The UnitPricingMeasure of the product.
528
+ # Corresponds to the JSON property `unitPricingMeasure`
529
+ # @return [Google::Apis::MerchantapiProductsV1beta::UnitPricingMeasure]
530
+ attr_accessor :unit_pricing_measure
531
+
532
+ # URL of the 3D image of the item. See the [Help Center article](https://support.
533
+ # google.com/merchants/answer/13674896) for more information.
534
+ # Corresponds to the JSON property `virtualModelLink`
535
+ # @return [String]
536
+ attr_accessor :virtual_model_link
537
+
538
+ def initialize(**args)
539
+ update!(**args)
540
+ end
541
+
542
+ # Update properties of this object
543
+ def update!(**args)
544
+ @additional_image_links = args[:additional_image_links] if args.key?(:additional_image_links)
545
+ @ads_grouping = args[:ads_grouping] if args.key?(:ads_grouping)
546
+ @ads_labels = args[:ads_labels] if args.key?(:ads_labels)
547
+ @ads_redirect = args[:ads_redirect] if args.key?(:ads_redirect)
548
+ @adult = args[:adult] if args.key?(:adult)
549
+ @age_group = args[:age_group] if args.key?(:age_group)
550
+ @auto_pricing_min_price = args[:auto_pricing_min_price] if args.key?(:auto_pricing_min_price)
551
+ @availability = args[:availability] if args.key?(:availability)
552
+ @availability_date = args[:availability_date] if args.key?(:availability_date)
553
+ @brand = args[:brand] if args.key?(:brand)
554
+ @canonical_link = args[:canonical_link] if args.key?(:canonical_link)
555
+ @certifications = args[:certifications] if args.key?(:certifications)
556
+ @cloud_export_additional_properties = args[:cloud_export_additional_properties] if args.key?(:cloud_export_additional_properties)
557
+ @color = args[:color] if args.key?(:color)
558
+ @condition = args[:condition] if args.key?(:condition)
559
+ @cost_of_goods_sold = args[:cost_of_goods_sold] if args.key?(:cost_of_goods_sold)
560
+ @custom_label0 = args[:custom_label0] if args.key?(:custom_label0)
561
+ @custom_label1 = args[:custom_label1] if args.key?(:custom_label1)
562
+ @custom_label2 = args[:custom_label2] if args.key?(:custom_label2)
563
+ @custom_label3 = args[:custom_label3] if args.key?(:custom_label3)
564
+ @custom_label4 = args[:custom_label4] if args.key?(:custom_label4)
565
+ @description = args[:description] if args.key?(:description)
566
+ @disclosure_date = args[:disclosure_date] if args.key?(:disclosure_date)
567
+ @display_ads_id = args[:display_ads_id] if args.key?(:display_ads_id)
568
+ @display_ads_link = args[:display_ads_link] if args.key?(:display_ads_link)
569
+ @display_ads_similar_ids = args[:display_ads_similar_ids] if args.key?(:display_ads_similar_ids)
570
+ @display_ads_title = args[:display_ads_title] if args.key?(:display_ads_title)
571
+ @display_ads_value = args[:display_ads_value] if args.key?(:display_ads_value)
572
+ @energy_efficiency_class = args[:energy_efficiency_class] if args.key?(:energy_efficiency_class)
573
+ @excluded_destinations = args[:excluded_destinations] if args.key?(:excluded_destinations)
574
+ @expiration_date = args[:expiration_date] if args.key?(:expiration_date)
575
+ @external_seller_id = args[:external_seller_id] if args.key?(:external_seller_id)
576
+ @free_shipping_threshold = args[:free_shipping_threshold] if args.key?(:free_shipping_threshold)
577
+ @gender = args[:gender] if args.key?(:gender)
578
+ @google_product_category = args[:google_product_category] if args.key?(:google_product_category)
579
+ @gtin = args[:gtin] if args.key?(:gtin)
580
+ @identifier_exists = args[:identifier_exists] if args.key?(:identifier_exists)
581
+ @image_link = args[:image_link] if args.key?(:image_link)
582
+ @included_destinations = args[:included_destinations] if args.key?(:included_destinations)
583
+ @installment = args[:installment] if args.key?(:installment)
584
+ @is_bundle = args[:is_bundle] if args.key?(:is_bundle)
585
+ @item_group_id = args[:item_group_id] if args.key?(:item_group_id)
586
+ @lifestyle_image_links = args[:lifestyle_image_links] if args.key?(:lifestyle_image_links)
587
+ @link = args[:link] if args.key?(:link)
588
+ @link_template = args[:link_template] if args.key?(:link_template)
589
+ @loyalty_points = args[:loyalty_points] if args.key?(:loyalty_points)
590
+ @loyalty_programs = args[:loyalty_programs] if args.key?(:loyalty_programs)
591
+ @material = args[:material] if args.key?(:material)
592
+ @max_energy_efficiency_class = args[:max_energy_efficiency_class] if args.key?(:max_energy_efficiency_class)
593
+ @max_handling_time = args[:max_handling_time] if args.key?(:max_handling_time)
594
+ @min_energy_efficiency_class = args[:min_energy_efficiency_class] if args.key?(:min_energy_efficiency_class)
595
+ @min_handling_time = args[:min_handling_time] if args.key?(:min_handling_time)
596
+ @mobile_link = args[:mobile_link] if args.key?(:mobile_link)
597
+ @mobile_link_template = args[:mobile_link_template] if args.key?(:mobile_link_template)
598
+ @mpn = args[:mpn] if args.key?(:mpn)
599
+ @multipack = args[:multipack] if args.key?(:multipack)
600
+ @pattern = args[:pattern] if args.key?(:pattern)
601
+ @pause = args[:pause] if args.key?(:pause)
602
+ @pickup_method = args[:pickup_method] if args.key?(:pickup_method)
603
+ @pickup_sla = args[:pickup_sla] if args.key?(:pickup_sla)
604
+ @price = args[:price] if args.key?(:price)
605
+ @product_details = args[:product_details] if args.key?(:product_details)
606
+ @product_height = args[:product_height] if args.key?(:product_height)
607
+ @product_highlights = args[:product_highlights] if args.key?(:product_highlights)
608
+ @product_length = args[:product_length] if args.key?(:product_length)
609
+ @product_types = args[:product_types] if args.key?(:product_types)
610
+ @product_weight = args[:product_weight] if args.key?(:product_weight)
611
+ @product_width = args[:product_width] if args.key?(:product_width)
612
+ @promotion_ids = args[:promotion_ids] if args.key?(:promotion_ids)
613
+ @sale_price = args[:sale_price] if args.key?(:sale_price)
614
+ @sale_price_effective_date = args[:sale_price_effective_date] if args.key?(:sale_price_effective_date)
615
+ @sell_on_google_quantity = args[:sell_on_google_quantity] if args.key?(:sell_on_google_quantity)
616
+ @shipping = args[:shipping] if args.key?(:shipping)
617
+ @shipping_height = args[:shipping_height] if args.key?(:shipping_height)
618
+ @shipping_label = args[:shipping_label] if args.key?(:shipping_label)
619
+ @shipping_length = args[:shipping_length] if args.key?(:shipping_length)
620
+ @shipping_weight = args[:shipping_weight] if args.key?(:shipping_weight)
621
+ @shipping_width = args[:shipping_width] if args.key?(:shipping_width)
622
+ @shopping_ads_excluded_countries = args[:shopping_ads_excluded_countries] if args.key?(:shopping_ads_excluded_countries)
623
+ @size = args[:size] if args.key?(:size)
624
+ @size_system = args[:size_system] if args.key?(:size_system)
625
+ @size_types = args[:size_types] if args.key?(:size_types)
626
+ @structured_description = args[:structured_description] if args.key?(:structured_description)
627
+ @structured_title = args[:structured_title] if args.key?(:structured_title)
628
+ @subscription_cost = args[:subscription_cost] if args.key?(:subscription_cost)
629
+ @tax_category = args[:tax_category] if args.key?(:tax_category)
630
+ @taxes = args[:taxes] if args.key?(:taxes)
631
+ @title = args[:title] if args.key?(:title)
632
+ @transit_time_label = args[:transit_time_label] if args.key?(:transit_time_label)
633
+ @unit_pricing_base_measure = args[:unit_pricing_base_measure] if args.key?(:unit_pricing_base_measure)
634
+ @unit_pricing_measure = args[:unit_pricing_measure] if args.key?(:unit_pricing_measure)
635
+ @virtual_model_link = args[:virtual_model_link] if args.key?(:virtual_model_link)
636
+ end
637
+ end
638
+
639
+ # Product [certification](https://support.google.com/merchants/answer/13528839),
640
+ # initially introduced for EU energy efficiency labeling compliance using the EU
641
+ # EPREL database.
642
+ class Certification
643
+ include Google::Apis::Core::Hashable
644
+
645
+ # The certification authority, for example "European_Commission". Maximum length
646
+ # is 2000 characters.
647
+ # Corresponds to the JSON property `certificationAuthority`
648
+ # @return [String]
649
+ attr_accessor :certification_authority
650
+
651
+ # The certification code. Maximum length is 2000 characters.
652
+ # Corresponds to the JSON property `certificationCode`
653
+ # @return [String]
654
+ attr_accessor :certification_code
655
+
656
+ # The name of the certification, for example "EPREL". Maximum length is 2000
657
+ # characters.
658
+ # Corresponds to the JSON property `certificationName`
659
+ # @return [String]
660
+ attr_accessor :certification_name
661
+
662
+ # The certification value (also known as class, level or grade), for example "A+"
663
+ # , "C", "gold". Maximum length is 2000 characters.
664
+ # Corresponds to the JSON property `certificationValue`
665
+ # @return [String]
666
+ attr_accessor :certification_value
667
+
668
+ def initialize(**args)
669
+ update!(**args)
670
+ end
671
+
672
+ # Update properties of this object
673
+ def update!(**args)
674
+ @certification_authority = args[:certification_authority] if args.key?(:certification_authority)
675
+ @certification_code = args[:certification_code] if args.key?(:certification_code)
676
+ @certification_name = args[:certification_name] if args.key?(:certification_name)
677
+ @certification_value = args[:certification_value] if args.key?(:certification_value)
678
+ end
679
+ end
680
+
681
+ # Product property for the Cloud Retail API. For example, properties for a TV
682
+ # product could be "Screen-Resolution" or "Screen-Size".
683
+ class CloudExportAdditionalProperties
684
+ include Google::Apis::Core::Hashable
685
+
686
+ # Boolean value of the given property. For example for a TV product, "True" or "
687
+ # False" if the screen is UHD.
688
+ # Corresponds to the JSON property `boolValue`
689
+ # @return [Boolean]
690
+ attr_accessor :bool_value
691
+ alias_method :bool_value?, :bool_value
692
+
693
+ # Float values of the given property. For example for a TV product 1.2345.
694
+ # Maximum repeatedness of this value is 400. Values are stored in an arbitrary
695
+ # but consistent order.
696
+ # Corresponds to the JSON property `floatValue`
697
+ # @return [Array<Float>]
698
+ attr_accessor :float_value
699
+
700
+ # Integer values of the given property. For example, 1080 for a TV product's
701
+ # Screen Resolution. Maximum repeatedness of this value is 400. Values are
702
+ # stored in an arbitrary but consistent order.
703
+ # Corresponds to the JSON property `intValue`
704
+ # @return [Array<Fixnum>]
705
+ attr_accessor :int_value
706
+
707
+ # Maximum float value of the given property. For example for a TV product 100.00.
708
+ # Corresponds to the JSON property `maxValue`
709
+ # @return [Float]
710
+ attr_accessor :max_value
711
+
712
+ # Minimum float value of the given property. For example for a TV product 1.00.
713
+ # Corresponds to the JSON property `minValue`
714
+ # @return [Float]
715
+ attr_accessor :min_value
716
+
717
+ # Name of the given property. For example, "Screen-Resolution" for a TV product.
718
+ # Maximum string size is 256 characters.
719
+ # Corresponds to the JSON property `propertyName`
720
+ # @return [String]
721
+ attr_accessor :property_name
722
+
723
+ # Text value of the given property. For example, "8K(UHD)" could be a text value
724
+ # for a TV product. Maximum repeatedness of this value is 400. Values are stored
725
+ # in an arbitrary but consistent order. Maximum string size is 256 characters.
726
+ # Corresponds to the JSON property `textValue`
727
+ # @return [Array<String>]
728
+ attr_accessor :text_value
729
+
730
+ # Unit of the given property. For example, "Pixels" for a TV product. Maximum
731
+ # string size is 256B.
732
+ # Corresponds to the JSON property `unitCode`
733
+ # @return [String]
734
+ attr_accessor :unit_code
735
+
736
+ def initialize(**args)
737
+ update!(**args)
738
+ end
739
+
740
+ # Update properties of this object
741
+ def update!(**args)
742
+ @bool_value = args[:bool_value] if args.key?(:bool_value)
743
+ @float_value = args[:float_value] if args.key?(:float_value)
744
+ @int_value = args[:int_value] if args.key?(:int_value)
745
+ @max_value = args[:max_value] if args.key?(:max_value)
746
+ @min_value = args[:min_value] if args.key?(:min_value)
747
+ @property_name = args[:property_name] if args.key?(:property_name)
748
+ @text_value = args[:text_value] if args.key?(:text_value)
749
+ @unit_code = args[:unit_code] if args.key?(:unit_code)
750
+ end
751
+ end
752
+
753
+ # A message that represents custom attributes. Exactly one of `value` or `
754
+ # group_values` must not be empty.
755
+ class CustomAttribute
756
+ include Google::Apis::Core::Hashable
757
+
758
+ # Subattributes within this attribute group. If `group_values` is not empty, `
759
+ # value` must be empty.
760
+ # Corresponds to the JSON property `groupValues`
761
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::CustomAttribute>]
762
+ attr_accessor :group_values
763
+
764
+ # The name of the attribute.
765
+ # Corresponds to the JSON property `name`
766
+ # @return [String]
767
+ attr_accessor :name
768
+
769
+ # The value of the attribute. If `value` is not empty, `group_values` must be
770
+ # empty.
771
+ # Corresponds to the JSON property `value`
772
+ # @return [String]
773
+ attr_accessor :value
774
+
775
+ def initialize(**args)
776
+ update!(**args)
777
+ end
778
+
779
+ # Update properties of this object
780
+ def update!(**args)
781
+ @group_values = args[:group_values] if args.key?(:group_values)
782
+ @name = args[:name] if args.key?(:name)
783
+ @value = args[:value] if args.key?(:value)
784
+ end
785
+ end
786
+
787
+ # The destination status of the product status.
788
+ class DestinationStatus
789
+ include Google::Apis::Core::Hashable
790
+
791
+ # List of country codes (ISO 3166-1 alpha-2) where the offer is approved.
792
+ # Corresponds to the JSON property `approvedCountries`
793
+ # @return [Array<String>]
794
+ attr_accessor :approved_countries
795
+
796
+ # List of country codes (ISO 3166-1 alpha-2) where the offer is disapproved.
797
+ # Corresponds to the JSON property `disapprovedCountries`
798
+ # @return [Array<String>]
799
+ attr_accessor :disapproved_countries
800
+
801
+ # List of country codes (ISO 3166-1 alpha-2) where the offer is pending approval.
802
+ # Corresponds to the JSON property `pendingCountries`
803
+ # @return [Array<String>]
804
+ attr_accessor :pending_countries
805
+
806
+ # The name of the reporting context.
807
+ # Corresponds to the JSON property `reportingContext`
808
+ # @return [String]
809
+ attr_accessor :reporting_context
810
+
811
+ def initialize(**args)
812
+ update!(**args)
813
+ end
814
+
815
+ # Update properties of this object
816
+ def update!(**args)
817
+ @approved_countries = args[:approved_countries] if args.key?(:approved_countries)
818
+ @disapproved_countries = args[:disapproved_countries] if args.key?(:disapproved_countries)
819
+ @pending_countries = args[:pending_countries] if args.key?(:pending_countries)
820
+ @reporting_context = args[:reporting_context] if args.key?(:reporting_context)
821
+ end
822
+ end
823
+
824
+ # A generic empty message that you can re-use to avoid defining duplicated empty
825
+ # messages in your APIs. A typical example is to use it as the request or the
826
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
827
+ # protobuf.Empty) returns (google.protobuf.Empty); `
828
+ class Empty
829
+ include Google::Apis::Core::Hashable
830
+
831
+ def initialize(**args)
832
+ update!(**args)
833
+ end
834
+
835
+ # Update properties of this object
836
+ def update!(**args)
837
+ end
838
+ end
839
+
840
+ # Conditions to be met for a product to have free shipping.
841
+ class FreeShippingThreshold
842
+ include Google::Apis::Core::Hashable
843
+
844
+ # The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/
845
+ # main/en.xml) of the country to which an item will ship.
846
+ # Corresponds to the JSON property `country`
847
+ # @return [String]
848
+ attr_accessor :country
849
+
850
+ # The price represented as a number and currency.
851
+ # Corresponds to the JSON property `priceThreshold`
852
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
853
+ attr_accessor :price_threshold
854
+
855
+ def initialize(**args)
856
+ update!(**args)
857
+ end
858
+
859
+ # Update properties of this object
860
+ def update!(**args)
861
+ @country = args[:country] if args.key?(:country)
862
+ @price_threshold = args[:price_threshold] if args.key?(:price_threshold)
863
+ end
864
+ end
865
+
866
+ # A message that represents installment.
867
+ class Installment
868
+ include Google::Apis::Core::Hashable
869
+
870
+ # The price represented as a number and currency.
871
+ # Corresponds to the JSON property `amount`
872
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
873
+ attr_accessor :amount
874
+
875
+ # Type of installment payments. Supported values are: * "`finance`" * "`lease`"
876
+ # Corresponds to the JSON property `creditType`
877
+ # @return [String]
878
+ attr_accessor :credit_type
879
+
880
+ # The price represented as a number and currency.
881
+ # Corresponds to the JSON property `downpayment`
882
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
883
+ attr_accessor :downpayment
884
+
885
+ # The number of installments the buyer has to pay.
886
+ # Corresponds to the JSON property `months`
887
+ # @return [Fixnum]
888
+ attr_accessor :months
889
+
890
+ def initialize(**args)
891
+ update!(**args)
892
+ end
893
+
894
+ # Update properties of this object
895
+ def update!(**args)
896
+ @amount = args[:amount] if args.key?(:amount)
897
+ @credit_type = args[:credit_type] if args.key?(:credit_type)
898
+ @downpayment = args[:downpayment] if args.key?(:downpayment)
899
+ @months = args[:months] if args.key?(:months)
900
+ end
901
+ end
902
+
903
+ # Represents a time interval, encoded as a Timestamp start (inclusive) and a
904
+ # Timestamp end (exclusive). The start must be less than or equal to the end.
905
+ # When the start equals the end, the interval is empty (matches no time). When
906
+ # both start and end are unspecified, the interval matches any time.
907
+ class Interval
908
+ include Google::Apis::Core::Hashable
909
+
910
+ # Optional. Exclusive end of the interval. If specified, a Timestamp matching
911
+ # this interval will have to be before the end.
912
+ # Corresponds to the JSON property `endTime`
913
+ # @return [String]
914
+ attr_accessor :end_time
915
+
916
+ # Optional. Inclusive start of the interval. If specified, a Timestamp matching
917
+ # this interval will have to be the same or after the start.
918
+ # Corresponds to the JSON property `startTime`
919
+ # @return [String]
920
+ attr_accessor :start_time
921
+
922
+ def initialize(**args)
923
+ update!(**args)
924
+ end
925
+
926
+ # Update properties of this object
927
+ def update!(**args)
928
+ @end_time = args[:end_time] if args.key?(:end_time)
929
+ @start_time = args[:start_time] if args.key?(:start_time)
930
+ end
931
+ end
932
+
933
+ # The ItemLevelIssue of the product status.
934
+ class ItemLevelIssue
935
+ include Google::Apis::Core::Hashable
936
+
937
+ # List of country codes (ISO 3166-1 alpha-2) where issue applies to the offer.
938
+ # Corresponds to the JSON property `applicableCountries`
939
+ # @return [Array<String>]
940
+ attr_accessor :applicable_countries
941
+
942
+ # The attribute's name, if the issue is caused by a single attribute.
943
+ # Corresponds to the JSON property `attribute`
944
+ # @return [String]
945
+ attr_accessor :attribute
946
+
947
+ # The error code of the issue.
948
+ # Corresponds to the JSON property `code`
949
+ # @return [String]
950
+ attr_accessor :code
951
+
952
+ # A short issue description in English.
953
+ # Corresponds to the JSON property `description`
954
+ # @return [String]
955
+ attr_accessor :description
956
+
957
+ # A detailed issue description in English.
958
+ # Corresponds to the JSON property `detail`
959
+ # @return [String]
960
+ attr_accessor :detail
961
+
962
+ # The URL of a web page to help with resolving this issue.
963
+ # Corresponds to the JSON property `documentation`
964
+ # @return [String]
965
+ attr_accessor :documentation
966
+
967
+ # The reporting context the issue applies to.
968
+ # Corresponds to the JSON property `reportingContext`
969
+ # @return [String]
970
+ attr_accessor :reporting_context
971
+
972
+ # Whether the issue can be resolved by the merchant.
973
+ # Corresponds to the JSON property `resolution`
974
+ # @return [String]
975
+ attr_accessor :resolution
976
+
977
+ # How this issue affects serving of the offer.
978
+ # Corresponds to the JSON property `severity`
979
+ # @return [String]
980
+ attr_accessor :severity
981
+
982
+ def initialize(**args)
983
+ update!(**args)
984
+ end
985
+
986
+ # Update properties of this object
987
+ def update!(**args)
988
+ @applicable_countries = args[:applicable_countries] if args.key?(:applicable_countries)
989
+ @attribute = args[:attribute] if args.key?(:attribute)
990
+ @code = args[:code] if args.key?(:code)
991
+ @description = args[:description] if args.key?(:description)
992
+ @detail = args[:detail] if args.key?(:detail)
993
+ @documentation = args[:documentation] if args.key?(:documentation)
994
+ @reporting_context = args[:reporting_context] if args.key?(:reporting_context)
995
+ @resolution = args[:resolution] if args.key?(:resolution)
996
+ @severity = args[:severity] if args.key?(:severity)
997
+ end
998
+ end
999
+
1000
+ # Response message for the ListProducts method.
1001
+ class ListProductsResponse
1002
+ include Google::Apis::Core::Hashable
1003
+
1004
+ # A token, which can be sent as `page_token` to retrieve the next page. If this
1005
+ # field is omitted, there are no subsequent pages.
1006
+ # Corresponds to the JSON property `nextPageToken`
1007
+ # @return [String]
1008
+ attr_accessor :next_page_token
1009
+
1010
+ # The processed products from the specified account. These are your processed
1011
+ # products after applying rules and supplemental data sources.
1012
+ # Corresponds to the JSON property `products`
1013
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::Product>]
1014
+ attr_accessor :products
1015
+
1016
+ def initialize(**args)
1017
+ update!(**args)
1018
+ end
1019
+
1020
+ # Update properties of this object
1021
+ def update!(**args)
1022
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1023
+ @products = args[:products] if args.key?(:products)
1024
+ end
1025
+ end
1026
+
1027
+ # A message that represents loyalty points.
1028
+ class LoyaltyPoints
1029
+ include Google::Apis::Core::Hashable
1030
+
1031
+ # Name of loyalty points program. It is recommended to limit the name to 12 full-
1032
+ # width characters or 24 Roman characters.
1033
+ # Corresponds to the JSON property `name`
1034
+ # @return [String]
1035
+ attr_accessor :name
1036
+
1037
+ # The retailer's loyalty points in absolute value.
1038
+ # Corresponds to the JSON property `pointsValue`
1039
+ # @return [Fixnum]
1040
+ attr_accessor :points_value
1041
+
1042
+ # The ratio of a point when converted to currency. Google assumes currency based
1043
+ # on Merchant Center settings. If ratio is left out, it defaults to 1.0.
1044
+ # Corresponds to the JSON property `ratio`
1045
+ # @return [Float]
1046
+ attr_accessor :ratio
1047
+
1048
+ def initialize(**args)
1049
+ update!(**args)
1050
+ end
1051
+
1052
+ # Update properties of this object
1053
+ def update!(**args)
1054
+ @name = args[:name] if args.key?(:name)
1055
+ @points_value = args[:points_value] if args.key?(:points_value)
1056
+ @ratio = args[:ratio] if args.key?(:ratio)
1057
+ end
1058
+ end
1059
+
1060
+ # A message that represents loyalty program.
1061
+ class LoyaltyProgram
1062
+ include Google::Apis::Core::Hashable
1063
+
1064
+ # The price represented as a number and currency.
1065
+ # Corresponds to the JSON property `cashbackForFutureUse`
1066
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
1067
+ attr_accessor :cashback_for_future_use
1068
+
1069
+ # The amount of loyalty points earned on a purchase.
1070
+ # Corresponds to the JSON property `loyaltyPoints`
1071
+ # @return [Fixnum]
1072
+ attr_accessor :loyalty_points
1073
+
1074
+ # The price represented as a number and currency.
1075
+ # Corresponds to the JSON property `price`
1076
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
1077
+ attr_accessor :price
1078
+
1079
+ # The label of the loyalty program. This is an internal label that uniquely
1080
+ # identifies the relationship between a merchant entity and a loyalty program
1081
+ # entity. The label must be provided so that the system can associate the assets
1082
+ # below (for example, price and points) with a merchant. The corresponding
1083
+ # program must be linked to the merchant account.
1084
+ # Corresponds to the JSON property `programLabel`
1085
+ # @return [String]
1086
+ attr_accessor :program_label
1087
+
1088
+ # The label of the tier within the loyalty program. Must match one of the labels
1089
+ # within the program.
1090
+ # Corresponds to the JSON property `tierLabel`
1091
+ # @return [String]
1092
+ attr_accessor :tier_label
1093
+
1094
+ def initialize(**args)
1095
+ update!(**args)
1096
+ end
1097
+
1098
+ # Update properties of this object
1099
+ def update!(**args)
1100
+ @cashback_for_future_use = args[:cashback_for_future_use] if args.key?(:cashback_for_future_use)
1101
+ @loyalty_points = args[:loyalty_points] if args.key?(:loyalty_points)
1102
+ @price = args[:price] if args.key?(:price)
1103
+ @program_label = args[:program_label] if args.key?(:program_label)
1104
+ @tier_label = args[:tier_label] if args.key?(:tier_label)
1105
+ end
1106
+ end
1107
+
1108
+ # The price represented as a number and currency.
1109
+ class Price
1110
+ include Google::Apis::Core::Hashable
1111
+
1112
+ # The price represented as a number in micros (1 million micros is an equivalent
1113
+ # to one's currency standard unit, for example, 1 USD = 1000000 micros).
1114
+ # Corresponds to the JSON property `amountMicros`
1115
+ # @return [Fixnum]
1116
+ attr_accessor :amount_micros
1117
+
1118
+ # The currency of the price using three-letter acronyms according to [ISO 4217](
1119
+ # http://en.wikipedia.org/wiki/ISO_4217).
1120
+ # Corresponds to the JSON property `currencyCode`
1121
+ # @return [String]
1122
+ attr_accessor :currency_code
1123
+
1124
+ def initialize(**args)
1125
+ update!(**args)
1126
+ end
1127
+
1128
+ # Update properties of this object
1129
+ def update!(**args)
1130
+ @amount_micros = args[:amount_micros] if args.key?(:amount_micros)
1131
+ @currency_code = args[:currency_code] if args.key?(:currency_code)
1132
+ end
1133
+ end
1134
+
1135
+ # The processed product, built from multiple product inputs after applying rules
1136
+ # and supplemental data sources. This processed product matches what is shown in
1137
+ # your Merchant Center account and in Shopping ads and other surfaces across
1138
+ # Google. Each product is built from exactly one primary data source product
1139
+ # input, and multiple supplemental data source inputs. After inserting, updating,
1140
+ # or deleting a product input, it may take several minutes before the updated
1141
+ # processed product can be retrieved. All fields in the processed product and
1142
+ # its sub-messages match the name of their corresponding attribute in the [
1143
+ # Product data specification](https://support.google.com/merchants/answer/
1144
+ # 7052112) with some exceptions.
1145
+ class Product
1146
+ include Google::Apis::Core::Hashable
1147
+
1148
+ # Attributes.
1149
+ # Corresponds to the JSON property `attributes`
1150
+ # @return [Google::Apis::MerchantapiProductsV1beta::Attributes]
1151
+ attr_accessor :attributes
1152
+
1153
+ # Output only. The [channel](https://support.google.com/merchants/answer/7361332)
1154
+ # of the product.
1155
+ # Corresponds to the JSON property `channel`
1156
+ # @return [String]
1157
+ attr_accessor :channel
1158
+
1159
+ # Output only. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1)
1160
+ # language code for the product.
1161
+ # Corresponds to the JSON property `contentLanguage`
1162
+ # @return [String]
1163
+ attr_accessor :content_language
1164
+
1165
+ # Output only. A list of custom (merchant-provided) attributes. It can also be
1166
+ # used to submit any attribute of the data specification in its generic form (
1167
+ # for example, `` "name": "size type", "value": "regular" ``). This is useful
1168
+ # for submitting attributes not explicitly exposed by the API, such as
1169
+ # additional attributes used for Buy on Google.
1170
+ # Corresponds to the JSON property `customAttributes`
1171
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::CustomAttribute>]
1172
+ attr_accessor :custom_attributes
1173
+
1174
+ # Output only. The primary data source of the product.
1175
+ # Corresponds to the JSON property `dataSource`
1176
+ # @return [String]
1177
+ attr_accessor :data_source
1178
+
1179
+ # Output only. The feed label for the product.
1180
+ # Corresponds to the JSON property `feedLabel`
1181
+ # @return [String]
1182
+ attr_accessor :feed_label
1183
+
1184
+ # The name of the product. Format: `"`product.name=accounts/`account`/products/`
1185
+ # product``"`
1186
+ # Corresponds to the JSON property `name`
1187
+ # @return [String]
1188
+ attr_accessor :name
1189
+
1190
+ # Output only. Your unique identifier for the product. This is the same for the
1191
+ # product input and processed product. Leading and trailing whitespaces are
1192
+ # stripped and multiple whitespaces are replaced by a single whitespace upon
1193
+ # submission. See the [product data specification](https://support.google.com/
1194
+ # merchants/answer/188494#id) for details.
1195
+ # Corresponds to the JSON property `offerId`
1196
+ # @return [String]
1197
+ attr_accessor :offer_id
1198
+
1199
+ # The status of a product, data validation issues, that is, information about a
1200
+ # product computed asynchronously.
1201
+ # Corresponds to the JSON property `productStatus`
1202
+ # @return [Google::Apis::MerchantapiProductsV1beta::ProductStatus]
1203
+ attr_accessor :product_status
1204
+
1205
+ # Output only. Represents the existing version (freshness) of the product, which
1206
+ # can be used to preserve the right order when multiple updates are done at the
1207
+ # same time. If set, the insertion is prevented when version number is lower
1208
+ # than the current version number of the existing product. Re-insertion (for
1209
+ # example, product refresh after 30 days) can be performed with the current `
1210
+ # version_number`. Only supported for insertions into primary data sources. If
1211
+ # the operation is prevented, the aborted exception will be thrown.
1212
+ # Corresponds to the JSON property `versionNumber`
1213
+ # @return [Fixnum]
1214
+ attr_accessor :version_number
1215
+
1216
+ def initialize(**args)
1217
+ update!(**args)
1218
+ end
1219
+
1220
+ # Update properties of this object
1221
+ def update!(**args)
1222
+ @attributes = args[:attributes] if args.key?(:attributes)
1223
+ @channel = args[:channel] if args.key?(:channel)
1224
+ @content_language = args[:content_language] if args.key?(:content_language)
1225
+ @custom_attributes = args[:custom_attributes] if args.key?(:custom_attributes)
1226
+ @data_source = args[:data_source] if args.key?(:data_source)
1227
+ @feed_label = args[:feed_label] if args.key?(:feed_label)
1228
+ @name = args[:name] if args.key?(:name)
1229
+ @offer_id = args[:offer_id] if args.key?(:offer_id)
1230
+ @product_status = args[:product_status] if args.key?(:product_status)
1231
+ @version_number = args[:version_number] if args.key?(:version_number)
1232
+ end
1233
+ end
1234
+
1235
+ # The change that happened to the product including old value, new value,
1236
+ # country code as the region code and reporting context.
1237
+ class ProductChange
1238
+ include Google::Apis::Core::Hashable
1239
+
1240
+ # The new value of the changed resource or attribute.
1241
+ # Corresponds to the JSON property `newValue`
1242
+ # @return [String]
1243
+ attr_accessor :new_value
1244
+
1245
+ # The old value of the changed resource or attribute.
1246
+ # Corresponds to the JSON property `oldValue`
1247
+ # @return [String]
1248
+ attr_accessor :old_value
1249
+
1250
+ # Countries that have the change (if applicable)
1251
+ # Corresponds to the JSON property `regionCode`
1252
+ # @return [String]
1253
+ attr_accessor :region_code
1254
+
1255
+ # Reporting contexts that have the change (if applicable)
1256
+ # Corresponds to the JSON property `reportingContext`
1257
+ # @return [String]
1258
+ attr_accessor :reporting_context
1259
+
1260
+ def initialize(**args)
1261
+ update!(**args)
1262
+ end
1263
+
1264
+ # Update properties of this object
1265
+ def update!(**args)
1266
+ @new_value = args[:new_value] if args.key?(:new_value)
1267
+ @old_value = args[:old_value] if args.key?(:old_value)
1268
+ @region_code = args[:region_code] if args.key?(:region_code)
1269
+ @reporting_context = args[:reporting_context] if args.key?(:reporting_context)
1270
+ end
1271
+ end
1272
+
1273
+ # The product details.
1274
+ class ProductDetail
1275
+ include Google::Apis::Core::Hashable
1276
+
1277
+ # The name of the product detail.
1278
+ # Corresponds to the JSON property `attributeName`
1279
+ # @return [String]
1280
+ attr_accessor :attribute_name
1281
+
1282
+ # The value of the product detail.
1283
+ # Corresponds to the JSON property `attributeValue`
1284
+ # @return [String]
1285
+ attr_accessor :attribute_value
1286
+
1287
+ # The section header used to group a set of product details.
1288
+ # Corresponds to the JSON property `sectionName`
1289
+ # @return [String]
1290
+ attr_accessor :section_name
1291
+
1292
+ def initialize(**args)
1293
+ update!(**args)
1294
+ end
1295
+
1296
+ # Update properties of this object
1297
+ def update!(**args)
1298
+ @attribute_name = args[:attribute_name] if args.key?(:attribute_name)
1299
+ @attribute_value = args[:attribute_value] if args.key?(:attribute_value)
1300
+ @section_name = args[:section_name] if args.key?(:section_name)
1301
+ end
1302
+ end
1303
+
1304
+ # The dimension of the product.
1305
+ class ProductDimension
1306
+ include Google::Apis::Core::Hashable
1307
+
1308
+ # Required. The dimension units. Acceptable values are: * "`in`" * "`cm`"
1309
+ # Corresponds to the JSON property `unit`
1310
+ # @return [String]
1311
+ attr_accessor :unit
1312
+
1313
+ # Required. The dimension value represented as a number. The value can have a
1314
+ # maximum precision of four decimal places.
1315
+ # Corresponds to the JSON property `value`
1316
+ # @return [Float]
1317
+ attr_accessor :value
1318
+
1319
+ def initialize(**args)
1320
+ update!(**args)
1321
+ end
1322
+
1323
+ # Update properties of this object
1324
+ def update!(**args)
1325
+ @unit = args[:unit] if args.key?(:unit)
1326
+ @value = args[:value] if args.key?(:value)
1327
+ end
1328
+ end
1329
+
1330
+ # This resource represents input data you submit for a product, not the
1331
+ # processed product that you see in Merchant Center, in Shopping ads, or across
1332
+ # Google surfaces. Product inputs, rules and supplemental data source data are
1333
+ # combined to create the processed product. Required product input attributes to
1334
+ # pass data validation checks are primarily defined in the [Products Data
1335
+ # Specification](https://support.google.com/merchants/answer/188494). The
1336
+ # following attributes are required: feedLabel, contentLanguage and offerId.
1337
+ # After inserting, updating, or deleting a product input, it may take several
1338
+ # minutes before the processed product can be retrieved. All fields in the
1339
+ # product input and its sub-messages match the English name of their
1340
+ # corresponding attribute in the vertical spec with [some exceptions](https://
1341
+ # support.google.com/merchants/answer/7052112).
1342
+ class ProductInput
1343
+ include Google::Apis::Core::Hashable
1344
+
1345
+ # Attributes.
1346
+ # Corresponds to the JSON property `attributes`
1347
+ # @return [Google::Apis::MerchantapiProductsV1beta::Attributes]
1348
+ attr_accessor :attributes
1349
+
1350
+ # Required. Immutable. The [channel](https://support.google.com/merchants/answer/
1351
+ # 7361332) of the product.
1352
+ # Corresponds to the JSON property `channel`
1353
+ # @return [String]
1354
+ attr_accessor :channel
1355
+
1356
+ # Required. Immutable. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/
1357
+ # ISO_639-1) language code for the product.
1358
+ # Corresponds to the JSON property `contentLanguage`
1359
+ # @return [String]
1360
+ attr_accessor :content_language
1361
+
1362
+ # Optional. A list of custom (merchant-provided) attributes. It can also be used
1363
+ # for submitting any attribute of the data specification in its generic form (
1364
+ # for example, `` "name": "size type", "value": "regular" ``). This is useful
1365
+ # for submitting attributes not explicitly exposed by the API, such as
1366
+ # additional attributes used for Buy on Google. Maximum allowed number of
1367
+ # characters for each custom attribute is 10240 (represents sum of characters
1368
+ # for name and value). Maximum 2500 custom attributes can be set per product,
1369
+ # with total size of 102.4kB. Underscores in custom attribute names are replaced
1370
+ # by spaces upon insertion.
1371
+ # Corresponds to the JSON property `customAttributes`
1372
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::CustomAttribute>]
1373
+ attr_accessor :custom_attributes
1374
+
1375
+ # Required. Immutable. The [feed label](https://developers.google.com/shopping-
1376
+ # content/guides/products/feed-labels) for the product.
1377
+ # Corresponds to the JSON property `feedLabel`
1378
+ # @return [String]
1379
+ attr_accessor :feed_label
1380
+
1381
+ # Identifier. The name of the product input. Format: `"`productinput.name=
1382
+ # accounts/`account`/productInputs/`productinput``"`
1383
+ # Corresponds to the JSON property `name`
1384
+ # @return [String]
1385
+ attr_accessor :name
1386
+
1387
+ # Required. Immutable. Your unique identifier for the product. This is the same
1388
+ # for the product input and processed product. Leading and trailing whitespaces
1389
+ # are stripped and multiple whitespaces are replaced by a single whitespace upon
1390
+ # submission. See the [products data specification](https://support.google.com/
1391
+ # merchants/answer/188494#id) for details.
1392
+ # Corresponds to the JSON property `offerId`
1393
+ # @return [String]
1394
+ attr_accessor :offer_id
1395
+
1396
+ # Output only. The name of the processed product. Format: `"`product.name=
1397
+ # accounts/`account`/products/`product``"`
1398
+ # Corresponds to the JSON property `product`
1399
+ # @return [String]
1400
+ attr_accessor :product
1401
+
1402
+ # Optional. Represents the existing version (freshness) of the product, which
1403
+ # can be used to preserve the right order when multiple updates are done at the
1404
+ # same time. If set, the insertion is prevented when version number is lower
1405
+ # than the current version number of the existing product. Re-insertion (for
1406
+ # example, product refresh after 30 days) can be performed with the current `
1407
+ # version_number`. Only supported for insertions into primary data sources. If
1408
+ # the operation is prevented, the aborted exception will be thrown.
1409
+ # Corresponds to the JSON property `versionNumber`
1410
+ # @return [Fixnum]
1411
+ attr_accessor :version_number
1412
+
1413
+ def initialize(**args)
1414
+ update!(**args)
1415
+ end
1416
+
1417
+ # Update properties of this object
1418
+ def update!(**args)
1419
+ @attributes = args[:attributes] if args.key?(:attributes)
1420
+ @channel = args[:channel] if args.key?(:channel)
1421
+ @content_language = args[:content_language] if args.key?(:content_language)
1422
+ @custom_attributes = args[:custom_attributes] if args.key?(:custom_attributes)
1423
+ @feed_label = args[:feed_label] if args.key?(:feed_label)
1424
+ @name = args[:name] if args.key?(:name)
1425
+ @offer_id = args[:offer_id] if args.key?(:offer_id)
1426
+ @product = args[:product] if args.key?(:product)
1427
+ @version_number = args[:version_number] if args.key?(:version_number)
1428
+ end
1429
+ end
1430
+
1431
+ # The status of a product, data validation issues, that is, information about a
1432
+ # product computed asynchronously.
1433
+ class ProductStatus
1434
+ include Google::Apis::Core::Hashable
1435
+
1436
+ # Date on which the item has been created, in [ISO 8601](http://en.wikipedia.org/
1437
+ # wiki/ISO_8601) format.
1438
+ # Corresponds to the JSON property `creationDate`
1439
+ # @return [String]
1440
+ attr_accessor :creation_date
1441
+
1442
+ # The intended destinations for the product.
1443
+ # Corresponds to the JSON property `destinationStatuses`
1444
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::DestinationStatus>]
1445
+ attr_accessor :destination_statuses
1446
+
1447
+ # Date on which the item expires, in [ISO 8601](http://en.wikipedia.org/wiki/
1448
+ # ISO_8601) format.
1449
+ # Corresponds to the JSON property `googleExpirationDate`
1450
+ # @return [String]
1451
+ attr_accessor :google_expiration_date
1452
+
1453
+ # A list of all issues associated with the product.
1454
+ # Corresponds to the JSON property `itemLevelIssues`
1455
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::ItemLevelIssue>]
1456
+ attr_accessor :item_level_issues
1457
+
1458
+ # Date on which the item has been last updated, in [ISO 8601](http://en.
1459
+ # wikipedia.org/wiki/ISO_8601) format.
1460
+ # Corresponds to the JSON property `lastUpdateDate`
1461
+ # @return [String]
1462
+ attr_accessor :last_update_date
1463
+
1464
+ def initialize(**args)
1465
+ update!(**args)
1466
+ end
1467
+
1468
+ # Update properties of this object
1469
+ def update!(**args)
1470
+ @creation_date = args[:creation_date] if args.key?(:creation_date)
1471
+ @destination_statuses = args[:destination_statuses] if args.key?(:destination_statuses)
1472
+ @google_expiration_date = args[:google_expiration_date] if args.key?(:google_expiration_date)
1473
+ @item_level_issues = args[:item_level_issues] if args.key?(:item_level_issues)
1474
+ @last_update_date = args[:last_update_date] if args.key?(:last_update_date)
1475
+ end
1476
+ end
1477
+
1478
+ # The message that the merchant will receive to notify about product status
1479
+ # change event
1480
+ class ProductStatusChangeMessage
1481
+ include Google::Apis::Core::Hashable
1482
+
1483
+ # The target account that owns the entity that changed. Format : `accounts/`
1484
+ # merchant_id``
1485
+ # Corresponds to the JSON property `account`
1486
+ # @return [String]
1487
+ attr_accessor :account
1488
+
1489
+ # The attribute in the resource that changed, in this case it will be always `
1490
+ # Status`.
1491
+ # Corresponds to the JSON property `attribute`
1492
+ # @return [String]
1493
+ attr_accessor :attribute
1494
+
1495
+ # A message to describe the change that happened to the product
1496
+ # Corresponds to the JSON property `changes`
1497
+ # @return [Array<Google::Apis::MerchantapiProductsV1beta::ProductChange>]
1498
+ attr_accessor :changes
1499
+
1500
+ # The account that manages the merchant's account. can be the same as merchant
1501
+ # id if it is standalone account. Format : `accounts/`service_provider_id``
1502
+ # Corresponds to the JSON property `managingAccount`
1503
+ # @return [String]
1504
+ attr_accessor :managing_account
1505
+
1506
+ # The product name. Format: ``product.name=accounts/`account`/products/`product``
1507
+ # `
1508
+ # Corresponds to the JSON property `resource`
1509
+ # @return [String]
1510
+ attr_accessor :resource
1511
+
1512
+ # The product id.
1513
+ # Corresponds to the JSON property `resourceId`
1514
+ # @return [String]
1515
+ attr_accessor :resource_id
1516
+
1517
+ # The resource that changed, in this case it will always be `Product`.
1518
+ # Corresponds to the JSON property `resourceType`
1519
+ # @return [String]
1520
+ attr_accessor :resource_type
1521
+
1522
+ def initialize(**args)
1523
+ update!(**args)
1524
+ end
1525
+
1526
+ # Update properties of this object
1527
+ def update!(**args)
1528
+ @account = args[:account] if args.key?(:account)
1529
+ @attribute = args[:attribute] if args.key?(:attribute)
1530
+ @changes = args[:changes] if args.key?(:changes)
1531
+ @managing_account = args[:managing_account] if args.key?(:managing_account)
1532
+ @resource = args[:resource] if args.key?(:resource)
1533
+ @resource_id = args[:resource_id] if args.key?(:resource_id)
1534
+ @resource_type = args[:resource_type] if args.key?(:resource_type)
1535
+ end
1536
+ end
1537
+
1538
+ # Structured description, for algorithmically (AI)-generated descriptions.
1539
+ class ProductStructuredDescription
1540
+ include Google::Apis::Core::Hashable
1541
+
1542
+ # The description text Maximum length is 5000 characters
1543
+ # Corresponds to the JSON property `content`
1544
+ # @return [String]
1545
+ attr_accessor :content
1546
+
1547
+ # The digital source type, for example "trained_algorithmic_media". Following [
1548
+ # IPTC](https://cv.iptc.org/newscodes/digitalsourcetype). Maximum length is 40
1549
+ # characters.
1550
+ # Corresponds to the JSON property `digitalSourceType`
1551
+ # @return [String]
1552
+ attr_accessor :digital_source_type
1553
+
1554
+ def initialize(**args)
1555
+ update!(**args)
1556
+ end
1557
+
1558
+ # Update properties of this object
1559
+ def update!(**args)
1560
+ @content = args[:content] if args.key?(:content)
1561
+ @digital_source_type = args[:digital_source_type] if args.key?(:digital_source_type)
1562
+ end
1563
+ end
1564
+
1565
+ # Structured title, for algorithmically (AI)-generated titles.
1566
+ class ProductStructuredTitle
1567
+ include Google::Apis::Core::Hashable
1568
+
1569
+ # The title text Maximum length is 150 characters
1570
+ # Corresponds to the JSON property `content`
1571
+ # @return [String]
1572
+ attr_accessor :content
1573
+
1574
+ # The digital source type, for example "trained_algorithmic_media". Following [
1575
+ # IPTC](https://cv.iptc.org/newscodes/digitalsourcetype). Maximum length is 40
1576
+ # characters.
1577
+ # Corresponds to the JSON property `digitalSourceType`
1578
+ # @return [String]
1579
+ attr_accessor :digital_source_type
1580
+
1581
+ def initialize(**args)
1582
+ update!(**args)
1583
+ end
1584
+
1585
+ # Update properties of this object
1586
+ def update!(**args)
1587
+ @content = args[:content] if args.key?(:content)
1588
+ @digital_source_type = args[:digital_source_type] if args.key?(:digital_source_type)
1589
+ end
1590
+ end
1591
+
1592
+ # The weight of the product.
1593
+ class ProductWeight
1594
+ include Google::Apis::Core::Hashable
1595
+
1596
+ # Required. The weight unit. Acceptable values are: * "`g`" * "`kg`" * "`oz`" * "
1597
+ # `lb`"
1598
+ # Corresponds to the JSON property `unit`
1599
+ # @return [String]
1600
+ attr_accessor :unit
1601
+
1602
+ # Required. The weight represented as a number. The weight can have a maximum
1603
+ # precision of four decimal places.
1604
+ # Corresponds to the JSON property `value`
1605
+ # @return [Float]
1606
+ attr_accessor :value
1607
+
1608
+ def initialize(**args)
1609
+ update!(**args)
1610
+ end
1611
+
1612
+ # Update properties of this object
1613
+ def update!(**args)
1614
+ @unit = args[:unit] if args.key?(:unit)
1615
+ @value = args[:value] if args.key?(:value)
1616
+ end
1617
+ end
1618
+
1619
+ # The Shipping of the product.
1620
+ class Shipping
1621
+ include Google::Apis::Core::Hashable
1622
+
1623
+ # The [CLDR territory code](http://www.unicode.org/repos/cldr/tags/latest/common/
1624
+ # main/en.xml) of the country to which an item will ship.
1625
+ # Corresponds to the JSON property `country`
1626
+ # @return [String]
1627
+ attr_accessor :country
1628
+
1629
+ # The location where the shipping is applicable, represented by a location group
1630
+ # name.
1631
+ # Corresponds to the JSON property `locationGroupName`
1632
+ # @return [String]
1633
+ attr_accessor :location_group_name
1634
+
1635
+ # The numeric ID of a location that the shipping rate applies to as defined in
1636
+ # the [AdWords API](https://developers.google.com/adwords/api/docs/appendix/
1637
+ # geotargeting).
1638
+ # Corresponds to the JSON property `locationId`
1639
+ # @return [Fixnum]
1640
+ attr_accessor :location_id
1641
+
1642
+ # Maximum handling time (inclusive) between when the order is received and
1643
+ # shipped in business days. 0 means that the order is shipped on the same day as
1644
+ # it is received if it happens before the cut-off time. Both maxHandlingTime and
1645
+ # maxTransitTime are required if providing shipping speeds. minHandlingTime is
1646
+ # optional if maxHandlingTime is present.
1647
+ # Corresponds to the JSON property `maxHandlingTime`
1648
+ # @return [Fixnum]
1649
+ attr_accessor :max_handling_time
1650
+
1651
+ # Maximum transit time (inclusive) between when the order has shipped and when
1652
+ # it is delivered in business days. 0 means that the order is delivered on the
1653
+ # same day as it ships. Both maxHandlingTime and maxTransitTime are required if
1654
+ # providing shipping speeds. minTransitTime is optional if maxTransitTime is
1655
+ # present.
1656
+ # Corresponds to the JSON property `maxTransitTime`
1657
+ # @return [Fixnum]
1658
+ attr_accessor :max_transit_time
1659
+
1660
+ # Minimum handling time (inclusive) between when the order is received and
1661
+ # shipped in business days. 0 means that the order is shipped on the same day as
1662
+ # it is received if it happens before the cut-off time. minHandlingTime can only
1663
+ # be present together with maxHandlingTime; but it is not required if
1664
+ # maxHandlingTime is present.
1665
+ # Corresponds to the JSON property `minHandlingTime`
1666
+ # @return [Fixnum]
1667
+ attr_accessor :min_handling_time
1668
+
1669
+ # Minimum transit time (inclusive) between when the order has shipped and when
1670
+ # it is delivered in business days. 0 means that the order is delivered on the
1671
+ # same day as it ships. minTransitTime can only be present together with
1672
+ # maxTransitTime; but it is not required if maxTransitTime is present.
1673
+ # Corresponds to the JSON property `minTransitTime`
1674
+ # @return [Fixnum]
1675
+ attr_accessor :min_transit_time
1676
+
1677
+ # The postal code range that the shipping rate applies to, represented by a
1678
+ # postal code, a postal code prefix followed by a * wildcard, a range between
1679
+ # two postal codes or two postal code prefixes of equal length.
1680
+ # Corresponds to the JSON property `postalCode`
1681
+ # @return [String]
1682
+ attr_accessor :postal_code
1683
+
1684
+ # The price represented as a number and currency.
1685
+ # Corresponds to the JSON property `price`
1686
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
1687
+ attr_accessor :price
1688
+
1689
+ # The geographic region to which a shipping rate applies. See [region](https://
1690
+ # support.google.com/merchants/answer/6324484) for more information.
1691
+ # Corresponds to the JSON property `region`
1692
+ # @return [String]
1693
+ attr_accessor :region
1694
+
1695
+ # A free-form description of the service class or delivery speed.
1696
+ # Corresponds to the JSON property `service`
1697
+ # @return [String]
1698
+ attr_accessor :service
1699
+
1700
+ def initialize(**args)
1701
+ update!(**args)
1702
+ end
1703
+
1704
+ # Update properties of this object
1705
+ def update!(**args)
1706
+ @country = args[:country] if args.key?(:country)
1707
+ @location_group_name = args[:location_group_name] if args.key?(:location_group_name)
1708
+ @location_id = args[:location_id] if args.key?(:location_id)
1709
+ @max_handling_time = args[:max_handling_time] if args.key?(:max_handling_time)
1710
+ @max_transit_time = args[:max_transit_time] if args.key?(:max_transit_time)
1711
+ @min_handling_time = args[:min_handling_time] if args.key?(:min_handling_time)
1712
+ @min_transit_time = args[:min_transit_time] if args.key?(:min_transit_time)
1713
+ @postal_code = args[:postal_code] if args.key?(:postal_code)
1714
+ @price = args[:price] if args.key?(:price)
1715
+ @region = args[:region] if args.key?(:region)
1716
+ @service = args[:service] if args.key?(:service)
1717
+ end
1718
+ end
1719
+
1720
+ # The ShippingDimension of the product.
1721
+ class ShippingDimension
1722
+ include Google::Apis::Core::Hashable
1723
+
1724
+ # The unit of value.
1725
+ # Corresponds to the JSON property `unit`
1726
+ # @return [String]
1727
+ attr_accessor :unit
1728
+
1729
+ # The dimension of the product used to calculate the shipping cost of the item.
1730
+ # Corresponds to the JSON property `value`
1731
+ # @return [Float]
1732
+ attr_accessor :value
1733
+
1734
+ def initialize(**args)
1735
+ update!(**args)
1736
+ end
1737
+
1738
+ # Update properties of this object
1739
+ def update!(**args)
1740
+ @unit = args[:unit] if args.key?(:unit)
1741
+ @value = args[:value] if args.key?(:value)
1742
+ end
1743
+ end
1744
+
1745
+ # The ShippingWeight of the product.
1746
+ class ShippingWeight
1747
+ include Google::Apis::Core::Hashable
1748
+
1749
+ # The unit of value.
1750
+ # Corresponds to the JSON property `unit`
1751
+ # @return [String]
1752
+ attr_accessor :unit
1753
+
1754
+ # The weight of the product used to calculate the shipping cost of the item.
1755
+ # Corresponds to the JSON property `value`
1756
+ # @return [Float]
1757
+ attr_accessor :value
1758
+
1759
+ def initialize(**args)
1760
+ update!(**args)
1761
+ end
1762
+
1763
+ # Update properties of this object
1764
+ def update!(**args)
1765
+ @unit = args[:unit] if args.key?(:unit)
1766
+ @value = args[:value] if args.key?(:value)
1767
+ end
1768
+ end
1769
+
1770
+ # The SubscriptionCost of the product.
1771
+ class SubscriptionCost
1772
+ include Google::Apis::Core::Hashable
1773
+
1774
+ # The price represented as a number and currency.
1775
+ # Corresponds to the JSON property `amount`
1776
+ # @return [Google::Apis::MerchantapiProductsV1beta::Price]
1777
+ attr_accessor :amount
1778
+
1779
+ # The type of subscription period. Supported values are: * "`month`" * "`year`"
1780
+ # Corresponds to the JSON property `period`
1781
+ # @return [String]
1782
+ attr_accessor :period
1783
+
1784
+ # The number of subscription periods the buyer has to pay.
1785
+ # Corresponds to the JSON property `periodLength`
1786
+ # @return [Fixnum]
1787
+ attr_accessor :period_length
1788
+
1789
+ def initialize(**args)
1790
+ update!(**args)
1791
+ end
1792
+
1793
+ # Update properties of this object
1794
+ def update!(**args)
1795
+ @amount = args[:amount] if args.key?(:amount)
1796
+ @period = args[:period] if args.key?(:period)
1797
+ @period_length = args[:period_length] if args.key?(:period_length)
1798
+ end
1799
+ end
1800
+
1801
+ # The Tax of the product.
1802
+ class Tax
1803
+ include Google::Apis::Core::Hashable
1804
+
1805
+ # The country within which the item is taxed, specified as a [CLDR territory
1806
+ # code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml).
1807
+ # Corresponds to the JSON property `country`
1808
+ # @return [String]
1809
+ attr_accessor :country
1810
+
1811
+ # The numeric ID of a location that the tax rate applies to as defined in the [
1812
+ # AdWords API](https://developers.google.com/adwords/api/docs/appendix/
1813
+ # geotargeting).
1814
+ # Corresponds to the JSON property `locationId`
1815
+ # @return [Fixnum]
1816
+ attr_accessor :location_id
1817
+
1818
+ # The postal code range that the tax rate applies to, represented by a ZIP code,
1819
+ # a ZIP code prefix using * wildcard, a range between two ZIP codes or two ZIP
1820
+ # code prefixes of equal length. Examples: 94114, 94*, 94002-95460, 94*-95*.
1821
+ # Corresponds to the JSON property `postalCode`
1822
+ # @return [String]
1823
+ attr_accessor :postal_code
1824
+
1825
+ # The percentage of tax rate that applies to the item price.
1826
+ # Corresponds to the JSON property `rate`
1827
+ # @return [Float]
1828
+ attr_accessor :rate
1829
+
1830
+ # The geographic region to which the tax rate applies.
1831
+ # Corresponds to the JSON property `region`
1832
+ # @return [String]
1833
+ attr_accessor :region
1834
+
1835
+ # Set to true if tax is charged on shipping.
1836
+ # Corresponds to the JSON property `taxShip`
1837
+ # @return [Boolean]
1838
+ attr_accessor :tax_ship
1839
+ alias_method :tax_ship?, :tax_ship
1840
+
1841
+ def initialize(**args)
1842
+ update!(**args)
1843
+ end
1844
+
1845
+ # Update properties of this object
1846
+ def update!(**args)
1847
+ @country = args[:country] if args.key?(:country)
1848
+ @location_id = args[:location_id] if args.key?(:location_id)
1849
+ @postal_code = args[:postal_code] if args.key?(:postal_code)
1850
+ @rate = args[:rate] if args.key?(:rate)
1851
+ @region = args[:region] if args.key?(:region)
1852
+ @tax_ship = args[:tax_ship] if args.key?(:tax_ship)
1853
+ end
1854
+ end
1855
+
1856
+ # The UnitPricingBaseMeasure of the product.
1857
+ class UnitPricingBaseMeasure
1858
+ include Google::Apis::Core::Hashable
1859
+
1860
+ # The unit of the denominator.
1861
+ # Corresponds to the JSON property `unit`
1862
+ # @return [String]
1863
+ attr_accessor :unit
1864
+
1865
+ # The denominator of the unit price.
1866
+ # Corresponds to the JSON property `value`
1867
+ # @return [Fixnum]
1868
+ attr_accessor :value
1869
+
1870
+ def initialize(**args)
1871
+ update!(**args)
1872
+ end
1873
+
1874
+ # Update properties of this object
1875
+ def update!(**args)
1876
+ @unit = args[:unit] if args.key?(:unit)
1877
+ @value = args[:value] if args.key?(:value)
1878
+ end
1879
+ end
1880
+
1881
+ # The UnitPricingMeasure of the product.
1882
+ class UnitPricingMeasure
1883
+ include Google::Apis::Core::Hashable
1884
+
1885
+ # The unit of the measure.
1886
+ # Corresponds to the JSON property `unit`
1887
+ # @return [String]
1888
+ attr_accessor :unit
1889
+
1890
+ # The measure of an item.
1891
+ # Corresponds to the JSON property `value`
1892
+ # @return [Float]
1893
+ attr_accessor :value
1894
+
1895
+ def initialize(**args)
1896
+ update!(**args)
1897
+ end
1898
+
1899
+ # Update properties of this object
1900
+ def update!(**args)
1901
+ @unit = args[:unit] if args.key?(:unit)
1902
+ @value = args[:value] if args.key?(:value)
1903
+ end
1904
+ end
1905
+ end
1906
+ end
1907
+ end