facebookbusiness 0.7.0.1 → 0.8.0.3

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facebook_ads/ad_objects/ad_account.rb +16 -19
  3. data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +23 -0
  4. data/lib/facebook_ads/ad_objects/ad_account_delivery_estimate.rb +1 -0
  5. data/lib/facebook_ads/ad_objects/ad_account_matched_search_applications_edge_data.rb +1 -0
  6. data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +1 -0
  7. data/lib/facebook_ads/ad_objects/ad_activity.rb +7 -0
  8. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +2 -0
  9. data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +2 -2
  10. data/lib/facebook_ads/ad_objects/ad_campaign_delivery_estimate.rb +1 -0
  11. data/lib/facebook_ads/ad_objects/ad_creative.rb +1 -0
  12. data/lib/facebook_ads/ad_objects/{atlas_url.rb → ad_creative_instagram_branded_content.rb} +1 -2
  13. data/lib/facebook_ads/ad_objects/ad_creative_interactive_components_spec.rb +1 -0
  14. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +1 -0
  15. data/lib/facebook_ads/ad_objects/ad_network_analytics_sync_query_result.rb +1 -0
  16. data/lib/facebook_ads/ad_objects/ad_place_page_set.rb +6 -0
  17. data/lib/facebook_ads/ad_objects/ad_preview.rb +0 -1
  18. data/lib/facebook_ads/ad_objects/ad_report_spec.rb +0 -1
  19. data/lib/facebook_ads/ad_objects/ad_set.rb +2 -0
  20. data/lib/facebook_ads/ad_objects/ad_study.rb +2 -0
  21. data/lib/facebook_ads/ad_objects/ad_video.rb +12 -27
  22. data/lib/facebook_ads/ad_objects/adgroup_placement_specific_review_feedback.rb +4 -0
  23. data/lib/facebook_ads/ad_objects/{ads_interest.rb → adoptable_pet.rb} +19 -5
  24. data/lib/facebook_ads/ad_objects/ads_insights.rb +4 -0
  25. data/lib/facebook_ads/ad_objects/ads_pixel.rb +3 -0
  26. data/lib/facebook_ads/ad_objects/application.rb +26 -0
  27. data/lib/facebook_ads/ad_objects/atlas_campaign.rb +3 -3
  28. data/lib/facebook_ads/ad_objects/automotive_model.rb +1 -0
  29. data/lib/facebook_ads/ad_objects/business.rb +46 -117
  30. data/lib/facebook_ads/ad_objects/business_asset_group.rb +2 -3
  31. data/lib/facebook_ads/ad_objects/business_role_request.rb +9 -0
  32. data/lib/facebook_ads/ad_objects/business_unit.rb +1 -1
  33. data/lib/facebook_ads/ad_objects/business_user.rb +9 -0
  34. data/lib/facebook_ads/ad_objects/campaign.rb +257 -0
  35. data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
  36. data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +27 -0
  37. data/lib/facebook_ads/ad_objects/commerce_order.rb +6 -0
  38. data/lib/facebook_ads/ad_objects/commerce_order_transaction_detail.rb +4 -0
  39. data/lib/facebook_ads/ad_objects/{creative_asset_tag.rb → connections_targeting.rb} +2 -2
  40. data/lib/facebook_ads/ad_objects/{business_creative_folder_sharing_agreement.rb → cpas_advertiser_partnership_recommendation.rb} +8 -11
  41. data/lib/facebook_ads/ad_objects/{brand_audience.rb → cpas_collaboration_request.rb} +15 -9
  42. data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +1 -0
  43. data/lib/facebook_ads/ad_objects/da_check.rb +7 -0
  44. data/lib/facebook_ads/ad_objects/destination.rb +1 -0
  45. data/lib/facebook_ads/ad_objects/event.rb +12 -1
  46. data/lib/facebook_ads/ad_objects/extended_credit.rb +7 -0
  47. data/lib/facebook_ads/ad_objects/external_event_source.rb +1 -0
  48. data/lib/facebook_ads/ad_objects/flight.rb +1 -0
  49. data/lib/facebook_ads/ad_objects/group.rb +10 -1
  50. data/lib/facebook_ads/ad_objects/home_listing.rb +1 -0
  51. data/lib/facebook_ads/ad_objects/hotel.rb +1 -0
  52. data/lib/facebook_ads/ad_objects/ig_media.rb +1 -0
  53. data/lib/facebook_ads/ad_objects/life_event.rb +0 -4
  54. data/lib/facebook_ads/ad_objects/link.rb +0 -6
  55. data/lib/facebook_ads/ad_objects/live_video.rb +12 -16
  56. data/lib/facebook_ads/ad_objects/media_fingerprint.rb +0 -1
  57. data/lib/facebook_ads/ad_objects/native_offer_view.rb +0 -1
  58. data/lib/facebook_ads/ad_objects/oracle_transaction.rb +0 -7
  59. data/lib/facebook_ads/ad_objects/page.rb +34 -65
  60. data/lib/facebook_ads/ad_objects/page_admin_note.rb +1 -0
  61. data/lib/facebook_ads/ad_objects/page_call_to_action.rb +3 -0
  62. data/lib/facebook_ads/ad_objects/page_change_proposal.rb +2 -0
  63. data/lib/facebook_ads/ad_objects/page_post.rb +2 -0
  64. data/lib/facebook_ads/ad_objects/{business_creative.rb → payment_subscription.rb} +24 -16
  65. data/lib/facebook_ads/ad_objects/photo.rb +6 -0
  66. data/lib/facebook_ads/ad_objects/post.rb +4 -2
  67. data/lib/facebook_ads/ad_objects/product_catalog.rb +42 -0
  68. data/lib/facebook_ads/ad_objects/product_feed.rb +31 -0
  69. data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
  70. data/lib/facebook_ads/ad_objects/product_item.rb +2 -0
  71. data/lib/facebook_ads/ad_objects/product_set.rb +4 -0
  72. data/lib/facebook_ads/ad_objects/{client_transparency_status.rb → product_set_metadata.rb} +5 -5
  73. data/lib/facebook_ads/ad_objects/profile.rb +1 -0
  74. data/lib/facebook_ads/ad_objects/profile_picture_source.rb +4 -0
  75. data/lib/facebook_ads/ad_objects/publisher_block_list.rb +6 -0
  76. data/lib/facebook_ads/ad_objects/saved_audience.rb +1 -0
  77. data/lib/facebook_ads/ad_objects/security_settings.rb +0 -1
  78. data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
  79. data/lib/facebook_ads/ad_objects/server_side/content.rb +75 -13
  80. data/lib/facebook_ads/ad_objects/server_side/custom_data.rb +45 -6
  81. data/lib/facebook_ads/ad_objects/server_side/delivery_category.rb +33 -0
  82. data/lib/facebook_ads/ad_objects/server_side/event.rb +62 -3
  83. data/lib/facebook_ads/ad_objects/server_side/event_request.rb +134 -13
  84. data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +43 -0
  85. data/lib/facebook_ads/ad_objects/{whats_app_business_profile.rb → server_side/http_method.rb} +7 -15
  86. data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
  87. data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
  88. data/lib/facebook_ads/ad_objects/server_side/user_data.rb +145 -17
  89. data/lib/facebook_ads/ad_objects/server_side/util.rb +216 -149
  90. data/lib/facebook_ads/ad_objects/system_user.rb +9 -4
  91. data/lib/facebook_ads/ad_objects/targeting.rb +4 -3
  92. data/lib/facebook_ads/ad_objects/{user_influence.rb → targeting_relaxation.rb} +2 -4
  93. data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +1 -0
  94. data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
  95. data/lib/facebook_ads/ad_objects/user.rb +9 -15
  96. data/lib/facebook_ads/ad_objects/vehicle.rb +1 -0
  97. data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
  98. data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +22 -0
  99. data/lib/facebook_ads/errors.rb +1 -1
  100. data/lib/facebook_ads/version.rb +2 -2
  101. metadata +64 -25
  102. data/lib/facebook_ads/ad_objects/business_creative_folder.rb +0 -79
  103. data/lib/facebook_ads/ad_objects/business_image.rb +0 -95
  104. data/lib/facebook_ads/ad_objects/iterative_split_test_config.rb +0 -43
  105. data/lib/facebook_ads/ad_objects/messenger_platform_referral.rb +0 -39
  106. data/lib/facebook_ads/ad_objects/page_about_story.rb +0 -39
  107. data/lib/facebook_ads/ad_objects/split_test_config.rb +0 -41
  108. data/lib/facebook_ads/ad_objects/streaming_reaction.rb +0 -51
  109. data/lib/facebook_ads/ad_objects/user_taggable_friend.rb +0 -49
