facebookbusiness 0.7.0.3 → 0.8.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facebook_ads/ad_objects/ad_account.rb +16 -16
  3. data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +24 -0
  4. data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +21 -5
  5. data/lib/facebook_ads/ad_objects/ad_activity.rb +0 -1
  6. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +4 -0
  7. data/lib/facebook_ads/ad_objects/ad_async_request.rb +2 -0
  8. data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +2 -0
  9. data/lib/facebook_ads/ad_objects/ad_creative.rb +3 -0
  10. data/lib/facebook_ads/ad_objects/ad_creative_interactive_components_spec.rb +1 -0
  11. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +3 -0
  12. data/lib/facebook_ads/ad_objects/ad_network_analytics_sync_query_result.rb +1 -0
  13. data/lib/facebook_ads/ad_objects/ad_place_page_set.rb +6 -0
  14. data/lib/facebook_ads/ad_objects/ad_preview.rb +1 -0
  15. data/lib/facebook_ads/ad_objects/ad_report_spec.rb +0 -1
  16. data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +4 -0
  17. data/lib/facebook_ads/ad_objects/ad_study.rb +1 -1
  18. data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -4
  19. data/lib/facebook_ads/ad_objects/ad_video.rb +10 -0
  20. data/lib/facebook_ads/ad_objects/adoptable_pet.rb +8 -0
  21. data/lib/facebook_ads/ad_objects/ads_insights.rb +1 -0
  22. data/lib/facebook_ads/ad_objects/ads_pixel.rb +4 -0
  23. data/lib/facebook_ads/ad_objects/application.rb +23 -0
  24. data/lib/facebook_ads/ad_objects/atlas_campaign.rb +1 -1
  25. data/lib/facebook_ads/ad_objects/automotive_model.rb +1 -0
  26. data/lib/facebook_ads/ad_objects/business.rb +58 -2
  27. data/lib/facebook_ads/ad_objects/business_asset_group.rb +1 -0
  28. data/lib/facebook_ads/ad_objects/business_role_request.rb +4 -0
  29. data/lib/facebook_ads/ad_objects/business_unit.rb +1 -1
  30. data/lib/facebook_ads/ad_objects/business_user.rb +4 -0
  31. data/lib/facebook_ads/ad_objects/campaign.rb +1 -0
  32. data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
  33. data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +16 -19
  34. data/lib/facebook_ads/ad_objects/commerce_merchant_settings_setup_status.rb +1 -0
  35. data/lib/facebook_ads/ad_objects/commerce_order.rb +6 -0
  36. data/lib/facebook_ads/ad_objects/commerce_order_transaction_detail.rb +4 -0
  37. data/lib/facebook_ads/ad_objects/{work_meeting_link.rb → connections_targeting.rb} +3 -2
  38. data/lib/facebook_ads/ad_objects/{iterative_split_test_config.rb → cpas_advertiser_partnership_recommendation.rb} +9 -9
  39. data/lib/facebook_ads/ad_objects/{split_test_config.rb → cpas_collaboration_request.rb} +16 -7
  40. data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +1 -0
  41. data/lib/facebook_ads/ad_objects/da_check.rb +7 -0
  42. data/lib/facebook_ads/ad_objects/destination.rb +1 -0
  43. data/lib/facebook_ads/ad_objects/event.rb +1 -1
  44. data/lib/facebook_ads/ad_objects/extended_credit.rb +7 -0
  45. data/lib/facebook_ads/ad_objects/flight.rb +1 -0
  46. data/lib/facebook_ads/ad_objects/group.rb +7 -1
  47. data/lib/facebook_ads/ad_objects/home_listing.rb +1 -0
  48. data/lib/facebook_ads/ad_objects/hotel.rb +1 -0
  49. data/lib/facebook_ads/ad_objects/hotel_room.rb +1 -0
  50. data/lib/facebook_ads/ad_objects/life_event.rb +0 -4
  51. data/lib/facebook_ads/ad_objects/link.rb +6 -6
  52. data/lib/facebook_ads/ad_objects/live_video.rb +12 -16
  53. data/lib/facebook_ads/ad_objects/native_offer_view.rb +0 -1
  54. data/lib/facebook_ads/ad_objects/oracle_transaction.rb +0 -7
  55. data/lib/facebook_ads/ad_objects/page.rb +47 -70
  56. data/lib/facebook_ads/ad_objects/page_post.rb +2 -0
  57. data/lib/facebook_ads/ad_objects/photo.rb +6 -0
  58. data/lib/facebook_ads/ad_objects/playable_content.rb +1 -0
  59. data/lib/facebook_ads/ad_objects/post.rb +49 -2
  60. data/lib/facebook_ads/ad_objects/product_catalog.rb +42 -7
  61. data/lib/facebook_ads/ad_objects/product_feed.rb +31 -0
  62. data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
  63. data/lib/facebook_ads/ad_objects/product_item.rb +3 -0
  64. data/lib/facebook_ads/ad_objects/product_set.rb +1 -0
  65. data/lib/facebook_ads/ad_objects/product_set_metadata.rb +1 -0
  66. data/lib/facebook_ads/ad_objects/publisher_block_list.rb +6 -0
  67. data/lib/facebook_ads/ad_objects/referral.rb +2 -0
  68. data/lib/facebook_ads/ad_objects/security_settings.rb +0 -1
  69. data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
  70. data/lib/facebook_ads/ad_objects/server_side/custom_data.rb +21 -0
  71. data/lib/facebook_ads/ad_objects/{page_about_story.rb → server_side/delivery_category.rb} +10 -16
  72. data/lib/facebook_ads/ad_objects/server_side/event_request.rb +61 -14
  73. data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +43 -0
  74. data/lib/facebook_ads/ad_objects/{atlas_url.rb → server_side/http_method.rb} +7 -16
  75. data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
  76. data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
  77. data/lib/facebook_ads/ad_objects/server_side/user_data.rb +20 -1
  78. data/lib/facebook_ads/ad_objects/server_side/util.rb +13 -0
  79. data/lib/facebook_ads/ad_objects/system_user.rb +4 -4
  80. data/lib/facebook_ads/ad_objects/targeting.rb +3 -3
  81. data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +0 -1
  82. data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
  83. data/lib/facebook_ads/ad_objects/user.rb +27 -25
  84. data/lib/facebook_ads/ad_objects/vehicle.rb +2 -0
  85. data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
  86. data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +25 -0
  87. data/lib/facebook_ads/errors.rb +1 -1
  88. data/lib/facebook_ads/session.rb +1 -1
  89. data/lib/facebook_ads/version.rb +2 -2
  90. metadata +30 -12
  91. data/lib/facebook_ads/ad_objects/user_taggable_friend.rb +0 -50
