From b29bc5864913e62e2f3b7a751ae81073d5ea3108 Mon Sep 17 00:00:00 2001 From: Jing Ping Date: Wed, 29 May 2019 10:40:01 -0700 Subject: [PATCH] Auto-generated python SDK code update Summary: ignore-conflict-markers Reviewed By: jingping2015 Differential Revision: D15532074 fbshipit-source-id: b2a4fb5d --- facebook_business/__init__.py | 2 +- facebook_business/adobjects/adaccount.py | 207 ++++++------- .../adobjects/adaccounttargetingunified.py | 7 + .../adnetworkanalyticssyncqueryresult.py | 1 + facebook_business/adobjects/adset.py | 46 +-- facebook_business/adobjects/adstudy.py | 12 +- facebook_business/adobjects/advideo.py | 31 -- facebook_business/adobjects/application.py | 69 +++-- facebook_business/adobjects/business.py | 242 ++------------- .../{recommendation.py => invoicecampaign.py} | 38 +-- facebook_business/adobjects/livevideo.py | 32 -- .../adobjects/measurementreport.py | 136 --------- .../adobjects/opengraphobject.py | 2 - .../adobjects/oracletransaction.py | 36 ++- facebook_business/adobjects/page.py | 206 +++---------- facebook_business/adobjects/permission.py | 1 + .../adobjects/reachfrequencyspec.py | 2 - .../thirdpartymeasurementreportdataset.py | 31 ++ facebook_business/adobjects/user.py | 66 +--- .../adobjects/videocopyrightrule.py | 6 - .../adobjects/whatsappbusinessaccount.py | 286 ++++++++++++++++++ setup.py | 2 +- 22 files changed, 604 insertions(+), 857 deletions(-) rename facebook_business/adobjects/{recommendation.py => invoicecampaign.py} (69%) delete mode 100644 facebook_business/adobjects/measurementreport.py create mode 100644 facebook_business/adobjects/whatsappbusinessaccount.py diff --git a/facebook_business/__init__.py b/facebook_business/__init__.py index 77983de0..7640fbe7 100644 --- a/facebook_business/__init__.py +++ b/facebook_business/__init__.py @@ -21,7 +21,7 @@ from facebook_business.session import FacebookSession from facebook_business.api import FacebookAdsApi -__version__ = '3.3.3' +__version__ = '3.3.4' __all__ = [ 'session', 'objects', diff --git a/facebook_business/adobjects/adaccount.py b/facebook_business/adobjects/adaccount.py index 5735114a..29b157f3 100644 --- a/facebook_business/adobjects/adaccount.py +++ b/facebook_business/adobjects/adaccount.py @@ -399,6 +399,90 @@ def create_ad_place_page_set(self, fields=None, params=None, batch=None, success self.assure_call() return request.execute() + def create_ad_set(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + from facebook_business.adobjects.adset import AdSet + param_types = { + 'ad_keywords': 'Object', + 'adlabels': 'list', + 'adset_schedule': 'list', + 'attribution_spec': 'list', + 'bid_adjustments': 'Object', + 'bid_amount': 'int', + 'bid_constraints': 'map', + 'bid_strategy': 'bid_strategy_enum', + 'billing_event': 'billing_event_enum', + 'campaign_id': 'string', + 'campaign_spec': 'Object', + 'creative_sequence': 'list', + 'daily_budget': 'unsigned int', + 'daily_imps': 'unsigned int', + 'daily_min_spend_target': 'unsigned int', + 'daily_spend_cap': 'unsigned int', + 'date_format': 'string', + 'destination_type': 'destination_type_enum', + 'end_time': 'datetime', + 'execution_options': 'list', + 'frequency_control_specs': 'list', + 'full_funnel_exploration_mode': 'full_funnel_exploration_mode_enum', + 'is_dynamic_creative': 'bool', + 'lifetime_budget': 'unsigned int', + 'lifetime_imps': 'unsigned int', + 'lifetime_min_spend_target': 'unsigned int', + 'lifetime_spend_cap': 'unsigned int', + 'line_number': 'unsigned int', + 'name': 'string', + 'optimization_goal': 'optimization_goal_enum', + 'optimization_sub_event': 'optimization_sub_event_enum', + 'pacing_type': 'list', + 'promoted_object': 'Object', + 'rb_prediction_id': 'string', + 'rf_prediction_id': 'string', + 'source_adset_id': 'string', + 'start_time': 'datetime', + 'status': 'status_enum', + 'targeting': 'Targeting', + 'time_based_ad_rotation_id_blocks': 'list>', + 'time_based_ad_rotation_intervals': 'list', + 'time_start': 'datetime', + 'time_stop': 'datetime', + 'topline_id': 'string', + 'upstream_events': 'map', + } + enums = { + 'bid_strategy_enum': AdSet.BidStrategy.__dict__.values(), + 'billing_event_enum': AdSet.BillingEvent.__dict__.values(), + 'destination_type_enum': AdSet.DestinationType.__dict__.values(), + 'execution_options_enum': AdSet.ExecutionOptions.__dict__.values(), + 'full_funnel_exploration_mode_enum': AdSet.FullFunnelExplorationMode.__dict__.values(), + 'optimization_goal_enum': AdSet.OptimizationGoal.__dict__.values(), + 'optimization_sub_event_enum': AdSet.OptimizationSubEvent.__dict__.values(), + 'status_enum': AdSet.Status.__dict__.values(), + } + request = FacebookRequest( + node_id=self['id'], + method='POST', + endpoint='/ad_sets', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=AdSet, + api_type='EDGE', + response_parser=ObjectParser(target_class=AdSet, api=self._api), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + def get_ad_studies(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -866,37 +950,6 @@ def delete_ad_report_runs(self, fields=None, params=None, batch=None, success=No self.assure_call() return request.execute() - def get_ad_report_runs(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.adreportrun import AdReportRun - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/adreportruns', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=AdReportRun, - api_type='EDGE', - response_parser=ObjectParser(target_class=AdReportRun, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_ad_report_schedules(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -1277,6 +1330,7 @@ def get_ads(self, fields=None, params=None, batch=None, success=None, failure=No 'include_drafts': 'bool', 'time_range': 'Object', 'updated_since': 'int', + 'use_employee_draft': 'bool', } enums = { 'date_preset_enum': Ad.DatePreset.__dict__.values(), @@ -1440,6 +1494,7 @@ def get_ad_sets(self, fields=None, params=None, batch=None, success=None, failur 'include_drafts': 'bool', 'is_completed': 'bool', 'time_range': 'Object', + 'use_employee_draft': 'bool', } enums = { 'date_preset_enum': AdSet.DatePreset.__dict__.values(), @@ -1467,90 +1522,6 @@ def get_ad_sets(self, fields=None, params=None, batch=None, success=None, failur self.assure_call() return request.execute() - def create_ad_set(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.adset import AdSet - param_types = { - 'ad_keywords': 'Object', - 'adlabels': 'list', - 'adset_schedule': 'list', - 'attribution_spec': 'list', - 'bid_adjustments': 'Object', - 'bid_amount': 'int', - 'bid_constraints': 'map', - 'bid_strategy': 'bid_strategy_enum', - 'billing_event': 'billing_event_enum', - 'campaign_id': 'string', - 'campaign_spec': 'Object', - 'creative_sequence': 'list', - 'daily_budget': 'unsigned int', - 'daily_imps': 'unsigned int', - 'daily_min_spend_target': 'unsigned int', - 'daily_spend_cap': 'unsigned int', - 'date_format': 'string', - 'destination_type': 'destination_type_enum', - 'end_time': 'datetime', - 'execution_options': 'list', - 'frequency_control_specs': 'list', - 'full_funnel_exploration_mode': 'full_funnel_exploration_mode_enum', - 'is_dynamic_creative': 'bool', - 'lifetime_budget': 'unsigned int', - 'lifetime_imps': 'unsigned int', - 'lifetime_min_spend_target': 'unsigned int', - 'lifetime_spend_cap': 'unsigned int', - 'line_number': 'unsigned int', - 'name': 'string', - 'optimization_goal': 'optimization_goal_enum', - 'optimization_sub_event': 'optimization_sub_event_enum', - 'pacing_type': 'list', - 'promoted_object': 'Object', - 'rb_prediction_id': 'string', - 'rf_prediction_id': 'string', - 'source_adset_id': 'string', - 'start_time': 'datetime', - 'status': 'status_enum', - 'targeting': 'Targeting', - 'time_based_ad_rotation_id_blocks': 'list>', - 'time_based_ad_rotation_intervals': 'list', - 'time_start': 'datetime', - 'time_stop': 'datetime', - 'topline_id': 'string', - 'upstream_events': 'map', - } - enums = { - 'bid_strategy_enum': AdSet.BidStrategy.__dict__.values(), - 'billing_event_enum': AdSet.BillingEvent.__dict__.values(), - 'destination_type_enum': AdSet.DestinationType.__dict__.values(), - 'execution_options_enum': AdSet.ExecutionOptions.__dict__.values(), - 'full_funnel_exploration_mode_enum': AdSet.FullFunnelExplorationMode.__dict__.values(), - 'optimization_goal_enum': AdSet.OptimizationGoal.__dict__.values(), - 'optimization_sub_event_enum': AdSet.OptimizationSubEvent.__dict__.values(), - 'status_enum': AdSet.Status.__dict__.values(), - } - request = FacebookRequest( - node_id=self['id'], - method='POST', - endpoint='/adsets', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=AdSet, - api_type='EDGE', - response_parser=ObjectParser(target_class=AdSet, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_ad_sets_by_labels(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -3886,10 +3857,12 @@ def get_targeting_browse(self, fields=None, params=None, batch=None, success=Non 'include_nodes': 'bool', 'is_exclusion': 'bool', 'limit_type': 'limit_type_enum', + 'regulated_categories': 'list', 'whitelisted_types': 'list', } enums = { 'limit_type_enum': AdAccountTargetingUnified.LimitType.__dict__.values(), + 'regulated_categories_enum': AdAccountTargetingUnified.RegulatedCategories.__dict__.values(), 'whitelisted_types_enum': AdAccountTargetingUnified.WhitelistedTypes.__dict__.values(), } request = FacebookRequest( @@ -3925,12 +3898,14 @@ def get_targeting_search(self, fields=None, params=None, batch=None, success=Non 'is_exclusion': 'bool', 'limit_type': 'limit_type_enum', 'q': 'string', + 'regulated_categories': 'list', 'session_id': 'unsigned int', 'targeting_list': 'list', 'whitelisted_types': 'list', } enums = { 'limit_type_enum': AdAccountTargetingUnified.LimitType.__dict__.values(), + 'regulated_categories_enum': AdAccountTargetingUnified.RegulatedCategories.__dict__.values(), 'whitelisted_types_enum': AdAccountTargetingUnified.WhitelistedTypes.__dict__.values(), } request = FacebookRequest( @@ -4001,6 +3976,7 @@ def get_targeting_suggestions(self, fields=None, params=None, batch=None, succes 'mode': 'mode_enum', 'objective': 'objective_enum', 'objects': 'Object', + 'regulated_categories': 'list', 'session_id': 'unsigned int', 'targeting_list': 'list', 'whitelisted_types': 'list', @@ -4009,6 +3985,7 @@ def get_targeting_suggestions(self, fields=None, params=None, batch=None, succes 'limit_type_enum': AdAccountTargetingUnified.LimitType.__dict__.values(), 'mode_enum': AdAccountTargetingUnified.Mode.__dict__.values(), 'objective_enum': AdAccountTargetingUnified.Objective.__dict__.values(), + 'regulated_categories_enum': AdAccountTargetingUnified.RegulatedCategories.__dict__.values(), 'whitelisted_types_enum': AdAccountTargetingUnified.WhitelistedTypes.__dict__.values(), } request = FacebookRequest( diff --git a/facebook_business/adobjects/adaccounttargetingunified.py b/facebook_business/adobjects/adaccounttargetingunified.py index c77304c3..592b5174 100644 --- a/facebook_business/adobjects/adaccounttargetingunified.py +++ b/facebook_business/adobjects/adaccounttargetingunified.py @@ -92,6 +92,12 @@ class LimitType: work_employers = 'work_employers' work_positions = 'work_positions' + class RegulatedCategories: + employment = 'EMPLOYMENT' + financing = 'FINANCING' + housing = 'HOUSING' + none = 'NONE' + class WhitelistedTypes: adgroup_id = 'adgroup_id' age_max = 'age_max' @@ -256,6 +262,7 @@ class Objective: def _get_field_enum_info(cls): field_enum_info = {} field_enum_info['LimitType'] = AdAccountTargetingUnified.LimitType.__dict__.values() + field_enum_info['RegulatedCategories'] = AdAccountTargetingUnified.RegulatedCategories.__dict__.values() field_enum_info['WhitelistedTypes'] = AdAccountTargetingUnified.WhitelistedTypes.__dict__.values() field_enum_info['Mode'] = AdAccountTargetingUnified.Mode.__dict__.values() field_enum_info['Objective'] = AdAccountTargetingUnified.Objective.__dict__.values() diff --git a/facebook_business/adobjects/adnetworkanalyticssyncqueryresult.py b/facebook_business/adobjects/adnetworkanalyticssyncqueryresult.py index 253a8dd0..51ede79c 100644 --- a/facebook_business/adobjects/adnetworkanalyticssyncqueryresult.py +++ b/facebook_business/adobjects/adnetworkanalyticssyncqueryresult.py @@ -75,6 +75,7 @@ class Metrics: fb_ad_network_filled_request = 'FB_AD_NETWORK_FILLED_REQUEST' fb_ad_network_fill_rate = 'FB_AD_NETWORK_FILL_RATE' fb_ad_network_imp = 'FB_AD_NETWORK_IMP' + fb_ad_network_impression_rate = 'FB_AD_NETWORK_IMPRESSION_RATE' fb_ad_network_request = 'FB_AD_NETWORK_REQUEST' fb_ad_network_revenue = 'FB_AD_NETWORK_REVENUE' fb_ad_network_show_rate = 'FB_AD_NETWORK_SHOW_RATE' diff --git a/facebook_business/adobjects/adset.py b/facebook_business/adobjects/adset.py index 92d117e0..4df85d4f 100644 --- a/facebook_business/adobjects/adset.py +++ b/facebook_business/adobjects/adset.py @@ -171,27 +171,6 @@ class Status: deleted = 'DELETED' paused = 'PAUSED' - class DatePreset: - last_14d = 'last_14d' - last_28d = 'last_28d' - last_30d = 'last_30d' - last_3d = 'last_3d' - last_7d = 'last_7d' - last_90d = 'last_90d' - last_month = 'last_month' - last_quarter = 'last_quarter' - last_week_mon_sun = 'last_week_mon_sun' - last_week_sun_sat = 'last_week_sun_sat' - last_year = 'last_year' - lifetime = 'lifetime' - this_month = 'this_month' - this_quarter = 'this_quarter' - this_week_mon_today = 'this_week_mon_today' - this_week_sun_today = 'this_week_sun_today' - this_year = 'this_year' - today = 'today' - yesterday = 'yesterday' - class DestinationType: app = 'APP' applinks_automatic = 'APPLINKS_AUTOMATIC' @@ -220,6 +199,27 @@ class OptimizationSubEvent: trip_consideration = 'TRIP_CONSIDERATION' video_sound_on = 'VIDEO_SOUND_ON' + class DatePreset: + last_14d = 'LAST_14D' + last_28d = 'LAST_28D' + last_30d = 'LAST_30D' + last_3d = 'LAST_3D' + last_7d = 'LAST_7D' + last_90d = 'LAST_90D' + last_month = 'LAST_MONTH' + last_quarter = 'LAST_QUARTER' + last_week_mon_sun = 'LAST_WEEK_MON_SUN' + last_week_sun_sat = 'LAST_WEEK_SUN_SAT' + last_year = 'LAST_YEAR' + lifetime = 'LIFETIME' + this_month = 'THIS_MONTH' + this_quarter = 'THIS_QUARTER' + this_week_mon_today = 'THIS_WEEK_MON_TODAY' + this_week_sun_today = 'THIS_WEEK_SUN_TODAY' + this_year = 'THIS_YEAR' + today = 'TODAY' + yesterday = 'YESTERDAY' + class Operator: all = 'ALL' any = 'ANY' @@ -232,7 +232,7 @@ class StatusOption: # @deprecated get_endpoint function is deprecated @classmethod def get_endpoint(cls): - return 'adsets' + return 'ad_sets' # @deprecated api_create is being deprecated def api_create(self, parent_id, fields=None, params=None, batch=None, success=None, failure=None, pending=False): @@ -939,11 +939,11 @@ def _get_field_enum_info(cls): field_enum_info['EffectiveStatus'] = AdSet.EffectiveStatus.__dict__.values() field_enum_info['OptimizationGoal'] = AdSet.OptimizationGoal.__dict__.values() field_enum_info['Status'] = AdSet.Status.__dict__.values() - field_enum_info['DatePreset'] = AdSet.DatePreset.__dict__.values() field_enum_info['DestinationType'] = AdSet.DestinationType.__dict__.values() field_enum_info['ExecutionOptions'] = AdSet.ExecutionOptions.__dict__.values() field_enum_info['FullFunnelExplorationMode'] = AdSet.FullFunnelExplorationMode.__dict__.values() field_enum_info['OptimizationSubEvent'] = AdSet.OptimizationSubEvent.__dict__.values() + field_enum_info['DatePreset'] = AdSet.DatePreset.__dict__.values() field_enum_info['Operator'] = AdSet.Operator.__dict__.values() field_enum_info['StatusOption'] = AdSet.StatusOption.__dict__.values() return field_enum_info diff --git a/facebook_business/adobjects/adstudy.py b/facebook_business/adobjects/adstudy.py index 26c3e706..0ab049ee 100644 --- a/facebook_business/adobjects/adstudy.py +++ b/facebook_business/adobjects/adstudy.py @@ -62,15 +62,15 @@ class Field(AbstractObject.Field): objectives = 'objectives' viewers = 'viewers' - class AudienceType: - most_responsive = 'MOST_RESPONSIVE' - not_most_responsive = 'NOT_MOST_RESPONSIVE' - class Type: continuous_lift_config = 'CONTINUOUS_LIFT_CONFIG' lift = 'LIFT' split_test = 'SPLIT_TEST' + class AudienceType: + most_responsive = 'MOST_RESPONSIVE' + not_most_responsive = 'NOT_MOST_RESPONSIVE' + # @deprecated get_endpoint function is deprecated @classmethod def get_endpoint(cls): @@ -156,9 +156,11 @@ def api_update(self, fields=None, params=None, batch=None, success=None, failure 'objectives': 'list', 'observation_end_time': 'int', 'start_time': 'int', + 'type': 'type_enum', 'viewers': 'list', } enums = { + 'type_enum': AdStudy.Type.__dict__.values(), } request = FacebookRequest( node_id=self['id'], @@ -408,8 +410,8 @@ def get_viewers(self, fields=None, params=None, batch=None, success=None, failur @classmethod def _get_field_enum_info(cls): field_enum_info = {} - field_enum_info['AudienceType'] = AdStudy.AudienceType.__dict__.values() field_enum_info['Type'] = AdStudy.Type.__dict__.values() + field_enum_info['AudienceType'] = AdStudy.AudienceType.__dict__.values() return field_enum_info diff --git a/facebook_business/adobjects/advideo.py b/facebook_business/adobjects/advideo.py index b37a28a9..28e38b16 100644 --- a/facebook_business/adobjects/advideo.py +++ b/facebook_business/adobjects/advideo.py @@ -938,37 +938,6 @@ def create_summarization(self, fields=None, params=None, batch=None, success=Non self.assure_call() return request.execute() - def get_tags(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.taggablesubject import TaggableSubject - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/tags', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=TaggableSubject, - api_type='EDGE', - response_parser=ObjectParser(target_class=TaggableSubject, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_tag(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/application.py b/facebook_business/adobjects/application.py index 6a07e925..702d7a70 100644 --- a/facebook_business/adobjects/application.py +++ b/facebook_business/adobjects/application.py @@ -1473,38 +1473,6 @@ def get_moods_for_application(self, fields=None, params=None, batch=None, succes self.assure_call() return request.execute() - def get_objects(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.opengraphobject import OpenGraphObject - param_types = { - 'type': 'Object', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/objects', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=OpenGraphObject, - api_type='EDGE', - response_parser=ObjectParser(target_class=OpenGraphObject, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_object(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -2094,6 +2062,43 @@ def create_subscriptions_sample(self, fields=None, params=None, batch=None, succ self.assure_call() return request.execute() + def create_upload(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'file_length': 'unsigned int', + 'file_name': 'string', + 'file_type': 'string', + 'session_type': 'session_type_enum', + } + enums = { + 'session_type_enum': [ + 'attachment', + ], + } + request = FacebookRequest( + node_id=self['id'], + method='POST', + endpoint='/uploads', + 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, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + def create_user_property(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/business.py b/facebook_business/adobjects/business.py index c13fa3e4..6c2ca0cb 100644 --- a/facebook_business/adobjects/business.py +++ b/facebook_business/adobjects/business.py @@ -109,6 +109,7 @@ class PagePermittedTasks: create_content = 'CREATE_CONTENT' manage = 'MANAGE' manage_jobs = 'MANAGE_JOBS' + manage_leads = 'MANAGE_LEADS' moderate = 'MODERATE' moderate_community = 'MODERATE_COMMUNITY' pages_messaging = 'PAGES_MESSAGING' @@ -215,6 +216,37 @@ def create_access_token(self, fields=None, params=None, batch=None, success=None self.assure_call() return request.execute() + def delete_ad_accounts(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'adaccount_id': 'string', + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='DELETE', + endpoint='/ad_accounts', + 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, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + def get_ad_studies(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -392,37 +424,6 @@ def create_ad_account_creation_request(self, fields=None, params=None, batch=Non self.assure_call() return request.execute() - def delete_ad_accounts(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - 'adaccount_id': 'string', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='DELETE', - endpoint='/adaccounts', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_ad_network_analytics(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -768,45 +769,6 @@ def create_block_list_draft(self, fields=None, params=None, batch=None, success= self.assure_call() return request.execute() - def get_business_invoices(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.oracletransaction import OracleTransaction - param_types = { - 'end_date': 'string', - 'invoice_id': 'unsigned int', - 'issue_end_date': 'string', - 'issue_start_date': 'string', - 'root_id': 'unsigned int', - 'start_date': 'string', - 'type': 'type_enum', - } - enums = { - 'type_enum': OracleTransaction.Type.__dict__.values(), - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/business_invoices', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=OracleTransaction, - api_type='EDGE', - response_parser=ObjectParser(target_class=OracleTransaction, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_business_users(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -1541,44 +1503,6 @@ def get_extended_credits(self, fields=None, params=None, batch=None, success=Non self.assure_call() return request.execute() - def get_initiated_audience_sharing_requests(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - 'recipient_id': 'string', - 'request_status': 'request_status_enum', - } - enums = { - 'request_status_enum': [ - 'APPROVE', - 'DECLINE', - 'EXPIRED', - 'IN_PROGRESS', - ], - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/initiated_audience_sharing_requests', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_initiated_sharing_agreements(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -1715,40 +1639,6 @@ def create_managed_business(self, fields=None, params=None, batch=None, success= self.assure_call() return request.execute() - def get_measurement_reports(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.measurementreport import MeasurementReport - param_types = { - 'filters': 'list', - 'report_type': 'report_type_enum', - } - enums = { - 'report_type_enum': MeasurementReport.ReportType.__dict__.values(), - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/measurement_reports', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=MeasurementReport, - api_type='EDGE', - response_parser=ObjectParser(target_class=MeasurementReport, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_offline_conversion_data_sets(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -2075,36 +1965,6 @@ def create_owned_business(self, fields=None, params=None, batch=None, success=No self.assure_call() return request.execute() - def get_owned_domains(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/owned_domains', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_owned_domain(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -2707,44 +2567,6 @@ def get_received_audience_permissions(self, fields=None, params=None, batch=None self.assure_call() return request.execute() - def get_received_audience_sharing_requests(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - 'initiator_id': 'string', - 'request_status': 'request_status_enum', - } - enums = { - 'request_status_enum': [ - 'APPROVE', - 'DECLINE', - 'EXPIRED', - 'IN_PROGRESS', - ], - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/received_audience_sharing_requests', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_received_inprogress_on_behalf_requests(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/recommendation.py b/facebook_business/adobjects/invoicecampaign.py similarity index 69% rename from facebook_business/adobjects/recommendation.py rename to facebook_business/adobjects/invoicecampaign.py index 75e3acc6..8d324e58 100644 --- a/facebook_business/adobjects/recommendation.py +++ b/facebook_business/adobjects/invoicecampaign.py @@ -28,34 +28,34 @@ pull request for this class. """ -class Recommendation( +class InvoiceCampaign( AbstractObject, ): def __init__(self, api=None): - super(Recommendation, self).__init__() - self._isRecommendation = True + super(InvoiceCampaign, self).__init__() + self._isInvoiceCampaign = True self._api = api class Field(AbstractObject.Field): - created_time = 'created_time' - has_rating = 'has_rating' - has_review = 'has_review' - open_graph_story = 'open_graph_story' - rating = 'rating' - recommendation_type = 'recommendation_type' - review_text = 'review_text' - reviewer = 'reviewer' + ad_account_id = 'ad_account_id' + billed_amount_details = 'billed_amount_details' + campaign_id = 'campaign_id' + campaign_name = 'campaign_name' + clicks = 'clicks' + conversions = 'conversions' + impressions = 'impressions' + tags = 'tags' _field_types = { - 'created_time': 'datetime', - 'has_rating': 'bool', - 'has_review': 'bool', - 'open_graph_story': 'Object', - 'rating': 'int', - 'recommendation_type': 'string', - 'review_text': 'string', - 'reviewer': 'User', + 'ad_account_id': 'string', + 'billed_amount_details': 'BilledAmountDetails', + 'campaign_id': 'string', + 'campaign_name': 'string', + 'clicks': 'unsigned int', + 'conversions': 'unsigned int', + 'impressions': 'unsigned int', + 'tags': 'list', } @classmethod def _get_field_enum_info(cls): diff --git a/facebook_business/adobjects/livevideo.py b/facebook_business/adobjects/livevideo.py index c2f66acb..428f8b1c 100644 --- a/facebook_business/adobjects/livevideo.py +++ b/facebook_business/adobjects/livevideo.py @@ -247,38 +247,6 @@ def api_update(self, fields=None, params=None, batch=None, success=None, failure self.assure_call() return request.execute() - def get_blocked_users(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.user import User - param_types = { - 'uid': 'Object', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/blocked_users', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=User, - api_type='EDGE', - response_parser=ObjectParser(target_class=User, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_comments(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/measurementreport.py b/facebook_business/adobjects/measurementreport.py deleted file mode 100644 index 0f3511bc..00000000 --- a/facebook_business/adobjects/measurementreport.py +++ /dev/null @@ -1,136 +0,0 @@ -# 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 facebook_business.adobjects.abstractobject import AbstractObject -from facebook_business.adobjects.abstractcrudobject import AbstractCrudObject -from facebook_business.adobjects.objectparser import ObjectParser -from facebook_business.api import FacebookRequest -from facebook_business.typechecker import TypeChecker - -""" -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 MeasurementReport( - AbstractCrudObject, -): - - def __init__(self, fbid=None, parent_id=None, api=None): - self._isMeasurementReport = True - super(MeasurementReport, self).__init__(fbid, parent_id, api) - - class Field(AbstractObject.Field): - download_urls = 'download_urls' - id = 'id' - metadata = 'metadata' - report_type = 'report_type' - status = 'status' - upload_urls = 'upload_urls' - - class ReportType: - fruit_rollup_report = 'fruit_rollup_report' - mmm_report = 'mmm_report' - multi_channel_report = 'multi_channel_report' - partner_lift_study_report = 'partner_lift_study_report' - third_party_mta_report = 'third_party_mta_report' - video_metrics_report = 'video_metrics_report' - - def api_get(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=MeasurementReport, - api_type='NODE', - response_parser=ObjectParser(reuse_object=self), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - - def api_update(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - 'is_last_batch': 'bool', - 'payload': 'file', - 'url': 'string', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='POST', - endpoint='/', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=MeasurementReport, - api_type='NODE', - response_parser=ObjectParser(reuse_object=self), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - - _field_types = { - 'download_urls': 'list', - 'id': 'string', - 'metadata': 'map', - 'report_type': 'string', - 'status': 'string', - 'upload_urls': 'list', - } - @classmethod - def _get_field_enum_info(cls): - field_enum_info = {} - field_enum_info['ReportType'] = MeasurementReport.ReportType.__dict__.values() - return field_enum_info - - diff --git a/facebook_business/adobjects/opengraphobject.py b/facebook_business/adobjects/opengraphobject.py index 38f03fca..0975afcc 100644 --- a/facebook_business/adobjects/opengraphobject.py +++ b/facebook_business/adobjects/opengraphobject.py @@ -44,7 +44,6 @@ class Field(AbstractObject.Field): admins = 'admins' application = 'application' audio = 'audio' - context = 'context' created_time = 'created_time' description = 'description' determiner = 'determiner' @@ -132,7 +131,6 @@ def get_picture(self, fields=None, params=None, batch=None, success=None, failur 'admins': 'list', 'application': 'Object', 'audio': 'list', - 'context': 'OpenGraphContext', 'created_time': 'datetime', 'description': 'string', 'determiner': 'string', diff --git a/facebook_business/adobjects/oracletransaction.py b/facebook_business/adobjects/oracletransaction.py index 92e2c0ff..d5c02036 100644 --- a/facebook_business/adobjects/oracletransaction.py +++ b/facebook_business/adobjects/oracletransaction.py @@ -59,10 +59,6 @@ class Field(AbstractObject.Field): payment_term = 'payment_term' type = 'type' - class Type: - cm = 'CM' - inv = 'INV' - def api_get(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -93,6 +89,37 @@ def api_get(self, fields=None, params=None, batch=None, success=None, failure=No self.assure_call() return request.execute() + def get_campaigns(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + from facebook_business.adobjects.invoicecampaign import InvoiceCampaign + param_types = { + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/campaigns', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=InvoiceCampaign, + api_type='EDGE', + response_parser=ObjectParser(target_class=InvoiceCampaign, api=self._api), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + def get_data(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -147,7 +174,6 @@ def get_data(self, fields=None, params=None, batch=None, success=None, failure=N @classmethod def _get_field_enum_info(cls): field_enum_info = {} - field_enum_info['Type'] = OracleTransaction.Type.__dict__.values() return field_enum_info diff --git a/facebook_business/adobjects/page.py b/facebook_business/adobjects/page.py index 2ebdd2f0..f40dabe8 100644 --- a/facebook_business/adobjects/page.py +++ b/facebook_business/adobjects/page.py @@ -259,6 +259,7 @@ class PermittedTasks: create_content = 'CREATE_CONTENT' manage = 'MANAGE' manage_jobs = 'MANAGE_JOBS' + manage_leads = 'MANAGE_LEADS' moderate = 'MODERATE' moderate_community = 'MODERATE_COMMUNITY' pages_messaging = 'PAGES_MESSAGING' @@ -272,6 +273,7 @@ class Tasks: create_content = 'CREATE_CONTENT' manage = 'MANAGE' manage_jobs = 'MANAGE_JOBS' + manage_leads = 'MANAGE_LEADS' moderate = 'MODERATE' moderate_community = 'MODERATE_COMMUNITY' pages_messaging = 'PAGES_MESSAGING' @@ -535,37 +537,6 @@ def api_update(self, fields=None, params=None, batch=None, success=None, failure self.assure_call() return request.execute() - def get_admin_notes(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.pageadminnote import PageAdminNote - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/admin_notes', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=PageAdminNote, - api_type='EDGE', - response_parser=ObjectParser(target_class=PageAdminNote, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_admin_setting(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -1295,6 +1266,7 @@ def get_canvases(self, fields=None, params=None, batch=None, success=None, failu api_utils.warning('`success` and `failure` callback only work for batch call.') from facebook_business.adobjects.canvas import Canvas param_types = { + 'is_hidden': 'bool', 'is_published': 'bool', } enums = { @@ -1635,6 +1607,37 @@ def get_copyright_whitelisted_partners(self, fields=None, params=None, batch=Non self.assure_call() return request.execute() + def get_custom_labels(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + from facebook_business.adobjects.pageusermessagethreadlabel import PageUserMessageThreadLabel + param_types = { + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/custom_labels', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=PageUserMessageThreadLabel, + api_type='EDGE', + response_parser=ObjectParser(target_class=PageUserMessageThreadLabel, api=self._api), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + def create_custom_label(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -2533,52 +2536,6 @@ def get_locations(self, fields=None, params=None, batch=None, success=None, fail self.assure_call() return request.execute() - def create_location(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - 'always_open': 'bool', - 'hours': 'map', - 'ignore_warnings': 'bool', - 'location': 'Object', - 'location_page_id': 'string', - 'old_store_number': 'unsigned int', - 'page_username': 'string', - 'permanently_closed': 'bool', - 'phone': 'string', - 'place_topics': 'list', - 'price_range': 'string', - 'store_code': 'string', - 'store_location_descriptor': 'string', - 'store_name': 'string', - 'store_number': 'unsigned int', - 'website': 'string', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='POST', - endpoint='/locations', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=Page, - api_type='EDGE', - response_parser=ObjectParser(target_class=Page, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_media_fingerprint(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -3558,37 +3515,6 @@ def get_published_posts(self, fields=None, params=None, batch=None, success=None self.assure_call() return request.execute() - def get_ratings(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.recommendation import Recommendation - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/ratings', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=Recommendation, - api_type='EDGE', - response_parser=ObjectParser(target_class=Recommendation, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_request_thread_control(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -4061,36 +3987,6 @@ def delete_thread_settings(self, fields=None, params=None, batch=None, success=N self.assure_call() return request.execute() - def get_thread_settings(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/thread_settings', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_thread_setting(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -4232,40 +4128,6 @@ def create_unlink_account(self, fields=None, params=None, batch=None, success=No self.assure_call() return request.execute() - def get_video_copyright_rules(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.videocopyrightrule import VideoCopyrightRule - param_types = { - 'selected_rule_id': 'string', - 'source': 'source_enum', - } - enums = { - 'source_enum': VideoCopyrightRule.Source.__dict__.values(), - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/video_copyright_rules', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=VideoCopyrightRule, - api_type='EDGE', - response_parser=ObjectParser(target_class=VideoCopyrightRule, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_video_copyright(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/permission.py b/facebook_business/adobjects/permission.py index f5b94f1a..e6eb700b 100644 --- a/facebook_business/adobjects/permission.py +++ b/facebook_business/adobjects/permission.py @@ -43,6 +43,7 @@ class Field(AbstractObject.Field): class Status: declined = 'declined' + expired = 'expired' granted = 'granted' _field_types = { diff --git a/facebook_business/adobjects/reachfrequencyspec.py b/facebook_business/adobjects/reachfrequencyspec.py index a637369c..997f7300 100644 --- a/facebook_business/adobjects/reachfrequencyspec.py +++ b/facebook_business/adobjects/reachfrequencyspec.py @@ -46,7 +46,6 @@ class Field(AbstractObject.Field): max_pause_without_prediction_rerun = 'max_pause_without_prediction_rerun' min_campaign_duration = 'min_campaign_duration' min_reach_limits = 'min_reach_limits' - supports_video_view_benchmark_per_country = 'supports_video_view_benchmark_per_country' _field_types = { 'countries': 'list', @@ -57,7 +56,6 @@ class Field(AbstractObject.Field): 'max_pause_without_prediction_rerun': 'Object', 'min_campaign_duration': 'Object', 'min_reach_limits': 'Object', - 'supports_video_view_benchmark_per_country': 'Object', } @classmethod def _get_field_enum_info(cls): diff --git a/facebook_business/adobjects/thirdpartymeasurementreportdataset.py b/facebook_business/adobjects/thirdpartymeasurementreportdataset.py index b320c51d..f9420c00 100644 --- a/facebook_business/adobjects/thirdpartymeasurementreportdataset.py +++ b/facebook_business/adobjects/thirdpartymeasurementreportdataset.py @@ -95,6 +95,37 @@ def api_get(self, fields=None, params=None, batch=None, success=None, failure=No self.assure_call() return request.execute() + def api_update(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'data': 'list', + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='POST', + endpoint='/', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=ThirdPartyMeasurementReportDataset, + api_type='NODE', + response_parser=ObjectParser(reuse_object=self), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + _field_types = { 'category': 'string', 'id': 'string', diff --git a/facebook_business/adobjects/user.py b/facebook_business/adobjects/user.py index 769f12f5..57b282c7 100644 --- a/facebook_business/adobjects/user.py +++ b/facebook_business/adobjects/user.py @@ -107,6 +107,7 @@ class Tasks: create_content = 'CREATE_CONTENT' manage = 'MANAGE' manage_jobs = 'MANAGE_JOBS' + manage_leads = 'MANAGE_LEADS' moderate = 'MODERATE' moderate_community = 'MODERATE_COMMUNITY' pages_messaging = 'PAGES_MESSAGING' @@ -251,7 +252,6 @@ def api_update(self, fields=None, params=None, batch=None, success=None, failure param_types = { 'emoji_color_pref': 'unsigned int', 'firstname': 'string', - 'label_cohort': 'Object', 'lastname': 'string', 'local_news_megaphone_dismiss_status': 'local_news_megaphone_dismiss_status_enum', 'local_news_subscription_status': 'local_news_subscription_status_enum', @@ -894,40 +894,6 @@ def get_businesses(self, fields=None, params=None, batch=None, success=None, fai self.assure_call() return request.execute() - def get_conversations(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - from facebook_business.adobjects.unifiedthread import UnifiedThread - param_types = { - 'folder': 'string', - 'tags': 'list', - 'user_id': 'string', - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/conversations', - api=self._api, - param_checker=TypeChecker(param_types, enums), - target_class=UnifiedThread, - api_type='EDGE', - response_parser=ObjectParser(target_class=UnifiedThread, api=self._api), - ) - request.add_params(params) - request.add_fields(fields) - - if batch is not None: - request.add_to_batch(batch, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def get_events(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -992,36 +958,6 @@ def get_family(self, fields=None, params=None, batch=None, success=None, failure self.assure_call() return request.execute() - def get_favorite_requests(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): - from facebook_business.utils import api_utils - if batch is None and (success is not None or failure is not None): - api_utils.warning('`success` and `failure` callback only work for batch call.') - param_types = { - } - enums = { - } - request = FacebookRequest( - node_id=self['id'], - method='GET', - endpoint='/favorite_requests', - 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, success=success, failure=failure) - return request - elif pending: - return request - else: - self.assure_call() - return request.execute() - def create_feed(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): diff --git a/facebook_business/adobjects/videocopyrightrule.py b/facebook_business/adobjects/videocopyrightrule.py index ce64ae36..245d343d 100644 --- a/facebook_business/adobjects/videocopyrightrule.py +++ b/facebook_business/adobjects/videocopyrightrule.py @@ -49,11 +49,6 @@ class Field(AbstractObject.Field): is_in_migration = 'is_in_migration' name = 'name' - class Source: - match_settings_dialog = 'MATCH_SETTINGS_DIALOG' - rules_selector = 'RULES_SELECTOR' - rules_tab = 'RULES_TAB' - def api_get(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): from facebook_business.utils import api_utils if batch is None and (success is not None or failure is not None): @@ -96,7 +91,6 @@ def api_get(self, fields=None, params=None, batch=None, success=None, failure=No @classmethod def _get_field_enum_info(cls): field_enum_info = {} - field_enum_info['Source'] = VideoCopyrightRule.Source.__dict__.values() return field_enum_info diff --git a/facebook_business/adobjects/whatsappbusinessaccount.py b/facebook_business/adobjects/whatsappbusinessaccount.py new file mode 100644 index 00000000..779b4328 --- /dev/null +++ b/facebook_business/adobjects/whatsappbusinessaccount.py @@ -0,0 +1,286 @@ +# 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 facebook_business.adobjects.abstractobject import AbstractObject +from facebook_business.adobjects.abstractcrudobject import AbstractCrudObject +from facebook_business.adobjects.objectparser import ObjectParser +from facebook_business.api import FacebookRequest +from facebook_business.typechecker import TypeChecker + +""" +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 WhatsAppBusinessAccount( + AbstractCrudObject, +): + + def __init__(self, fbid=None, parent_id=None, api=None): + self._isWhatsAppBusinessAccount = True + super(WhatsAppBusinessAccount, self).__init__(fbid, parent_id, api) + + class Field(AbstractObject.Field): + analytics = 'analytics' + currency = 'currency' + eligible_for_sending_notifications = 'eligible_for_sending_notifications' + id = 'id' + ineligible_for_sending_notifications_reason = 'ineligible_for_sending_notifications_reason' + message_template_namespace = 'message_template_namespace' + name = 'name' + on_behalf_of_business_info = 'on_behalf_of_business_info' + status = 'status' + timezone_id = 'timezone_id' + + class Category: + account_update = 'ACCOUNT_UPDATE' + alert_update = 'ALERT_UPDATE' + appointment_update = 'APPOINTMENT_UPDATE' + issue_resolution = 'ISSUE_RESOLUTION' + payment_update = 'PAYMENT_UPDATE' + personal_finance_update = 'PERSONAL_FINANCE_UPDATE' + reservation_update = 'RESERVATION_UPDATE' + shipping_update = 'SHIPPING_UPDATE' + ticket_update = 'TICKET_UPDATE' + transportation_update = 'TRANSPORTATION_UPDATE' + + def api_get(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=WhatsAppBusinessAccount, + api_type='NODE', + response_parser=ObjectParser(reuse_object=self), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + def get_assigned_users(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + from facebook_business.adobjects.assigneduser import AssignedUser + param_types = { + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/assigned_users', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=AssignedUser, + api_type='EDGE', + response_parser=ObjectParser(target_class=AssignedUser, api=self._api), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + def delete_message_templates(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'name': 'string', + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='DELETE', + endpoint='/message_templates', + 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, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + def get_message_templates(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'category': 'list', + 'content': 'string', + 'language': 'list', + 'name': 'string', + 'name_or_content': 'string', + 'status': 'list', + } + enums = { + 'category_enum': WhatsAppBusinessAccount.Category.__dict__.values(), + 'status_enum': [ + 'APPROVED', + 'DELETED', + 'PENDING', + 'PENDING_DELETION', + 'REJECTED', + ], + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/message_templates', + 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, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + def create_message_template(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + 'category': 'category_enum', + 'components': 'list', + 'language': 'string', + 'name': 'string', + } + enums = { + 'category_enum': WhatsAppBusinessAccount.Category.__dict__.values(), + } + request = FacebookRequest( + node_id=self['id'], + method='POST', + endpoint='/message_templates', + api=self._api, + param_checker=TypeChecker(param_types, enums), + target_class=WhatsAppBusinessAccount, + api_type='EDGE', + response_parser=ObjectParser(target_class=WhatsAppBusinessAccount, api=self._api), + ) + request.add_params(params) + request.add_fields(fields) + + if batch is not None: + request.add_to_batch(batch, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + def get_phone_numbers(self, fields=None, params=None, batch=None, success=None, failure=None, pending=False): + from facebook_business.utils import api_utils + if batch is None and (success is not None or failure is not None): + api_utils.warning('`success` and `failure` callback only work for batch call.') + param_types = { + } + enums = { + } + request = FacebookRequest( + node_id=self['id'], + method='GET', + endpoint='/phone_numbers', + 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, success=success, failure=failure) + return request + elif pending: + return request + else: + self.assure_call() + return request.execute() + + _field_types = { + 'analytics': 'Object', + 'currency': 'string', + 'eligible_for_sending_notifications': 'bool', + 'id': 'string', + 'ineligible_for_sending_notifications_reason': 'string', + 'message_template_namespace': 'string', + 'name': 'string', + 'on_behalf_of_business_info': 'Object', + 'status': 'string', + 'timezone_id': 'string', + } + @classmethod + def _get_field_enum_info(cls): + field_enum_info = {} + field_enum_info['Category'] = WhatsAppBusinessAccount.Category.__dict__.values() + return field_enum_info + + diff --git a/setup.py b/setup.py index 735776c9..7d1dd231 100644 --- a/setup.py +++ b/setup.py @@ -29,7 +29,7 @@ requirements_filename = os.path.join(this_dir, 'requirements.txt') PACKAGE_NAME = 'facebook_business' -PACKAGE_VERSION = '3.3.3' +PACKAGE_VERSION = '3.3.4' PACKAGE_AUTHOR = 'Facebook' PACKAGE_AUTHOR_EMAIL = '' PACKAGE_URL = 'https://github.com/facebook/facebook-python-business-sdk'