facebookbusiness 0.8.0.0 → 0.9.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facebook_ads/ad_objects/ad_account.rb +22 -3
  3. data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +24 -0
  4. data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +22 -5
  5. data/lib/facebook_ads/ad_objects/ad_activity.rb +0 -1
  6. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +5 -0
  7. data/lib/facebook_ads/ad_objects/ad_async_request.rb +2 -0
  8. data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +4 -0
  9. data/lib/facebook_ads/ad_objects/ad_creative.rb +6 -0
  10. data/lib/facebook_ads/ad_objects/ad_creative_interactive_components_spec.rb +1 -0
  11. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +4 -0
  12. data/lib/facebook_ads/ad_objects/ad_network_analytics_sync_query_result.rb +1 -0
  13. data/lib/facebook_ads/ad_objects/ad_preview.rb +1 -0
  14. data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +4 -0
  15. data/lib/facebook_ads/ad_objects/ad_study.rb +1 -1
  16. data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -4
  17. data/lib/facebook_ads/ad_objects/ad_video.rb +11 -0
  18. data/lib/facebook_ads/ad_objects/adgroup_activity.rb +2 -0
  19. data/lib/facebook_ads/ad_objects/adoptable_pet.rb +8 -0
  20. data/lib/facebook_ads/ad_objects/ads_insights.rb +1 -0
  21. data/lib/facebook_ads/ad_objects/ads_pixel.rb +4 -0
  22. data/lib/facebook_ads/ad_objects/application.rb +23 -0
  23. data/lib/facebook_ads/ad_objects/atlas_campaign.rb +1 -1
  24. data/lib/facebook_ads/ad_objects/automotive_model.rb +1 -0
  25. data/lib/facebook_ads/ad_objects/business.rb +62 -11
  26. data/lib/facebook_ads/ad_objects/business_asset_group.rb +1 -0
  27. data/lib/facebook_ads/ad_objects/business_role_request.rb +4 -0
  28. data/lib/facebook_ads/ad_objects/business_unit.rb +1 -2
  29. data/lib/facebook_ads/ad_objects/business_user.rb +4 -0
  30. data/lib/facebook_ads/ad_objects/campaign.rb +8 -0
  31. data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
  32. data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +16 -19
  33. data/lib/facebook_ads/ad_objects/commerce_merchant_settings_setup_status.rb +1 -0
  34. data/lib/facebook_ads/ad_objects/commerce_order.rb +6 -0
  35. data/lib/facebook_ads/ad_objects/{work_meeting_link.rb → connections_targeting.rb} +3 -2
  36. data/lib/facebook_ads/ad_objects/cpas_advertiser_partnership_recommendation.rb +43 -0
  37. data/lib/facebook_ads/ad_objects/cpas_collaboration_request.rb +50 -0
  38. data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +1 -0
  39. data/lib/facebook_ads/ad_objects/da_check.rb +7 -0
  40. data/lib/facebook_ads/ad_objects/destination.rb +1 -0
  41. data/lib/facebook_ads/ad_objects/event.rb +1 -0
  42. data/lib/facebook_ads/ad_objects/extended_credit.rb +7 -1
  43. data/lib/facebook_ads/ad_objects/flight.rb +1 -0
  44. data/lib/facebook_ads/ad_objects/group.rb +8 -0
  45. data/lib/facebook_ads/ad_objects/home_listing.rb +1 -0
  46. data/lib/facebook_ads/ad_objects/hotel.rb +1 -0
  47. data/lib/facebook_ads/ad_objects/hotel_room.rb +1 -0
  48. data/lib/facebook_ads/ad_objects/link.rb +6 -0
  49. data/lib/facebook_ads/ad_objects/live_video.rb +12 -12
  50. data/lib/facebook_ads/ad_objects/page.rb +40 -8
  51. data/lib/facebook_ads/ad_objects/page_post.rb +2 -0
  52. data/lib/facebook_ads/ad_objects/photo.rb +6 -0
  53. data/lib/facebook_ads/ad_objects/playable_content.rb +1 -0
  54. data/lib/facebook_ads/ad_objects/post.rb +49 -2
  55. data/lib/facebook_ads/ad_objects/product_catalog.rb +41 -7
  56. data/lib/facebook_ads/ad_objects/product_feed.rb +31 -0
  57. data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
  58. data/lib/facebook_ads/ad_objects/product_item.rb +4 -0
  59. data/lib/facebook_ads/ad_objects/product_set.rb +1 -0
  60. data/lib/facebook_ads/ad_objects/product_set_metadata.rb +1 -0
  61. data/lib/facebook_ads/ad_objects/publisher_block_list.rb +6 -0
  62. data/lib/facebook_ads/ad_objects/referral.rb +2 -0
  63. data/lib/facebook_ads/ad_objects/security_settings.rb +0 -1
  64. data/lib/facebook_ads/ad_objects/server_side/action_source.rb +48 -0
  65. data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
  66. data/lib/facebook_ads/ad_objects/server_side/content.rb +23 -4
  67. data/lib/facebook_ads/ad_objects/server_side/event.rb +32 -6
  68. data/lib/facebook_ads/ad_objects/server_side/event_request.rb +61 -14
  69. data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +43 -0
  70. data/lib/facebook_ads/ad_objects/server_side/http_method.rb +28 -0
  71. data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
  72. data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
  73. data/lib/facebook_ads/ad_objects/server_side/user_data.rb +20 -1
  74. data/lib/facebook_ads/ad_objects/server_side/util.rb +13 -0
  75. data/lib/facebook_ads/ad_objects/system_user.rb +0 -16
  76. data/lib/facebook_ads/ad_objects/targeting.rb +3 -3
  77. data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +0 -1
  78. data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
  79. data/lib/facebook_ads/ad_objects/user.rb +28 -25
  80. data/lib/facebook_ads/ad_objects/vehicle.rb +2 -0
  81. data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
  82. data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +25 -0
  83. data/lib/facebook_ads/errors.rb +1 -1
  84. data/lib/facebook_ads/session.rb +1 -1
  85. data/lib/facebook_ads/version.rb +2 -2
  86. metadata +32 -8