@@ -76,6 +76,7 @@ module FacebookAds
76
76
  field :id, 'string'
77
77
  field :implicit_place, 'Place'
78
78
  field :instagram_eligibility, 'string'
79
+ field :instream_eligibility, 'string'
79
80
  field :is_app_share, 'bool'
80
81
  field :is_eligible_for_promotion, 'bool'
81
82
  field :is_expired, 'bool'
@@ -94,6 +95,7 @@ module FacebookAds
94
95
  field :permalink_url, 'object'
95
96
  field :picture, 'string'
96
97
  field :place, 'Place'
98
+ field :poll, 'object'
97
99
  field :privacy, 'Privacy'
98
100
  field :promotable_id, 'string'
99
101
  field :promotion_status, 'string'
@@ -125,6 +125,12 @@ module FacebookAds
125
125
  end
126
126
  end
127
127
 
128
+ has_edge :reactions do |edge|
129
+ edge.get 'Profile' do |api|
130
+ api.has_param :type, { enum: -> { Profile::TYPE }}
131
+ end
132
+ end
133
+
128
134
  has_edge :sharedposts do |edge|
129
135
  edge.get 'Post'
130
136
  end
@@ -31,6 +31,7 @@ module FacebookAds
31
31
  field :name, 'string'
32
32
  field :owner, 'Profile'
33
33
  field :app_id, 'string'
34
+ field :session_id, 'string'
34
35
  field :source, 'file'
35
36
  field :source_url, 'string'
36
37
  field :source_zip, 'file'
@@ -46,6 +46,51 @@ module FacebookAds
46
46
  "normal",
47
47
  ]
48
48
 
