From bfea2cc94565283476ed689889486f9fa305d604 Mon Sep 17 00:00:00 2001 From: Neil Chen Date: Tue, 18 Jul 2017 14:11:11 -0700 Subject: [PATCH] Ads SDK v2.10 Release --- src/FacebookAds/AnonymousSession.php | 35 +++++++++++ src/FacebookAds/Api.php | 23 ++++++-- src/FacebookAds/ApiConfig.php | 4 +- .../Http/Exception/RequestException.php | 12 ++-- src/FacebookAds/Http/ResponseInterface.php | 2 +- src/FacebookAds/Object/Ad.php | 2 + src/FacebookAds/Object/AdAccount.php | 47 ++++----------- .../Object/AdAccountDeliveryEstimate.php | 59 +++++++++++++++++++ .../Object/AdCampaignDeliveryEstimate.php | 59 +++++++++++++++++++ src/FacebookAds/Object/AdSet.php | 39 +++++++++++- src/FacebookAds/Object/AdStudy.php | 3 +- src/FacebookAds/Object/AdsPixel.php | 1 + src/FacebookAds/Object/Business.php | 10 ++-- src/FacebookAds/Object/Campaign.php | 31 ++++++++++ .../Object/CheckBatchRequestStatus.php | 57 ++++++++++++++++++ src/FacebookAds/Object/CustomConversion.php | 48 +++++++++++++++ .../AdAccountDeliveryEstimateFields.php | 55 +++++++++++++++++ .../Object/Fields/AdAccountFields.php | 4 ++ .../Object/Fields/AdAsyncRequestFields.php | 2 + .../AdCampaignDeliveryEstimateFields.php | 55 +++++++++++++++++ .../Fields/AdCreativeLinkDataFields.php | 4 ++ .../Fields/AdCreativeVideoDataFields.php | 4 ++ src/FacebookAds/Object/Fields/AdFields.php | 4 ++ .../Object/Fields/AdImageFields.php | 4 +- .../Object/Fields/AdReportRunFields.php | 2 + src/FacebookAds/Object/Fields/AdSetFields.php | 4 ++ .../Object/Fields/AdStudyObjectiveFields.php | 2 + .../Object/Fields/AdsActionStatsFields.php | 2 + .../Object/Fields/AdsImageCropsFields.php | 2 + .../Object/Fields/AdsInsightsFields.php | 52 +++++----------- .../Object/Fields/AdsPixelFields.php | 2 + .../Object/Fields/AdsPixelStatsFields.php | 2 + .../Object/Fields/BusinessFields.php | 4 ++ .../Object/Fields/CampaignFields.php | 4 ++ .../Fields/CheckBatchRequestStatusFields.php | 53 +++++++++++++++++ src/FacebookAds/Object/Fields/EventFields.php | 8 +++ .../Object/Fields/LeadGenQuestionFields.php | 6 ++ .../Object/Fields/LeadgenFormFields.php | 2 + .../Object/Fields/ProductCatalogFields.php | 4 ++ .../Object/Fields/ProductFeedFields.php | 4 ++ .../Fields/ProductFeedScheduleFields.php | 2 + .../Object/Fields/ProductItemFields.php | 2 +- .../Fields/ReachFrequencyPredictionFields.php | 2 +- .../Fields/ReachFrequencySpecFields.php | 2 + .../Object/Fields/TargetingFields.php | 4 +- .../Object/Fields/TransactionFields.php | 2 + src/FacebookAds/Object/ProductCatalog.php | 31 +++++++++- src/FacebookAds/Object/ProductGroup.php | 2 +- src/FacebookAds/Object/ProductItem.php | 2 +- src/FacebookAds/Object/User.php | 3 + ...DeliveryEstimateOptimizationGoalValues.php | 59 +++++++++++++++++++ ...AccountTargetingUnifiedLimitTypeValues.php | 7 ++- ...DeliveryEstimateOptimizationGoalValues.php | 59 +++++++++++++++++++ .../AdCreativeCallToActionTypeValues.php | 1 + ...CreativeLinkDataCallToActionTypeValues.php | 1 + .../Object/Values/AdPreviewAdFormatValues.php | 2 + .../Object/Values/AdSetBillingEventValues.php | 1 + .../Values/AdSetOptimizationGoalValues.php | 1 + .../AdsInsightsActionBreakdownsValues.php | 1 + ...sInsightsSummaryActionBreakdownsValues.php | 1 + .../CustomAudienceClaimObjectiveValues.php | 1 + .../CustomAudienceContentTypeValues.php | 3 +- .../CustomAudienceDataSourceSubTypeValues.php | 1 + .../CustomAudienceDataSourceTypeValues.php | 1 + .../Values/CustomAudienceFieldsValues.php | 1 + .../Values/CustomAudienceSubtypeValues.php | 1 + .../CustomConversionCustomEventTypeValues.php | 2 +- .../Values/ProductItemReviewStatusValues.php | 1 + .../Values/ReachEstimateOptimizeForValues.php | 1 + src/FacebookAds/Session.php | 12 +++- src/FacebookAds/SessionInterface.php | 33 +++++++++++ 71 files changed, 853 insertions(+), 106 deletions(-) create mode 100644 src/FacebookAds/AnonymousSession.php create mode 100644 src/FacebookAds/Object/AdAccountDeliveryEstimate.php create mode 100644 src/FacebookAds/Object/AdCampaignDeliveryEstimate.php create mode 100644 src/FacebookAds/Object/CheckBatchRequestStatus.php create mode 100644 src/FacebookAds/Object/Fields/AdAccountDeliveryEstimateFields.php create mode 100644 src/FacebookAds/Object/Fields/AdCampaignDeliveryEstimateFields.php create mode 100644 src/FacebookAds/Object/Fields/CheckBatchRequestStatusFields.php create mode 100644 src/FacebookAds/Object/Values/AdAccountDeliveryEstimateOptimizationGoalValues.php create mode 100644 src/FacebookAds/Object/Values/AdCampaignDeliveryEstimateOptimizationGoalValues.php create mode 100644 src/FacebookAds/SessionInterface.php diff --git a/src/FacebookAds/AnonymousSession.php b/src/FacebookAds/AnonymousSession.php new file mode 100644 index 000000000..0fd0bfe68 --- /dev/null +++ b/src/FacebookAds/AnonymousSession.php @@ -0,0 +1,35 @@ +httpClient = $http_client; $this->session = $session; } @@ -101,6 +101,17 @@ public static function setInstance(Api $instance) { static::$instance = $instance; } + /** + * @param SessionInterface $session + * @return Api + */ + public function getCopyWithSession(SessionInterface $session) { + $api = new self($this->getHttpClient(), $session); + $api->setDefaultGraphVersion($this->getDefaultGraphVersion()); + $api->setLogger($this->getLogger()); + return $api; + } + /** * @param string $string * @return string @@ -136,8 +147,8 @@ public function prepareRequest( if (!empty($params)) { $params_ref->enhance($params); } - $params_ref['access_token'] = $this->getSession()->getAccessToken(); - $params_ref['appsecret_proof'] = $this->getSession()->getAppSecretProof(); + + $params_ref->enhance($this->getSession()->getRequestParameters()); return $request; } @@ -194,7 +205,7 @@ public function call( } /** - * @return Session + * @return SessionInterface */ public function getSession() { return $this->session; diff --git a/src/FacebookAds/ApiConfig.php b/src/FacebookAds/ApiConfig.php index 4eccdc785..0190d9f5d 100644 --- a/src/FacebookAds/ApiConfig.php +++ b/src/FacebookAds/ApiConfig.php @@ -23,7 +23,7 @@ */ namespace FacebookAds; class ApiConfig { - const APIVersion = '2.9'; - const SDKVersion = '2.9.2'; + const APIVersion = '2.10'; + const SDKVersion = '2.10.1'; const TYPE_CHECKER_STRICT_MODE = false; } diff --git a/src/FacebookAds/Http/Exception/RequestException.php b/src/FacebookAds/Http/Exception/RequestException.php index a4ef0c0ab..faa95fd53 100644 --- a/src/FacebookAds/Http/Exception/RequestException.php +++ b/src/FacebookAds/Http/Exception/RequestException.php @@ -74,7 +74,7 @@ class RequestException extends Exception { */ public function __construct(ResponseInterface $response) { $this->response = $response; - $error_data = static::getErrorData($response->getContent()); + $error_data = static::getErrorData($response); parent::__construct($error_data['message'], $error_data['code']); @@ -104,10 +104,14 @@ protected static function idx(array $array, $key, $default = null) { } /** - * @param array $response_data + * @param ResponseInterface $response * @return array */ - protected static function getErrorData(array $response_data) { + protected static function getErrorData(ResponseInterface $response) { + $response_data = $response->getContent(); + if (is_null($response_data)) { + $response_data = array(); + } $error_data = static::idx($response_data, 'error', array()); return array( @@ -131,7 +135,7 @@ protected static function getErrorData(array $response_data) { * @return RequestException */ public static function create(ResponseInterface $response) { - $error_data = static::getErrorData($response->getContent()); + $error_data = static::getErrorData($response); if (in_array( $error_data['error_subcode'], array(458, 459, 460, 463, 464, 467)) || in_array($error_data['code'], array(100, 102, 190)) diff --git a/src/FacebookAds/Http/ResponseInterface.php b/src/FacebookAds/Http/ResponseInterface.php index 23f0c5a1c..09b4748be 100644 --- a/src/FacebookAds/Http/ResponseInterface.php +++ b/src/FacebookAds/Http/ResponseInterface.php @@ -67,7 +67,7 @@ public function getBody(); public function setBody($body); /** - * @return array + * @return array|null */ public function getContent(); } diff --git a/src/FacebookAds/Object/Ad.php b/src/FacebookAds/Object/Ad.php index e37be6a47..c16149652 100644 --- a/src/FacebookAds/Object/Ad.php +++ b/src/FacebookAds/Object/Ad.php @@ -187,6 +187,7 @@ public function getInsights(array $fields = array(), array $params = array(), $p 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), @@ -237,6 +238,7 @@ public function getInsightsAsync(array $fields = array(), array $params = array( 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), diff --git a/src/FacebookAds/Object/AdAccount.php b/src/FacebookAds/Object/AdAccount.php index 951238773..63742d463 100644 --- a/src/FacebookAds/Object/AdAccount.php +++ b/src/FacebookAds/Object/AdAccount.php @@ -30,6 +30,7 @@ use FacebookAds\TypeChecker; use FacebookAds\Object\Fields\AdAccountFields; use FacebookAds\Object\Values\AdAccountAccessTypeValues; +use FacebookAds\Object\Values\AdAccountDeliveryEstimateOptimizationGoalValues; use FacebookAds\Object\Values\AdAccountPermittedRolesValues; use FacebookAds\Object\Values\AdAccountRoasFieldsValues; use FacebookAds\Object\Values\AdAccountTargetingUnifiedLimitTypeValues; @@ -349,9 +350,9 @@ public function createAdImage(array $fields = array(), array $params = array(), $this->assureId(); $param_types = array( - 'bytes' => 'string', + 'bytes' => 'Object', 'copy_from' => 'Object', - 'zipbytes' => 'string', + 'zipbytes' => 'Object', ); $enums = array( ); @@ -617,7 +618,6 @@ public function createAdSet(array $fields = array(), array $params = array(), $p 'promoted_object' => 'Object', 'redownload' => 'bool', 'rf_prediction_id' => 'string', - 'rtb_flag' => 'bool', 'start_time' => 'datetime', 'status' => 'status_enum', 'targeting' => 'Targeting', @@ -783,6 +783,7 @@ public function createAdVideo(array $fields = array(), array $params = array(), 'og_object_id' => 'string', 'og_phrase' => 'string', 'og_suggestion_mechanism' => 'string', + 'original_fov' => 'unsigned int', 'original_projection_type' => 'original_projection_type_enum', 'referenced_sticker_id' => 'string', 'slideshow_spec' => 'map', @@ -962,7 +963,6 @@ public function getCampaigns(array $fields = array(), array $params = array(), $ $this->assureId(); $param_types = array( - 'ad_draft_id' => 'string', 'date_preset' => 'date_preset_enum', 'effective_status' => 'list', 'is_completed' => 'bool', @@ -1148,13 +1148,11 @@ public function createCustomConversion(array $fields = array(), array $params = $this->assureId(); $param_types = array( - 'aggregation_rule' => 'string', 'custom_event_type' => 'custom_event_type_enum', 'default_conversion_value' => 'float', 'description' => 'string', 'event_source_id' => 'string', 'name' => 'string', - 'retention_days' => 'int', 'rule' => 'string', ); $enums = array( @@ -1180,11 +1178,12 @@ public function getDeliveryEstimate(array $fields = array(), array $params = arr $this->assureId(); $param_types = array( - 'optimization_goal' => 'adaccountdelivery_estimate_optimization_goal_enum_param', + 'optimization_goal' => 'optimization_goal_enum', 'promoted_object' => 'Object', 'targeting_spec' => 'Targeting', ); $enums = array( + 'optimization_goal_enum' => AdAccountDeliveryEstimateOptimizationGoalValues::getInstance()->getValues(), ); $request = new ApiRequest( @@ -1192,9 +1191,9 @@ public function getDeliveryEstimate(array $fields = array(), array $params = arr $this->data['id'], RequestInterface::METHOD_GET, '/delivery_estimate', - new DeliveryEstimate(), + new AdAccountDeliveryEstimate(), 'EDGE', - DeliveryEstimate::getFieldsEnum()->getValues(), + AdAccountDeliveryEstimate::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums) ); $request->addParams($params); @@ -1259,6 +1258,7 @@ public function getInsights(array $fields = array(), array $params = array(), $p 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), @@ -1309,6 +1309,7 @@ public function getInsightsAsync(array $fields = array(), array $params = array( 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), @@ -1430,32 +1431,6 @@ public function getOfflineConversionDataSets(array $fields = array(), array $par return $pending ? $request : $request->execute(); } - public function createOfflineConversion(array $fields = array(), array $params = array(), $pending = false) { - $this->assureId(); - - $param_types = array( - 'event' => 'string', - 'payload' => 'list', - 'pixel_id' => 'string', - ); - $enums = array( - ); - - $request = new ApiRequest( - $this->api, - $this->data['id'], - RequestInterface::METHOD_POST, - '/offlineconversions', - new AbstractCrudObject(), - 'EDGE', - array(), - new TypeChecker($param_types, $enums) - ); - $request->addParams($params); - $request->addFields($fields); - return $pending ? $request : $request->execute(); - } - public function getOffsitePixels(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); @@ -1586,6 +1561,7 @@ public function createProductAudience(array $fields = array(), array $params = a 'DATA_SET', 'BAG_OF_ACCOUNTS', 'STUDY_RULE_AUDIENCE', + 'FOX', ), ); @@ -2048,6 +2024,7 @@ public function updateSelf(array $fields = array(), array $params = array(), $pe $param_types = array( 'agency_client_declaration' => 'map', + 'attribution_spec' => 'list', 'business_info' => 'map', 'end_advertiser' => 'string', 'is_notifications_enabled' => 'bool', diff --git a/src/FacebookAds/Object/AdAccountDeliveryEstimate.php b/src/FacebookAds/Object/AdAccountDeliveryEstimate.php new file mode 100644 index 000000000..d97e447d8 --- /dev/null +++ b/src/FacebookAds/Object/AdAccountDeliveryEstimate.php @@ -0,0 +1,59 @@ +getValues(); + return $ref_enums; + } + + +} diff --git a/src/FacebookAds/Object/AdCampaignDeliveryEstimate.php b/src/FacebookAds/Object/AdCampaignDeliveryEstimate.php new file mode 100644 index 000000000..ff0557bdf --- /dev/null +++ b/src/FacebookAds/Object/AdCampaignDeliveryEstimate.php @@ -0,0 +1,59 @@ +getValues(); + return $ref_enums; + } + + +} diff --git a/src/FacebookAds/Object/AdSet.php b/src/FacebookAds/Object/AdSet.php index 965d1389b..d1fffffa5 100644 --- a/src/FacebookAds/Object/AdSet.php +++ b/src/FacebookAds/Object/AdSet.php @@ -31,6 +31,7 @@ use FacebookAds\Object\Fields\AdSetFields; use FacebookAds\Object\Values\AdActivityCategoryValues; use FacebookAds\Object\Values\AdAsyncRequestStatusesValues; +use FacebookAds\Object\Values\AdCampaignDeliveryEstimateOptimizationGoalValues; use FacebookAds\Object\Values\AdDatePresetValues; use FacebookAds\Object\Values\AdLabelExecutionOptionsValues; use FacebookAds\Object\Values\AdSetBillingEventValues; @@ -254,15 +255,45 @@ public function getAsyncAdRequests(array $fields = array(), array $params = arra return $pending ? $request : $request->execute(); } + public function getCopies(array $fields = array(), array $params = array(), $pending = false) { + $this->assureId(); + + $param_types = array( + 'date_preset' => 'date_preset_enum', + 'effective_status' => 'list', + 'is_completed' => 'bool', + 'time_range' => 'Object', + ); + $enums = array( + 'date_preset_enum' => AdSetDatePresetValues::getInstance()->getValues(), + 'effective_status_enum' => AdSetEffectiveStatusValues::getInstance()->getValues(), + ); + + $request = new ApiRequest( + $this->api, + $this->data['id'], + RequestInterface::METHOD_GET, + '/copies', + new AdSet(), + 'EDGE', + AdSet::getFieldsEnum()->getValues(), + new TypeChecker($param_types, $enums) + ); + $request->addParams($params); + $request->addFields($fields); + return $pending ? $request : $request->execute(); + } + public function getDeliveryEstimate(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); $param_types = array( - 'optimization_goal' => 'adcampaigndelivery_estimate_optimization_goal_enum_param', + 'optimization_goal' => 'optimization_goal_enum', 'promoted_object' => 'Object', 'targeting_spec' => 'Targeting', ); $enums = array( + 'optimization_goal_enum' => AdCampaignDeliveryEstimateOptimizationGoalValues::getInstance()->getValues(), ); $request = new ApiRequest( @@ -270,9 +301,9 @@ public function getDeliveryEstimate(array $fields = array(), array $params = arr $this->data['id'], RequestInterface::METHOD_GET, '/delivery_estimate', - new DeliveryEstimate(), + new AdCampaignDeliveryEstimate(), 'EDGE', - DeliveryEstimate::getFieldsEnum()->getValues(), + AdCampaignDeliveryEstimate::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums) ); $request->addParams($params); @@ -303,6 +334,7 @@ public function getInsights(array $fields = array(), array $params = array(), $p 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), @@ -353,6 +385,7 @@ public function getInsightsAsync(array $fields = array(), array $params = array( 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), diff --git a/src/FacebookAds/Object/AdStudy.php b/src/FacebookAds/Object/AdStudy.php index 4df12dc1f..244f36efe 100644 --- a/src/FacebookAds/Object/AdStudy.php +++ b/src/FacebookAds/Object/AdStudy.php @@ -70,9 +70,10 @@ public function createObjective(array $fields = array(), array $params = array() $param_types = array( 'adspixels' => 'list', 'applications' => 'list', + 'customconversions' => 'list', 'is_primary' => 'bool', 'name' => 'string', - 'offlinefeeds' => 'list', + 'offline_conversion_data_sets' => 'list', 'offsitepixels' => 'list', 'type' => 'type_enum', ); diff --git a/src/FacebookAds/Object/AdsPixel.php b/src/FacebookAds/Object/AdsPixel.php index 0ec4ace73..adc9d3397 100644 --- a/src/FacebookAds/Object/AdsPixel.php +++ b/src/FacebookAds/Object/AdsPixel.php @@ -66,6 +66,7 @@ public function getAudiences(array $fields = array(), array $params = array(), $ $this->assureId(); $param_types = array( + 'ad_account' => 'string', ); $enums = array( ); diff --git a/src/FacebookAds/Object/Business.php b/src/FacebookAds/Object/Business.php index 3c39d4014..f89335726 100644 --- a/src/FacebookAds/Object/Business.php +++ b/src/FacebookAds/Object/Business.php @@ -99,6 +99,7 @@ public function createAdAccount(array $fields = array(), array $params = array() $this->assureId(); $param_types = array( + 'billing_address_id' => 'string', 'currency' => 'string', 'end_advertiser' => 'Object', 'funding_id' => 'string', @@ -798,6 +799,7 @@ public function createProductCatalog(array $fields = array(), array $params = ar $param_types = array( 'da_display_settings' => 'Object', + 'flight_catalog_settings' => 'map', 'name' => 'string', 'vertical' => 'vertical_enum', ); @@ -901,13 +903,11 @@ public function createUserPermission(array $fields = array(), array $params = ar ); $enums = array( 'role_enum' => array( + 'FINANCE_EDITOR', + 'FINANCE_ANALYST', + 'ADS_RIGHTS_REVIEWER', 'ADMIN', 'EMPLOYEE', - 'SYSTEM_USER', - 'ADMIN_SYSTEM_USER', - 'INSTAGRAM_ADMIN', - 'INSTAGRAM_EMPLOYEE', - 'FB_EMPLOYEE_ACCOUNT_MANAGER', 'FB_EMPLOYEE_SALES_REP', ), ); diff --git a/src/FacebookAds/Object/Campaign.php b/src/FacebookAds/Object/Campaign.php index f9f72743d..ec10a41bd 100644 --- a/src/FacebookAds/Object/Campaign.php +++ b/src/FacebookAds/Object/Campaign.php @@ -206,6 +206,35 @@ public function getAdSets(array $fields = array(), array $params = array(), $pen return $pending ? $request : $request->execute(); } + public function getCopies(array $fields = array(), array $params = array(), $pending = false) { + $this->assureId(); + + $param_types = array( + 'date_preset' => 'date_preset_enum', + 'effective_status' => 'list', + 'is_completed' => 'bool', + 'time_range' => 'Object', + ); + $enums = array( + 'date_preset_enum' => CampaignDatePresetValues::getInstance()->getValues(), + 'effective_status_enum' => CampaignEffectiveStatusValues::getInstance()->getValues(), + ); + + $request = new ApiRequest( + $this->api, + $this->data['id'], + RequestInterface::METHOD_GET, + '/copies', + new Campaign(), + 'EDGE', + Campaign::getFieldsEnum()->getValues(), + new TypeChecker($param_types, $enums) + ); + $request->addParams($params); + $request->addFields($fields); + return $pending ? $request : $request->execute(); + } + public function getInsights(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); @@ -229,6 +258,7 @@ public function getInsights(array $fields = array(), array $params = array(), $p 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), @@ -279,6 +309,7 @@ public function getInsightsAsync(array $fields = array(), array $params = array( 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); $enums = array( 'action_attribution_windows_enum' => AdsInsightsActionAttributionWindowsValues::getInstance()->getValues(), diff --git a/src/FacebookAds/Object/CheckBatchRequestStatus.php b/src/FacebookAds/Object/CheckBatchRequestStatus.php new file mode 100644 index 000000000..9b1f7d1d4 --- /dev/null +++ b/src/FacebookAds/Object/CheckBatchRequestStatus.php @@ -0,0 +1,57 @@ +execute(); } + public function deleteSharedAgencies(array $fields = array(), array $params = array(), $pending = false) { + $this->assureId(); + + $param_types = array( + 'business' => 'string', + ); + $enums = array( + ); + + $request = new ApiRequest( + $this->api, + $this->data['id'], + RequestInterface::METHOD_DELETE, + '/shared_agencies', + new AbstractCrudObject(), + 'EDGE', + array(), + new TypeChecker($param_types, $enums) + ); + $request->addParams($params); + $request->addFields($fields); + return $pending ? $request : $request->execute(); + } + + public function createSharedAgency(array $fields = array(), array $params = array(), $pending = false) { + $this->assureId(); + + $param_types = array( + 'business' => 'string', + ); + $enums = array( + ); + + $request = new ApiRequest( + $this->api, + $this->data['id'], + RequestInterface::METHOD_POST, + '/shared_agencies', + new CustomConversion(), + 'EDGE', + CustomConversion::getFieldsEnum()->getValues(), + new TypeChecker($param_types, $enums) + ); + $request->addParams($params); + $request->addFields($fields); + return $pending ? $request : $request->execute(); + } + public function getStats(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); diff --git a/src/FacebookAds/Object/Fields/AdAccountDeliveryEstimateFields.php b/src/FacebookAds/Object/Fields/AdAccountDeliveryEstimateFields.php new file mode 100644 index 000000000..88a013737 --- /dev/null +++ b/src/FacebookAds/Object/Fields/AdAccountDeliveryEstimateFields.php @@ -0,0 +1,55 @@ + 'Object', + 'daily_outcomes_curve' => 'list', + 'estimate_dau' => 'Object', + 'estimate_mau' => 'Object', + 'estimate_ready' => 'bool', + ); + } +} diff --git a/src/FacebookAds/Object/Fields/AdAccountFields.php b/src/FacebookAds/Object/Fields/AdAccountFields.php index b7d46aeb5..b63fb9313 100644 --- a/src/FacebookAds/Object/Fields/AdAccountFields.php +++ b/src/FacebookAds/Object/Fields/AdAccountFields.php @@ -42,6 +42,7 @@ class AdAccountFields extends AbstractEnum { const AGE = 'age'; const AGENCY_CLIENT_DECLARATION = 'agency_client_declaration'; const AMOUNT_SPENT = 'amount_spent'; + const ATTRIBUTION_SPEC = 'attribution_spec'; const BALANCE = 'balance'; const BUSINESS = 'business'; const BUSINESS_CITY = 'business_city'; @@ -63,6 +64,7 @@ class AdAccountFields extends AbstractEnum { const HAS_MIGRATED_PERMISSIONS = 'has_migrated_permissions'; const ID = 'id'; const IO_NUMBER = 'io_number'; + const IS_ATTRIBUTION_SPEC_SYSTEM_DEFAULT = 'is_attribution_spec_system_default'; const IS_NOTIFICATIONS_ENABLED = 'is_notifications_enabled'; const IS_PERSONAL = 'is_personal'; const IS_PREPAY_ACCOUNT = 'is_prepay_account'; @@ -95,6 +97,7 @@ public function getFieldTypes() { 'age' => 'float', 'agency_client_declaration' => 'AgencyClientDeclaration', 'amount_spent' => 'string', + 'attribution_spec' => 'list', 'balance' => 'string', 'business' => 'Business', 'business_city' => 'string', @@ -116,6 +119,7 @@ public function getFieldTypes() { 'has_migrated_permissions' => 'bool', 'id' => 'string', 'io_number' => 'string', + 'is_attribution_spec_system_default' => 'bool', 'is_notifications_enabled' => 'bool', 'is_personal' => 'unsigned int', 'is_prepay_account' => 'bool', diff --git a/src/FacebookAds/Object/Fields/AdAsyncRequestFields.php b/src/FacebookAds/Object/Fields/AdAsyncRequestFields.php index d639edf98..c8460f5f5 100644 --- a/src/FacebookAds/Object/Fields/AdAsyncRequestFields.php +++ b/src/FacebookAds/Object/Fields/AdAsyncRequestFields.php @@ -44,6 +44,7 @@ class AdAsyncRequestFields extends AbstractEnum { const RESULT = 'result'; const SCOPE_OBJECT_ID = 'scope_object_id'; const STATUS = 'status'; + const TYPE = 'type'; const UPDATED_TIME = 'updated_time'; public function getFieldTypes() { @@ -55,6 +56,7 @@ public function getFieldTypes() { 'result' => 'map', 'scope_object_id' => 'string', 'status' => 'Status', + 'type' => 'string', 'updated_time' => 'datetime', ); } diff --git a/src/FacebookAds/Object/Fields/AdCampaignDeliveryEstimateFields.php b/src/FacebookAds/Object/Fields/AdCampaignDeliveryEstimateFields.php new file mode 100644 index 000000000..11a88481f --- /dev/null +++ b/src/FacebookAds/Object/Fields/AdCampaignDeliveryEstimateFields.php @@ -0,0 +1,55 @@ + 'Object', + 'daily_outcomes_curve' => 'list', + 'estimate_dau' => 'Object', + 'estimate_mau' => 'Object', + 'estimate_ready' => 'bool', + ); + } +} diff --git a/src/FacebookAds/Object/Fields/AdCreativeLinkDataFields.php b/src/FacebookAds/Object/Fields/AdCreativeLinkDataFields.php index 12d3a0e3e..6bcc28d1b 100644 --- a/src/FacebookAds/Object/Fields/AdCreativeLinkDataFields.php +++ b/src/FacebookAds/Object/Fields/AdCreativeLinkDataFields.php @@ -58,6 +58,8 @@ class AdCreativeLinkDataFields extends AbstractEnum { const OFFER_ID = 'offer_id'; const PAGE_WELCOME_MESSAGE = 'page_welcome_message'; const PICTURE = 'picture'; + const RETAILER_ITEM_IDS = 'retailer_item_ids'; + const SHOW_MULTIPLE_IMAGES = 'show_multiple_images'; public function getFieldTypes() { return array( @@ -82,6 +84,8 @@ public function getFieldTypes() { 'offer_id' => 'string', 'page_welcome_message' => 'string', 'picture' => 'string', + 'retailer_item_ids' => 'list', + 'show_multiple_images' => 'bool', ); } } diff --git a/src/FacebookAds/Object/Fields/AdCreativeVideoDataFields.php b/src/FacebookAds/Object/Fields/AdCreativeVideoDataFields.php index e8fd22db4..2807f9765 100644 --- a/src/FacebookAds/Object/Fields/AdCreativeVideoDataFields.php +++ b/src/FacebookAds/Object/Fields/AdCreativeVideoDataFields.php @@ -37,6 +37,7 @@ class AdCreativeVideoDataFields extends AbstractEnum { + const ADDITIONAL_IMAGE_INDEX = 'additional_image_index'; const BRANDED_CONTENT_SPONSOR_PAGE_ID = 'branded_content_sponsor_page_id'; const BRANDED_CONTENT_SPONSOR_RELATIONSHIP = 'branded_content_sponsor_relationship'; const CALL_TO_ACTION = 'call_to_action'; @@ -46,12 +47,14 @@ class AdCreativeVideoDataFields extends AbstractEnum { const MESSAGE = 'message'; const OFFER_ID = 'offer_id'; const PAGE_WELCOME_MESSAGE = 'page_welcome_message'; + const RETAILER_ITEM_IDS = 'retailer_item_ids'; const TARGETING = 'targeting'; const TITLE = 'title'; const VIDEO_ID = 'video_id'; public function getFieldTypes() { return array( + 'additional_image_index' => 'int', 'branded_content_sponsor_page_id' => 'string', 'branded_content_sponsor_relationship' => 'string', 'call_to_action' => 'AdCreativeLinkDataCallToAction', @@ -61,6 +64,7 @@ public function getFieldTypes() { 'message' => 'string', 'offer_id' => 'string', 'page_welcome_message' => 'string', + 'retailer_item_ids' => 'list', 'targeting' => 'Targeting', 'title' => 'string', 'video_id' => 'string', diff --git a/src/FacebookAds/Object/Fields/AdFields.php b/src/FacebookAds/Object/Fields/AdFields.php index f3dd9f61d..94a39af1c 100644 --- a/src/FacebookAds/Object/Fields/AdFields.php +++ b/src/FacebookAds/Object/Fields/AdFields.php @@ -56,6 +56,8 @@ class AdFields extends AbstractEnum { const LAST_UPDATED_BY_APP_ID = 'last_updated_by_app_id'; const NAME = 'name'; const RECOMMENDATIONS = 'recommendations'; + const SOURCE_AD = 'source_ad'; + const SOURCE_AD_ID = 'source_ad_id'; const STATUS = 'status'; const TRACKING_SPECS = 'tracking_specs'; const UPDATED_TIME = 'updated_time'; @@ -87,6 +89,8 @@ public function getFieldTypes() { 'last_updated_by_app_id' => 'string', 'name' => 'string', 'recommendations' => 'list', + 'source_ad' => 'Ad', + 'source_ad_id' => 'string', 'status' => 'Status', 'tracking_specs' => 'list', 'updated_time' => 'datetime', diff --git a/src/FacebookAds/Object/Fields/AdImageFields.php b/src/FacebookAds/Object/Fields/AdImageFields.php index b982afe97..3cc621af4 100644 --- a/src/FacebookAds/Object/Fields/AdImageFields.php +++ b/src/FacebookAds/Object/Fields/AdImageFields.php @@ -76,9 +76,9 @@ public function getFieldTypes() { 'url' => 'string', 'url_128' => 'string', 'width' => 'unsigned int', - 'bytes' => 'string', + 'bytes' => 'Object', 'copy_from' => 'Object', - 'zipbytes' => 'string', + 'zipbytes' => 'Object', 'filename' => 'file', ); } diff --git a/src/FacebookAds/Object/Fields/AdReportRunFields.php b/src/FacebookAds/Object/Fields/AdReportRunFields.php index 754b5094f..f2fdb590d 100644 --- a/src/FacebookAds/Object/Fields/AdReportRunFields.php +++ b/src/FacebookAds/Object/Fields/AdReportRunFields.php @@ -69,6 +69,7 @@ class AdReportRunFields extends AbstractEnum { const TIME_INCREMENT = 'time_increment'; const TIME_RANGE = 'time_range'; const TIME_RANGES = 'time_ranges'; + const USE_ACCOUNT_ATTRIBUTION_SETTING = 'use_account_attribution_setting'; public function getFieldTypes() { return array( @@ -104,6 +105,7 @@ public function getFieldTypes() { 'time_increment' => 'string', 'time_range' => 'Object', 'time_ranges' => 'list', + 'use_account_attribution_setting' => 'bool', ); } } diff --git a/src/FacebookAds/Object/Fields/AdSetFields.php b/src/FacebookAds/Object/Fields/AdSetFields.php index 7e821ff08..f2670bf3a 100644 --- a/src/FacebookAds/Object/Fields/AdSetFields.php +++ b/src/FacebookAds/Object/Fields/AdSetFields.php @@ -70,6 +70,8 @@ class AdSetFields extends AbstractEnum { const RECURRING_BUDGET_SEMANTICS = 'recurring_budget_semantics'; const RF_PREDICTION_ID = 'rf_prediction_id'; const RTB_FLAG = 'rtb_flag'; + const SOURCE_ADSET = 'source_adset'; + const SOURCE_ADSET_ID = 'source_adset_id'; const START_TIME = 'start_time'; const STATUS = 'status'; const TARGETING = 'targeting'; @@ -117,6 +119,8 @@ public function getFieldTypes() { 'recurring_budget_semantics' => 'bool', 'rf_prediction_id' => 'string', 'rtb_flag' => 'bool', + 'source_adset' => 'AdSet', + 'source_adset_id' => 'string', 'start_time' => 'datetime', 'status' => 'Status', 'targeting' => 'Targeting', diff --git a/src/FacebookAds/Object/Fields/AdStudyObjectiveFields.php b/src/FacebookAds/Object/Fields/AdStudyObjectiveFields.php index af7c17a0f..f34436fc7 100644 --- a/src/FacebookAds/Object/Fields/AdStudyObjectiveFields.php +++ b/src/FacebookAds/Object/Fields/AdStudyObjectiveFields.php @@ -40,6 +40,7 @@ class AdStudyObjectiveFields extends AbstractEnum { const CUSTOM_ATTRIBUTES = 'custom_attributes'; const ID = 'id'; const IS_PRIMARY = 'is_primary'; + const LAST_UPDATED_RESULTS = 'last_updated_results'; const NAME = 'name'; const RESULTS = 'results'; const TYPE = 'type'; @@ -49,6 +50,7 @@ public function getFieldTypes() { 'custom_attributes' => 'list', 'id' => 'string', 'is_primary' => 'bool', + 'last_updated_results' => 'string', 'name' => 'string', 'results' => 'list', 'type' => 'string', diff --git a/src/FacebookAds/Object/Fields/AdsActionStatsFields.php b/src/FacebookAds/Object/Fields/AdsActionStatsFields.php index 341297f31..c77a216a3 100644 --- a/src/FacebookAds/Object/Fields/AdsActionStatsFields.php +++ b/src/FacebookAds/Object/Fields/AdsActionStatsFields.php @@ -48,6 +48,7 @@ class AdsActionStatsFields extends AbstractEnum { const ACTION_CAROUSEL_CARD_NAME = 'action_carousel_card_name'; const ACTION_DESTINATION = 'action_destination'; const ACTION_DEVICE = 'action_device'; + const ACTION_LINK_CLICK_DESTINATION = 'action_link_click_destination'; const ACTION_REACTION = 'action_reaction'; const ACTION_TARGET_ID = 'action_target_id'; const ACTION_TYPE = 'action_type'; @@ -68,6 +69,7 @@ public function getFieldTypes() { 'action_carousel_card_name' => 'string', 'action_destination' => 'string', 'action_device' => 'string', + 'action_link_click_destination' => 'string', 'action_reaction' => 'string', 'action_target_id' => 'string', 'action_type' => 'string', diff --git a/src/FacebookAds/Object/Fields/AdsImageCropsFields.php b/src/FacebookAds/Object/Fields/AdsImageCropsFields.php index 032f07fe1..f9cd2d681 100644 --- a/src/FacebookAds/Object/Fields/AdsImageCropsFields.php +++ b/src/FacebookAds/Object/Fields/AdsImageCropsFields.php @@ -43,6 +43,7 @@ class AdsImageCropsFields extends AbstractEnum { const FIELD_400X150 = '400x150'; const FIELD_400X500 = '400x500'; const FIELD_600X360 = '600x360'; + const FIELD_90X160 = '90x160'; public function getFieldTypes() { return array( @@ -52,6 +53,7 @@ public function getFieldTypes() { '400x150' => 'list', '400x500' => 'list', '600x360' => 'list', + '90x160' => 'list', ); } } diff --git a/src/FacebookAds/Object/Fields/AdsInsightsFields.php b/src/FacebookAds/Object/Fields/AdsInsightsFields.php index 5283fb750..2c732d69a 100644 --- a/src/FacebookAds/Object/Fields/AdsInsightsFields.php +++ b/src/FacebookAds/Object/Fields/AdsInsightsFields.php @@ -45,10 +45,7 @@ class AdsInsightsFields extends AbstractEnum { const AD_NAME = 'ad_name'; const ADSET_ID = 'adset_id'; const ADSET_NAME = 'adset_name'; - const AGE = 'age'; - const APP_STORE_CLICKS = 'app_store_clicks'; const BUYING_TYPE = 'buying_type'; - const CALL_TO_ACTION_ASSET = 'call_to_action_asset'; const CALL_TO_ACTION_CLICKS = 'call_to_action_clicks'; const CAMPAIGN_ID = 'campaign_id'; const CAMPAIGN_NAME = 'campaign_name'; @@ -61,40 +58,31 @@ class AdsInsightsFields extends AbstractEnum { const COST_PER_ESTIMATED_AD_RECALLERS = 'cost_per_estimated_ad_recallers'; const COST_PER_INLINE_LINK_CLICK = 'cost_per_inline_link_click'; const COST_PER_INLINE_POST_ENGAGEMENT = 'cost_per_inline_post_engagement'; + const COST_PER_OUTBOUND_CLICK = 'cost_per_outbound_click'; const COST_PER_TOTAL_ACTION = 'cost_per_total_action'; const COST_PER_UNIQUE_ACTION_TYPE = 'cost_per_unique_action_type'; const COST_PER_UNIQUE_CLICK = 'cost_per_unique_click'; const COST_PER_UNIQUE_INLINE_LINK_CLICK = 'cost_per_unique_inline_link_click'; - const COUNTRY = 'country'; + const COST_PER_UNIQUE_OUTBOUND_CLICK = 'cost_per_unique_outbound_click'; const CPC = 'cpc'; const CPM = 'cpm'; const CPP = 'cpp'; const CTR = 'ctr'; const DATE_START = 'date_start'; const DATE_STOP = 'date_stop'; - const DEEPLINK_CLICKS = 'deeplink_clicks'; - const DEVICE_PLATFORM = 'device_platform'; - const DMA = 'dma'; const ESTIMATED_AD_RECALL_RATE = 'estimated_ad_recall_rate'; const ESTIMATED_AD_RECALLERS = 'estimated_ad_recallers'; const FREQUENCY = 'frequency'; - const FREQUENCY_VALUE = 'frequency_value'; - const GENDER = 'gender'; - const HOURLY_STATS_AGGREGATED_BY_ADVERTISER_TIME_ZONE = 'hourly_stats_aggregated_by_advertiser_time_zone'; - const HOURLY_STATS_AGGREGATED_BY_AUDIENCE_TIME_ZONE = 'hourly_stats_aggregated_by_audience_time_zone'; - const IMPRESSION_DEVICE = 'impression_device'; const IMPRESSIONS = 'impressions'; - const IMPRESSIONS_DUMMY = 'impressions_dummy'; const INLINE_LINK_CLICK_CTR = 'inline_link_click_ctr'; const INLINE_LINK_CLICKS = 'inline_link_clicks'; const INLINE_POST_ENGAGEMENT = 'inline_post_engagement'; + const MOBILE_APP_PURCHASE_ROAS = 'mobile_app_purchase_roas'; const OBJECTIVE = 'objective'; - const PLACE_PAGE_ID = 'place_page_id'; + const OUTBOUND_CLICKS = 'outbound_clicks'; + const OUTBOUND_CLICKS_CTR = 'outbound_clicks_ctr'; const PLACE_PAGE_NAME = 'place_page_name'; - const PLACEMENT = 'placement'; - const PRODUCT_ID = 'product_id'; const REACH = 'reach'; - const REGION = 'region'; const RELEVANCE_SCORE = 'relevance_score'; const SOCIAL_CLICKS = 'social_clicks'; const SOCIAL_IMPRESSIONS = 'social_impressions'; @@ -110,6 +98,8 @@ class AdsInsightsFields extends AbstractEnum { const UNIQUE_INLINE_LINK_CLICK_CTR = 'unique_inline_link_click_ctr'; const UNIQUE_INLINE_LINK_CLICKS = 'unique_inline_link_clicks'; const UNIQUE_LINK_CLICKS_CTR = 'unique_link_clicks_ctr'; + const UNIQUE_OUTBOUND_CLICKS = 'unique_outbound_clicks'; + const UNIQUE_OUTBOUND_CLICKS_CTR = 'unique_outbound_clicks_ctr'; const UNIQUE_SOCIAL_CLICKS = 'unique_social_clicks'; const VIDEO_10_SEC_WATCHED_ACTIONS = 'video_10_sec_watched_actions'; const VIDEO_15_SEC_WATCHED_ACTIONS = 'video_15_sec_watched_actions'; @@ -121,8 +111,8 @@ class AdsInsightsFields extends AbstractEnum { const VIDEO_P50_WATCHED_ACTIONS = 'video_p50_watched_actions'; const VIDEO_P75_WATCHED_ACTIONS = 'video_p75_watched_actions'; const VIDEO_P95_WATCHED_ACTIONS = 'video_p95_watched_actions'; - const WEBSITE_CLICKS = 'website_clicks'; const WEBSITE_CTR = 'website_ctr'; + const WEBSITE_PURCHASE_ROAS = 'website_purchase_roas'; public function getFieldTypes() { return array( @@ -134,10 +124,7 @@ public function getFieldTypes() { 'ad_name' => 'string', 'adset_id' => 'string', 'adset_name' => 'string', - 'age' => 'string', - 'app_store_clicks' => 'string', 'buying_type' => 'string', - 'call_to_action_asset' => 'Object', 'call_to_action_clicks' => 'string', 'campaign_id' => 'string', 'campaign_name' => 'string', @@ -150,40 +137,31 @@ public function getFieldTypes() { 'cost_per_estimated_ad_recallers' => 'string', 'cost_per_inline_link_click' => 'string', 'cost_per_inline_post_engagement' => 'string', + 'cost_per_outbound_click' => 'list', 'cost_per_total_action' => 'string', 'cost_per_unique_action_type' => 'list', 'cost_per_unique_click' => 'string', 'cost_per_unique_inline_link_click' => 'string', - 'country' => 'string', + 'cost_per_unique_outbound_click' => 'list', 'cpc' => 'string', 'cpm' => 'string', 'cpp' => 'string', 'ctr' => 'string', 'date_start' => 'string', 'date_stop' => 'string', - 'deeplink_clicks' => 'string', - 'device_platform' => 'string', - 'dma' => 'string', 'estimated_ad_recall_rate' => 'string', 'estimated_ad_recallers' => 'string', 'frequency' => 'string', - 'frequency_value' => 'string', - 'gender' => 'string', - 'hourly_stats_aggregated_by_advertiser_time_zone' => 'string', - 'hourly_stats_aggregated_by_audience_time_zone' => 'string', - 'impression_device' => 'string', 'impressions' => 'string', - 'impressions_dummy' => 'string', 'inline_link_click_ctr' => 'string', 'inline_link_clicks' => 'string', 'inline_post_engagement' => 'string', + 'mobile_app_purchase_roas' => 'list', 'objective' => 'string', - 'place_page_id' => 'string', + 'outbound_clicks' => 'list', + 'outbound_clicks_ctr' => 'list', 'place_page_name' => 'string', - 'placement' => 'string', - 'product_id' => 'string', 'reach' => 'string', - 'region' => 'string', 'relevance_score' => 'AdgroupRelevanceScore', 'social_clicks' => 'string', 'social_impressions' => 'string', @@ -199,6 +177,8 @@ public function getFieldTypes() { 'unique_inline_link_click_ctr' => 'string', 'unique_inline_link_clicks' => 'string', 'unique_link_clicks_ctr' => 'string', + 'unique_outbound_clicks' => 'list', + 'unique_outbound_clicks_ctr' => 'list', 'unique_social_clicks' => 'string', 'video_10_sec_watched_actions' => 'list', 'video_15_sec_watched_actions' => 'list', @@ -210,8 +190,8 @@ public function getFieldTypes() { 'video_p50_watched_actions' => 'list', 'video_p75_watched_actions' => 'list', 'video_p95_watched_actions' => 'list', - 'website_clicks' => 'string', 'website_ctr' => 'list', + 'website_purchase_roas' => 'list', ); } } diff --git a/src/FacebookAds/Object/Fields/AdsPixelFields.php b/src/FacebookAds/Object/Fields/AdsPixelFields.php index dc0a1a213..332546b9e 100644 --- a/src/FacebookAds/Object/Fields/AdsPixelFields.php +++ b/src/FacebookAds/Object/Fields/AdsPixelFields.php @@ -39,6 +39,7 @@ class AdsPixelFields extends AbstractEnum { const CODE = 'code'; const CREATION_TIME = 'creation_time'; + const CREATOR = 'creator'; const ID = 'id'; const IS_CREATED_BY_BUSINESS = 'is_created_by_business'; const LAST_FIRED_TIME = 'last_fired_time'; @@ -50,6 +51,7 @@ public function getFieldTypes() { return array( 'code' => 'string', 'creation_time' => 'datetime', + 'creator' => 'User', 'id' => 'string', 'is_created_by_business' => 'bool', 'last_fired_time' => 'datetime', diff --git a/src/FacebookAds/Object/Fields/AdsPixelStatsFields.php b/src/FacebookAds/Object/Fields/AdsPixelStatsFields.php index 393c52bfe..b6e974149 100644 --- a/src/FacebookAds/Object/Fields/AdsPixelStatsFields.php +++ b/src/FacebookAds/Object/Fields/AdsPixelStatsFields.php @@ -39,12 +39,14 @@ class AdsPixelStatsFields extends AbstractEnum { const COUNT = 'count'; const DIAGNOSTICS_HOURLY_LAST_TIMESTAMP = 'diagnostics_hourly_last_timestamp'; + const EVENT = 'event'; const VALUE = 'value'; public function getFieldTypes() { return array( 'count' => 'int', 'diagnostics_hourly_last_timestamp' => 'datetime', + 'event' => 'string', 'value' => 'string', ); } diff --git a/src/FacebookAds/Object/Fields/BusinessFields.php b/src/FacebookAds/Object/Fields/BusinessFields.php index 0d29e8ec4..b7119576a 100644 --- a/src/FacebookAds/Object/Fields/BusinessFields.php +++ b/src/FacebookAds/Object/Fields/BusinessFields.php @@ -43,10 +43,12 @@ class BusinessFields extends AbstractEnum { const LINK = 'link'; const NAME = 'name'; const PRIMARY_PAGE = 'primary_page'; + const PROFILE_PICTURE_URI = 'profile_picture_uri'; const TIMEZONE_ID = 'timezone_id'; const TWO_FACTOR_TYPE = 'two_factor_type'; const UPDATED_BY = 'updated_by'; const UPDATED_TIME = 'updated_time'; + const VERTICAL = 'vertical'; public function getFieldTypes() { return array( @@ -56,10 +58,12 @@ public function getFieldTypes() { 'link' => 'string', 'name' => 'string', 'primary_page' => 'Object', + 'profile_picture_uri' => 'string', 'timezone_id' => 'unsigned int', 'two_factor_type' => 'string', 'updated_by' => 'User', 'updated_time' => 'datetime', + 'vertical' => 'string', ); } } diff --git a/src/FacebookAds/Object/Fields/CampaignFields.php b/src/FacebookAds/Object/Fields/CampaignFields.php index 1495ae753..42801bfba 100644 --- a/src/FacebookAds/Object/Fields/CampaignFields.php +++ b/src/FacebookAds/Object/Fields/CampaignFields.php @@ -51,6 +51,8 @@ class CampaignFields extends AbstractEnum { const NAME = 'name'; const OBJECTIVE = 'objective'; const RECOMMENDATIONS = 'recommendations'; + const SOURCE_CAMPAIGN = 'source_campaign'; + const SOURCE_CAMPAIGN_ID = 'source_campaign_id'; const SPEND_CAP = 'spend_cap'; const START_TIME = 'start_time'; const STATUS = 'status'; @@ -75,6 +77,8 @@ public function getFieldTypes() { 'name' => 'string', 'objective' => 'string', 'recommendations' => 'list', + 'source_campaign' => 'Campaign', + 'source_campaign_id' => 'string', 'spend_cap' => 'string', 'start_time' => 'datetime', 'status' => 'Status', diff --git a/src/FacebookAds/Object/Fields/CheckBatchRequestStatusFields.php b/src/FacebookAds/Object/Fields/CheckBatchRequestStatusFields.php new file mode 100644 index 000000000..a64bbb401 --- /dev/null +++ b/src/FacebookAds/Object/Fields/CheckBatchRequestStatusFields.php @@ -0,0 +1,53 @@ + 'list', + 'errors_total_count' => 'int', + 'handle' => 'string', + 'status' => 'string', + ); + } +} diff --git a/src/FacebookAds/Object/Fields/EventFields.php b/src/FacebookAds/Object/Fields/EventFields.php index c39c0c4e5..42370cc8b 100644 --- a/src/FacebookAds/Object/Fields/EventFields.php +++ b/src/FacebookAds/Object/Fields/EventFields.php @@ -39,6 +39,7 @@ class EventFields extends AbstractEnum { const ATTENDING_COUNT = 'attending_count'; const CAN_GUESTS_INVITE = 'can_guests_invite'; + const CAN_VIEWER_POST = 'can_viewer_post'; const CATEGORY = 'category'; const COVER = 'cover'; const DECLINED_COUNT = 'declined_count'; @@ -48,6 +49,7 @@ class EventFields extends AbstractEnum { const ID = 'id'; const INTERESTED_COUNT = 'interested_count'; const IS_CANCELED = 'is_canceled'; + const IS_DRAFT = 'is_draft'; const IS_PAGE_OWNED = 'is_page_owned'; const IS_VIEWER_ADMIN = 'is_viewer_admin'; const MAYBE_COUNT = 'maybe_count'; @@ -58,6 +60,8 @@ class EventFields extends AbstractEnum { const PLACE = 'place'; const START_TIME = 'start_time'; const TICKET_URI = 'ticket_uri'; + const TICKETING_PRIVACY_URI = 'ticketing_privacy_uri'; + const TICKETING_TERMS_URI = 'ticketing_terms_uri'; const TIMEZONE = 'timezone'; const TYPE = 'type'; const UPDATED_TIME = 'updated_time'; @@ -66,6 +70,7 @@ public function getFieldTypes() { return array( 'attending_count' => 'int', 'can_guests_invite' => 'bool', + 'can_viewer_post' => 'bool', 'category' => 'string', 'cover' => 'Object', 'declined_count' => 'int', @@ -75,6 +80,7 @@ public function getFieldTypes() { 'id' => 'string', 'interested_count' => 'int', 'is_canceled' => 'bool', + 'is_draft' => 'bool', 'is_page_owned' => 'bool', 'is_viewer_admin' => 'bool', 'maybe_count' => 'int', @@ -85,6 +91,8 @@ public function getFieldTypes() { 'place' => 'Object', 'start_time' => 'string', 'ticket_uri' => 'string', + 'ticketing_privacy_uri' => 'string', + 'ticketing_terms_uri' => 'string', 'timezone' => 'string', 'type' => 'Type', 'updated_time' => 'datetime', diff --git a/src/FacebookAds/Object/Fields/LeadGenQuestionFields.php b/src/FacebookAds/Object/Fields/LeadGenQuestionFields.php index aa375757c..f4c4874a3 100644 --- a/src/FacebookAds/Object/Fields/LeadGenQuestionFields.php +++ b/src/FacebookAds/Object/Fields/LeadGenQuestionFields.php @@ -37,6 +37,9 @@ class LeadGenQuestionFields extends AbstractEnum { + const CONDITIONAL_QUESTIONS_CHOICES = 'conditional_questions_choices'; + const CONDITIONAL_QUESTIONS_GROUP_ID = 'conditional_questions_group_id'; + const DEPENDENT_CONDITIONAL_QUESTIONS = 'dependent_conditional_questions'; const KEY = 'key'; const LABEL = 'label'; const OPTIONS = 'options'; @@ -44,6 +47,9 @@ class LeadGenQuestionFields extends AbstractEnum { public function getFieldTypes() { return array( + 'conditional_questions_choices' => 'list', + 'conditional_questions_group_id' => 'string', + 'dependent_conditional_questions' => 'list', 'key' => 'string', 'label' => 'string', 'options' => 'list', diff --git a/src/FacebookAds/Object/Fields/LeadgenFormFields.php b/src/FacebookAds/Object/Fields/LeadgenFormFields.php index 18216ce7e..17ea7ed09 100644 --- a/src/FacebookAds/Object/Fields/LeadgenFormFields.php +++ b/src/FacebookAds/Object/Fields/LeadgenFormFields.php @@ -38,6 +38,7 @@ class LeadgenFormFields extends AbstractEnum { const ALLOW_ORGANIC_LEAD = 'allow_organic_lead'; + const BLOCK_DISPLAY_FOR_NON_TARGETED_VIEWER = 'block_display_for_non_targeted_viewer'; const CONTEXT_CARD = 'context_card'; const CONTINUED_FLOW_REQUEST_METHOD = 'continued_flow_request_method'; const CREATED_TIME = 'created_time'; @@ -67,6 +68,7 @@ class LeadgenFormFields extends AbstractEnum { public function getFieldTypes() { return array( 'allow_organic_lead' => 'bool', + 'block_display_for_non_targeted_viewer' => 'bool', 'context_card' => 'Object', 'continued_flow_request_method' => 'string', 'created_time' => 'datetime', diff --git a/src/FacebookAds/Object/Fields/ProductCatalogFields.php b/src/FacebookAds/Object/Fields/ProductCatalogFields.php index 06cc18045..c4363c560 100644 --- a/src/FacebookAds/Object/Fields/ProductCatalogFields.php +++ b/src/FacebookAds/Object/Fields/ProductCatalogFields.php @@ -42,11 +42,13 @@ class ProductCatalogFields extends AbstractEnum { const DEFAULT_IMAGE_URL = 'default_image_url'; const FALLBACK_IMAGE_URL = 'fallback_image_url'; const FEED_COUNT = 'feed_count'; + const FLIGHT_CATALOG_SETTINGS = 'flight_catalog_settings'; const ID = 'id'; const IMAGE_PADDING_LANDSCAPE = 'image_padding_landscape'; const IMAGE_PADDING_SQUARE = 'image_padding_square'; const NAME = 'name'; const PRODUCT_COUNT = 'product_count'; + const QUALIFIED_PRODUCT_COUNT = 'qualified_product_count'; const VERTICAL = 'vertical'; public function getFieldTypes() { @@ -56,11 +58,13 @@ public function getFieldTypes() { 'default_image_url' => 'string', 'fallback_image_url' => 'list', 'feed_count' => 'int', + 'flight_catalog_settings' => 'Object', 'id' => 'string', 'image_padding_landscape' => 'bool', 'image_padding_square' => 'bool', 'name' => 'string', 'product_count' => 'int', + 'qualified_product_count' => 'unsigned int', 'vertical' => 'string', ); } diff --git a/src/FacebookAds/Object/Fields/ProductFeedFields.php b/src/FacebookAds/Object/Fields/ProductFeedFields.php index 2e5e4b33c..6f90b77f3 100644 --- a/src/FacebookAds/Object/Fields/ProductFeedFields.php +++ b/src/FacebookAds/Object/Fields/ProductFeedFields.php @@ -48,8 +48,10 @@ class ProductFeedFields extends AbstractEnum { const LATEST_UPLOAD = 'latest_upload'; const NAME = 'name'; const PRODUCT_COUNT = 'product_count'; + const QUALIFIED_PRODUCT_COUNT = 'qualified_product_count'; const QUOTED_FIELDS_MODE = 'quoted_fields_mode'; const SCHEDULE = 'schedule'; + const RULES = 'rules'; public function getFieldTypes() { return array( @@ -64,8 +66,10 @@ public function getFieldTypes() { 'latest_upload' => 'ProductFeedUpload', 'name' => 'string', 'product_count' => 'int', + 'qualified_product_count' => 'unsigned int', 'quoted_fields_mode' => 'QuotedFieldsMode', 'schedule' => 'ProductFeedSchedule', + 'rules' => 'list', ); } } diff --git a/src/FacebookAds/Object/Fields/ProductFeedScheduleFields.php b/src/FacebookAds/Object/Fields/ProductFeedScheduleFields.php index c7403bd61..046862562 100644 --- a/src/FacebookAds/Object/Fields/ProductFeedScheduleFields.php +++ b/src/FacebookAds/Object/Fields/ProductFeedScheduleFields.php @@ -41,6 +41,7 @@ class ProductFeedScheduleFields extends AbstractEnum { const DAY_OF_WEEK = 'day_of_week'; const HOUR = 'hour'; const INTERVAL = 'interval'; + const INTERVAL_COUNT = 'interval_count'; const MINUTE = 'minute'; const TIMEZONE = 'timezone'; const URL = 'url'; @@ -52,6 +53,7 @@ public function getFieldTypes() { 'day_of_week' => 'DayOfWeek', 'hour' => 'unsigned int', 'interval' => 'Interval', + 'interval_count' => 'unsigned int', 'minute' => 'unsigned int', 'timezone' => 'string', 'url' => 'string', diff --git a/src/FacebookAds/Object/Fields/ProductItemFields.php b/src/FacebookAds/Object/Fields/ProductItemFields.php index 8f31ac61b..7e17c1f92 100644 --- a/src/FacebookAds/Object/Fields/ProductItemFields.php +++ b/src/FacebookAds/Object/Fields/ProductItemFields.php @@ -165,7 +165,7 @@ public function getFieldTypes() { 'iphone_app_name' => 'string', 'iphone_app_store_id' => 'unsigned int', 'iphone_url' => 'string', - 'windows_phone_app_id' => 'unsigned int', + 'windows_phone_app_id' => 'string', 'windows_phone_app_name' => 'string', 'windows_phone_url' => 'string', ); diff --git a/src/FacebookAds/Object/Fields/ReachFrequencyPredictionFields.php b/src/FacebookAds/Object/Fields/ReachFrequencyPredictionFields.php index 128da1f8e..c8763cbd8 100644 --- a/src/FacebookAds/Object/Fields/ReachFrequencyPredictionFields.php +++ b/src/FacebookAds/Object/Fields/ReachFrequencyPredictionFields.php @@ -121,7 +121,7 @@ public function getFieldTypes() { 'status' => 'unsigned int', 'story_event_type' => 'unsigned int', 'target_audience_size' => 'unsigned int', - 'target_spec' => 'string', + 'target_spec' => 'Targeting', 'time_created' => 'datetime', 'time_updated' => 'datetime', 'budget' => 'unsigned int', diff --git a/src/FacebookAds/Object/Fields/ReachFrequencySpecFields.php b/src/FacebookAds/Object/Fields/ReachFrequencySpecFields.php index 990f5217c..3c6ea81b7 100644 --- a/src/FacebookAds/Object/Fields/ReachFrequencySpecFields.php +++ b/src/FacebookAds/Object/Fields/ReachFrequencySpecFields.php @@ -38,6 +38,7 @@ class ReachFrequencySpecFields extends AbstractEnum { const COUNTRIES = 'countries'; + const DEFAULT_CREATION_DATA = 'default_creation_data'; const MAX_CAMPAIGN_DURATION = 'max_campaign_duration'; const MAX_DAYS_TO_FINISH = 'max_days_to_finish'; const MAX_PAUSE_WITHOUT_PREDICTION_RERUN = 'max_pause_without_prediction_rerun'; @@ -47,6 +48,7 @@ class ReachFrequencySpecFields extends AbstractEnum { public function getFieldTypes() { return array( 'countries' => 'list', + 'default_creation_data' => 'Object', 'max_campaign_duration' => 'Object', 'max_days_to_finish' => 'Object', 'max_pause_without_prediction_rerun' => 'Object', diff --git a/src/FacebookAds/Object/Fields/TargetingFields.php b/src/FacebookAds/Object/Fields/TargetingFields.php index 5297d50fb..35eacfc5a 100644 --- a/src/FacebookAds/Object/Fields/TargetingFields.php +++ b/src/FacebookAds/Object/Fields/TargetingFields.php @@ -46,6 +46,7 @@ class TargetingFields extends AbstractEnum { const CITIES = 'cities'; const COLLEGE_YEARS = 'college_years'; const CONNECTIONS = 'connections'; + const CONTEXTUAL_TARGETING_CATEGORIES = 'contextual_targeting_categories'; const COUNTRIES = 'countries'; const COUNTRY = 'country'; const COUNTRY_GROUPS = 'country_groups'; @@ -72,7 +73,6 @@ class TargetingFields extends AbstractEnum { const EXCLUDED_MOBILE_DEVICE_MODEL = 'excluded_mobile_device_model'; const EXCLUDED_PRODUCT_AUDIENCE_SPECS = 'excluded_product_audience_specs'; const EXCLUDED_PUBLISHER_CATEGORIES = 'excluded_publisher_categories'; - const EXCLUDED_PUBLISHER_DOMAINS = 'excluded_publisher_domains'; const EXCLUDED_PUBLISHER_LIST_IDS = 'excluded_publisher_list_ids'; const EXCLUDED_USER_DEVICE = 'excluded_user_device'; const EXCLUSIONS = 'exclusions'; @@ -133,6 +133,7 @@ public function getFieldTypes() { 'cities' => 'list', 'college_years' => 'list', 'connections' => 'list', + 'contextual_targeting_categories' => 'list', 'countries' => 'list', 'country' => 'list', 'country_groups' => 'list', @@ -159,7 +160,6 @@ public function getFieldTypes() { 'excluded_mobile_device_model' => 'list', 'excluded_product_audience_specs' => 'list', 'excluded_publisher_categories' => 'list', - 'excluded_publisher_domains' => 'list', 'excluded_publisher_list_ids' => 'list', 'excluded_user_device' => 'list', 'exclusions' => 'FlexibleTargeting', diff --git a/src/FacebookAds/Object/Fields/TransactionFields.php b/src/FacebookAds/Object/Fields/TransactionFields.php index 8577da22c..d40e24ce9 100644 --- a/src/FacebookAds/Object/Fields/TransactionFields.php +++ b/src/FacebookAds/Object/Fields/TransactionFields.php @@ -47,6 +47,7 @@ class TransactionFields extends AbstractEnum { const CREDENTIAL_ID = 'credential_id'; const FATURA_ID = 'fatura_id'; const ID = 'id'; + const IS_BUSINESS_EC_CHARGE = 'is_business_ec_charge'; const PAYMENT_OPTION = 'payment_option'; const PRODUCT_TYPE = 'product_type'; const PROVIDER_AMOUNT = 'provider_amount'; @@ -66,6 +67,7 @@ public function getFieldTypes() { 'credential_id' => 'string', 'fatura_id' => 'unsigned int', 'id' => 'string', + 'is_business_ec_charge' => 'bool', 'payment_option' => 'string', 'product_type' => 'ProductType', 'provider_amount' => 'TransactionCurrencyAmount', diff --git a/src/FacebookAds/Object/ProductCatalog.php b/src/FacebookAds/Object/ProductCatalog.php index bdc0ad330..41ca32b8d 100644 --- a/src/FacebookAds/Object/ProductCatalog.php +++ b/src/FacebookAds/Object/ProductCatalog.php @@ -95,6 +95,30 @@ public function getAgencies(array $fields = array(), array $params = array(), $p return $pending ? $request : $request->execute(); } + public function getCheckBatchRequestStatus(array $fields = array(), array $params = array(), $pending = false) { + $this->assureId(); + + $param_types = array( + 'handle' => 'string', + ); + $enums = array( + ); + + $request = new ApiRequest( + $this->api, + $this->data['id'], + RequestInterface::METHOD_GET, + '/check_batch_request_status', + new CheckBatchRequestStatus(), + 'EDGE', + CheckBatchRequestStatus::getFieldsEnum()->getValues(), + new TypeChecker($param_types, $enums) + ); + $request->addParams($params); + $request->addFields($fields); + return $pending ? $request : $request->execute(); + } + public function getDestinations(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); @@ -418,6 +442,7 @@ public function createProductFeed(array $fields = array(), array $params = array 'file_name' => 'string', 'name' => 'string', 'quoted_fields_mode' => 'quoted_fields_mode_enum', + 'rules' => 'list', 'schedule' => 'string', ); $enums = array( @@ -644,7 +669,7 @@ public function createProduct(array $fields = array(), array $params = array(), 'start_date' => 'string', 'url' => 'string', 'visibility' => 'visibility_enum', - 'windows_phone_app_id' => 'unsigned int', + 'windows_phone_app_id' => 'string', 'windows_phone_app_name' => 'string', 'windows_phone_url' => 'string', ); @@ -680,8 +705,11 @@ public function createVideo(array $fields = array(), array $params = array(), $p 'file_size' => 'unsigned int', 'file_url' => 'string', 'fov' => 'unsigned int', + 'guide' => 'list>', + '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', @@ -806,6 +834,7 @@ public function updateSelf(array $fields = array(), array $params = array(), $pe 'da_display_settings' => 'Object', 'default_image_url' => 'string', 'fallback_image_url' => 'string', + 'flight_catalog_settings' => 'map', 'name' => 'string', ); $enums = array( diff --git a/src/FacebookAds/Object/ProductGroup.php b/src/FacebookAds/Object/ProductGroup.php index a6489003e..ab0ddad63 100644 --- a/src/FacebookAds/Object/ProductGroup.php +++ b/src/FacebookAds/Object/ProductGroup.php @@ -164,7 +164,7 @@ public function createProduct(array $fields = array(), array $params = array(), 'start_date' => 'string', 'url' => 'string', 'visibility' => 'visibility_enum', - 'windows_phone_app_id' => 'unsigned int', + 'windows_phone_app_id' => 'string', 'windows_phone_app_name' => 'string', 'windows_phone_url' => 'string', ); diff --git a/src/FacebookAds/Object/ProductItem.php b/src/FacebookAds/Object/ProductItem.php index e0457be9d..16ee12605 100644 --- a/src/FacebookAds/Object/ProductItem.php +++ b/src/FacebookAds/Object/ProductItem.php @@ -198,7 +198,7 @@ public function updateSelf(array $fields = array(), array $params = array(), $pe 'start_date' => 'string', 'url' => 'string', 'visibility' => 'visibility_enum', - 'windows_phone_app_id' => 'unsigned int', + 'windows_phone_app_id' => 'string', 'windows_phone_app_name' => 'string', 'windows_phone_url' => 'string', ); diff --git a/src/FacebookAds/Object/User.php b/src/FacebookAds/Object/User.php index 92e4a174c..562faf5b4 100644 --- a/src/FacebookAds/Object/User.php +++ b/src/FacebookAds/Object/User.php @@ -109,6 +109,7 @@ public function getLeadGenForms(array $fields = array(), array $params = array() $this->assureId(); $param_types = array( + 'page_id' => 'string', 'query' => 'string', ); $enums = array( @@ -184,7 +185,9 @@ public function getPromotableEvents(array $fields = array(), array $params = arr $this->assureId(); $param_types = array( + 'include_past_events' => 'bool', 'is_page_event' => 'bool', + 'page_id' => 'unsigned int', ); $enums = array( ); diff --git a/src/FacebookAds/Object/Values/AdAccountDeliveryEstimateOptimizationGoalValues.php b/src/FacebookAds/Object/Values/AdAccountDeliveryEstimateOptimizationGoalValues.php new file mode 100644 index 000000000..554997f42 --- /dev/null +++ b/src/FacebookAds/Object/Values/AdAccountDeliveryEstimateOptimizationGoalValues.php @@ -0,0 +1,59 @@ +appSecretProof; } + + /** + * @return array + */ + public function getRequestParameters() { + return array( + 'access_token' => $this->getAccessToken(), + 'appsecret_proof' => $this->getAppSecretProof(), + ); + } } diff --git a/src/FacebookAds/SessionInterface.php b/src/FacebookAds/SessionInterface.php new file mode 100644 index 000000000..0c1769e45 --- /dev/null +++ b/src/FacebookAds/SessionInterface.php @@ -0,0 +1,33 @@ +