@@ -91,6 +91,9 @@ module FacebookAds
91
91
  # The subscription ID for the user in this transaction. This is similar to the order ID for an individual product.
92
92
  attr_accessor :subscription_id
93
93
 
94
+ # The lead ID for the user in this transaction. This ID is associated with a lead generated by Facebook's Lead Ads.
95
+ attr_accessor :lead_id
96
+
94
97
  # The first 5 letters of the first name.
95
98
  attr_accessor :f5first
96
99
 
@@ -126,6 +129,7 @@ module FacebookAds
126
129
  # @param [String] fbc
127
130
  # @param [String] fbp
128
131
  # @param [String] subscription_id
132
+ # @param [String] lead_id
129
133
  # @param [String] f5first
130
134
  # @param [String] f5last
131
135
  # @param [String] fi
@@ -135,7 +139,7 @@ module FacebookAds
135
139
  def initialize(email: nil, phone: nil, gender: nil, date_of_birth: nil,
136
140
  last_name: nil, first_name: nil, city: nil, state: nil,
137
141
  country_code: nil, zip_code: nil, external_id: nil, client_ip_address: nil,
138
- client_user_agent: nil, fbc: nil, fbp: nil, subscription_id: nil,
142
+ client_user_agent: nil, fbc: nil, fbp: nil, subscription_id: nil, lead_id: nil,
139
143
  f5first: nil, f5last: nil, fi: nil, dobd: nil, dobm: nil, doby: nil)
140
144
  unless email.nil?
141
145
  self.email = email
@@ -185,6 +189,9 @@ module FacebookAds
185
189
  unless subscription_id.nil?
186
190
  self.subscription_id = subscription_id
187
191
  end
192
+ unless lead_id.nil?
193
+ self.lead_id = lead_id
194
+ end
188
195
  unless f5first.nil?
189
196
  self.f5first = f5first
190
197
  end
@@ -273,6 +280,10 @@ module FacebookAds
273
280
  self.fbp = attributes[:'fbp']
