facebookbusiness 0.8.0.2 → 0.9.0.2

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facebook_ads/ad_objects/ad.rb +3 -0
  3. data/lib/facebook_ads/ad_objects/ad_account.rb +21 -13
  4. data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +1 -0
  5. data/lib/facebook_ads/ad_objects/ad_account_delivery_estimate.rb +1 -0
  6. data/lib/facebook_ads/ad_objects/ad_account_matched_search_applications_edge_data.rb +1 -0
  7. data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +23 -5
  8. data/lib/facebook_ads/ad_objects/ad_activity.rb +0 -1
  9. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +5 -0
  10. data/lib/facebook_ads/ad_objects/ad_async_request.rb +2 -0
  11. data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +6 -2
  12. data/lib/facebook_ads/ad_objects/ad_campaign_delivery_estimate.rb +1 -0
  13. data/lib/facebook_ads/ad_objects/ad_creative.rb +7 -0
  14. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +5 -0
  15. data/lib/facebook_ads/ad_objects/{ad_creative_instagram_branded_content.rb → ad_creative_omnichannel_link_spec.rb} +3 -1
  16. data/lib/facebook_ads/ad_objects/ad_preview.rb +1 -0
  17. data/lib/facebook_ads/ad_objects/ad_report_run.rb +1 -0
  18. data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +4 -0
  19. data/lib/facebook_ads/ad_objects/ad_set.rb +3 -1
  20. data/lib/facebook_ads/ad_objects/ad_study.rb +0 -1
  21. data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -4
  22. data/lib/facebook_ads/ad_objects/ad_video.rb +5 -10
  23. data/lib/facebook_ads/ad_objects/adgroup_activity.rb +2 -0
  24. data/lib/facebook_ads/ad_objects/adoptable_pet.rb +7 -0
  25. data/lib/facebook_ads/ad_objects/ads_insights.rb +1 -0
  26. data/lib/facebook_ads/ad_objects/ads_pixel.rb +1 -0
  27. data/lib/facebook_ads/ad_objects/album.rb +0 -10
  28. data/lib/facebook_ads/ad_objects/application.rb +2 -10
  29. data/lib/facebook_ads/ad_objects/business.rb +15 -12
  30. data/lib/facebook_ads/ad_objects/business_asset_group.rb +1 -1
  31. data/lib/facebook_ads/ad_objects/business_role_request.rb +4 -4
  32. data/lib/facebook_ads/ad_objects/business_unit.rb +0 -1
  33. data/lib/facebook_ads/ad_objects/business_user.rb +4 -4
  34. data/lib/facebook_ads/ad_objects/campaign.rb +11 -1
  35. data/lib/facebook_ads/ad_objects/{friend_list.rb → catalog_item_channels_to_integrity_status.rb} +5 -5
  36. data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +2 -24
  37. data/lib/facebook_ads/ad_objects/commerce_merchant_settings_setup_status.rb +1 -0
  38. data/lib/facebook_ads/ad_objects/custom_audience.rb +8 -0
  39. data/lib/facebook_ads/ad_objects/extended_credit.rb +0 -1
  40. data/lib/facebook_ads/ad_objects/group.rb +26 -10
  41. data/lib/facebook_ads/ad_objects/hotel_room.rb +1 -0
  42. data/lib/facebook_ads/ad_objects/ig_media.rb +0 -1
  43. data/lib/facebook_ads/ad_objects/ig_user.rb +0 -1
  44. data/lib/facebook_ads/ad_objects/link.rb +0 -4
  45. data/lib/facebook_ads/ad_objects/live_video.rb +12 -12
  46. data/lib/facebook_ads/ad_objects/messenger_profile.rb +1 -0
  47. data/lib/facebook_ads/ad_objects/page.rb +23 -15
  48. data/lib/facebook_ads/ad_objects/page_post.rb +0 -10
  49. data/lib/facebook_ads/ad_objects/{event_tour.rb → payment_engine_payment.rb} +35 -18
  50. data/lib/facebook_ads/ad_objects/payment_subscription.rb +3 -3
  51. data/lib/facebook_ads/ad_objects/photo.rb +0 -10
  52. data/lib/facebook_ads/ad_objects/playable_content.rb +1 -0
  53. data/lib/facebook_ads/ad_objects/post.rb +46 -29
  54. data/lib/facebook_ads/ad_objects/product_catalog.rb +3 -7
  55. data/lib/facebook_ads/ad_objects/product_feed.rb +1 -0
  56. data/lib/facebook_ads/ad_objects/product_feed_schedule.rb +2 -0
  57. data/lib/facebook_ads/ad_objects/product_group.rb +8 -0
  58. data/lib/facebook_ads/ad_objects/product_item.rb +15 -0
  59. data/lib/facebook_ads/ad_objects/referral.rb +2 -0
  60. data/lib/facebook_ads/ad_objects/server_side/action_source.rb +48 -0
  61. data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
  62. data/lib/facebook_ads/ad_objects/server_side/content.rb +23 -4
  63. data/lib/facebook_ads/ad_objects/server_side/event.rb +32 -6
  64. data/lib/facebook_ads/ad_objects/server_side/event_request.rb +60 -13
  65. data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +12 -0
  66. data/lib/facebook_ads/ad_objects/{user_payment_modules_options.rb → server_side/http_method.rb} +7 -19
  67. data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
  68. data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
  69. data/lib/facebook_ads/ad_objects/server_side/util.rb +13 -0
  70. data/lib/facebook_ads/ad_objects/system_user.rb +0 -20
  71. data/lib/facebook_ads/ad_objects/targeting.rb +0 -2
  72. data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +0 -1
  73. data/lib/facebook_ads/ad_objects/unified_thread.rb +0 -1
  74. data/lib/facebook_ads/ad_objects/user.rb +31 -26
  75. data/lib/facebook_ads/ad_objects/vehicle.rb +1 -0
  76. data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +3 -0
  77. data/lib/facebook_ads/ad_objects/{offline_terms_of_service.rb → whats_app_business_profile.rb} +2 -4
  78. data/lib/facebook_ads/session.rb +1 -1
  79. data/lib/facebook_ads/version.rb +2 -2
  80. metadata +13 -10
  81. data/lib/facebook_ads/ad_objects/ad_account_creation_request.rb +0 -71
  82. data/lib/facebook_ads/ad_objects/user_payment_methods_info.rb +0 -43
