facebookbusiness 0.7.0.1 → 0.8.0.3

Sign up to get free protection for your applications and to get access to all the features.
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