274
281
  end
275
282
 
283
+ if attributes.has_key?(:'lead_id')
284
+ self.lead_id = attributes[:'lead_id']
285
+ end
286
+
276
287
  if attributes.has_key?(:'f5first')
277
288
  self.f5first = attributes[:'f5first']
278
289
  end
@@ -318,6 +329,7 @@ module FacebookAds
318
329
  fbc == o.fbc &&
319
330
  fbp == o.fbp &&
320
331
  subscription_id == o.subscription_id &&
332
+ lead_id == o.lead_id &&
321
333
  f5first == o.f5first &&
322
334
  f5last == o.f5last &&
323
335
  fi == o.fi &&
@@ -351,6 +363,7 @@ module FacebookAds
351
363
  fbc,
352
364
  fbp,
353
365
  subscription_id,
366
+ lead_id,
354
367
  f5first,
355
368
  f5last,
356
369
  fi,
@@ -413,6 +426,9 @@ module FacebookAds
413
426
  unless subscription_id.nil?
414
427
  hash['subscription_id'] = subscription_id
415
428
  end
429
+ unless lead_id.nil?
430
+ hash['lead_id'] = lead_id
431
+ end
416
432
  unless f5first.nil?
417
433
  hash['f5first'] = f5first
418
434
  end
@@ -486,6 +502,9 @@ module FacebookAds
486
502
  unless subscription_id.nil?
487
503
  hash['subscription_id'] = subscription_id
488
504
  end
505
+ unless lead_id.nil?
506
+ hash['lead_id'] = lead_id
507
+ end
489
508
  unless f5first.nil?
490
509
  hash['f5first'] = FacebookAds::ServerSide::Util.normalize(f5first, 'f5first')
491
510
  end
@@ -52,6 +52,8 @@ module FacebookAds
52
52
  normalized_input = input;
53
53
 
54
54
  case field_type
55
+ when 'action_source'
56
+ return normalize_action_source input
55
57
  when 'country'
56
58
  normalized_input = normalize_country input
57
59
  when 'ct'
@@ -290,6 +292,17 @@ module FacebookAds
290
292
  delivery_category;
291
293
  end
292
294
 
295
+ # Normalizes the input action_source and returns valid value (or throw exception if invalid).
296
+ def self.normalize_action_source(action_source)
297
+ unless FacebookAds::ServerSide::ActionSource.include?(action_source)
298
+ values = FacebookAds::ServerSide::ActionSource.to_a.join(',')
299
+ raise ArgumentError.new(
300
+ "Invalid action_source passed: #{action_source}. Please use one of the defined values: #{values}"
301
+ )
302
+ end
303
+
304
+ action_source
305
+ end
293
306
  end
294
307
  end
295
308
  end
@@ -26,20 +26,6 @@ module FacebookAds
26
26
  # pull request for this class.
27
27
 
28
28
  class SystemUser < AdObject
29
- ROLE = [
30
- "ADMIN",
31
- "ADS_RIGHTS_REVIEWER",
32
- "DEVELOPER",
33
- "EMPLOYEE",
34
- "FINANCE_ANALYST",
35
- "FINANCE_EDITOR",
36
- "PARTNER_CENTER_ADMIN",
37
- "PARTNER_CENTER_ANALYST",
38
- "PARTNER_CENTER_EDUCATION",
39
- "PARTNER_CENTER_MARKETING",
40
- "PARTNER_CENTER_OPERATIONS",
41
- ]
42
-
43
29
 
44
30
  field :created_by, 'User'
45
31
  field :created_time, 'datetime'
@@ -47,8 +33,6 @@ module FacebookAds
47
33
  field :id, 'string'
48
34
  field :ip_permission, 'string'
49
35
  field :name, 'string'
50
- field :role, { enum: -> { ROLE }}
51
- field :system_user_id, 'int'
52
36
  has_no_post
53
37
  has_no_delete
54
38
 
@@ -50,7 +50,7 @@ module FacebookAds
50
50
  field :catalog_based_targeting, 'CatalogBasedTargeting'