@@ -25,31 +25,48 @@ 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 EventTour < AdObject
28
+ class PaymentEnginePayment < AdObject
29
+ REASON = [
30
+ "BANNED_USER",
31
+ "DENIED_REFUND",
32
+ "GRANTED_REPLACEMENT_ITEM",
33
+ ]
29
34
 
30
- field :description, 'string'
31
- field :dominant_color, 'string'
32
- field :end_time, 'string'
35
+
36
+ field :actions, { list: 'object' }
37
+ field :application, 'Application'
38
+ field :country, 'string'
39
+ field :created_time, 'datetime'
40
+ field :disputes, { list: 'object' }
41
+ field :fraud_status, 'string'
42
+ field :fulfillment_status, 'string'
33
43
  field :id, 'string'
34
- field :is_past, 'bool'
35
- field :last_event_timestamp, 'int'
36
- field :name, 'string'
37
- field :num_events, 'int'
38
- field :photo, 'Photo'
39
- field :publishing_state, 'string'
40
- field :scheduled_publish_timestamp, 'int'
41
- field :start_time, 'string'
42
- field :ticketing_uri, 'string'
43
- field :video, 'AdVideo'
44
+ field :is_from_ad, 'bool'
45
+ field :is_from_page_post, 'bool'
46
+ field :items, { list: 'object' }
47
+ field :payout_foreign_exchange_rate, 'double'
48
+ field :phone_support_eligible, 'bool'
49
+ field :refundable_amount, 'CurrencyAmount'
50
+ field :request_id, 'string'
51
+ field :tax, 'string'
52
+ field :tax_country, 'string'
53
+ field :test, 'int'
54
+ field :user, 'User'
44
55
  has_no_post
45
56
  has_no_delete
46
57
 
47
- has_edge :events do |edge|
48
- edge.get 'Event'
58
+ has_edge :dispute do |edge|
59
+ edge.post 'PaymentEnginePayment' do |api|
60
+ api.has_param :reason, { enum: -> { PaymentEnginePayment::REASON }}
61
+ end
49
62
  end
50
63
 