@@ -30,6 +30,7 @@ module FacebookAds
30
30
  field :body, 'string'
31
31
  field :from, 'Page'
32
32
  field :id, 'string'
33
+ field :note_label, 'string'
33
34
  field :user, 'User'
34
35
  has_no_post
35
36
  has_no_delete
@@ -32,6 +32,7 @@ module FacebookAds
32
32
  "EMAIL",
33
33
  "FACEBOOK_APP",
34
34
  "FOLLOW",
35
+ "MARKETPLACE_INVENTORY_PAGE",
35
36
  "MESSENGER",
36
37
  "MINI_SHOP",
37
38
  "NONE",
@@ -46,6 +47,7 @@ module FacebookAds
46
47
  "EMAIL",
47
48
  "FACEBOOK_APP",
48
49
  "FOLLOW",
50
+ "MARKETPLACE_INVENTORY_PAGE",
49
51
  "MESSENGER",
50
52
  "MINI_SHOP",
51
53
  "NONE",
@@ -83,6 +85,7 @@ module FacebookAds
83
85
  "SHOP_NOW",
84
86
  "SHOP_ON_FACEBOOK",
85
87
  "SIGN_UP",
88
+ "VIEW_INVENTORY",
86
89
  "VIEW_SHOP",
87
90
  "VISIT_GROUP",