51
51
  field :cities, { list: 'IdName' }
52
52
  field :college_years, { list: 'int' }
53
- field :connections, { list: 'IdName' }
53
+ field :connections, { list: 'ConnectionsTargeting' }
54
54
  field :contextual_targeting_categories, { list: 'IdName' }
55
55
  field :countries, { list: 'string' }
56
56
  field :country, { list: 'string' }
@@ -72,7 +72,7 @@ module FacebookAds
72
72
  field :ethnic_affinity, { list: 'IdName' }
73
73
  field :exclude_reached_since, { list: 'string' }
74
74
  field :excluded_brand_safety_content_types, { list: 'string' }
75
- field :excluded_connections, { list: 'IdName' }
75
+ field :excluded_connections, { list: 'ConnectionsTargeting' }
76
76
  field :excluded_custom_audiences, { list: 'RawCustomAudience' }
77
77
  field :excluded_dynamic_audience_ids, { list: 'string' }
78
78
  field :excluded_engagement_specs, { list: 'TargetingDynamicRule' }
@@ -87,7 +87,7 @@ module FacebookAds
87
87
  field :family_statuses, { list: 'IdName' }
88
88
  field :fb_deal_id, 'string'
89
89
  field :flexible_spec, { list: 'FlexibleTargeting' }
90
- field :friends_of_connections, { list: 'IdName' }
90
+ field :friends_of_connections, { list: 'ConnectionsTargeting' }
91
91
  field :genders, { list: 'int' }
92
92
  field :generation, { list: 'IdName' }
93
93
  field :geo_locations, 'TargetingGeoLocation'
@@ -32,7 +32,6 @@ module FacebookAds
32
32
  field :partner, 'Business'
33
33
  field :product, 'string'
34
34
  field :schema, { list: 'object' }
35
- has_no_post
36
35
  has_no_delete
37
36
 
38
37
  end
@@ -32,6 +32,7 @@ module FacebookAds
32
32
  field :id, 'string'
33
33
  field :is_subscribed, 'bool'
34
34
  field :link, 'string'
35
+ field :linked_group, 'Group'
35
36
  field :message_count, 'int'
36
37
  field :name, 'string'
37
38
  field :participants, 'object'
@@ -54,7 +54,6 @@ module FacebookAds
54
54
  field :age_range, 'AgeRange'
55
55
  field :auth_method, 'string'
56
56
  field :birthday, 'string'
57
- field :can_review_measurement_request, 'bool'
58
57
  field :cover, 'UserCoverPhoto'
59
58
  field :currency, 'Currency'
60
59
  field :devices, { list: 'UserDevice' }
@@ -70,9 +69,7 @@ module FacebookAds
70
69
  field :install_type, 'string'
71
70
  field :installed, 'bool'
72
71
  field :interested_in, { list: 'string' }
73
- field :is_famedeeplinkinguser, 'bool'
74
72
  field :is_guest_user, 'bool'
75
- field :is_shared_login, 'bool'
76
73
  field :is_verified, 'bool'
77
74
  field :languages, { list: 'Experience' }
78
75
  field :last_name, 'string'
@@ -82,6 +79,7 @@ module FacebookAds
82
79
  field :locale, 'string'
83
80
  field :location, 'Page'
84
81
  field :meeting_for, { list: 'string' }
82
+ field :messenger_join_notifications_enabled, 'bool'
85
83
  field :middle_name, 'string'
86
84
  field :name, 'string'
87
85
  field :name_format, 'string'
@@ -89,33 +87,28 @@ module FacebookAds
89
87
  field :political, 'string'
90
88
  field :profile_pic, 'string'
91
89
  field :public_key, 'string'
90
+ field :published_timeline, 'bool'
92
91
  field :quotes, 'string'
93
92
  field :relationship_status, 'string'
94
93
  field :religion, 'string'
95
- field :security_settings, 'SecuritySettings'
96
94
  field :shared_login_upgrade_required_by, 'datetime'
97
95
  field :short_name, 'string'
98
96
  field :significant_other, 'User'
