Permalink
Browse files

Ads SDK v2.11 Release

  • Loading branch information...
1 parent c0704f5 commit 2665b711e8ac51e5d18303f9b8ae7fc1a4f1d15d Neil Chen committed Nov 8, 2017
Showing with 2,502 additions and 398 deletions.
  1. +1 −1 facebookads/__init__.py
  2. +1 −0 facebookads/adobjects/ad.py
  3. +105 −16 facebookads/adobjects/adaccount.py
  4. +66 −0 facebookads/adobjects/adaccountadruleshistory.py
  5. +1 −0 facebookads/adobjects/adaccountdeliveryestimate.py
  6. +5 −0 facebookads/adobjects/adaccounttargetingunified.py
  7. +1 −0 facebookads/adobjects/adactivity.py
  8. +114 −0 facebookads/adobjects/adassetfeedspec.py
  9. +55 −0 facebookads/adobjects/adassetfeedspecassetlabel.py
  10. +54 −0 facebookads/adobjects/adassetfeedspecbody.py
  11. +54 −0 facebookads/adobjects/adassetfeedspeccaption.py
  12. +54 −0 facebookads/adobjects/adassetfeedspecdescription.py
  13. +62 −0 facebookads/adobjects/adassetfeedspecgrouprule.py
  14. +58 −0 facebookads/adobjects/adassetfeedspecimage.py
  15. +58 −0 facebookads/adobjects/adassetfeedspeclinkurl.py
  16. +66 −0 facebookads/adobjects/adassetfeedspectargetrule.py
  17. +54 −0 facebookads/adobjects/adassetfeedspectitle.py
  18. +58 −0 facebookads/adobjects/adassetfeedspecvideo.py
  19. +1 −0 facebookads/adobjects/adcampaigndeliveryestimate.py
  20. +11 −0 facebookads/adobjects/adcreative.py
  21. +54 −0 facebookads/adobjects/adcreativecollectionthumbnailinfo.py
  22. +16 −0 facebookads/adobjects/adcreativelinkdata.py
  23. +4 −0 facebookads/adobjects/adcreativelinkdatacalltoaction.py
  24. +113 −0 facebookads/adobjects/adcreativelinkdataimageoverlayspec.py
  25. +2 −0 facebookads/adobjects/adcreativephotodata.py
  26. +2 −0 facebookads/adobjects/adcreativeplacedata.py
  27. +52 −0 facebookads/adobjects/adcreativepostclickconfiguration.py
  28. +6 −0 facebookads/adobjects/adcreativevideodata.py
  29. +206 −0 facebookads/adobjects/adrule.py
  30. +59 −0 facebookads/adobjects/adruleevaluationspec.py
  31. +59 −0 facebookads/adobjects/adruleexecutionoptions.py
  32. +63 −0 facebookads/adobjects/adruleexecutionspec.py
  33. +70 −0 facebookads/adobjects/adrulefilters.py
  34. +78 −0 facebookads/adobjects/adrulehistory.py
  35. +60 −0 facebookads/adobjects/adrulehistoryresult.py
  36. +56 −0 facebookads/adobjects/adrulehistoryresultaction.py
  37. +54 −0 facebookads/adobjects/adruleschedule.py
  38. +52 −0 facebookads/adobjects/adruleschedulespec.py
  39. +79 −0 facebookads/adobjects/adruletrigger.py
  40. +2 −0 facebookads/adobjects/adsactionstats.py
  41. +24 −6 facebookads/adobjects/adset.py
  42. +2 −2 facebookads/adobjects/adsinsights.py
  43. +29 −291 facebookads/adobjects/business.py
  44. +6 −0 facebookads/adobjects/campaign.py
  45. +0 −2 facebookads/adobjects/conversionactionquery.py
  46. +5 −0 facebookads/adobjects/customaudience.py
  47. +8 −0 facebookads/adobjects/customaudiencedatasource.py
  48. +3 −1 facebookads/adobjects/customconversion.py
  49. +4 −0 facebookads/adobjects/event.py
  50. +6 −2 facebookads/adobjects/leadgenform.py
  51. +38 −4 facebookads/adobjects/leadgenquestion.py
  52. +326 −0 facebookads/adobjects/offlineconversiondataset.py
  53. +73 −11 facebookads/adobjects/productcatalog.py
  54. +3 −0 facebookads/adobjects/productfeed.py
  55. +2 −0 facebookads/adobjects/productfeedupload.py
  56. +0 −28 facebookads/adobjects/productgroup.py
  57. +0 −28 facebookads/adobjects/productset.py
  58. +1 −0 facebookads/adobjects/reachestimate.py
  59. +1 −1 facebookads/adobjects/reachfrequencyprediction.py
  60. +2 −2 facebookads/adobjects/targeting.py
  61. +2 −2 facebookads/apiconfig.py
  62. +1 −1 setup.py