49
+ CHECKIN_ENTRY_POINT = [
50
+ "BRANDING_CHECKIN",
51
+ "BRANDING_OTHER",
52
+ "BRANDING_PHOTO",
53
+ "BRANDING_STATUS",
54
+ ]
55
+
56
+ FORMATTING = [
57
+ "MARKDOWN",
58
+ "PLAINTEXT",
59
+ ]
60
+
61
+ PLACE_ATTACHMENT_SETTING = [
62
+ "1",
63
+ "2",
64
+ ]
65
+
66
+ POST_SURFACES_BLACKLIST = [
67
+ "1",
68
+ "2",
69
+ "3",
70
+ "4",
71
+ "5",
72
+ ]
73
+
74
+ POSTING_TO_REDSPACE = [
75
+ "disabled",
76
+ "enabled",
77
+ ]
78
+
79
+ TARGET_SURFACE = [
80
+ "STORY",
81
+ "TIMELINE",
82
+ ]
83
+
84
+ UNPUBLISHED_CONTENT_TYPE = [
85
+ "ADS_POST",
86
+ "DRAFT",
87
+ "INLINE_CREATED",
88
+ "PUBLISHED",
89
+ "REVIEWABLE_BRANDED_CONTENT",
90
+ "SCHEDULED",
91
+ "SCHEDULED_RECURRING",
92
+ ]
93
+
49
94
 
50
95
  field :actions, { list: 'string' }
51
96
  field :admin_creator, 'object'
@@ -74,6 +119,7 @@ module FacebookAds
74
119
  field :id, 'string'
75
120
  field :implicit_place, 'Place'
76
121
  field :instagram_eligibility, 'string'
122
+ field :instream_eligibility, 'string'
77
123
  field :is_app_share, 'bool'
78
124
  field :is_eligible_for_promotion, 'bool'
79
125
  field :is_expired, 'bool'
@@ -95,6 +141,7 @@ module FacebookAds
95
141
  field :permalink_url, 'object'
96
142
  field :picture, 'string'
97
143
  field :place, 'Place'
144
+ field :poll, 'object'
98
145
  field :privacy, 'Privacy'
99
146
  field :promotable_id, 'string'
100
147
  field :promotion_status, 'string'
@@ -174,11 +221,11 @@ module FacebookAds
174
221
  edge.post do |api|
175
222
  api.has_param :ad_account_id, 'string'
176
223
  api.has_param :ad_conversion_pixel_id, 'int'
177
- api.has_param :audience, { enum: %w{AUTO_LOOKALIKE AUTO_PAGE_LOOKALIKE AUTO_TARGETING COUNTRY_AND_INTEREST CREATE_NEW CUSTOM_AUDIENCE DISTRICT EVENT_CUSTOM_AUDIENCES EVENT_ENGAGEMENT FANS GROUPER HEC_AUDIENCE IG_PROMOTED_POST_AUTO LOCAL LOOKALIKE MARKETPLACE_DEFAULT MULT_CUSTOM_AUDIENCES NCPP SAVED_AUDIENCE SMART_AUDIENCE }}
224
+ api.has_param :audience, { enum: %w{AUTO_LOOKALIKE AUTO_PAGE_LOOKALIKE AUTO_TARGETING COUNTRY_AND_INTEREST CREATE_NEW CUSTOM_AUDIENCE DISTRICT EVENT_CUSTOM_AUDIENCES EVENT_ENGAGEMENT FANS GROUPER HEC_AUDIENCE IG_PROMOTED_POST_AUTO LOCAL LOOKALIKE MARKETPLACE_DEFAULT MARKETPLACE_NATIONWIDE_AUDIENCE MARKETPLACE_SAVED_AUDIENCE MULT_CUSTOM_AUDIENCES NCPP SAVED_AUDIENCE SMART_AUDIENCE }}
178
225
  api.has_param :audience_id, 'string'
179
226
  api.has_param :bid_amount, 'int'
180
227
  api.has_param :budget, 'int'
181
- api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SEND_A_GIFT SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE SUBSCRIBE UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
228
+ api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REFER_FRIENDS REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SEND_A_GIFT SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE SUBSCRIBE SWIPE_UP_PRODUCT SWIPE_UP_SHOP UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
182
229
  api.has_param :currency, 'string'
183
230
  api.has_param :flow_id, 'string'
184
231
  api.has_param :placement, 'string'
@@ -35,6 +35,7 @@ module FacebookAds
35
35
  "home_listings",
36
36
  "hotels",
37
37
  "jobs",
38
+ "local_delivery_shipping_profiles",
38
39
  "local_service_businesses",
39
40
  "offer_items",
40
41
  "offline_commerce",
@@ -51,17 +52,48 @@ module FacebookAds
51
52
  PERMITTED_TASKS = [
52
53
  "ADVERTISE",
53
54
  "MANAGE",
55
+ "MANAGE_AR",
54
56
  ]
55
57
 
56
58
  TASKS = [
57
59
  "ADVERTISE",
58
60
  "MANAGE",
61
+ "MANAGE_AR",
59
62
  ]