99
97
  field :sports, { list: 'Experience' }
100
98
  field :supports_donate_button_in_live_video, 'bool'
101
- field :test_group, 'int'
102
99
  field :third_party_id, 'string'
103
100
  field :timezone, 'double'
104
101
  field :token_for_business, 'string'
105
102
  field :updated_time, 'datetime'
103
+ field :user_storage_key, 'string'
104
+ field :username, 'string'
106
105
  field :verified, 'bool'
107
106
  field :video_upload_limits, 'VideoUploadLimits'
108
- field :viewer_can_send_gift, 'bool'
109
107
  field :website, 'string'
110
108
  field :work, { list: 'object' }
111
109
 
112
110
  has_edge :access_tokens do |edge|
113
111
  edge.delete
114
- edge.post 'User' do |api|
115
- api.has_param :business_app, 'int'
116
- api.has_param :page_id, 'string'
117
- api.has_param :scope, { list: 'Permission' }
118
- end
119
112
  end
120
113
 
121
114
  has_edge :accounts do |edge|
@@ -211,6 +204,7 @@ module FacebookAds
211
204
  end
212
205
  edge.get 'Business'
213
206
  edge.post 'Business' do |api|
207
+ api.has_param :child_business_external_id, 'string'
214
208
  api.has_param :email, 'string'
215
209
  api.has_param :name, 'string'
216
210
  api.has_param :primary_page, 'string'
@@ -243,7 +237,15 @@ module FacebookAds
243
237
  end
244
238
 
245
239
  has_edge :feed do |edge|
246
- edge.post do |api|
240
+ edge.get 'Post' do |api|
241
+ api.has_param :include_hidden, 'bool'
242
+ api.has_param :q, 'string'
243
+ api.has_param :show_expired, 'bool'
244
+ api.has_param :since, 'datetime'
245
+ api.has_param :until, 'datetime'
246
+ api.has_param :with, 'string'
247
+ end
248
+ edge.post 'Post' do |api|
247
249
  api.has_param :actions, 'object'
248
250
  api.has_param :adaptive_type, 'string'
249
251
  api.has_param :album_id, 'string'
@@ -257,10 +259,10 @@ module FacebookAds
257
259
  api.has_param :attached_media, { list: 'object' }
258
260
  api.has_param :audience_exp, 'bool'
259
261
  api.has_param :backdated_time, 'datetime'
260
- api.has_param :backdated_time_granularity, { enum: %w{day hour min month none year }}
262
+ api.has_param :backdated_time_granularity, { enum: -> { Post::BACKDATED_TIME_GRANULARITY }}
261
263
  api.has_param :call_to_action, 'object'
262
264
  api.has_param :caption, 'string'
263
- api.has_param :checkin_entry_point, { enum: %w{BRANDING_CHECKIN BRANDING_OTHER BRANDING_PHOTO BRANDING_STATUS }}
265
+ api.has_param :checkin_entry_point, { enum: -> { Post::CHECKIN_ENTRY_POINT }}
264
266
  api.has_param :child_attachments, { list: 'object' }
265
267
  api.has_param :client_mutation_id, 'string'
266
268
  api.has_param :composer_entry_picker, 'string'
@@ -280,7 +282,7 @@ module FacebookAds
280
282
  api.has_param :expanded_height, 'int'
281
283
  api.has_param :expanded_width, 'int'
282
284
  api.has_param :feed_targeting, 'object'
283
- api.has_param :formatting, { enum: %w{MARKDOWN PLAINTEXT }}
285
+ api.has_param :formatting, { enum: -> { Post::FORMATTING }}
284
286
  api.has_param :fun_fact_prompt_id, 'int'
285
287
  api.has_param :fun_fact_toastee_id, 'int'
286
288
  api.has_param :has_nickname, 'bool'
@@ -317,11 +319,11 @@ module FacebookAds
317
319
  api.has_param :page_recommendation, 'string'
318
320
  api.has_param :picture, 'string'
319
321
  api.has_param :place, 'object'