51
- has_edge :pages do |edge|
52
- edge.get 'Page'
64
+ has_edge :refunds do |edge|
65
+ edge.post 'PaymentEnginePayment' do |api|
66
+ api.has_param :amount, 'double'
67
+ api.has_param :currency, 'string'
68
+ api.has_param :reason, { enum: -> { PaymentEnginePayment::REASON }}
69
+ end
53
70
  end
54
71
 
55
72
  end
@@ -29,13 +29,13 @@ module FacebookAds
29
29
 
30
30
  field :amount, 'string'
31
31
  field :app_param_data, 'string'
32
- field :application, 'Profile'
32
+ field :application, 'Application'
33
33
  field :billing_period, 'string'
34
34
  field :canceled_reason, 'string'
35
35
  field :created_time, 'datetime'
36
36
  field :currency, 'string'
37
37
  field :id, 'string'
38
- field :last_payment, 'string'
38
+ field :last_payment, 'PaymentEnginePayment'
39
39
  field :next_bill_time, 'datetime'
40
40
  field :next_period_amount, 'string'
41
41
  field :next_period_currency, 'string'
@@ -50,7 +50,7 @@ module FacebookAds
50
50
  field :trial_currency, 'string'
51
51
  field :trial_expiry_time, 'datetime'
52
52
  field :updated_time, 'datetime'
53
- field :user, 'Profile'
53
+ field :user, 'User'
54
54
  has_no_post
55
55
  has_no_delete
56
56
 
@@ -125,16 +125,6 @@ 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
-
134
- has_edge :sharedposts do |edge|
135
- edge.get 'Post'
136
- end
137
-
138
128
  has_edge :sponsor_tags do |edge|
139
129
  edge.get 'Page'
140
130
  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'
@@ -35,6 +35,51 @@ module FacebookAds
35
35
  "year",
36
36
  ]
37
37
 
38
+ CHECKIN_ENTRY_POINT = [
39
+ "BRANDING_CHECKIN",
40
+ "BRANDING_OTHER",
41
+ "BRANDING_PHOTO",
42
+ "BRANDING_STATUS",
43
+ ]
44
+
45
+ FORMATTING = [
46
+ "MARKDOWN",
47
+ "PLAINTEXT",
48
+ ]
49
+
50
+ PLACE_ATTACHMENT_SETTING = [
51
+ "1",
52
+ "2",
53
+ ]
54
+
55
+ POST_SURFACES_BLACKLIST = [
56
+ "1",
57
+ "2",
58
+ "3",
59
+ "4",
60
+ "5",
61
+ ]
62
+
63
+ POSTING_TO_REDSPACE = [
64
+ "disabled",
65
+ "enabled",
66
+ ]
67
+
68
+ TARGET_SURFACE = [
69
+ "STORY",
70
+ "TIMELINE",
71
+ ]
72
+
73
+ UNPUBLISHED_CONTENT_TYPE = [
74
+ "ADS_POST",
75
+ "DRAFT",
76
+ "INLINE_CREATED",
77
+ "PUBLISHED",
78
+ "REVIEWABLE_BRANDED_CONTENT",
79
+ "SCHEDULED",
80
+ "SCHEDULED_RECURRING",
81
+ ]
82
+
38
83
  FEED_STORY_VISIBILITY = [
39
84
  "hidden",
40
85
  "visible",
@@ -59,22 +104,17 @@ module FacebookAds
59
104
  field :comments_mirroring_domain, 'string'
60
105
  field :coordinates, 'object'
61
106
  field :created_time, 'datetime'
62
- field :delivery_growth_optimizations, { list: 'string' }
63
107
  field :description, 'string'
64
- field :entities, 'object'
65
108
  field :event, 'Event'
66
109
  field :expanded_height, 'int'
67
110
  field :expanded_width, 'int'
68
111
  field :feed_targeting, 'object'
69
- field :formatting, 'string'
70
112
  field :from, 'object'
71
113
  field :full_picture, 'string'
72
114
  field :height, 'int'
73
115
  field :icon, 'string'
74
116
  field :id, 'string'
75
- field :implicit_place, 'Place'
76
117
  field :instagram_eligibility, 'string'
77
- field :instream_eligibility, 'string'
78
118
  field :is_app_share, 'bool'
79
119
  field :is_eligible_for_promotion, 'bool'
80
120
  field :is_expired, 'bool'
@@ -84,8 +124,7 @@ module FacebookAds
84
124
  field :is_popular, 'bool'
85
125
  field :is_published, 'bool'
86
126
  field :is_spherical, 'bool'
87
- field :link, 'string'
88
- field :live_video_eligibility, { list: 'string' }
127
+ field :link, 'object'
89
128
  field :message, 'string'
90
129
  field :message_tags, { list: 'string' }
91
130
  field :multi_share_end_card, 'bool'
@@ -96,12 +135,10 @@ module FacebookAds
96
135
  field :permalink_url, 'object'
97
136
  field :picture, 'string'
98
137
  field :place, 'Place'
99
- field :poll, 'object'
100
138
  field :privacy, 'Privacy'
101
139
  field :promotable_id, 'string'
102
140
  field :promotion_status, 'string'
103
141
  field :properties, { list: 'string' }
104
- field :publishing_stats, 'int'
105
142
  field :scheduled_publish_time, 'double'
106
143
  field :shares, 'object'
107
144
  field :source, 'string'
@@ -112,13 +149,11 @@ module FacebookAds
112
149
  field :target, 'Profile'
113
150
  field :targeting, 'object'
114
151
  field :timeline_visibility, 'string'
115
- field :translations, 'hash'
116
152
  field :type, 'string'
117
153
  field :updated_time, 'datetime'
118
154
  field :via, 'object'
119
155
  field :video_buying_eligibility, { list: 'string' }
120
156
  field :width, 'int'
121
- field :will_be_autocropped_when_deliver_to_instagram, 'bool'
122
157
 
123
158
  has_edge :attachments do |edge|
124
159
  edge.get
@@ -172,24 +207,6 @@ module FacebookAds
172
207
  end
173
208
  end
174
209
 
175
- has_edge :promotions do |edge|
176
- edge.post do |api|
177
- api.has_param :ad_account_id, 'string'
178
- api.has_param :ad_conversion_pixel_id, 'int'
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 }}
180
- api.has_param :audience_id, 'string'
181
- api.has_param :bid_amount, 'int'
182
- api.has_param :budget, 'int'
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 }}
184
- api.has_param :currency, 'string'
185
- api.has_param :flow_id, 'string'
186
- api.has_param :placement, 'string'
187
- api.has_param :start_time, 'int'
188
- api.has_param :stop_time, 'int'
189
- api.has_param :targeting, 'Targeting'
190
- end
191
- end
192
-
193
210
  has_edge :reactions do |edge|