60
63
 
61
64
  STANDARD = [
62
65
  "google",
63
66
  ]
64
67
 
68
+ ITEM_SUB_TYPE = [
69
+ "APPLIANCES",
70
+ "BABY_FEEDING",
71
+ "BABY_TRANSPORT",
72
+ "BEAUTY",
73
+ "BEDDING",
74
+ "CAMERAS",
75
+ "CELL_PHONES_AND_SMART_WATCHES",
76
+ "CLEANING_SUPPLIES",
77
+ "CLOTHING",
78
+ "CLOTHING_ACCESSORIES",
79
+ "COMPUTERS_AND_TABLETS",
80
+ "DIAPERING_AND_POTTY_TRAINING",
81
+ "ELECTRONICS_ACCESSORIES",
82
+ "FURNITURE",
83
+ "HEALTH",
84
+ "HOME_GOODS",
85
+ "JEWELRY",
86
+ "NURSERY",
87
+ "PRINTERS_AND_SCANNERS",
88
+ "PROJECTORS",
89
+ "SHOES_AND_FOOTWEAR",
90
+ "SOFTWARE",
91
+ "TOYS",
92
+ "TVS_AND_MONITORS",
93
+ "VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
94
+ "WATCHES",
95
+ ]
96
+
65
97
 
66
98
  field :business, 'Business'
67
99
  field :commerce_merchant_settings, 'CommerceMerchantSettings'
@@ -75,9 +107,11 @@ module FacebookAds
75
107
  field :product_count, 'int'
76
108
  field :store_catalog_settings, 'StoreCatalogSettings'
77
109
  field :vertical, 'string'
110
+ field :catalog_segment_filter, 'object'
111
+ field :catalog_segment_product_set_id, 'string'
78
112
  field :destination_catalog_settings, 'hash'
79
113
  field :flight_catalog_settings, 'hash'
80
- field :onsite_commerce_merchant, 'object'
114
+ field :parent_catalog_id, 'string'
81
115
 
82
116
  has_edge :agencies do |edge|
83
117
  edge.delete do |api|
@@ -88,6 +122,7 @@ module FacebookAds
88
122
  api.has_param :business, 'string'
89
123
  api.has_param :permitted_roles, { list: { enum: -> { ProductCatalog::PERMITTED_ROLES }} }
90
124
  api.has_param :permitted_tasks, { list: { enum: -> { ProductCatalog::PERMITTED_TASKS }} }
125
+ api.has_param :utm_settings, 'hash'
91
126
  end
92
127
  end
93
128
 
@@ -233,17 +268,12 @@ module FacebookAds
233
268
  has_edge :items_batch do |edge|
234
269
  edge.post 'ProductCatalog' do |api|
235
270
  api.has_param :allow_upsert, 'bool'
271
+ api.has_param :item_sub_type, { enum: -> { ProductCatalog::ITEM_SUB_TYPE }}
236
272
  api.has_param :item_type, 'string'
237
273
  api.has_param :requests, 'hash'
238
274
  end
239
275
  end
240
276
 
241
- has_edge :onsite_commerce_merchant do |edge|
242
- edge.post 'ProductCatalog' do |api|
243
- api.has_param :onsite_commerce_merchant, 'object'
244
- end
245
- end
246
-
247
277
  has_edge :pricing_variables_batch do |edge|
248
278
  edge.get 'ProductCatalogPricingVariablesBatch' do |api|
249
279
  api.has_param :handle, 'string'
@@ -268,6 +298,8 @@ module FacebookAds
268
298
  api.has_param :encoding, { enum: -> { ProductFeed::ENCODING }}
269
299
  api.has_param :feed_type, { enum: -> { ProductFeed::FEED_TYPE }}
270
300
  api.has_param :file_name, 'string'
301
+ api.has_param :item_sub_type, { enum: -> { ProductFeed::ITEM_SUB_TYPE }}
302
+ api.has_param :migrated_from_feed_id, 'string'
271
303
  api.has_param :name, 'string'
272
304
  api.has_param :override_type, { enum: -> { ProductFeed::OVERRIDE_TYPE }}
273
305
  api.has_param :override_value, 'string'
@@ -298,6 +330,7 @@ module FacebookAds
298
330
  api.has_param :filter, 'object'
299
331
  api.has_param :metadata, 'hash'
300
332
  api.has_param :name, 'string'
333
+ api.has_param :retailer_id, 'string'
301
334
  end
