facebookbusiness 0.7.0.2 → 0.8.0.4
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.
- checksums.yaml +4 -4
- data/lib/facebook_ads/ad_objects/ad_account.rb +21 -22
- data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +24 -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 +22 -5
- data/lib/facebook_ads/ad_objects/ad_activity.rb +7 -1
- data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +5 -0
- data/lib/facebook_ads/ad_objects/ad_async_request.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +4 -2
- data/lib/facebook_ads/ad_objects/ad_campaign_delivery_estimate.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_creative.rb +4 -0
- 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 +4 -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_report_spec.rb +0 -1
- data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +4 -0
- data/lib/facebook_ads/ad_objects/ad_set.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_study.rb +2 -1
- data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -4
- data/lib/facebook_ads/ad_objects/ad_video.rb +15 -27
- data/lib/facebook_ads/ad_objects/adgroup_placement_specific_review_feedback.rb +4 -0
- data/lib/facebook_ads/ad_objects/{user_taggable_friend.rb → adoptable_pet.rb} +27 -14
- data/lib/facebook_ads/ad_objects/ads_insights.rb +5 -0
- data/lib/facebook_ads/ad_objects/ads_pixel.rb +4 -0
- data/lib/facebook_ads/ad_objects/application.rb +27 -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 +55 -119
- data/lib/facebook_ads/ad_objects/business_asset_group.rb +1 -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 +258 -0
- data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
- data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +24 -19
- data/lib/facebook_ads/ad_objects/commerce_merchant_settings_setup_status.rb +1 -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 +12 -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/hotel_room.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 +6 -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 +52 -72
- 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/playable_content.rb +1 -0
- data/lib/facebook_ads/ad_objects/post.rb +49 -2
- data/lib/facebook_ads/ad_objects/product_catalog.rb +44 -7
- data/lib/facebook_ads/ad_objects/product_feed.rb +32 -0
- data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
- data/lib/facebook_ads/ad_objects/product_item.rb +3 -0
- data/lib/facebook_ads/ad_objects/product_set.rb +4 -0
- data/lib/facebook_ads/ad_objects/{user_influence.rb → product_set_metadata.rb} +5 -4
- 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/referral.rb +2 -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_request.rb +134 -13
- data/lib/facebook_ads/ad_objects/{client_transparency_status.rb → server_side/event_request_async.rb} +20 -17
- data/lib/facebook_ads/ad_objects/{whats_app_business_profile.rb → server_side/http_method.rb} +7 -15
- data/lib/facebook_ads/ad_objects/{ads_interest.rb → server_side/http_service_interface.rb} +10 -18
- 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/{atlas_url.rb → targeting_relaxation.rb} +2 -2
- data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
- data/lib/facebook_ads/ad_objects/user.rb +30 -24
- data/lib/facebook_ads/ad_objects/vehicle.rb +2 -0
- data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
- data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +25 -0
- data/lib/facebook_ads/errors.rb +1 -1
- data/lib/facebook_ads/session.rb +1 -1
- data/lib/facebook_ads/version.rb +2 -2
- metadata +63 -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
@@ -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
|
@@ -46,6 +46,51 @@ module FacebookAds
|
|
46
46
|
"normal",
|
47
47
|
]
|
48
48
|
|
49
|
+
CHECKIN_ENTRY_POINT = [
|
50
|
+
"BRANDING_CHECKIN",
|
51
|
+
"BRANDING_OTHER",
|
52
|
+
"BRANDING_PHOTO",
|
53
|
+
"BRANDING_STATUS",
|
54
|
+
]
|
55
|
+
|
56
|
+
FORMATTING = [
|
57
|
+
"MARKDOWN",
|
58
|
+
"PLAINTEXT",
|
59
|
+
]
|
60
|
+
|
61
|
+
PLACE_ATTACHMENT_SETTING = [
|
62
|
+
"1",
|
63
|
+
"2",
|
64
|
+
]
|
65
|
+
|
66
|
+
POST_SURFACES_BLACKLIST = [
|
67
|
+
"1",
|
68
|
+
"2",
|
69
|
+
"3",
|
70
|
+
"4",
|
71
|
+
"5",
|
72
|
+
]
|
73
|
+
|
74
|
+
POSTING_TO_REDSPACE = [
|
75
|
+
"disabled",
|
76
|
+
"enabled",
|
77
|
+
]
|
78
|
+
|
79
|
+
TARGET_SURFACE = [
|
80
|
+
"STORY",
|
81
|
+
"TIMELINE",
|
82
|
+
]
|
83
|
+
|
84
|
+
UNPUBLISHED_CONTENT_TYPE = [
|
85
|
+
"ADS_POST",
|
86
|
+
"DRAFT",
|
87
|
+
"INLINE_CREATED",
|
88
|
+
"PUBLISHED",
|
89
|
+
"REVIEWABLE_BRANDED_CONTENT",
|
90
|
+
"SCHEDULED",
|
91
|
+
"SCHEDULED_RECURRING",
|
92
|
+
]
|
93
|
+
|
49
94
|
|
50
95
|
field :actions, { list: 'string' }
|
51
96
|
field :admin_creator, 'object'
|
@@ -74,6 +119,7 @@ module FacebookAds
|
|
74
119
|
field :id, 'string'
|
75
120
|
field :implicit_place, 'Place'
|
76
121
|
field :instagram_eligibility, 'string'
|
122
|
+
field :instream_eligibility, 'string'
|
77
123
|
field :is_app_share, 'bool'
|
78
124
|
field :is_eligible_for_promotion, 'bool'
|
79
125
|
field :is_expired, 'bool'
|
@@ -95,6 +141,7 @@ module FacebookAds
|
|
95
141
|
field :permalink_url, 'object'
|
96
142
|
field :picture, 'string'
|
97
143
|
field :place, 'Place'
|
144
|
+
field :poll, 'object'
|
98
145
|
field :privacy, 'Privacy'
|
99
146
|
field :promotable_id, 'string'
|
100
147
|
field :promotion_status, 'string'
|
@@ -174,11 +221,11 @@ module FacebookAds
|
|
174
221
|
edge.post do |api|
|
175
222
|
api.has_param :ad_account_id, 'string'
|
176
223
|
api.has_param :ad_conversion_pixel_id, 'int'
|
177
|
-
api.has_param :audience, { enum: %w{AUTO_LOOKALIKE AUTO_PAGE_LOOKALIKE AUTO_TARGETING COUNTRY_AND_INTEREST CREATE_NEW CUSTOM_AUDIENCE DISTRICT EVENT_CUSTOM_AUDIENCES EVENT_ENGAGEMENT FANS GROUPER HEC_AUDIENCE IG_PROMOTED_POST_AUTO LOCAL LOOKALIKE MARKETPLACE_DEFAULT MULT_CUSTOM_AUDIENCES NCPP SAVED_AUDIENCE SMART_AUDIENCE }}
|
224
|
+
api.has_param :audience, { enum: %w{AUTO_LOOKALIKE AUTO_PAGE_LOOKALIKE AUTO_TARGETING COUNTRY_AND_INTEREST CREATE_NEW CUSTOM_AUDIENCE DISTRICT EVENT_CUSTOM_AUDIENCES EVENT_ENGAGEMENT FANS GROUPER HEC_AUDIENCE IG_PROMOTED_POST_AUTO LOCAL LOOKALIKE MARKETPLACE_DEFAULT MARKETPLACE_NATIONWIDE_AUDIENCE MARKETPLACE_SAVED_AUDIENCE MULT_CUSTOM_AUDIENCES NCPP SAVED_AUDIENCE SMART_AUDIENCE }}
|
178
225
|
api.has_param :audience_id, 'string'
|
179
226
|
api.has_param :bid_amount, 'int'
|
180
227
|
api.has_param :budget, 'int'
|
181
|
-
api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE SUBSCRIBE UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
|
228
|
+
api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REFER_FRIENDS REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SEND_A_GIFT SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE SUBSCRIBE SWIPE_UP_PRODUCT SWIPE_UP_SHOP UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
|
182
229
|
api.has_param :currency, 'string'
|
183
230
|
api.has_param :flow_id, 'string'
|
184
231
|
api.has_param :placement, 'string'
|
@@ -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",
|
@@ -34,6 +35,7 @@ module FacebookAds
|
|
34
35
|
"home_listings",
|
35
36
|
"hotels",
|
36
37
|
"jobs",
|
38
|
+
"local_delivery_shipping_profiles",
|
37
39
|
"local_service_businesses",
|
38
40
|
"offer_items",
|
39
41
|
"offline_commerce",
|
@@ -50,17 +52,48 @@ module FacebookAds
|
|
50
52
|
PERMITTED_TASKS = [
|
51
53
|
"ADVERTISE",
|
52
54
|
"MANAGE",
|
55
|
+
"MANAGE_AR",
|
53
56
|
]
|
54
57
|
|
55
58
|
TASKS = [
|
56
59
|
"ADVERTISE",
|
57
60
|
"MANAGE",
|
61
|
+
"MANAGE_AR",
|
58
62
|
]
|
59
63
|
|
60
64
|
STANDARD = [
|
61
65
|
"google",
|
62
66
|
]
|
63
67
|
|
68
|
+
ITEM_SUB_TYPE = [
|
69
|
+
"APPLIANCES",
|
70
|
+
"BABY_FEEDING",
|
71
|
+
"BABY_TRANSPORT",
|
72
|
+
"BEAUTY",
|
73
|
+
"BEDDING",
|
74
|
+
"CAMERAS",
|
75
|
+
"CELL_PHONES_AND_SMART_WATCHES",
|
76
|
+
"CLEANING_SUPPLIES",
|
77
|
+
"CLOTHING",
|
78
|
+
"CLOTHING_ACCESSORIES",
|
79
|
+
"COMPUTERS_AND_TABLETS",
|
80
|
+
"DIAPERING_AND_POTTY_TRAINING",
|
81
|
+
"ELECTRONICS_ACCESSORIES",
|
82
|
+
"FURNITURE",
|
83
|
+
"HEALTH",
|
84
|
+
"HOME_GOODS",
|
85
|
+
"JEWELRY",
|
86
|
+
"NURSERY",
|
87
|
+
"PRINTERS_AND_SCANNERS",
|
88
|
+
"PROJECTORS",
|
89
|
+
"SHOES_AND_FOOTWEAR",
|
90
|
+
"SOFTWARE",
|
91
|
+
"TOYS",
|
92
|
+
"TVS_AND_MONITORS",
|
93
|
+
"VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
|
94
|
+
"WATCHES",
|
95
|
+
]
|
96
|
+
|
64
97
|
|
65
98
|
field :business, 'Business'
|
66
99
|
field :commerce_merchant_settings, 'CommerceMerchantSettings'
|
@@ -74,9 +107,11 @@ module FacebookAds
|
|
74
107
|
field :product_count, 'int'
|
75
108
|
field :store_catalog_settings, 'StoreCatalogSettings'
|
76
109
|
field :vertical, 'string'
|
110
|
+
field :catalog_segment_filter, 'object'
|
111
|
+
field :catalog_segment_product_set_id, 'string'
|
77
112
|
field :destination_catalog_settings, 'hash'
|
78
113
|
field :flight_catalog_settings, 'hash'
|
79
|
-
field :
|
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,17 +268,12 @@ 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
|
238
275
|
end
|
239
276
|
|
240
|
-
has_edge :onsite_commerce_merchant do |edge|
|
241
|
-
edge.post 'ProductCatalog' do |api|
|
242
|
-
api.has_param :onsite_commerce_merchant, 'object'
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
277
|
has_edge :pricing_variables_batch do |edge|
|
247
278
|
edge.get 'ProductCatalogPricingVariablesBatch' do |api|
|
248
279
|
api.has_param :handle, 'string'
|
@@ -267,6 +298,8 @@ module FacebookAds
|
|
267
298
|
api.has_param :encoding, { enum: -> { ProductFeed::ENCODING }}
|
268
299
|
api.has_param :feed_type, { enum: -> { ProductFeed::FEED_TYPE }}
|
269
300
|
api.has_param :file_name, 'string'
|
301
|
+
api.has_param :item_sub_type, { enum: -> { ProductFeed::ITEM_SUB_TYPE }}
|
302
|
+
api.has_param :migrated_from_feed_id, 'string'
|
270
303
|
api.has_param :name, 'string'
|
271
304
|
api.has_param :override_type, { enum: -> { ProductFeed::OVERRIDE_TYPE }}
|
272
305
|
api.has_param :override_value, 'string'
|
@@ -295,7 +328,9 @@ module FacebookAds
|
|
295
328
|
end
|
296
329
|
edge.post 'ProductSet' do |api|
|
297
330
|
api.has_param :filter, 'object'
|
331
|
+
api.has_param :metadata, 'hash'
|
298
332
|
api.has_param :name, 'string'
|
333
|
+
api.has_param :retailer_id, 'string'
|
299
334
|
end
|
300
335
|
end
|
301
336
|
|
@@ -322,6 +357,7 @@ module FacebookAds
|
|
322
357
|
api.has_param :availability, { enum: -> { ProductItem::AVAILABILITY }}
|
323
358
|
api.has_param :brand, 'string'
|
324
359
|
api.has_param :category, 'string'
|
360
|
+
api.has_param :category_specific_fields, 'hash'
|
325
361
|
api.has_param :checkout_url, 'string'
|
326
362
|
api.has_param :color, 'string'
|
327
363
|
api.has_param :commerce_tax_category, { enum: -> { ProductItem::COMMERCE_TAX_CATEGORY }}
|
@@ -335,6 +371,7 @@ module FacebookAds
|
|
335
371
|
api.has_param :custom_label_4, 'string'
|
336
372
|
api.has_param :description, 'string'
|
337
373
|
api.has_param :expiration_date, 'string'
|
374
|
+
api.has_param :fb_product_category, 'string'
|
338
375
|
api.has_param :gender, { enum: -> { ProductItem::GENDER }}
|
339
376
|
api.has_param :gtin, 'string'
|
340
377
|
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,7 +114,9 @@ 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'
|
119
|
+
field :migrated_from_feed_id, 'string'
|
88
120
|
field :name, 'string'
|
89
121
|
field :override_type, 'string'
|
90
122
|
field :product_count, 'int'
|
@@ -57,6 +57,7 @@ module FacebookAds
|
|
57
57
|
api.has_param :custom_label_4, 'string'
|
58
58
|
api.has_param :description, 'string'
|
59
59
|
api.has_param :expiration_date, 'string'
|
60
|
+
api.has_param :fb_product_category, 'string'
|
60
61
|
api.has_param :gender, { enum: -> { ProductItem::GENDER }}
|
61
62
|
api.has_param :gtin, 'string'
|
62
63
|
api.has_param :image_url, 'string'
|
@@ -297,6 +297,7 @@ module FacebookAds
|
|
297
297
|
field :brand, 'string'
|
298
298
|
field :capability_to_review_status, 'hash'
|
299
299
|
field :category, 'string'
|
300
|
+
field :category_specific_fields, 'CatalogSubVerticalList'
|
300
301
|
field :color, 'string'
|
301
302
|
field :commerce_insights, 'ProductItemCommerceInsights'
|
302
303
|
field :condition, { enum: -> { CONDITION }}
|
@@ -309,11 +310,13 @@ module FacebookAds
|
|
309
310
|
field :custom_label_4, 'string'
|
310
311
|
field :description, 'string'
|
311
312
|
field :expiration_date, 'string'
|
313
|
+
field :fb_product_category, 'string'
|
312
314
|
field :gender, { enum: -> { GENDER }}
|
313
315
|
field :gtin, 'string'
|
314
316
|
field :id, 'string'
|
315
317
|
field :image_cdn_urls, 'hash'
|
316
318
|
field :image_url, 'string'
|
319
|
+
field :images, { list: 'string' }
|
317
320
|
field :inventory, 'int'
|
318
321
|
field :manufacturer_part_number, 'string'
|
319
322
|
field :material, 'string'
|
@@ -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,11 +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 :
|
30
|
+
field :cover_image_url, 'string'
|
31
|
+
field :description, 'string'
|
32
|
+
field :external_url, 'string'
|
33
|
+
field :integrity_review_status, 'string'
|
33
34
|
has_no_id
|
34
35
|
has_no_get
|
35
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'
|
@@ -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,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
|