def get_stats(self, fields=None, params=None, batch=None, pending=False): param_types = { 'aggr_time': 'aggr_time_enum', 'end': 'int', 'skip_empty_values': 'bool', 'start': 'int', 'user_timezone_id': 'unsigned int', } enums = { 'aggr_time_enum': [ 'upload_time', 'event_time', ], } request = FacebookRequest( node_id=self['id'], method='GET', endpoint='/stats', 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 api_get(self, fields=None, params=None, batch=None, pending=False): param_types = {} enums = {} request = FacebookRequest( node_id=self['id'], method='GET', endpoint='/', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=AdRule, 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) return request elif pending: return request else: self.assure_call() return request.execute()
def delete_ad_labels(self, fields=None, params=None, batch=None, pending=False): from facebookads_v2.adobjects.adlabel import AdLabel param_types = { 'adlabels': 'list<Object>', 'execution_options': 'list<execution_options_enum>', } enums = { 'execution_options_enum': AdLabel.ExecutionOptions.__dict__.values(), } request = FacebookRequest( node_id=self['id'], method='DELETE', endpoint='/adlabels', 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 create_upload(self, fields=None, params=None, batch=None, pending=False): from facebookads_v2.adobjects.productfeedupload import ProductFeedUpload param_types = { 'file': 'file', 'password': '******', 'update_only': 'bool', 'url': 'string', 'username': '******', } enums = {} request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/uploads', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=ProductFeedUpload, api_type='EDGE', response_parser=ObjectParser(target_class=ProductFeedUpload, 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 api_update(self, fields=None, params=None, batch=None, pending=False): param_types = { 'address': 'Object', 'applinks': 'Object', 'brand': 'string', 'description': 'string', 'guest_ratings': 'list<Object>', 'images': 'list<Object>', 'name': 'string', 'phone': 'string', 'star_rating': 'float', 'url': 'string', } enums = { } request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=Hotel, 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) return request elif pending: return request else: self.assure_call() return request.execute()
def api_update(self, fields=None, params=None, batch=None, pending=False): param_types = { 'applinks': 'Object', 'base_price': 'float', 'currency': 'string', 'description': 'string', 'images': 'list<Object>', 'margin_level': 'unsigned int', 'name': 'string', 'pricing_variables': 'list<Object>', 'sale_price': 'float', 'url': 'string', } enums = { } request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=HotelRoom, 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) return request elif pending: return request else: self.assure_call() return request.execute()
def create_product(self, fields=None, params=None, batch=None, pending=False): from facebookads_v2.adobjects.productitem import ProductItem param_types = { 'additional_image_urls': 'list<string>', 'android_app_name': 'string', 'android_class': 'string', 'android_package': 'string', 'android_url': 'string', 'availability': 'availability_enum', 'brand': 'string', 'category': 'string', 'checkout_url': 'string', 'color': 'string', 'condition': 'condition_enum', 'currency': 'string', 'custom_data': 'map', 'custom_label_0': 'string', 'custom_label_1': 'string', 'custom_label_2': 'string', 'custom_label_3': 'string', 'custom_label_4': 'string', 'description': 'string', 'expiration_date': 'string', 'gender': 'gender_enum', 'gtin': 'string', 'image_url': 'string', 'inventory': 'unsigned int', 'ios_app_name': 'string', 'ios_app_store_id': 'unsigned int', 'ios_url': 'string', 'ipad_app_name': 'string', 'ipad_app_store_id': 'unsigned int', 'ipad_url': 'string', 'iphone_app_name': 'string', 'iphone_app_store_id': 'unsigned int', 'iphone_url': 'string', 'manufacturer_part_number': 'string', 'material': 'string', 'name': 'string', 'ordering_index': 'unsigned int', 'pattern': 'string', 'price': 'unsigned int', 'product_type': 'string', 'retailer_id': 'string', 'retailer_product_group_id': 'string', 'sale_price': 'unsigned int', 'sale_price_end_date': 'datetime', 'sale_price_start_date': 'datetime', 'short_description': 'string', 'size': 'string', 'start_date': 'string', 'url': 'string', 'visibility': 'visibility_enum', 'windows_phone_app_id': 'string', 'windows_phone_app_name': 'string', 'windows_phone_url': 'string', } enums = { 'availability_enum': ProductItem.Availability.__dict__.values(), 'condition_enum': ProductItem.Condition.__dict__.values(), 'gender_enum': ProductItem.Gender.__dict__.values(), 'visibility_enum': ProductItem.Visibility.__dict__.values(), } request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/products', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=ProductItem, api_type='EDGE', response_parser=ObjectParser(target_class=ProductItem, 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_video(self, fields=None, params=None, batch=None, pending=False): param_types = { 'content_category': 'content_category_enum', 'description': 'string', 'embeddable': 'bool', 'file_size': 'unsigned int', 'file_url': 'string', 'fov': 'unsigned int', 'guide': 'list<list<unsigned int>>', 'guide_enabled': 'bool', 'initial_heading': 'unsigned int', 'initial_pitch': 'unsigned int', 'original_fov': 'unsigned int', 'original_projection_type': 'original_projection_type_enum', 'referenced_sticker_id': 'string', 'replace_video_id': 'string', 'slideshow_spec': 'map', 'source': 'string', 'spherical': 'bool', 'start_offset': 'unsigned int', 'swap_mode': 'swap_mode_enum', 'thumb': 'file', 'title': 'string', 'unpublished_content_type': 'unpublished_content_type_enum', 'upload_phase': 'upload_phase_enum', 'upload_session_id': 'string', 'video_file_chunk': 'string', } enums = { 'content_category_enum': [ 'BEAUTY_FASHION', 'BUSINESS', 'CARS_TRUCKS', 'COMEDY', 'CUTE_ANIMALS', 'ENTERTAINMENT', 'FAMILY', 'FOOD_HEALTH', 'HOME', 'LIFESTYLE', 'MUSIC', 'NEWS', 'POLITICS', 'SCIENCE', 'SPORTS', 'TECHNOLOGY', 'VIDEO_GAMING', 'OTHER', ], 'original_projection_type_enum': [ 'equirectangular', 'cubemap', 'equiangular_cubemap', ], 'swap_mode_enum': [ 'replace', ], 'unpublished_content_type_enum': [ 'SCHEDULED', 'DRAFT', 'ADS_POST', ], 'upload_phase_enum': [ 'start', 'transfer', 'finish', 'cancel', ], } request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/videos', 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 remote_update( self, batch=None, failure=None, files=None, params=None, success=None, api_version=None, ): """Updates the object by calling the API with only the changes recorded. Args: batch (optional): A FacebookAdsApiBatch object. If specified, the call will be added to the batch. params (optional): A mapping of request parameters where a key is the parameter name and its value is a string or an object which can be JSON-encoded. files (optional): An optional mapping of file names to binary open file objects. These files will be attached to the request. success (optional): A callback function which will be called with the FacebookResponse of this call if the call succeeded. failure (optional): A callback function which will be called with the FacebookResponse of this call if the call failed. Returns: self if not a batch call. the return value of batch.add if a batch call. """ params = {} if not params else params.copy() params.update(self.export_changed_data()) self._set_data(params) if hasattr(self, 'api_update'): request = self.api_update(pending=True) else: request = FacebookRequest( node_id=self.get_id_assured(), method='POST', endpoint='/', api=self._api, target_class=self.__class__, response_parser=ObjectParser(reuse_object=self), ) request.add_params(params) request.add_files(files) if batch is not None: def callback_success(response): self._clear_history() if success: success(response) else: request.callback(response) def callback_failure(response): if failure: failure(response) else: request.callback(response) batch_call = batch.add_request( request=request, success=callback_success, failure=callback_failure, ) return batch_call else: request.execute() self._clear_history() return self
def remote_create( self, batch=None, failure=None, files=None, params=None, success=None, api_version=None, ): """Creates the object by calling the API. Args: batch (optional): A FacebookAdsApiBatch object. If specified, the call will be added to the batch. params (optional): A mapping of request parameters where a key is the parameter name and its value is a string or an object which can be JSON-encoded. files (optional): An optional mapping of file names to binary open file objects. These files will be attached to the request. success (optional): A callback function which will be called with the FacebookResponse of this call if the call succeeded. failure (optional): A callback function which will be called with the FacebookResponse of this call if the call failed. Returns: self if not a batch call. the return value of batch.add if a batch call. """ if self.get_id(): raise FacebookBadObjectError( "This %s object was already created." % self.__class__.__name__, ) if not 'get_endpoint' in dir(self): raise TypeError('Cannot create object of type %s.' % self.__class__.__name__) params = {} if not params else params.copy() params.update(self.export_all_data()) request = None if hasattr(self, 'api_create'): request = self.api_create(self.get_parent_id_assured(), pending=True) else: request = FacebookRequest( node_id=self.get_parent_id_assured(), method='POST', endpoint=self.get_endpoint(), api=self._api, target_class=self.__class__, response_parser=ObjectParser(reuse_object=self), ) request.add_params(params) request.add_files(files) if batch is not None: def callback_success(response): self._set_data(response.json()) self._clear_history() if success: success(response) def callback_failure(response): if failure: failure(response) return batch.add_request( request=request, success=callback_success, failure=callback_failure, ) else: response = request.execute() self._set_data(response._json) self._clear_history() return self
def get_insights_async(self, fields=None, params=None, batch=None, pending=False): from facebookads_v2.adobjects.adreportrun import AdReportRun from facebookads_v2.adobjects.adsinsights import AdsInsights param_types = { 'action_attribution_windows': 'list<action_attribution_windows_enum>', 'action_breakdowns': 'list<action_breakdowns_enum>', 'action_report_time': 'action_report_time_enum', 'breakdowns': 'list<breakdowns_enum>', 'date_preset': 'date_preset_enum', 'default_summary': 'bool', 'export_columns': 'list<string>', 'export_format': 'string', 'export_name': 'string', 'fields': 'list<fields_enum>', 'filtering': 'list<Object>', 'level': 'level_enum', 'product_id_limit': 'int', 'sort': 'list<string>', 'summary': 'list<summary_enum>', 'summary_action_breakdowns': 'list<summary_action_breakdowns_enum>', 'time_increment': 'string', 'time_range': 'Object', 'time_ranges': 'list<Object>', 'use_account_attribution_setting': 'bool', } enums = { 'action_attribution_windows_enum': AdsInsights.ActionAttributionWindows.__dict__.values(), 'action_breakdowns_enum': AdsInsights.ActionBreakdowns.__dict__.values(), 'action_report_time_enum': AdsInsights.ActionReportTime.__dict__.values(), 'breakdowns_enum': AdsInsights.Breakdowns.__dict__.values(), 'date_preset_enum': AdsInsights.DatePreset.__dict__.values(), 'summary_enum': AdsInsights.Summary.__dict__.values(), 'level_enum': AdsInsights.Level.__dict__.values(), 'summary_action_breakdowns_enum': AdsInsights.SummaryActionBreakdowns.__dict__.values(), } request = FacebookRequest( node_id=self['id'], method='POST', endpoint='/insights', api=self._api, param_checker=TypeChecker(param_types, enums), target_class=AdReportRun, api_type='EDGE', response_parser=ObjectParser(target_class=AdReportRun, api=self._api), include_summary=False, ) 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()