302
335
  end
303
336
 
@@ -324,6 +357,7 @@ module FacebookAds
324
357
  api.has_param :availability, { enum: -> { ProductItem::AVAILABILITY }}
325
358
  api.has_param :brand, 'string'
326
359
  api.has_param :category, 'string'
360
+ api.has_param :category_specific_fields, 'hash'
327
361
  api.has_param :checkout_url, 'string'
328
362
  api.has_param :color, 'string'
329
363
  api.has_param :commerce_tax_category, { enum: -> { ProductItem::COMMERCE_TAX_CATEGORY }}
@@ -337,6 +371,7 @@ module FacebookAds
337
371
  api.has_param :custom_label_4, 'string'
338
372
  api.has_param :description, 'string'
339
373
  api.has_param :expiration_date, 'string'
374
+ api.has_param :fb_product_category, 'string'
340
375
  api.has_param :gender, { enum: -> { ProductItem::GENDER }}
341
376
  api.has_param :gtin, 'string'
342
377
  api.has_param :image_url, 'string'
@@ -68,6 +68,35 @@ module FacebookAds
68
68
  "VEHICLE_OFFER",
69
69
  ]
70
70
 
71
+ ITEM_SUB_TYPE = [
72
+ "APPLIANCES",
73
+ "BABY_FEEDING",
74
+ "BABY_TRANSPORT",
75
+ "BEAUTY",
76
+ "BEDDING",
77
+ "CAMERAS",
78
+ "CELL_PHONES_AND_SMART_WATCHES",
79
+ "CLEANING_SUPPLIES",
80
+ "CLOTHING",
81
+ "CLOTHING_ACCESSORIES",
82
+ "COMPUTERS_AND_TABLETS",
83
+ "DIAPERING_AND_POTTY_TRAINING",
84
+ "ELECTRONICS_ACCESSORIES",
85
+ "FURNITURE",
86
+ "HEALTH",
87
+ "HOME_GOODS",
88
+ "JEWELRY",
89
+ "NURSERY",
90
+ "PRINTERS_AND_SCANNERS",
91
+ "PROJECTORS",
92
+ "SHOES_AND_FOOTWEAR",
93
+ "SOFTWARE",
94
+ "TOYS",
95
+ "TVS_AND_MONITORS",
96
+ "VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
97
+ "WATCHES",
98
+ ]
99
+
71
100
  OVERRIDE_TYPE = [
72
101
  "CATALOG_SEGMENT_CUSTOMIZE_DEFAULT",
73
102
  "COUNTRY",
@@ -85,7 +114,9 @@ module FacebookAds
85
114
  field :encoding, 'string'
86
115
  field :file_name, 'string'
87
116
  field :id, 'string'
117
+ field :item_sub_type, 'string'
88
118
  field :latest_upload, 'ProductFeedUpload'
119
+ field :migrated_from_feed_id, 'string'
89
120
  field :name, 'string'
90
121
  field :override_type, 'string'
91
122
  field :product_count, 'int'
@@ -57,6 +57,7 @@ module FacebookAds
57
57
  api.has_param :custom_label_4, 'string'
58
58
  api.has_param :description, 'string'
59
59
  api.has_param :expiration_date, 'string'
60
+ api.has_param :fb_product_category, 'string'
60
61
  api.has_param :gender, { enum: -> { ProductItem::GENDER }}
61
62
  api.has_param :gtin, 'string'
62
63
  api.has_param :image_url, 'string'
@@ -297,6 +297,7 @@ module FacebookAds
297
297
  field :brand, 'string'
298
298
  field :capability_to_review_status, 'hash'
299
299
  field :category, 'string'
300
+ field :category_specific_fields, 'CatalogSubVerticalList'
300
301
  field :color, 'string'
301
302
  field :commerce_insights, 'ProductItemCommerceInsights'
302
303
  field :condition, { enum: -> { CONDITION }}
@@ -309,11 +310,13 @@ module FacebookAds
309
310
  field :custom_label_4, 'string'
310
311
  field :description, 'string'
311
312
  field :expiration_date, 'string'
313
+ field :fb_product_category, 'string'
312
314
  field :gender, { enum: -> { GENDER }}
313
315
  field :gtin, 'string'
314
316
  field :id, 'string'
315
317
  field :image_cdn_urls, 'hash'
316
318
  field :image_url, 'string'
319
+ field :images, { list: 'string' }
317
320
  field :inventory, 'int'
318
321
  field :manufacturer_part_number, 'string'
319
322
  field :material, 'string'
@@ -35,6 +35,7 @@ module FacebookAds
35
35
  field :name, 'string'
36
36
  field :product_catalog, 'ProductCatalog'
37
37
  field :product_count, 'int'
38
+ field :retailer_id, 'string'
38
39
  field :metadata, 'hash'
39
40
 
40
41
  has_edge :automotive_models do |edge|
@@ -29,6 +29,7 @@ module FacebookAds
29
29
 
30
30
  field :cover_image_url, 'string'
31
31
  field :description, 'string'
32
+ field :external_url, 'string'
32
33
  field :integrity_review_status, 'string'
33
34
  has_no_id
34
35
  has_no_get
@@ -38,6 +38,12 @@ module FacebookAds
38
38
  field :owner_ad_account_id, 'string'
39
39
  field :web_publishers, { list: 'object' }
40
40
 
41
+ has_edge :append_publisher_urls do |edge|
42
+ edge.post do |api|
43
+ api.has_param :publisher_urls, { list: 'string' }
44
+ end
45
+ end
46
+
41
47
  has_edge :paged_web_publishers do |edge|
42
48
  edge.get do |api|
43
49
  api.has_param :draft_id, 'string'
@@ -34,10 +34,12 @@ module FacebookAds
34
34
  field :namespace, 'string'
35
35
  field :need_promo_code, 'bool'
36
36
  field :offer_origin, 'string'
37
+ field :privacy_policy_link, 'string'
37
38
  field :promotion_text, 'string'
38
39
  field :receiver_benefits_text, 'string'
39
40
  field :referral_link_uri, 'string'
40
41
  field :sender_benefits_text, 'string'
42
+ field :terms_and_condition_link, 'string'
41
43
 
42
44
  end
43
45
  end
@@ -27,7 +27,6 @@ module FacebookAds
27
27
 
28
28
  class SecuritySettings < AdObject
29
29
 
30
- field :secure_browsing, 'object'
31
30
  has_no_id
32
31
  has_no_get
33
32
  has_no_post
@@ -0,0 +1,73 @@
1
+ # Copyright (c) 2017-present, Facebook, Inc. All rights reserved.
2
+ #
3
+ # You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ # copy, modify, and distribute this software in source code or binary form for use
5
+ # in connection with the web services and APIs provided by Facebook.
6
+ #
7
+ # As with any software that integrates with the Facebook platform, your use of
8
+ # this software is subject to the Facebook Platform Policy
9
+ # [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ # included in all copies or substantial portions of the software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ module FacebookAds::ServerSide
20
+ class BatchProcessor
21
+ attr_accessor :batch_size
22
+ attr_accessor :concurrent_requests
23
+
24
+ # Initializes the object
25
+ # @param [Integer] batch_size The number of events to send in each request
26
+ # @param [Integer] concurrent_requests The number of threads to use when making requests concurrently
27
+ def initialize(batch_size=50, concurrent_requests=4)
28
+ self.batch_size = batch_size
29
+ self.concurrent_requests = concurrent_requests
30
+ end
31
+
32
+ def process_event_requests(event_requests_async)
33
+ generator = self.process_event_requests_generator(event_requests_async)
34
+ generator.each do |batch|
35
+ Concurrent::Promise.zip(*batch).execute.value!
36
+ end
37
+ end
38
+
39
+ def process_events(event_request_async_to_clone, events)
40
+ generator = self.process_events_generator(event_request_async_to_clone, events)
41
+ generator.each do |batch|
42
+ Concurrent::Promise.zip(*batch).execute.value!
43
+ end
44
+ end
45
+
46
+ def process_event_requests_generator(event_requests_async)
47
+ index = 0
48
+ Enumerator.new do |generator|
49
+ while index < event_requests_async.size do
50
+ batch = event_requests_async[index, concurrent_requests].map(&:execute)
51
+ generator.yield *[batch]
52
+ index += concurrent_requests
53
+ end
54
+ end
55
+ end
56
+
57
+ def process_events_generator(event_request_async_to_clone, events)
58
+ index = 0
59
+ Enumerator.new do |generator|
60
+ while index < events.size do
61
+ batch = []
62
+ while index < events.size && batch.size < concurrent_requests do
63
+ event_request_async = event_request_async_to_clone.clone_without_events
64
+ event_request_async.events = events[index, batch_size]
65
+ batch << event_request_async
66
+ index += batch_size
67
+ end
68
+ generator.yield *[batch.map(&:execute)]
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end