320
- api.has_param :place_attachment_setting, { enum: %w{1 2 }}
322
+ api.has_param :place_attachment_setting, { enum: -> { Post::PLACE_ATTACHMENT_SETTING }}
321
323
  api.has_param :place_list, 'string'
322
324
  api.has_param :place_list_data, { list: 'string' }
323
- api.has_param :post_surfaces_blacklist, { list: { enum: %w{1 2 3 4 5 }} }
324
- api.has_param :posting_to_redspace, { enum: %w{disabled enabled }}
325
+ api.has_param :post_surfaces_blacklist, { list: { enum: -> { Post::POST_SURFACES_BLACKLIST }} }
326
+ api.has_param :posting_to_redspace, { enum: -> { Post::POSTING_TO_REDSPACE }}
325
327
  api.has_param :privacy, 'string'
326
328
  api.has_param :prompt_id, 'string'
327
329
  api.has_param :prompt_tracking_string, 'string'
@@ -341,7 +343,7 @@ module FacebookAds
341
343
  api.has_param :sponsor_relationship, 'int'
342
344
  api.has_param :suggested_place_id, 'object'
343
345
  api.has_param :tags, { list: 'int' }
344
- api.has_param :target_surface, { enum: %w{STORY TIMELINE }}
346
+ api.has_param :target_surface, { enum: -> { Post::TARGET_SURFACE }}
345
347
  api.has_param :targeting, 'object'
346
348
  api.has_param :text_format_metadata, 'string'
347
349
  api.has_param :text_format_preset_id, 'string'
@@ -351,7 +353,7 @@ module FacebookAds
351
353
  api.has_param :time_since_original_post, 'int'
352
354
  api.has_param :title, 'string'
353
355
  api.has_param :tracking_info, 'string'
354
- api.has_param :unpublished_content_type, { enum: %w{ADS_POST DRAFT INLINE_CREATED PUBLISHED REVIEWABLE_BRANDED_CONTENT SCHEDULED SCHEDULED_RECURRING }}
356
+ api.has_param :unpublished_content_type, { enum: -> { Post::UNPUBLISHED_CONTENT_TYPE }}
355
357
  api.has_param :user_selected_tags, 'bool'
356
358
  api.has_param :video_start_time_ms, 'int'
357
359
  api.has_param :viewer_coordinates, 'object'
@@ -468,6 +470,7 @@ module FacebookAds
468
470
  edge.post 'LiveVideo' do |api|
469
471
  api.has_param :content_tags, { list: 'string' }
470
472
  api.has_param :description, 'string'
473
+ api.has_param :enable_backup_ingest, 'bool'
471
474
  api.has_param :encoding_settings, 'string'
472
475
  api.has_param :fisheye_video_cropped, 'bool'
473
476
  api.has_param :front_z_rotation, 'double'
@@ -489,11 +492,6 @@ module FacebookAds
489
492
  end
490
493
  end
491
494
 
492
- has_edge :meeting_link do |edge|
493
- edge.get 'WorkMeetingLink'
494
- edge.post 'WorkMeetingLink'
495
- end
496
-
497
495
  has_edge :music do |edge|
498
496
  edge.get 'Page' do |api|
499
497
  api.has_param :target_id, 'string'
@@ -513,6 +511,10 @@ module FacebookAds
513
511
  end
514
512
  end
515
513
 
514
+ has_edge :owned_product_catalogs do |edge|
515
+ edge.get 'ProductCatalog'
516
+ end
517
+
516
518
  has_edge :permissions do |edge|
517
519
  edge.delete do |api|
518
520
  api.has_param :permission, 'string'
@@ -673,6 +675,7 @@ module FacebookAds
673
675
  api.has_param :sales_promo_id, 'int'
674
676
  api.has_param :slideshow_spec, 'hash'
675
677
  api.has_param :source, 'string'
678
+ api.has_param :source_instagram_media_id, 'string'
676
679
  api.has_param :spherical, 'bool'
677
680
  api.has_param :sponsor_id, 'string'
678
681
  api.has_param :start_offset, 'int'