88
91
  "WATCH_NOW",
@@ -33,6 +33,8 @@ module FacebookAds
33
33
  field :id, 'string'
34
34
  field :proposed_value, 'string'
35
35
  field :upcoming_change_info, 'PageUpcomingChange'
36
+ has_no_get
37
+ has_no_post
36
38
  has_no_delete
37
39
 
38
40
  end
@@ -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'
@@ -25,26 +25,34 @@ module FacebookAds
25
25
  # on github and we'll fix in our codegen framework. We'll not be able to accept
26
26
  # pull request for this class.
27
27
 
28
- class BusinessCreative < AdObject
28
+ class PaymentSubscription < AdObject
29
29
 
30
- field :creation_time, 'datetime'
31
- field :duration, 'int'
32
- field :hash, 'string'
33
- field :height, 'int'
30
+ field :amount, 'string'
31
+ field :app_param_data, 'string'
32
+ field :application, 'Profile'
33
+ field :billing_period, 'string'
34
+ field :canceled_reason, 'string'
35
+ field :created_time, 'datetime'
36
+ field :currency, 'string'
34
37
  field :id, 'string'
35
- field :name, 'string'
36
- field :thumbnail, 'string'
37
- field :type, 'string'
38
- field :url, 'string'
39
- field :video_id, 'string'
40
- field :width, 'int'
41
- has_no_get
38
+ field :last_payment, 'string'
39
+ field :next_bill_time, 'datetime'
40
+ field :next_period_amount, 'string'
41
+ field :next_period_currency, 'string'
42
+ field :next_period_product, 'string'
43
+ field :payment_status, 'string'
44
+ field :pending_cancel, 'bool'
45
+ field :period_start_time, 'datetime'
46
+ field :product, 'string'
47
+ field :status, 'string'
48
+ field :test, 'int'
49
+ field :trial_amount, 'string'
50
+ field :trial_currency, 'string'
51
+ field :trial_expiry_time, 'datetime'
52
+ field :updated_time, 'datetime'
53
+ field :user, 'Profile'
42
54
  has_no_post
43
55
  has_no_delete
44
56
 
45
- has_edge :ad_placement_validation_results do |edge|
46
- edge.get
47
- end
48
-
49
57
  end
50
58
  end
@@ -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
@@ -74,6 +74,7 @@ module FacebookAds
74
74
  field :id, 'string'
75
75
  field :implicit_place, 'Place'
76
76
  field :instagram_eligibility, 'string'
77
+ field :instream_eligibility, 'string'
77
78
  field :is_app_share, 'bool'
78
79
  field :is_eligible_for_promotion, 'bool'
79
80
  field :is_expired, 'bool'
@@ -95,6 +96,7 @@ module FacebookAds
95
96
  field :permalink_url, 'object'
96
97
  field :picture, 'string'
97
98
  field :place, 'Place'
99
+ field :poll, 'object'
98
100
  field :privacy, 'Privacy'
99
101
  field :promotable_id, 'string'
100
102
  field :promotion_status, 'string'
@@ -174,11 +176,11 @@ module FacebookAds
174
176
  edge.post do |api|
175
177
  api.has_param :ad_account_id, 'string'
176
178
  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 }}
179
+ 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
180
  api.has_param :audience_id, 'string'
179
181
  api.has_param :bid_amount, 'int'
180
182
  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 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 }}
183
+ 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 }}
182
184
  api.has_param :currency, 'string'
183
185
  api.has_param :flow_id, 'string'
184
186
  api.has_param :placement, 'string'
@@ -27,6 +27,7 @@ module FacebookAds
27
27
 
