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.
- checksums.yaml +4 -4
- data/lib/facebook_ads/ad_objects/ad_account.rb +16 -19
- data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +23 -0
- data/lib/facebook_ads/ad_objects/ad_account_delivery_estimate.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_account_matched_search_applications_edge_data.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_activity.rb +7 -0
- data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +2 -2
- data/lib/facebook_ads/ad_objects/ad_campaign_delivery_estimate.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_creative.rb +1 -0
- data/lib/facebook_ads/ad_objects/{atlas_url.rb → ad_creative_instagram_branded_content.rb} +1 -2
- data/lib/facebook_ads/ad_objects/ad_creative_interactive_components_spec.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_network_analytics_sync_query_result.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_place_page_set.rb +6 -0
- data/lib/facebook_ads/ad_objects/ad_preview.rb +0 -1
- data/lib/facebook_ads/ad_objects/ad_report_spec.rb +0 -1
- data/lib/facebook_ads/ad_objects/ad_set.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_study.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_video.rb +12 -27
- data/lib/facebook_ads/ad_objects/adgroup_placement_specific_review_feedback.rb +4 -0
- data/lib/facebook_ads/ad_objects/{ads_interest.rb → adoptable_pet.rb} +19 -5
- data/lib/facebook_ads/ad_objects/ads_insights.rb +4 -0
- data/lib/facebook_ads/ad_objects/ads_pixel.rb +3 -0
- data/lib/facebook_ads/ad_objects/application.rb +26 -0
- data/lib/facebook_ads/ad_objects/atlas_campaign.rb +3 -3
- data/lib/facebook_ads/ad_objects/automotive_model.rb +1 -0
- data/lib/facebook_ads/ad_objects/business.rb +46 -117
- data/lib/facebook_ads/ad_objects/business_asset_group.rb +2 -3
- data/lib/facebook_ads/ad_objects/business_role_request.rb +9 -0
- data/lib/facebook_ads/ad_objects/business_unit.rb +1 -1
- data/lib/facebook_ads/ad_objects/business_user.rb +9 -0
- data/lib/facebook_ads/ad_objects/campaign.rb +257 -0
- data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
- data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +27 -0
- data/lib/facebook_ads/ad_objects/commerce_order.rb +6 -0
- data/lib/facebook_ads/ad_objects/commerce_order_transaction_detail.rb +4 -0
- data/lib/facebook_ads/ad_objects/{creative_asset_tag.rb → connections_targeting.rb} +2 -2
- data/lib/facebook_ads/ad_objects/{business_creative_folder_sharing_agreement.rb → cpas_advertiser_partnership_recommendation.rb} +8 -11
- data/lib/facebook_ads/ad_objects/{brand_audience.rb → cpas_collaboration_request.rb} +15 -9
- data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +1 -0
- data/lib/facebook_ads/ad_objects/da_check.rb +7 -0
- data/lib/facebook_ads/ad_objects/destination.rb +1 -0
- data/lib/facebook_ads/ad_objects/event.rb +12 -1
- data/lib/facebook_ads/ad_objects/extended_credit.rb +7 -0
- data/lib/facebook_ads/ad_objects/external_event_source.rb +1 -0
- data/lib/facebook_ads/ad_objects/flight.rb +1 -0
- data/lib/facebook_ads/ad_objects/group.rb +10 -1
- data/lib/facebook_ads/ad_objects/home_listing.rb +1 -0
- data/lib/facebook_ads/ad_objects/hotel.rb +1 -0
- data/lib/facebook_ads/ad_objects/ig_media.rb +1 -0
- data/lib/facebook_ads/ad_objects/life_event.rb +0 -4
- data/lib/facebook_ads/ad_objects/link.rb +0 -6
- data/lib/facebook_ads/ad_objects/live_video.rb +12 -16
- data/lib/facebook_ads/ad_objects/media_fingerprint.rb +0 -1
- data/lib/facebook_ads/ad_objects/native_offer_view.rb +0 -1
- data/lib/facebook_ads/ad_objects/oracle_transaction.rb +0 -7
- data/lib/facebook_ads/ad_objects/page.rb +34 -65
- data/lib/facebook_ads/ad_objects/page_admin_note.rb +1 -0
- data/lib/facebook_ads/ad_objects/page_call_to_action.rb +3 -0
- data/lib/facebook_ads/ad_objects/page_change_proposal.rb +2 -0
- data/lib/facebook_ads/ad_objects/page_post.rb +2 -0
- data/lib/facebook_ads/ad_objects/{business_creative.rb → payment_subscription.rb} +24 -16
- data/lib/facebook_ads/ad_objects/photo.rb +6 -0
- data/lib/facebook_ads/ad_objects/post.rb +4 -2
- data/lib/facebook_ads/ad_objects/product_catalog.rb +42 -0
- data/lib/facebook_ads/ad_objects/product_feed.rb +31 -0
- data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
- data/lib/facebook_ads/ad_objects/product_item.rb +2 -0
- data/lib/facebook_ads/ad_objects/product_set.rb +4 -0
- data/lib/facebook_ads/ad_objects/{client_transparency_status.rb → product_set_metadata.rb} +5 -5
- data/lib/facebook_ads/ad_objects/profile.rb +1 -0
- data/lib/facebook_ads/ad_objects/profile_picture_source.rb +4 -0
- data/lib/facebook_ads/ad_objects/publisher_block_list.rb +6 -0
- data/lib/facebook_ads/ad_objects/saved_audience.rb +1 -0
- data/lib/facebook_ads/ad_objects/security_settings.rb +0 -1
- data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
- data/lib/facebook_ads/ad_objects/server_side/content.rb +75 -13
- data/lib/facebook_ads/ad_objects/server_side/custom_data.rb +45 -6
- data/lib/facebook_ads/ad_objects/server_side/delivery_category.rb +33 -0
- data/lib/facebook_ads/ad_objects/server_side/event.rb +62 -3
- data/lib/facebook_ads/ad_objects/server_side/event_request.rb +134 -13
- data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +43 -0
- data/lib/facebook_ads/ad_objects/{whats_app_business_profile.rb → server_side/http_method.rb} +7 -15
- data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
- data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
- data/lib/facebook_ads/ad_objects/server_side/user_data.rb +145 -17
- data/lib/facebook_ads/ad_objects/server_side/util.rb +216 -149
- data/lib/facebook_ads/ad_objects/system_user.rb +9 -4
- data/lib/facebook_ads/ad_objects/targeting.rb +4 -3
- data/lib/facebook_ads/ad_objects/{user_influence.rb → targeting_relaxation.rb} +2 -4
- data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +1 -0
- data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
- data/lib/facebook_ads/ad_objects/user.rb +9 -15
- data/lib/facebook_ads/ad_objects/vehicle.rb +1 -0
- data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
- data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +22 -0
- data/lib/facebook_ads/errors.rb +1 -1
- data/lib/facebook_ads/version.rb +2 -2
- metadata +64 -25
- data/lib/facebook_ads/ad_objects/business_creative_folder.rb +0 -79
- data/lib/facebook_ads/ad_objects/business_image.rb +0 -95
- data/lib/facebook_ads/ad_objects/iterative_split_test_config.rb +0 -43
- data/lib/facebook_ads/ad_objects/messenger_platform_referral.rb +0 -39
- data/lib/facebook_ads/ad_objects/page_about_story.rb +0 -39
- data/lib/facebook_ads/ad_objects/split_test_config.rb +0 -41
- data/lib/facebook_ads/ad_objects/streaming_reaction.rb +0 -51
- data/lib/facebook_ads/ad_objects/user_taggable_friend.rb +0 -49
@@ -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",
|
@@ -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
|
28
|
+
class PaymentSubscription < AdObject
|
29
29
|
|
30
|
-
field :
|
31
|
-
field :
|
32
|
-
field :
|
33
|
-
field :
|
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 :
|
36
|
-
field :
|
37
|
-
field :
|
38
|
-
field :
|
39
|
-
field :
|
40
|
-
field :
|
41
|
-
|
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
|
28
|
+
class ProductSetMetadata < AdObject
|
29
29
|
|
30
|
-
field :
|
31
|
-
field :
|
32
|
-
field :
|
33
|
-
field :
|
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 }}
|
@@ -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'
|
@@ -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
|