Esempio n. 1
0
    def create_upload(self,
                      fields=None,
                      params=None,
                      batch=None,
                      pending=False):
        from facebookads.adobjects.productfeedupload import ProductFeedUpload
        self.assure_call()
        param_types = {
            'file': 'file',
            'id': 'string',
            'password': '******',
            '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),
        )
        request.add_params(params)
        request.add_fields(fields)

        if batch is not None:
            request.add_to_batch(batch)
            return request

        return request if pending else request.execute()
Esempio n. 2
0
    def get_keyword_stats(self,
                          fields=None,
                          params=None,
                          batch=None,
                          pending=False):
        from facebookads.adobjects.adkeywordstats import AdKeywordStats
        param_types = {
            'date': 'datetime',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/keywordstats',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdKeywordStats,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AdKeywordStats),
        )
        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()
Esempio n. 3
0
    def get_targeting_sentence_lines(self,
                                     fields=None,
                                     params=None,
                                     batch=None,
                                     pending=False):
        from facebookads.adobjects.targetingsentenceline import TargetingSentenceLine
        param_types = {}
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/targetingsentencelines',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=TargetingSentenceLine,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=TargetingSentenceLine),
        )
        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()
Esempio n. 4
0
    def get_picture(self, fields=None, params=None, batch=None, pending=False):
        from facebookads.adobjects.profilepicturesource import ProfilePictureSource
        param_types = {
            'height': 'int',
            'redirect': 'bool',
            'type': 'type_enum',
            'width': 'int',
        }
        enums = {
            'type_enum': ProfilePictureSource.Type.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/picture',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=ProfilePictureSource,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=ProfilePictureSource),
        )
        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()
Esempio n. 5
0
    def create_ad_label(self,
                        fields=None,
                        params=None,
                        batch=None,
                        pending=False):
        from facebookads.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='POST',
            endpoint='/adlabels',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdLabel,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AdLabel),
        )
        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()