28
28
  class ProductCatalog < AdObject
29
29
  VERTICAL = [
30
+ "adoptable_pets",
30
31
  "bookable",
31
32
  "commerce",
32
33
  "destinations",
@@ -50,17 +51,48 @@ module FacebookAds
50
51
  PERMITTED_TASKS = [
51
52
  "ADVERTISE",
52
53
  "MANAGE",
54
+ "MANAGE_AR",
53
55
  ]
54
56
 
55
57
  TASKS = [
56
58
  "ADVERTISE",
57
59
  "MANAGE",
60
+ "MANAGE_AR",
58
61
  ]
59
62
 
60
63
  STANDARD = [
61
64
  "google",
62
65
  ]
63
66
 
67
+ ITEM_SUB_TYPE = [
68
+ "APPLIANCES",
69
+ "BABY_FEEDING",
70
+ "BABY_TRANSPORT",
71
+ "BEAUTY",
72
+ "BEDDING",
73
+ "CAMERAS",
74
+ "CELL_PHONES_AND_SMART_WATCHES",
75
+ "CLEANING_SUPPLIES",
76
+ "CLOTHING",
77
+ "CLOTHING_ACCESSORIES",
78
+ "COMPUTERS_AND_TABLETS",
79
+ "DIAPERING_AND_POTTY_TRAINING",
80
+ "ELECTRONICS_ACCESSORIES",
81
+ "FURNITURE",
82
+ "HEALTH",
83
+ "HOME_GOODS",
84
+ "JEWELRY",
85
+ "NURSERY",
86
+ "PRINTERS_AND_SCANNERS",
87
+ "PROJECTORS",
88
+ "SHOES_AND_FOOTWEAR",
89
+ "SOFTWARE",
90
+ "TOYS",
91
+ "TVS_AND_MONITORS",
92
+ "VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
93
+ "WATCHES",
94
+ ]
95
+
64
96
 
65
97
  field :business, 'Business'
66
98
  field :commerce_merchant_settings, 'CommerceMerchantSettings'
@@ -74,9 +106,12 @@ module FacebookAds
74
106
  field :product_count, 'int'
75
107
  field :store_catalog_settings, 'StoreCatalogSettings'
76
108
  field :vertical, 'string'
109
+ field :catalog_segment_filter, 'object'
110
+ field :catalog_segment_product_set_id, 'string'
77
111
  field :destination_catalog_settings, 'hash'
78
112
  field :flight_catalog_settings, 'hash'
79
113
  field :onsite_commerce_merchant, 'object'
114
+ field :parent_catalog_id, 'string'
80
115
 
81
116
  has_edge :agencies do |edge|
82
117
  edge.delete do |api|
@@ -87,6 +122,7 @@ module FacebookAds
87
122
  api.has_param :business, 'string'
88
123
  api.has_param :permitted_roles, { list: { enum: -> { ProductCatalog::PERMITTED_ROLES }} }
89
124
  api.has_param :permitted_tasks, { list: { enum: -> { ProductCatalog::PERMITTED_TASKS }} }
125
+ api.has_param :utm_settings, 'hash'
90
126
  end
91
127
  end
92
128
 
@@ -232,6 +268,7 @@ module FacebookAds
232
268
  has_edge :items_batch do |edge|
233
269
  edge.post 'ProductCatalog' do |api|
234
270
  api.has_param :allow_upsert, 'bool'
271
+ api.has_param :item_sub_type, { enum: -> { ProductCatalog::ITEM_SUB_TYPE }}
235
272
  api.has_param :item_type, 'string'
236
273
  api.has_param :requests, 'hash'
237
274
  end
@@ -267,6 +304,7 @@ module FacebookAds
267
304
  api.has_param :encoding, { enum: -> { ProductFeed::ENCODING }}
268
305
  api.has_param :feed_type, { enum: -> { ProductFeed::FEED_TYPE }}
269
306
  api.has_param :file_name, 'string'
307
+ api.has_param :item_sub_type, { enum: -> { ProductFeed::ITEM_SUB_TYPE }}
270
308
  api.has_param :name, 'string'
271
309
  api.has_param :override_type, { enum: -> { ProductFeed::OVERRIDE_TYPE }}
272
310
  api.has_param :override_value, 'string'
@@ -295,7 +333,9 @@ module FacebookAds
295
333
  end
296
334
  edge.post 'ProductSet' do |api|
297
335
  api.has_param :filter, 'object'
336
+ api.has_param :metadata, 'hash'
298
337
  api.has_param :name, 'string'
338
+ api.has_param :retailer_id, 'string'
299
339
  end
300
340
  end
301
341
 
@@ -322,6 +362,7 @@ module FacebookAds
322
362
  api.has_param :availability, { enum: -> { ProductItem::AVAILABILITY }}
323
363
  api.has_param :brand, 'string'
324
364
  api.has_param :category, 'string'
365
+ api.has_param :category_specific_fields, 'hash'
325
366
  api.has_param :checkout_url, 'string'
326
367
  api.has_param :color, 'string'
327
368
  api.has_param :commerce_tax_category, { enum: -> { ProductItem::COMMERCE_TAX_CATEGORY }}
@@ -335,6 +376,7 @@ module FacebookAds
335
376
  api.has_param :custom_label_4, 'string'
336
377
  api.has_param :description, 'string'
337
378
  api.has_param :expiration_date, 'string'
379
+ api.has_param :fb_product_category, 'string'
338
380
  api.has_param :gender, { enum: -> { ProductItem::GENDER }}
339
381
  api.has_param :gtin, 'string'
340
382
  api.has_param :image_url, 'string'
@@ -63,10 +63,40 @@ module FacebookAds
63
63
  "MEDIA_TITLE",
64
64
  "OFFER",
65
65
  "PRODUCTS",
66
+ "TRANSACTABLE_ITEMS",
66
67
  "VEHICLES",
67
68
  "VEHICLE_OFFER",
68
69
  ]
