facebookbusiness 0.8.0.0 → 0.9.0.1

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 (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