@@ -29,6 +29,7 @@ module FacebookAds
29
29
  AVAILABILITY = [
30
30
  "AVAILABLE",
31
31
  "NOT_AVAILABLE",
32
+ "PENDING",
32
33
  ]
33
34
 
34
35
  BODY_STYLE = [
@@ -108,6 +109,7 @@ module FacebookAds
108
109
  field :applinks, 'CatalogItemAppLinks'
109
110
  field :availability, 'string'
110
111
  field :body_style, 'string'
112
+ field :category_specific_fields, 'CatalogSubVerticalList'
111
113
  field :condition, 'string'
112
114
  field :currency, 'string'
113
115
  field :custom_label_0, 'string'
@@ -35,6 +35,7 @@ module FacebookAds
35
35
  field :body_style, 'string'
36
36
  field :cashback_currency, 'string'
37
37
  field :cashback_price, 'string'
38
+ field :category_specific_fields, 'CatalogSubVerticalList'
38
39
  field :currency, 'string'
39
40
  field :dma_codes, { list: 'string' }
40
41
  field :downpayment_currency, 'string'
@@ -26,6 +26,14 @@ module FacebookAds
26
26
  # pull request for this class.
27
27
 
28
28
  class WhatsAppBusinessAccount < AdObject
29
+ TASKS = [
30
+ "DEVELOP",
31
+ "MANAGE",
32
+ "MANAGE_PHONE",
33
+ "MANAGE_TEMPLATES",
34
+ "VIEW_COST",
35
+ ]
36
+
29
37
  CATEGORY = [
30
38
  "ACCOUNT_UPDATE",
31
39
  "ALERT_UPDATE",
@@ -47,12 +55,27 @@ module FacebookAds
47
55
  field :message_template_namespace, 'string'
48
56
  field :name, 'string'
49
57
  field :on_behalf_of_business_info, 'object'
58
+ field :owner_business_info, 'object'
59
+ field :primary_funding_id, 'string'
50
60
  field :purchase_order_number, 'string'
51
61
  field :status, 'string'
52
62
  field :timezone_id, 'string'
53
63
  has_no_post
54
64
  has_no_delete
55
65
 
66
+ has_edge :assigned_users do |edge|
67
+ edge.delete do |api|
68
+ api.has_param :user, 'int'
69
+ end
70
+ edge.get 'AssignedUser' do |api|
71
+ api.has_param :business, 'string'
72
+ end
73
+ edge.post 'WhatsAppBusinessAccount' do |api|
74
+ api.has_param :tasks, { list: { enum: -> { WhatsAppBusinessAccount::TASKS }} }
75
+ api.has_param :user, 'int'
76
+ end
77
+ end
78
+
56
79
  has_edge :message_templates do |edge|
57
80
  edge.delete do |api|
58
81
  api.has_param :name, 'string'
@@ -78,6 +101,8 @@ module FacebookAds
78
101
  end
79
102
 
80
103
  has_edge :subscribed_apps do |edge|
104
+ edge.delete
105
+ edge.get
81
106
  edge.post 'WhatsAppBusinessAccount'
82
107
  end
83
108
 
@@ -26,7 +26,7 @@ module FacebookAds
26
26
  ERROR_ATTRS = [
27
27
  :headers, :fb_message, :type, :code,
28
28
  :error_subcode, :is_transient, :error_user_title,
29
- :error_user_msg, :fbtrace_id,
29
+ :error_user_msg, :error_data, :fbtrace_id,
30
30
  ]
31
31
 
32
32
  attr_accessor *ERROR_ATTRS
@@ -39,7 +39,7 @@ module FacebookAds
39
39
  case method
40
40
  when :get, :post, :delete
41
41
  api_conn.send(method, path.gsub(/^\//,''), params) do |req|
42
- req.headers[:user_agent] = "fbbizsdk-ruby-v#{API_VERSION}".freeze
42
+ req.headers[:user_agent] = "fbbizsdk-ruby-v#{VERSION}".freeze
43
43
  req.params[:access_token] = access_token if access_token
44
44
  req.params[:appsecret_proof] = appsecret_proof if app_secret
45
45
  end