69
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
+
70
100
  OVERRIDE_TYPE = [
71
101
  "CATALOG_SEGMENT_CUSTOMIZE_DEFAULT",
72
102
  "COUNTRY",
@@ -84,6 +114,7 @@ module FacebookAds
84
114
  field :encoding, 'string'
85
115
  field :file_name, 'string'
86
116
  field :id, 'string'
117
+ field :item_sub_type, 'string'
87
118
  field :latest_upload, 'ProductFeedUpload'
88
119
  field :name, 'string'
89
120
  field :override_type, 'string'
@@ -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,6 +310,7 @@ 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'
@@ -30,9 +30,13 @@ module FacebookAds
30
30
  field :auto_creation_url, 'string'
31
31
  field :filter, 'string'
32
32
  field :id, 'string'
33
+ field :latest_metadata, 'ProductSetMetadata'
34
+ field :live_metadata, 'ProductSetMetadata'
33
35
  field :name, 'string'
34
36
  field :product_catalog, 'ProductCatalog'
35
37
  field :product_count, 'int'
38
+ field :retailer_id, 'string'
39
+ field :metadata, 'hash'
36
40
 
37
41
  has_edge :automotive_models do |edge|
38
42
  edge.get 'AutomotiveModel' do |api|
@@ -25,12 +25,12 @@ module FacebookAds
25
25
  # on github and we'll fix in our codegen framework. We'll not be able to accept
26
26
  # pull request for this class.
27
27
 
28
- class ClientTransparencyStatus < AdObject
28
+ class ProductSetMetadata < AdObject
29
29
 
30
- field :grace_period_expiration_date, 'datetime'
31
- field :has_owning_business, 'bool'
32
- field :is_satisfied, 'bool'
33
- field :owning_business_requirements, 'object'
30
+ field :cover_image_url, 'string'
31
+ field :description, 'string'
32
+ field :external_url, 'string'
33
+ field :integrity_review_status, 'string'
34
34
  has_no_id
35
35
  has_no_get
36
36
  has_no_post
@@ -64,6 +64,7 @@ module FacebookAds
64
64
 
65
65
  has_edge :picture do |edge|
66
66
  edge.get 'ProfilePictureSource' do |api|
67
+ api.has_param :breaking_change, { enum: -> { ProfilePictureSource::BREAKING_CHANGE }}
67
68
  api.has_param :height, 'int'
68
69
  api.has_param :redirect, 'bool'
69
70
  api.has_param :type, { enum: -> { ProfilePictureSource::TYPE }}
@@ -32,6 +32,10 @@ module FacebookAds
32
32
  "thumbnail",
33
33
  ]
34
34
 
35
+ BREAKING_CHANGE = [
36
+ "PROFILE_PICTURE",
37
+ ]
38
+
35
39
 
36
40
  field :bottom, 'int'
37
41
  field :cache_key, 'string'
@@ -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'
@@ -40,6 +40,7 @@ module FacebookAds
40
40
  field :time_created, 'datetime'
41
41
  field :time_updated, 'datetime'
42
42
  has_no_post
43
+ has_no_delete
43
44
 
44
45
  end
45
46
  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