194
211
  edge.get 'Profile' do |api|
195
212
  api.has_param :type, { enum: -> { Profile::TYPE }}
@@ -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",
@@ -110,7 +111,6 @@ module FacebookAds
110
111
  field :catalog_segment_product_set_id, 'string'
111
112
  field :destination_catalog_settings, 'hash'
112
113
  field :flight_catalog_settings, 'hash'
113
- field :onsite_commerce_merchant, 'object'
114
114
  field :parent_catalog_id, 'string'
115
115
 
116
116
  has_edge :agencies do |edge|
@@ -274,12 +274,6 @@ module FacebookAds
274
274
  end
275
275
  end
276
276
 
277
- has_edge :onsite_commerce_merchant do |edge|
278
- edge.post 'ProductCatalog' do |api|
279
- api.has_param :onsite_commerce_merchant, 'object'
280
- end
281
- end
282
-
283
277
  has_edge :pricing_variables_batch do |edge|
284
278
  edge.get 'ProductCatalogPricingVariablesBatch' do |api|
285
279
  api.has_param :handle, 'string'
@@ -305,6 +299,7 @@ module FacebookAds
305
299
  api.has_param :feed_type, { enum: -> { ProductFeed::FEED_TYPE }}
306
300
  api.has_param :file_name, 'string'
307
301
  api.has_param :item_sub_type, { enum: -> { ProductFeed::ITEM_SUB_TYPE }}
302
+ api.has_param :migrated_from_feed_id, 'string'
308
303
  api.has_param :name, 'string'
309
304
  api.has_param :override_type, { enum: -> { ProductFeed::OVERRIDE_TYPE }}
310
305
  api.has_param :override_value, 'string'
@@ -354,6 +349,7 @@ module FacebookAds
354
349
  edge.post 'ProductItem' do |api|
355
350
  api.has_param :additional_image_files, { list: 'file' }
356
351
  api.has_param :additional_image_urls, { list: 'string' }
352
+ api.has_param :additional_uploaded_image_ids, { list: 'string' }
357
353
  api.has_param :additional_variant_attributes, 'hash'
