google-apis-merchantapi_products_v1beta 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,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