Esempio n. 6
0
    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=ReachFrequencyPrediction,
            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_test_lead(self,
                         fields=None,
                         params=None,
                         batch=None,
                         pending=False):
        param_types = {
            'custom_disclaimer_responses': 'list<Object>',
            'field_data': 'list<Object>',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/test_leads',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=LeadgenForm,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=LeadgenForm,
                                         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_account(self, fields=None, params=None, batch=None, pending=False):
    param_types = {
      'account_id': 'string',
      'auto_track_for_ads': 'bool',
      'business': 'string',
    }
    enums = {
    }
    request = FacebookRequest(
      node_id=self['id'],
      method='POST',
      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)
      return request
    elif pending:
      return request
    else:
      self.assure_call()
      return request.execute()
  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 create_offline_conversion_data_set(self,
                                           fields=None,
                                           params=None,
                                           batch=None,
                                           pending=False):
        from facebookads.adobjects.offlineconversiondataset import OfflineConversionDataSet
        param_types = {
            'auto_assign_to_new_accounts_only': 'bool',
            'description': 'string',
            'enable_auto_assign_to_accounts': 'bool',
            'name': 'string',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/offline_conversion_data_sets',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=OfflineConversionDataSet,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=OfflineConversionDataSet,
                                         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_accounts(self, fields=None, params=None, batch=None, pending=False):
    from facebookads.adobjects.adaccount import AdAccount
    param_types = {
      'business': 'string',
    }
    enums = {
    }
    request = FacebookRequest(
      node_id=self['id'],
      method='GET',
      endpoint='/adaccounts',
      api=self._api,
      param_checker=TypeChecker(param_types, enums),
      target_class=AdAccount,
      api_type='EDGE',
      response_parser=ObjectParser(target_class=AdAccount, 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_offline_conversion_data_sets(self,
                                         fields=None,
                                         params=None,
                                         batch=None,
                                         pending=False):
        from facebookads.adobjects.offlineconversiondataset import OfflineConversionDataSet
        param_types = {}
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/offline_conversion_data_sets',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=OfflineConversionDataSet,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=OfflineConversionDataSet,
                                         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_grp_plans(self,
                      fields=None,
                      params=None,
                      batch=None,
                      pending=False):
        from facebookads.adobjects.reachfrequencyprediction import ReachFrequencyPrediction
        param_types = {
            'status': 'status_enum',
        }
        enums = {
            'status_enum': ReachFrequencyPrediction.Status.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/grp_plans',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=ReachFrequencyPrediction,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=ReachFrequencyPrediction,
                                         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_event_source_group(self,
                                  fields=None,
                                  params=None,
                                  batch=None,
                                  pending=False):
        from facebookads.adobjects.eventsourcegroup import EventSourceGroup
        param_types = {
            'event_sources': 'list<string>',
            'name': 'string',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/event_source_groups',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=EventSourceGroup,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=EventSourceGroup,
                                         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()
Esempio n. 15
0
    def api_update(self, fields=None, params=None, batch=None, pending=False):
        param_types = {
            'variants': 'list<Object>',
        }
        enums = {
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=ProductGroup,
            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 get_uploads(self, fields=None, params=None, batch=None, pending=False):
    param_types = {
      'upload_tag': 'string',
    }
    enums = {
    }
    request = FacebookRequest(
      node_id=self['id'],
      method='GET',
      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)
      return request
    elif pending:
      return request
    else:
      self.assure_call()
      return request.execute()
Esempio n. 17
0
    def get_requests(self,
                     fields=None,
                     params=None,
                     batch=None,
                     pending=False):
        from facebookads.adobjects.adasyncrequest import AdAsyncRequest
        param_types = {
            'statuses': 'list<statuses_enum>',
        }
        enums = {
            'statuses_enum': AdAsyncRequest.Statuses.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/requests',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdAsyncRequest,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AdAsyncRequest,
                                         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()
Esempio n. 18
0
    def get_products(self, fields=None, params=None, batch=None, pending=False):
        from facebookads.adobjects.productitem import ProductItem
        param_types = {
        }
        enums = {
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/products',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=ProductItem,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=ProductItem),
        )
        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()
Esempio n. 19
0
    def api_update(self, fields=None, params=None, batch=None, pending=False):
        self.assure_call()
        param_types = {
            'default_currency': 'string',
            'deletion_enabled': 'bool',
            'delimiter': 'delimiter_enum',
            'encoding': 'encoding_enum',
            'id': 'string',
            'name': 'string',
            'quoted_fields': 'bool',
            'schedule': 'string',
        }
        enums = {
            'delimiter_enum': ProductFeed.Delimiter.__dict__.values(),
            'encoding_enum': ProductFeed.Encoding.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AbstractCrudObject,
            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

        return request if pending else request.execute()
Esempio n. 20
0
    def get_insights_async(self, fields=None, params=None, batch=None, pending=False):
        from facebookads.adobjects.adreportrun import AdReportRun
        from facebookads.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()
Esempio n. 21
0
    def api_update(self, fields=None, params=None, batch=None, pending=False):
        param_types = {
            'account_id': 'string',
            'adlabels': 'list<Object>',
            'adset_schedule': 'list<Object>',
            'attribution_spec': 'list<map>',
            'bid_amount': 'int',
            'billing_event': 'billing_event_enum',
            '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>',
            'is_autobid': 'bool',
            'is_average_price_pacing': 'bool',
            'lifetime_budget': 'unsigned int',
            'lifetime_imps': 'unsigned int',
            'name': 'string',
            'optimization_goal': 'optimization_goal_enum',
            'pacing_type': 'list<string>',
            'promoted_object': 'Object',
            'redownload': 'bool',
            'rf_prediction_id': 'string',
            'start_time': 'datetime',
            'status': 'status_enum',
            'targeting': 'Targeting',
            'time_based_ad_rotation_id_blocks': 'list<list<unsigned int>>',
            'time_based_ad_rotation_intervals': 'list<unsigned int>',
        }
        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(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdSet,
            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 get_activities(self,
                       fields=None,
                       params=None,
                       batch=None,
                       pending=False):
        param_types = {
            'business_id': 'string',
            'end_time': 'datetime',
            'event_type': 'event_type_enum',
            'start_time': 'datetime',
        }
        enums = {
            'event_type_enum': [
                'dataset_assign_to_adacct',
                'dataset_autotrack_on_adacct',
                'dataset_disable_autotrack_on_adacct',
                'dataset_unassign_from_adacct',
                'add_dataset_to_business',
                'add_user_to_dataset',
                'remove_user_from_dataset',
                'update_user_role_on_dataset',
                'create_custom_conversion',
                'update_custom_conversion',
                'create_custom_audience',
                'share_custom_audience',
                'unshare_custom_audience',
            ],
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/activities',
            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_product_feed(self,
                            fields=None,
                            params=None,
                            batch=None,
                            pending=False):
        from facebookads.adobjects.productfeed import ProductFeed
        param_types = {
            'country': 'string',
            'default_currency': 'string',
            'deletion_enabled': 'bool',
            'delimiter': 'delimiter_enum',
            'encoding': 'encoding_enum',
            'file_name': 'string',
            'name': 'string',
            'quoted_fields_mode': 'quoted_fields_mode_enum',
            'rules': 'list<string>',
            'schedule': 'string',
            'update_schedule': 'string',
        }
        enums = {
            'delimiter_enum':
            ProductFeed.Delimiter.__dict__.values(),
            'encoding_enum':
            ProductFeed.Encoding.__dict__.values(),
            'quoted_fields_mode_enum':
            ProductFeed.QuotedFieldsMode.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/product_feeds',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=ProductFeed,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=ProductFeed,
                                         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()
Esempio n. 24
0
 def __init__(
     self,
     node_id,
     method,
     endpoint,
     api=None,
     param_checker=TypeChecker({}, {}),
     target_class=None,
     api_type=None,
     allow_file_upload=False,
     response_parser=None,
     include_summary=True,
     api_version=None,
 ):
     """
     Args:
         node_id: The node id to perform the api call.
         method: The HTTP method of the call.
         endpoint: The edge of the api call.
         api (optional): The FacebookAdsApi object.
         param_checker (optional): Parameter checker.
         target_class (optional): The return class of the api call.
         api_type (optional): NODE or EDGE type of the call.
         allow_file_upload (optional): Whether the call allows upload.
         response_parser (optional): An ObjectParser to parse response.
         include_summary (optional): Include "summary".
         api_version (optional): API version.
     """
     self._api = api or FacebookAdsApi.get_default_api()
     self._node_id = node_id
     self._method = method
     self._endpoint = endpoint.replace('/', '')
     self._path = (node_id, endpoint.replace('/', ''))
     self._param_checker = param_checker
     self._target_class = target_class
     self._api_type = api_type
     self._allow_file_upload = allow_file_upload
     self._response_parser = response_parser
     self._include_summary = include_summary
     self._api_version = api_version
     self._params = {}
     self._fields = []
     self._response = None
     self._file_params = {}
     self._file_counter = 0
     self._accepted_fields = []
     if target_class is not None:
         self._accepted_fields = target_class.Field.__dict__.values()
    def create_home_listing(self,
                            fields=None,
                            params=None,
                            batch=None,
                            pending=False):
        param_types = {
            'address': 'Object',
            'availability': 'string',
            'currency': 'string',
            'description': 'string',
            'home_listing_id': 'string',
            'images': 'list<Object>',
            'listing_type': 'string',
            'name': 'string',
            'num_baths': 'float',
            'num_beds': 'float',
            'num_units': 'float',
            'price': 'float',
            'property_type': 'string',
            'url': 'string',
            'year_built': 'unsigned int',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/home_listings',
            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()
Esempio n. 26
0
    def create_ad_account_creation_request(self,
                                           fields=None,
                                           params=None,
                                           batch=None,
                                           pending=False):
        param_types = {
            'account_type': 'string',
            'additional_comment': 'string',
            'address_in_chinese': 'string',
            'address_in_english': 'Object',
            'billing_party_name': 'string',
            'business_registration': 'file',
            'business_registration_id': 'unsigned int',
            'chinese_legal_entity_name': 'string',
            'contact': 'Object',
            'currency': 'string',
            'english_legal_entity_name': 'string',
            'fb_page_url': 'string',
            'fb_sales_rep_email': 'string',
            'has_planning_agency': 'bool',
            'is_targeting_outside_china': 'bool',
            'planning_agency_name': 'string',
        }
        enums = {}
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/adaccountcreationrequests',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AbstractCrudObject,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AbstractCrudObject),
        )
        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_user_permission(self,
                               fields=None,
                               params=None,
                               batch=None,
                               pending=False):
        param_types = {
            'email': 'string',
            'id': 'string',
            'role': 'role_enum',
            'user': '******',
        }
        enums = {
            'role_enum': [
                'ADMIN',
                'EMPLOYEE',
                'SYSTEM_USER',
                'ADMIN_SYSTEM_USER',
                'INSTAGRAM_ADMIN',
                'INSTAGRAM_EMPLOYEE',
                'FB_EMPLOYEE_ACCOUNT_MANAGER',
                'FB_EMPLOYEE_SALES_REP',
            ],
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/userpermissions',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AbstractCrudObject,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AbstractCrudObject),
        )
        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()
Esempio n. 28
0
    def create_ad_study(self,
                        fields=None,
                        params=None,
                        batch=None,
                        pending=False):
        from facebookads.adobjects.adstudy import AdStudy
        param_types = {
            'cells': 'list<Object>',
            'confidence_level': 'float',
            'cooldown_start_time': 'int',
            'description': 'string',
            'end_time': 'int',
            'name': 'string',
            'objectives': 'list<Object>',
            'observation_end_time': 'int',
            'start_time': 'int',
            'type': 'type_enum',
            'viewers': 'list<int>',
        }
        enums = {
            'type_enum': AdStudy.Type.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/ad_studies',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdStudy,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AdStudy),
        )
        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()
Esempio n. 29
0
    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',
            'place_page_id': 'int',
            'post': 'Object',
            'product_item_ids': 'list<string>',
            'start_date': 'datetime',
            'width': 'unsigned int',
        }
        enums = {
            'ad_format_enum': AdPreview.AdFormat.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='GET',
            endpoint='/previews',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AdPreview,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AdPreview,
                                         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_businesse(self,
                         fields=None,
                         params=None,
                         batch=None,
                         pending=False):
        from facebookads.adobjects.business import Business
        self.assure_call()
        param_types = {
            'id': 'int',
            'name': 'string',
            'primary_page': 'string',
            'sales_rep_email': 'string',
            'survey_business_type': 'survey_business_type_enum',
            'survey_num_assets': 'unsigned int',
            'survey_num_people': 'unsigned int',
            'timezone_id': 'unsigned int',
            'vertical': 'vertical_enum',
        }
        enums = {
            'survey_business_type_enum':
            Business.SurveyBusinessType.__dict__.values(),
            'vertical_enum':
            Business.Vertical.__dict__.values(),
        }
        request = FacebookRequest(
            node_id=self['id'],
            method='POST',
            endpoint='/businesses',
            api=self._api,
            param_checker=TypeChecker(param_types, enums),
            target_class=AbstractCrudObject,
            api_type='EDGE',
            response_parser=ObjectParser(target_class=AbstractCrudObject),
        )
        request.add_params(params)
        request.add_fields(fields)

        if batch is not None:
            request.add_to_batch(batch)
            return request

        return request if pending else request.execute()