amazon-product-advertising-api 0.2.1

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,70 @@
1
+ module AmazonProductAdvertisingApi #:nodoc:
2
+ module Operations #:nodoc:
3
+ module BrowseNode #:nodoc:
4
+
5
+ # A class to represent the BrowseNodeLookup Operation. See AmazonProductAdvertisingApi::Operations::Base::Request for info relating to all Requests.
6
+ class BrowseNodeLookup < AmazonProductAdvertisingApi::Operations::Base::Request
7
+
8
+ REQUEST_PARAMETERS = :browse_node_id, :response_group
9
+
10
+ REQUEST_PARAMETERS.each do |param|
11
+ self.send(:attr_accessor, param)
12
+ end
13
+
14
+ # BrowseNodeLookup only requires a browse_node_id to be specified.
15
+ def initialize(browse_node_id, region = :uk)
16
+ super()
17
+
18
+ self.browse_node_id = browse_node_id
19
+ self.operation = "BrowseNodeLookup"
20
+ self.region = region
21
+ end
22
+
23
+ # BrowseNode methods return xml consisting of a BrowseNodes tag with several BrowseNode tags inside.
24
+ def parse
25
+ self.response.add_element("BrowseNodes", AmazonProductAdvertisingApi::Operations::Base::Element.new)
26
+
27
+ (self.hpricot_data/'BrowseNodes > BrowseNode').each do |element|
28
+ new_element = AmazonProductAdvertisingApi::Operations::Base::Element.new
29
+ self.response.browse_nodes << new_element
30
+
31
+ queue = []
32
+ queue << [new_element, element.containers]
33
+
34
+ queue.each do |pair|
35
+ current_element = pair[0]
36
+ current_children = pair[1]
37
+
38
+ current_children.each do |child|
39
+ if child.containers.size == 0
40
+ current_element.add_element(child.name, child.inner_html)
41
+ else
42
+ if parent_a_container?(child)
43
+ new_element = AmazonProductAdvertisingApi::Operations::Base::Element.new
44
+ current_element << new_element
45
+ queue << [new_element, child.containers]
46
+ else
47
+ new_element = current_element.add_element(child.name, AmazonProductAdvertisingApi::Operations::Base::Element.new)
48
+ queue << [new_element, child.containers]
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ private
57
+ # This simply looks at the defined parameters and creates a hash of the ones that have values assigned.
58
+ # Need to work out a way of doing this so I don't need to keep defining exactly the same method in each class.
59
+ def params
60
+ REQUEST_PARAMETERS.inject({}) do |parameters, parameter|
61
+ parameters[parameter] = eval("self.#{parameter}") unless eval("self.#{parameter}.nil?")
62
+ parameters
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,155 @@
1
+ module AmazonProductAdvertisingApi #:nodoc:
2
+ module Operations #:nodoc:
3
+ module Item #:nodoc:
4
+
5
+ # Gets mixed into each of the classes in AmazonProductAdvertisingApi::Operations::Item for common behaviours.
6
+ module Common
7
+
8
+ # Item methods return xml consisting of an Items tag with several Item tags inside.
9
+ def parse
10
+ self.response.add_element("Items", AmazonProductAdvertisingApi::Operations::Base::Element.new)
11
+
12
+ (self.hpricot_data/'Items > Item').each do |element|
13
+ new_element = AmazonProductAdvertisingApi::Operations::Base::Element.new
14
+ self.response.items << new_element
15
+
16
+ queue = []
17
+ queue << [new_element, element.containers]
18
+
19
+ queue.each do |pair|
20
+ current_element = pair[0]
21
+ current_children = pair[1]
22
+
23
+ current_children.each do |child|
24
+ if child.containers.size == 0
25
+ current_element.add_element(child.name, child.inner_html)
26
+ else
27
+ if parent_a_container?(child)
28
+ new_element = AmazonProductAdvertisingApi::Operations::Base::Element.new
29
+ current_element << new_element
30
+ queue << [new_element, child.containers]
31
+ else
32
+ new_element = current_element.add_element(child.name, AmazonProductAdvertisingApi::Operations::Base::Element.new)
33
+ queue << [new_element, child.containers]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ # A class to represent the ItemSearch Operation. See AmazonProductAdvertisingApi::Operations::Base::Request for info relating to all Requests.
44
+ #
45
+ # It mixes in AmazonProductAdvertisingApi::Operations::Item::Common for it's parse method.
46
+ class ItemSearch < AmazonProductAdvertisingApi::Operations::Base::Request
47
+
48
+ include Common
49
+
50
+ REQUEST_PARAMETERS = :actor, :artist, :audience_rating, :author, :availability, :brand, :browse_node, :city,
51
+ :composer, :condition, :conductor, :director, :item_page, :keywords, :manufacturer, :maximum_price,
52
+ :merchant_id, :minimum_price, :neighborhood, :orchestra, :postal_code, :power, :publisher, :related_items_page,
53
+ :relationship_type, :review_sort, :search_index, :sort, :tag_page, :tags_per_page, :tag_sort, :text_stream, :title,
54
+ :variation_page, :response_group
55
+
56
+ REQUEST_PARAMETERS.each do |param|
57
+ self.send(:attr_accessor, param)
58
+ end
59
+
60
+ # ItemSearch requires keywords and a search index to be specified.
61
+ def initialize(keywords, search_index = "Books", region = :uk)
62
+ super()
63
+
64
+ self.keywords = keywords
65
+ self.search_index = search_index
66
+ self.operation = "ItemSearch"
67
+ self.region = region
68
+ end
69
+
70
+ private
71
+ # This simply looks at the defined parameters and creates a hash of the ones that have values assigned.
72
+ # Need to work out a way of doing this so I don't need to keep defining exactly the same method in each class.
73
+ def params
74
+ REQUEST_PARAMETERS.inject({}) do |parameters, parameter|
75
+ parameters[parameter] = eval("self.#{parameter}") unless eval("self.#{parameter}.nil?")
76
+ parameters
77
+ end
78
+ end
79
+
80
+ end
81
+
82
+ # A class to represent the ItemLookup Operation. See AmazonProductAdvertisingApi::Operations::Base::Request for info relating to all Requests.
83
+ #
84
+ # It mixes in AmazonProductAdvertisingApi::Operations::Item::Common for it's parse method.
85
+ class ItemLookup < AmazonProductAdvertisingApi::Operations::Base::Request
86
+
87
+ include Common
88
+
89
+ REQUEST_PARAMETERS = :condition, :id_type, :item_id, :merchant_id, :offer_page, :related_items_page, :relationship_type, :review_page,
90
+ :review_sort, :search_index, :tag_page, :tags_per_page, :tag_sort, :variation_page, :response_group
91
+
92
+ REQUEST_PARAMETERS.each do |param|
93
+ self.send(:attr_accessor, param)
94
+ end
95
+
96
+ # ItemLookup only requires an item id (ASIN) to be specified.
97
+ def initialize(item_id, region = :uk)
98
+ super()
99
+
100
+ self.item_id = item_id
101
+ self.operation = "ItemLookup"
102
+ self.region = region
103
+ end
104
+
105
+ private
106
+ # This simply looks at the defined parameters and creates a hash of the ones that have values assigned.
107
+ # Need to work out a way of doing this so I don't need to keep defining exactly the same method in each class.
108
+ def params
109
+ REQUEST_PARAMETERS.inject({}) do |parameters, parameter|
110
+ parameters[parameter] = eval("self.#{parameter}") unless eval("self.#{parameter}.nil?")
111
+ parameters
112
+ end
113
+ end
114
+
115
+ end
116
+
117
+ # A class to represent the SimilarityLookup Operation. See AmazonProductAdvertisingApi::Operations::Base::Request for info relating to all Requests.
118
+ #
119
+ # Despite not following the same naming convention of other classes in this module, it returns data structured the same way so has been put here.
120
+ #
121
+ # It mixes in AmazonProductAdvertisingApi::Operations::Item::Common for it's parse method.
122
+ class SimilarityLookup < AmazonProductAdvertisingApi::Operations::Base::Request
123
+
124
+ include Common
125
+
126
+ REQUEST_PARAMETERS = :condition, :item_id, :merchant_id, :similarity_type, :response_group
127
+
128
+ REQUEST_PARAMETERS.each do |param|
129
+ self.send(:attr_accessor, param)
130
+ end
131
+
132
+ # SimilarityLookup only requires an item id (ASIN) to be specified.
133
+ def initialize(item_id, region = :uk)
134
+ super()
135
+
136
+ self.item_id = item_id
137
+ self.operation = "SimilarityLookup"
138
+ self.region = region
139
+ end
140
+
141
+ private
142
+ # This simply looks at the defined parameters and creates a hash of the ones that have values assigned.
143
+ # Need to work out a way of doing this so I don't need to keep defining exactly the same method in each class.
144
+ def params
145
+ REQUEST_PARAMETERS.inject({}) do |parameters, parameter|
146
+ parameters[parameter] = eval("self.#{parameter}") unless eval("self.#{parameter}.nil?")
147
+ parameters
148
+ end
149
+ end
150
+
151
+ end
152
+
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,560 @@
1
+ module AmazonProductAdvertisingApi #:nodoc:
2
+ module Operations #:nodoc:
3
+ module Base #:nodoc:
4
+
5
+ # This is a list of all response elements from the API docs dated 2009-03-31.
6
+ # It is used by the element object so that we can return a nil or an empty elements
7
+ # if an element is queried for something that isn't in the response.
8
+ RESPONSE_ELEMENTS = [
9
+ :about,
10
+ :about_me,
11
+ :actor,
12
+ :additional_name,
13
+ :address1,
14
+ :address2,
15
+ :address3,
16
+ :alternate_version,
17
+ :amazon_maximum_age,
18
+ :amazon_minimum_age,
19
+ :amount,
20
+ :aperture_modes,
21
+ :artist,
22
+ :asin,
23
+ :aspect_ratio,
24
+ :audience_rating,
25
+ :audio_format,
26
+ :author,
27
+ :availability,
28
+ :availability_attributes,
29
+ :average_feedback_rating,
30
+ :average_rating,
31
+ :back_finding,
32
+ :band_material_type,
33
+ :batteries,
34
+ :batteries_included,
35
+ :battery_description,
36
+ :battery_type,
37
+ :bed_id,
38
+ :bed_name,
39
+ :benefit,
40
+ :benefits,
41
+ :benefit_type,
42
+ :benefit_description,
43
+ :bezel_material_type,
44
+ :bin,
45
+ :binding,
46
+ :bin_item_count,
47
+ :bin_name,
48
+ :bin_parameter,
49
+ :birthday,
50
+ :body_style_id,
51
+ :body_style_name,
52
+ :brake_id,
53
+ :brake_name,
54
+ :brand,
55
+ :browse_node_id,
56
+ :calendar_type,
57
+ :camera_manual_features,
58
+ :cart_id,
59
+ :cart_item,
60
+ :cart_item_id,
61
+ :cart_items,
62
+ :case_diameter,
63
+ :case_material_type,
64
+ :case_thickness,
65
+ :case_type,
66
+ :category,
67
+ :cdrw_description,
68
+ :chain_type,
69
+ :city,
70
+ :clasp_type,
71
+ :clothing_size,
72
+ :code,
73
+ :collection,
74
+ :collection_item,
75
+ :collection_parent,
76
+ :collections,
77
+ :color,
78
+ :comment,
79
+ :compatability,
80
+ :compnent_tyype,
81
+ :condition,
82
+ :condition_note,
83
+ :content,
84
+ :corrected_query,
85
+ :country,
86
+ :coupon_combination_type,
87
+ :cpu_manufacturer,
88
+ :cpu_speed,
89
+ :cpu_type,
90
+ :creator,
91
+ :creation_date,
92
+ :currency_amount,
93
+ :currency_code,
94
+ :customer_id,
95
+ :customer_name,
96
+ :customer_nickname,
97
+ :customer_review,
98
+ :customer_reviews,
99
+ :date,
100
+ :date_added,
101
+ :date_created,
102
+ :day,
103
+ :delay_between_shots,
104
+ :department,
105
+ :details,
106
+ :detail_page_url,
107
+ :dewey_decimal_number,
108
+ :dial_color,
109
+ :dial_window_material_type,
110
+ :digital_zoom,
111
+ :director,
112
+ :display_size,
113
+ :distinct_users,
114
+ :drive_type_id,
115
+ :drive_type_name,
116
+ :dvd_layers,
117
+ :dvdrw_description,
118
+ :dvd_sides,
119
+ :ean,
120
+ :edition,
121
+ :editorial_reviews_link_suppressed,
122
+ :element,
123
+ :eligibility_requirement,
124
+ :eligibility_requirement_description,
125
+ :eligibility_requirements,
126
+ :eligibility_requirement_type,
127
+ :end_date,
128
+ :engine_id,
129
+ :engine_name,
130
+ :episode_sequence,
131
+ :exchange_id,
132
+ :esrb_age_rating,
133
+ :external_display_support_description,
134
+ :fabric_type,
135
+ :fax_number,
136
+ :feature,
137
+ :feedback,
138
+ :feedback_rating,
139
+ :first_issue_lead_time,
140
+ :first_tagging,
141
+ :fitment_attribute,
142
+ :fitment_attributes,
143
+ :fixed_amount,
144
+ :flavour_name,
145
+ :floppy_disk_drive_description,
146
+ :format,
147
+ :formatted_price,
148
+ :genre,
149
+ :gem_type,
150
+ :gem_type_set_element,
151
+ :glance_page,
152
+ :golf_club_flex,
153
+ :golf_club_loft,
154
+ :graphics_card_interface,
155
+ :graphics_description,
156
+ :graphics_memory_size,
157
+ :group_claim_code,
158
+ :hand_orientation,
159
+ :hard_disk_count,
160
+ :hard_disk_size,
161
+ :hardware_platform,
162
+ :has_auto_focus,
163
+ :has_burst_mode,
164
+ :has_in_camera_editing,
165
+ :has_redeye_reduction,
166
+ :has_self_timer,
167
+ :has_tripod_mode,
168
+ :has_video_out,
169
+ :has_viewfinder,
170
+ :height,
171
+ :helpful_votes,
172
+ :hmac,
173
+ :hours,
174
+ :hours_of_operation,
175
+ :image,
176
+ :included_software,
177
+ :includes_mp3_player,
178
+ :ingredients,
179
+ :ingredients_set_element,
180
+ :is_autographed,
181
+ :isbn,
182
+ :is_category_root,
183
+ :is_eligible_for_super_save_shipping,
184
+ :is_email_notify_available,
185
+ :is_fit,
186
+ :is_fragile,
187
+ :is_in_benefit_set,
188
+ :is_in_eligibility_requirement_set,
189
+ :is_lab_created,
190
+ :is_link_suppressed,
191
+ :is_memorabilia,
192
+ :is_next,
193
+ :is_previous,
194
+ :iso_equivalent,
195
+ :item,
196
+ :item_applicability,
197
+ :issues_per_year,
198
+ :is_valid,
199
+ :item_attributes,
200
+ :keyboard_description,
201
+ :keywords,
202
+ :label,
203
+ :large_image,
204
+ :last_modified,
205
+ :last_tagging,
206
+ :legal_disclaimer,
207
+ :length,
208
+ :line_voltage,
209
+ :list_id,
210
+ :listing_id,
211
+ :list_item_id,
212
+ :list_name,
213
+ :list_owner,
214
+ :list_type,
215
+ :list_url,
216
+ :location,
217
+ :long_synopsis,
218
+ :loyalty_points,
219
+ :macro_focus_range,
220
+ :magazine_type,
221
+ :make_id,
222
+ :make_name,
223
+ :manufacturer,
224
+ :manufacturer_labour_warranty_description,
225
+ :manufacturer_maximum_age,
226
+ :manufacturer_minimum_age,
227
+ :manufacturer_parts_warranty_description,
228
+ :material_type,
229
+ :material_type_set_element,
230
+ :maximum_aperture,
231
+ :maximum_color_depth,
232
+ :maximum_focal_length,
233
+ :maximum_high_resolution_images,
234
+ :maximum_hours,
235
+ :maximum_horizontal_resolution,
236
+ :maximum_low_resolution_images,
237
+ :maximum_resolution,
238
+ :maximum_shutter_speed,
239
+ :maximum_vertical_resolution,
240
+ :maximum_weight_recommendation,
241
+ :medium_image,
242
+ :memory_slots_available,
243
+ :merchandising_message,
244
+ :merchandising,
245
+ :message,
246
+ :metal_stamp,
247
+ :metal_type,
248
+ :minimum_hours,
249
+ :mini_movie_description,
250
+ :minimum_focal_length,
251
+ :minimum_shutter_speed,
252
+ :missing_vehicle_attributes,
253
+ :model,
254
+ :model_description,
255
+ :monitor_size,
256
+ :monitor_viewable_diagonal_size,
257
+ :mouse_description,
258
+ :mpn,
259
+ :name,
260
+ :native_resolution,
261
+ :neighborhood,
262
+ :network_interface_description,
263
+ :nickname,
264
+ :notebook_display_technology,
265
+ :notebook_pointing_device_description,
266
+ :number,
267
+ :number_of_disks,
268
+ :number_of_issues,
269
+ :number_of_items,
270
+ :number_of_pages,
271
+ :number_of_pearls,
272
+ :number_of_rapid_fire_shots,
273
+ :number_of_stones,
274
+ :number_of_tracks,
275
+ :occasion_date,
276
+ :offer_listing_id,
277
+ :operating_system,
278
+ :operation,
279
+ :optical_zoom,
280
+ :original_air_date,
281
+ :original_release_date,
282
+ :other_categories_similar_products,
283
+ :owning_merchant_id,
284
+ :package_quantity,
285
+ :part,
286
+ :parameter,
287
+ :paremter_name,
288
+ :parent_asin,
289
+ :part_brand_bins,
290
+ :part_browse_node_bins,
291
+ :partner_name,
292
+ :pearl_lustre,
293
+ :pearl_minimum_color,
294
+ :pearl_shape,
295
+ :pearl_stringing_method,
296
+ :pearl_surface_blemishes,
297
+ :pearl_type,
298
+ :pearl_uniformity,
299
+ :phone_number,
300
+ :photo_flash_type,
301
+ :picture_format,
302
+ :platform,
303
+ :postal_code,
304
+ :price,
305
+ :price_rating,
306
+ :processor_codes,
307
+ :product_group,
308
+ :product_type_subcategory,
309
+ :promotion,
310
+ :promotion_category,
311
+ :promotion_id,
312
+ :promotions,
313
+ :publication_date,
314
+ :publisher,
315
+ :purchase_url,
316
+ :quantity,
317
+ :quantity_desired,
318
+ :quantity_received,
319
+ :rating,
320
+ :reading_level,
321
+ :registry_number,
322
+ :region_code,
323
+ :registry_name,
324
+ :related_item,
325
+ :related_items,
326
+ :related_items_count,
327
+ :related_item_page,
328
+ :related_item_page_count,
329
+ :relationship,
330
+ :relationship_type,
331
+ :release_date,
332
+ :removeable_memory,
333
+ :request_id,
334
+ :resolution_modes,
335
+ :response_group,
336
+ :ring_size,
337
+ :role,
338
+ :running_time,
339
+ :sales_rank,
340
+ :saved_for_later_item,
341
+ :season_sequence,
342
+ :scent_name,
343
+ :search_bin_set,
344
+ :search_bin_sets,
345
+ :secondary_cache_size,
346
+ :seller_id,
347
+ :seller_legalname,
348
+ :seller_nick_name,
349
+ :setting_type,
350
+ :shaft_material_type,
351
+ :shipment_items,
352
+ :shipments,
353
+ :short_synopsis,
354
+ :similar_products,
355
+ :similar_viewed_products,
356
+ :single_merchant_id,
357
+ :size,
358
+ :size_per_pearl,
359
+ :sku,
360
+ :small_image,
361
+ :sound_card_description,
362
+ :source,
363
+ :speaker_description,
364
+ :special_features,
365
+ :spring_types_id,
366
+ :spring_types_name,
367
+ :start_date,
368
+ :start_year,
369
+ :state,
370
+ :status,
371
+ :stone_clarity,
372
+ :stone_color,
373
+ :stone_cut,
374
+ :stone_shape,
375
+ :stone_weight,
376
+ :store_id,
377
+ :store_name,
378
+ :steering_id,
379
+ :steering_name,
380
+ :studio,
381
+ :subject,
382
+ :subcondition,
383
+ :subscription_length,
384
+ :summary,
385
+ :supported_image_type,
386
+ :swatch_image,
387
+ :system_bus_speed,
388
+ :system_memory_size,
389
+ :system_memory_size_max,
390
+ :system_memory_type,
391
+ :tag,
392
+ :tagged_items,
393
+ :tag_name,
394
+ :tags,
395
+ :tag_type,
396
+ :terms_of_conditions,
397
+ :theatrical_release_date,
398
+ :thumbnail_image,
399
+ :time,
400
+ :tiny_image,
401
+ :title,
402
+ :top_item,
403
+ :top_item_set,
404
+ :total_collectible,
405
+ :total_diamond_weight,
406
+ :total_extenal_bays_free,
407
+ :total_feedback,
408
+ :total_feedback_pages,
409
+ :total_firewire_ports,
410
+ :total_fitments,
411
+ :total_gem_weight,
412
+ :total_internal_bays_free,
413
+ :total_items,
414
+ :total_metal_weight,
415
+ :total_new,
416
+ :total_ntscpal_ports,
417
+ :total_offer_pages,
418
+ :total_offers,
419
+ :total_pages,
420
+ :total_parallel_ports,
421
+ :total_pc_card_slots,
422
+ :total_pci_slots_free,
423
+ :total_ratings,
424
+ :total_refurbished,
425
+ :total_results,
426
+ :total_review_pages,
427
+ :total_reviews,
428
+ :totals,
429
+ :total_serial_ports,
430
+ :total_s_video_ports,
431
+ :total_times_read,
432
+ :total_usages,
433
+ :total_usb_ports,
434
+ :total_usb2_ports,
435
+ :total_used,
436
+ :total_vga_out_ports,
437
+ :total_votes,
438
+ :track,
439
+ :transaction_date,
440
+ :transaction_date_epoch,
441
+ :transaction_id,
442
+ :transaction_item,
443
+ :transaction_item_id,
444
+ :transaction_items,
445
+ :transmission_id,
446
+ :transmissio_name,
447
+ :trim_id,
448
+ :trim_name,
449
+ :type,
450
+ :unit,
451
+ :upc,
452
+ :url,
453
+ :url_encoded_hmac,
454
+ :user_ident,
455
+ :user_id,
456
+ :value,
457
+ :variation_denomination,
458
+ :variation_description,
459
+ :variation_dimension,
460
+ :vehicle_bed_options,
461
+ :vehicle_bed,
462
+ :vehicle_body_style_options,
463
+ :vehicle_body_style,
464
+ :vehicle_brakes_options,
465
+ :vehicle_brakes,
466
+ :vehicle_drive_type_options,
467
+ :vehicle_drive_type,
468
+ :vehicle_engine_options,
469
+ :vehicle_engine,
470
+ :vehicle_make,
471
+ :vehicle_makes,
472
+ :vehicle_mfr_body_code_options,
473
+ :vehicle_mfr_body_code,
474
+ :vehicle_model,
475
+ :vehicle_models,
476
+ :vehicle_options,
477
+ :vehicle_parts,
478
+ :vehicle_spring_type_options,
479
+ :vehicle_spring_types,
480
+ :vehicle_steering_options,
481
+ :vehicle_steering,
482
+ :vehicle_transmission_options,
483
+ :vehicle_transmission,
484
+ :vehicle_wheelbase_options,
485
+ :vehicle_wheelbase,
486
+ :vehicle_year,
487
+ :vehicle_years,
488
+ :versions,
489
+ :warranty,
490
+ :watch_movement_type,
491
+ :water_resistant_depth,
492
+ :weight,
493
+ :wheelbase,
494
+ :wheelbase_id,
495
+ :wheelbase_name,
496
+ :width,
497
+ :will_ship_expedited,
498
+ :will_ship_international,
499
+ :wish_list_id,
500
+ :year
501
+ ]
502
+
503
+ # A list of all the container response elements.
504
+ CONTAINER_RESPONSE_ELEMENTS = [
505
+ :alternate_version,
506
+ :availability_attributes,
507
+ :benefit,
508
+ :benefits,
509
+ :bin_parameter,
510
+ :collection,
511
+ :collections,
512
+ :customer_reviews,
513
+ :details,
514
+ :eligibility_requirement,
515
+ :eligibility_requirements,
516
+ :first_tagging,
517
+ :fitment_attribute,
518
+ :fitment_attributes,
519
+ :item,
520
+ :item_applicability,
521
+ :item_attributes,
522
+ :large_image,
523
+ :last_tagging,
524
+ :medium_image,
525
+ :promotion,
526
+ :promotions,
527
+ :related_item,
528
+ :related_items,
529
+ :search_bin_sets,
530
+ :tagged_items,
531
+ :tags,
532
+ :thumbnail_image,
533
+ :top_item,
534
+ :top_item_set,
535
+ :totals,
536
+ :transaction_item,
537
+ :transaction_items,
538
+ :variation_dimension,
539
+ :vehicle_bed_options,
540
+ :vehicle_body_style_options,
541
+ :vehicle_brakes_options,
542
+ :vehicle_drive_type_options,
543
+ :vehicle_engine_options,
544
+ :vehicle_make,
545
+ :vehicle_makes,
546
+ :vehicle_mfr_body_code_options,
547
+ :vehicle_model,
548
+ :vehicle_models,
549
+ :vehicle_options,
550
+ :vehicle_parts,
551
+ :vehicle_spring_type_options,
552
+ :vehicle_steering_options,
553
+ :vehicle_transmission_options,
554
+ :vehicle_wheelbase_options,
555
+ :vehicle_year,
556
+ :vehicle_years
557
+ ]
558
+ end
559
+ end
560
+ end