View
@@ -21,7 +21,7 @@
from facebookads.session import FacebookSession
from facebookads.api import FacebookAdsApi
-__version__ = '2.10.1'
+__version__ = '2.11.1'
__all__ = [
'session',
'objects',
@@ -505,6 +505,7 @@ def get_previews(self, fields=None, params=None, batch=None, pending=False):
from facebookads.adobjects.adpreview import AdPreview
param_types = {
'ad_format': 'ad_format_enum',
+ 'dynamic_creative_spec': 'Object',
'end_date': 'datetime',
'height': 'unsigned int',
'locale': 'string',
@@ -74,6 +74,7 @@ class Field(AbstractObject.Field):
id = 'id'
io_number = 'io_number'
is_attribution_spec_system_default = 'is_attribution_spec_system_default'
+ is_direct_deals_enabled = 'is_direct_deals_enabled'
is_notifications_enabled = 'is_notifications_enabled'
is_personal = 'is_personal'
is_prepay_account = 'is_prepay_account'
@@ -83,6 +84,7 @@ class Field(AbstractObject.Field):
min_campaign_group_spend_cap = 'min_campaign_group_spend_cap'
min_daily_budget = 'min_daily_budget'
name = 'name'
+ next_bill_date = 'next_bill_date'
offsite_pixels_tos_accepted = 'offsite_pixels_tos_accepted'
owner = 'owner'
partner = 'partner'
@@ -99,18 +101,6 @@ class Field(AbstractObject.Field):
tos_accepted = 'tos_accepted'
user_role = 'user_role'
- class AccessType:
- owner = 'OWNER'
- agency = 'AGENCY'
-
- class PermittedRoles:
- admin = 'ADMIN'
- general_user = 'GENERAL_USER'
- reports_only = 'REPORTS_ONLY'
- instagram_advertiser = 'INSTAGRAM_ADVERTISER'
- instagram_manager = 'INSTAGRAM_MANAGER'
- fb_employee_dso_advertiser = 'FB_EMPLOYEE_DSO_ADVERTISER'
-
# @deprecated get_endpoint function is deprecated
@classmethod
def get_endpoint(cls):
@@ -278,6 +268,33 @@ def create_ad_place_page_set(self, fields=None, params=None, batch=None, pending
self.assure_call()
return request.execute()
+ def get_ad_asset_feeds(self, fields=None, params=None, batch=None, pending=False):
+ param_types = {
+ }
+ enums = {
+ }
+ request = FacebookRequest(
+ node_id=self['id'],
+ method='GET',
+ endpoint='/adasset_feeds',
+ api=self._api,
+ param_checker=TypeChecker(param_types, enums),
+ target_class=AbstractCrudObject,
+ api_type='EDGE',
+ response_parser=ObjectParser(target_class=AbstractCrudObject, api=self._api),
+ )
+ request.add_params(params)
+ request.add_fields(fields)
+
+ if batch is not None:
+ request.add_to_batch(batch)
+ return request
+ elif pending:
+ return request
+ else:
+ self.assure_call()
+ return request.execute()
+
def get_ad_creatives(self, fields=None, params=None, batch=None, pending=False):
from facebookads.adobjects.adcreative import AdCreative
param_types = {
@@ -313,6 +330,7 @@ def create_ad_creative(self, fields=None, params=None, batch=None, pending=False
'adlabels': 'list<Object>',
'applink_treatment': 'applink_treatment_enum',
'body': 'string',
+ 'branded_content_sponsor_page_id': 'string',
'call_to_action': 'Object',
'dynamic_ad_voice': 'dynamic_ad_voice_enum',
'image_crops': 'map',
@@ -332,6 +350,7 @@ def create_ad_creative(self, fields=None, params=None, batch=None, pending=False
'object_url': 'string',
'platform_customizations': 'Object',
'product_set_id': 'string',
+ 'recommender_settings': 'map',
'template_url': 'string',
'template_url_spec': 'Object',
'thumbnail_url': 'string',
@@ -602,6 +621,70 @@ def get_ad_report_schedules(self, fields=None, params=None, batch=None, pending=
self.assure_call()
return request.execute()
+ def get_ad_rules_history(self, fields=None, params=None, batch=None, pending=False):
+ from facebookads.adobjects.adaccountadruleshistory import AdAccountAdRulesHistory
+ param_types = {
+ 'hide_no_changes': 'bool',
+ }
+ enums = {
+ }
+ request = FacebookRequest(
+ node_id=self['id'],
+ method='GET',
+ endpoint='/adrules_history',
+ api=self._api,
+ param_checker=TypeChecker(param_types, enums),
+ target_class=AdAccountAdRulesHistory,
+ api_type='EDGE',
+ response_parser=ObjectParser(target_class=AdAccountAdRulesHistory, api=self._api),
+ )
+ request.add_params(params)
+ request.add_fields(fields)
+
+ if batch is not None:
+ request.add_to_batch(batch)
+ return request
+ elif pending:
+ return request
+ else:
+ self.assure_call()
+ return request.execute()
+
+ def create_ad_rules_library(self, fields=None, params=None, batch=None, pending=False):
+ from facebookads.adobjects.adrule import AdRule
+ param_types = {
+ 'account_id': 'string',
+ 'evaluation_spec': 'Object',
+ 'execution_spec': 'Object',
+ 'name': 'string',
+ 'schedule_spec': 'Object',
+ 'status': 'status_enum',
+ }
+ enums = {
+ 'status_enum': AdRule.Status.__dict__.values(),
+ }
+ request = FacebookRequest(
+ node_id=self['id'],
+ method='POST',
+ endpoint='/adrules_library',
+ api=self._api,
+ param_checker=TypeChecker(param_types, enums),
+ target_class=AdRule,
+ api_type='EDGE',
+ response_parser=ObjectParser(target_class=AdRule, api=self._api),
+ )
+ request.add_params(params)
+ request.add_fields(fields)
+
+ if batch is not None:
+ request.add_to_batch(batch)
+ return request
+ elif pending:
+ return request
+ else:
+ self.assure_call()
+ return request.execute()
+
def get_ads(self, fields=None, params=None, batch=None, pending=False):
from facebookads.adobjects.ad import Ad
param_types = {
@@ -760,6 +843,7 @@ def create_ad_set(self, fields=None, params=None, batch=None, pending=False):
'creative_sequence': 'list<string>',
'daily_budget': 'unsigned int',
'daily_imps': 'unsigned int',
+ 'destination_type': 'destination_type_enum',
'end_time': 'datetime',
'execution_options': 'list<execution_options_enum>',
'frequency_control_specs': 'list<Object>',
@@ -781,6 +865,7 @@ def create_ad_set(self, fields=None, params=None, batch=None, pending=False):
}
enums = {
'billing_event_enum': AdSet.BillingEvent.__dict__.values(),
+ 'destination_type_enum': AdSet.DestinationType.__dict__.values(),
'execution_options_enum': AdSet.ExecutionOptions.__dict__.values(),
'optimization_goal_enum': AdSet.OptimizationGoal.__dict__.values(),
'status_enum': AdSet.Status.__dict__.values(),
@@ -981,6 +1066,7 @@ def create_ad_video(self, fields=None, params=None, batch=None, pending=False):
'original_projection_type_enum': [
'equirectangular',
'cubemap',
+ 'equiangular_cubemap',
],
'unpublished_content_type_enum': [
'SCHEDULED',
@@ -1311,6 +1397,7 @@ def get_custom_audiences(self, fields=None, params=None, batch=None, pending=Fal
def create_custom_audience(self, fields=None, params=None, batch=None, pending=False):
from facebookads.adobjects.customaudience import CustomAudience
param_types = {
+ 'allowed_domains': 'list<string>',
'claim_objective': 'claim_objective_enum',
'content_type': 'content_type_enum',
'dataset_id': 'string',
@@ -1457,6 +1544,7 @@ def get_generate_previews(self, fields=None, params=None, batch=None, pending=Fa
param_types = {
'ad_format': 'ad_format_enum',
'creative': 'AdCreative',
+ 'dynamic_creative_spec': 'Object',
'end_date': 'datetime',
'height': 'unsigned int',
'locale': 'string',
@@ -1694,6 +1782,7 @@ def get_minimum_budgets(self, fields=None, params=None, batch=None, pending=Fals
return request.execute()
def get_offline_conversion_data_sets(self, fields=None, params=None, batch=None, pending=False):
+ from facebookads.adobjects.offlineconversiondataset import OfflineConversionDataSet
param_types = {
}
enums = {
@@ -1704,9 +1793,9 @@ def get_offline_conversion_data_sets(self, fields=None, params=None, batch=None,
endpoint='/offline_conversion_data_sets',
api=self._api,
param_checker=TypeChecker(param_types, enums),
- target_class=AbstractCrudObject,
+ target_class=OfflineConversionDataSet,
api_type='EDGE',
- response_parser=ObjectParser(target_class=AbstractCrudObject, api=self._api),
+ response_parser=ObjectParser(target_class=OfflineConversionDataSet, api=self._api),
)
request.add_params(params)
request.add_fields(fields)
@@ -2416,6 +2505,7 @@ def get_users(self, fields=None, params=None, batch=None, pending=False):
'id': 'string',
'io_number': 'string',
'is_attribution_spec_system_default': 'bool',
+ 'is_direct_deals_enabled': 'bool',
'is_notifications_enabled': 'bool',
'is_personal': 'unsigned int',
'is_prepay_account': 'bool',
@@ -2425,6 +2515,7 @@ def get_users(self, fields=None, params=None, batch=None, pending=False):
'min_campaign_group_spend_cap': 'string',
'min_daily_budget': 'unsigned int',
'name': 'string',
+ 'next_bill_date': 'datetime',
'offsite_pixels_tos_accepted': 'bool',
'owner': 'string',
'partner': 'string',
@@ -2445,6 +2536,4 @@ def get_users(self, fields=None, params=None, batch=None, pending=False):
@classmethod
def _get_field_enum_info(cls):
field_enum_info = {}
- field_enum_info['AccessType'] = AdAccount.AccessType.__dict__.values()
- field_enum_info['PermittedRoles'] = AdAccount.PermittedRoles.__dict__.values()
return field_enum_info
@@ -0,0 +1,66 @@
+# Copyright 2014 Facebook, Inc.
+
+# You are hereby granted a non-exclusive, worldwide, royalty-free license to
+# use, copy, modify, and distribute this software in source code or binary
+# form for use in connection with the web services and APIs provided by
+# Facebook.
+
+# As with any software that integrates with the Facebook platform, your use
+# of this software is subject to the Facebook Developer Principles and
+# Policies [http://developers.facebook.com/policy/]. This copyright notice
+# shall be included in all copies or substantial portions of the software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+from facebookads.adobjects.abstractobject import AbstractObject
+
+"""
+This class is auto-generated.
+
+For any issues or feature requests related to this class, please let us know on
+github and we'll fix in our codegen framework. We'll not be able to accept
+pull request for this class.
+"""
+
+class AdAccountAdRulesHistory(
+ AbstractObject,
+):
+
+ def __init__(self, api=None):
+ super(AdAccountAdRulesHistory, self).__init__()
+ self._isAdAccountAdRulesHistory = True
+ self._api = api
+
+ class Field(AbstractObject.Field):
+ evaluation_spec = 'evaluation_spec'
+ exception_code = 'exception_code'
+ exception_message = 'exception_message'
+ execution_spec = 'execution_spec'
+ is_manual = 'is_manual'
+ results = 'results'
+ rule_id = 'rule_id'
+ schedule_spec = 'schedule_spec'
+ timestamp = 'timestamp'
+
+ _field_types = {
+ 'evaluation_spec': 'AdRuleEvaluationSpec',
+ 'exception_code': 'int',
+ 'exception_message': 'string',
+ 'execution_spec': 'AdRuleExecutionSpec',
+ 'is_manual': 'bool',
+ 'results': 'list<AdRuleHistoryResult>',
+ 'rule_id': 'int',
+ 'schedule_spec': 'AdRuleScheduleSpec',
+ 'timestamp': 'datetime',
+ }
+
+ @classmethod
+ def _get_field_enum_info(cls):
+ field_enum_info = {}
+ return field_enum_info
@@ -48,6 +48,7 @@ class OptimizationGoal:
none = 'NONE'
app_installs = 'APP_INSTALLS'
brand_awareness = 'BRAND_AWARENESS'
+ ad_recall_lift = 'AD_RECALL_LIFT'
clicks = 'CLICKS'
engaged_users = 'ENGAGED_USERS'
event_responses = 'EVENT_RESPONSES'
@@ -146,6 +146,11 @@ class LimitType:
format = 'format'
trending = 'trending'
gatekeepers = 'gatekeepers'
+ follow_profiles = 'follow_profiles'
+ follow_profiles_negative = 'follow_profiles_negative'
+ location_categories = 'location_categories'
+ user_page_threads = 'user_page_threads'
+ user_page_threads_excluded = 'user_page_threads_excluded'
_field_types = {
'audience_size': 'unsigned int',
@@ -74,6 +74,7 @@ class EventType:
update_campaign_name = 'update_campaign_name'
update_campaign_run_status = 'update_campaign_run_status'
update_campaign_group_spend_cap = 'update_campaign_group_spend_cap'
+ campaign_ended = 'campaign_ended'
create_campaign = 'create_campaign'
create_campaign_legacy = 'create_campaign_legacy'
update_campaign_budget = 'update_campaign_budget'
Oops, something went wrong.

0 comments on commit 2665b71

Please sign in to comment.