358
354
  api.has_param :android_app_name, 'string'
359
355
  api.has_param :android_class, 'string'
@@ -116,6 +116,7 @@ module FacebookAds
116
116
  field :id, 'string'
117
117
  field :item_sub_type, 'string'
118
118
  field :latest_upload, 'ProductFeedUpload'
119
+ field :migrated_from_feed_id, 'string'
119
120
  field :name, 'string'
120
121
  field :override_type, 'string'
121
122
  field :product_count, 'int'
@@ -54,6 +54,8 @@ module FacebookAds
54
54
  field :timezone, 'string'
55
55
  field :url, 'string'
56
56
  field :username, 'string'
57
+ has_no_post
58
+ has_no_delete
57
59
 
58
60
  end
59
61
  end
@@ -32,6 +32,14 @@ module FacebookAds
32
32
  field :retailer_id, 'string'
33
33
  field :variants, { list: 'ProductVariant' }
34
34
 
35
+ has_edge :ar_data do |edge|
36
+ edge.post do |api|
37
+ api.has_param :effect_icon, 'file'
38
+ api.has_param :state, { enum: %w{DISABLED ENABLED TEST }}
39
+ api.has_param :surfaces, { list: { enum: %w{SHOPS TEST_CAPABILITY UNIVERSAL_CHECKOUT US_MARKETPLACE }} }
40
+ end
41
+ end
42
+
35
43
  has_edge :products do |edge|
36
44
  edge.get 'ProductItem'
37
45
  edge.post 'ProductItem' do |api|
@@ -316,12 +316,14 @@ module FacebookAds
316
316
  field :id, 'string'
317
317
  field :image_cdn_urls, 'hash'
318
318
  field :image_url, 'string'
319
+ field :images, { list: 'string' }
319
320
  field :inventory, 'int'
320
321
  field :manufacturer_part_number, 'string'
321
322
  field :material, 'string'
322
323
  field :mobile_link, 'string'
323
324
  field :name, 'string'
324
325
  field :ordering_index, 'int'
326
+ field :parent_product_id, 'string'
325
327
  field :pattern, 'string'
326
328
  field :price, 'string'
327
329
  field :product_catalog, 'ProductCatalog'
@@ -343,6 +345,7 @@ module FacebookAds
343
345
  field :url, 'string'
344
346
  field :visibility, { enum: -> { VISIBILITY }}
345
347
  field :additional_image_files, { list: 'file' }
348
+ field :additional_uploaded_image_ids, { list: 'string' }
346
349
  field :android_app_name, 'string'
347
350
  field :android_class, 'string'
348
351
  field :android_package, 'string'
@@ -367,6 +370,18 @@ module FacebookAds
367
370
  field :windows_phone_app_name, 'string'
368
371
  field :windows_phone_url, 'string'
369
372
 
373
+ has_edge :ar_data do |edge|
374
+ edge.post do |api|
375
+ api.has_param :container_effect, { enum: %w{MAKEUP }}
376
+ api.has_param :effect_parameters, 'hash'
377
+ api.has_param :picker_icon, 'file'
378
+ end
379
+ end
380
+
381
+ has_edge :channels_to_integrity_status do |edge|
382
+ edge.get 'CatalogItemChannelsToIntegrityStatus'
383
+ end
384
+
370
385
  has_edge :product_sets do |edge|
371
386
  edge.get 'ProductSet'
372
387
  end
@@ -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
@@ -0,0 +1,48 @@
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
20
+ module ServerSide
21
+ ActionSource = Set[
22
+
23
+ # Conversion happened over email.
24
+ 'email',
25
+
26
+ # Conversion was made on your website.
27
+ 'website',
28
+
29
+ # Conversion was made using your app.
30
+ 'app',
31
+
32
+ # Conversion was made over the phone.
33
+ 'phone_call',
34
+
35
+ # Conversion was made via a messaging app, SMS, or online messaging feature.
36
+ 'chat',
37
+
38
+ # Conversion was made in person at your physical store.
39
+ 'physical_store',
40
+
41
+ # Conversion happened automatically, for example, a subscription renewal that's set on auto-pay each month.
42
+ 'system_generated',
43
+
44
+ # Conversion happened in a way that is not listed.
45
+ 'other'
46
+ ]
47
+ end
48
+ end
@@ -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