<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUAESXs_eip7ImA9WhVSEUU.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332</id><updated>2012-03-07T21:15:08.542-08:00</updated><category term="mobile" /><category term="adwhirl_v3.1.1" /><category term="suggested_ad_units" /><category term="deprecation" /><category term="dfp_appengine" /><category term="mobile_targeting" /><category term="dfp_v201111" /><category term="ad_exchange" /><category term="analytics" /><category term="geotargeting" /><category term="best_practices" /><category term="dfa_api" /><category term="adsense_management_api_v1.1" /><category term="PQL" /><category term="animation" /><category term="common_questions" /><category term="adsense_host_api_v3" /><category term="adwords_CreateAccountService" /><category term="oauth" /><category term="admob_v4.3.1" /><category term="android_layout" /><category term="iOS" /><category term="adsense_management_api" /><category term="dfa_ad_service" /><category term="dfa_v1.16" /><category term="reporting" /><category term="adwords_v201109" /><category term="xml" /><category term="i18n" /><category term="adsense_api" /><category term="certificates" /><category term="reports" /><category term="docs" /><category term="admob_v5.0.5" /><category term="php" /><category term="client_libraries" /><category term="app_engine" /><category term="impression_share" /><category term="creatives" /><category term="faq" /><category term="dfp_api" /><category term="adwhirl" /><category term="dfa_v1.17" /><category term="google_apps_script" /><category term="hangout" /><category term="admob_sdk" /><category term="interview" /><category term="adwords_ReportDefinitionService" /><category term="android" /><category term="chart_tools" /><category term="adsense_management_api_v1" /><category term="ssl" /><category term="dfp_v201201" /><category term="adwords_api" /><category term="dfa_v1.18" /><category term="ad_exchange_rtb" /><category term="examples" /><title>Google Ads Developer Blog</title><subtitle type="html">The official blog for information about the AdWords, AdSense, DoubleClick and AdMob APIs and SDKs.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://googleadsdeveloper.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://googleadsdeveloper.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Rachel Durfee</name><uri>http://www.blogger.com/profile/16428609225474396121</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/GoogleAdsDeveloperBlog" /><feedburner:info uri="googleadsdeveloperblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>GoogleAdsDeveloperBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;Ck4AQnc_fyp7ImA9WhVSEEo.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-1610131341742643022</id><published>2012-03-06T13:55:00.000-08:00</published><updated>2012-03-06T13:55:43.947-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T13:55:43.947-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="admob_sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Embedding Google AdMob Ads Within A UITableView</title><content type="html">&lt;p&gt;We previously talked about &lt;a href="http://googleadsdeveloper.blogspot.com/2011/12/incorporating-google-admob-ads-into.html"&gt;docking AdMob ads to the bottom or top of a UITableView&lt;/a&gt;. In response to that post, we’ve had a lot of developers asking us about embedding AdMob ads within the UITableView cells, so we wanted to share how this can be best achieved.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Challenge&lt;/b&gt;
&lt;br /&gt;
&lt;p&gt;Placing ads within a &lt;a href="http://developer.apple.com/library/IOS/#documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html"&gt;Table View&lt;/a&gt; in iOS as list items can bring up a number of issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inflated impression numbers because tables in iOS refresh when the user scrolls.&lt;/li&gt;
&lt;li&gt;The one-to-one mapping between data in the Table View and the application’s model will usually be lost.&lt;/li&gt;
&lt;/ul&gt;

&lt;center&gt;&lt;img height="251px;" src="https://lh3.googleusercontent.com/U7vBVizAJ1ivfe0TTgTKrB3MGKKJRI9M-IrdaUGWrgjLQUcam4GQLcKH7VXb52rjXd4gjlHG4N2b-OpnG97uS_1aLoGoew07Kkgrcln88wHzaWqI90w" width="134px;" /&gt;&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;Choosing A Solution&lt;/b&gt;
&lt;p&gt;Table Views in iOS are populated by implementing the &lt;a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html "&gt;tableView:cellForRowAtIndexPath:&lt;/a&gt; method. Cell objects are often reused so that new ones aren’t instantiated each time the Table View is refreshed (by a scroll for example). There are two ways that ads can be implemented within Table View cells:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Only use one  GADBannerView throughout the table. This would mean that the same ad is displayed in different cells in the table (preferred).&lt;/li&gt;
&lt;li&gt;Leverage &lt;a href="https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html"&gt;dequeueReusableCellWithIdentifier:&lt;/a&gt; so that GADBannerViews are created only when new cells are created.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using one GADBannerView throughout the table does decrease ad diversity but generally increases the CTR for the ads that are shown because the user will more likely see the ads that are displayed. The example below will show how to implement this approach as it is the better practice.&lt;/p&gt;&lt;br/&gt;

&lt;br/&gt;
&lt;b&gt;Solution - Single GADBannerView Method&lt;/b&gt;
&lt;br/&gt;
&lt;p&gt;For the purposes of this example, let’s assume that every 10th element in the list is going to be an ad. This means &lt;a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html"&gt;tableView:cellForRowAtIndexPath:&lt;/a&gt; will be set up with a conditional that modifies the placement of the GADBannerView for every tenth cell:&lt;/p&gt;&lt;br/&gt;

&lt;pre class="prettyprint"&gt;
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  int row = [indexPath row];

  // Assume that kFrequencyAdsInCells is 10 so every 10th row is an ad
  // Don't want first item to be an ad so use 10-1=9 instead of 0
  if ((row % kFrequencyAdsInCells) == (kFrequencyAdsInCells)) {
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  
    //Need to create a new cell object
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                       reuseIdentifier:CellIdentifier]
                autorelease];
    }
    // If bannerView_ has a superview, then it has been added to a cell
    if (!bannerView_.superview) {
      // First ad request made, make the ad request and add it to this cell
      [self requestAd];     
    }
    // The banner will be removed from the other cell and put into here
    [cell.contentView addSubview:bannerView_];


}
…
&lt;/pre&gt;

&lt;p&gt;Since ads are being inserted into the Table View now, any previous mapping to data in the model will be lost. Some quick math is necessary here to figure out how the rows in the Table View line up.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
  // Complete in cellForRowAtIndexPath: if not ad
  
  // Make sure we get all of the items from our model
  row = row - floor((float)row/kFrequencyAdsInCells);
  
  cell.textLabel.text = [dataController_ objectInListAtIndex:row];
&lt;/pre&gt;

&lt;p&gt;The methods &lt;a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html "&gt;tableView:NumberOfRowsInSection:&lt;/a&gt; and &lt;a href="http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html "&gt;tableView:heightForRowAtIndexPath:&lt;/a&gt; will need to be modified as well. The method tableView:NumberOfRowsInSection: would now return the number of elements (including ads in that number) and  tableView:heightForRowAtIndexPath: would return the height of an ad for every tenth cell, respectively.&lt;/p&gt;

&lt;p&gt;If you have any questions about embedding ads within a UITableView, or even any questions about the SDK in general, feel free to post them in our &lt;a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk"&gt;forum&lt;/a&gt;. Keep an eye out for AdCatalog v2 for all kinds of advanced layouts options integrated in the project.&lt;/p&gt;


&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/102708799507737837368"&gt;&lt;img width="20" height="20" src="https://lh3.googleusercontent.com/-RonljIAjNbg/AAAAAAAAAAI/AAAAAAAAAps/nM93tw3iYSk/s200-c-k/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/102708799507737837368" rel="author"&gt;Raj Parameswaran&lt;/a&gt;, AdMob Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-1610131341742643022?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/YkR8wDmM3zg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1610131341742643022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1610131341742643022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/YkR8wDmM3zg/embedding-google-admob-ads-within.html" title="Embedding Google AdMob Ads Within A UITableView" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/03/embedding-google-admob-ads-within.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04BR3g8eyp7ImA9WhVSEEs.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-7023252996454196102</id><published>2012-03-06T12:32:00.001-08:00</published><updated>2012-03-06T12:32:36.673-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T12:32:36.673-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_v201109" /><title>Resources to help with the migration to AdWords API AdHoc reports</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Last week we &lt;a href="http://googleadsdeveloper.blogspot.com/2012/02/adwords-api-v201109-migration-deadline.html"&gt;sunset&lt;/a&gt; all versions of the AdWords API prior to v201109. If you have not yet migrated to v201109, you will now receive errors when making calls using previous versions.&lt;br /&gt;&lt;br /&gt;

For users still working on the transition from v13 to AdHoc reports, we want to remind you of resources available to help you out:&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="http://code.google.com/apis/adwords/docs/reportguide.html"&gt;report migration guide&lt;/a&gt; provides a side-by-side mapping between the fields available in the v13 ReportService and those available in v201109.&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://code.google.com/apis/adwords/docs/guides/uireports.html"&gt;mapping report to the UI guide&lt;/a&gt; maps the concepts and naming conventions used in the User Interface (UI) and the AdWords API reports.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/apis/adwords/docs/guides/reporting.html"&gt;Report basics&lt;/a&gt; covers how to structure and download reports.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://adwordsapi.blogspot.com/2011/06/statistics-in-reports.html"&gt;This blogpost&lt;/a&gt; covers best practices for when to schedule reports, and &lt;a href="http://adwordsapi.blogspot.com/2011_10_01_archive.html"&gt;this post&lt;/a&gt; covers how to download reports for multiple clients.&lt;/li&gt;
&lt;/ul&gt;

For additional resources visit the &lt;a href="http://code.google.com/apis/adwords/docs/"&gt;AdWords API documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

We also encourage you to submit questions to the &lt;a href="https://groups.google.com/forum/#!forum/adwords-api"&gt;forum&lt;/a&gt; or ask them during &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;office hours&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

&lt;span class='post-author'&gt;Post by Katie Miller, AdWords API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-7023252996454196102?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/ciP0sI3tB5Y" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/7023252996454196102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/7023252996454196102?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/ciP0sI3tB5Y/resources-to-help-with-migration-to.html" title="Resources to help with the migration to AdWords API AdHoc reports" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/03/resources-to-help-with-migration-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMEQ385eip7ImA9WhVSEEs.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-2183826051204268000</id><published>2012-03-06T11:00:00.000-08:00</published><updated>2012-03-06T11:00:02.122-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T11:00:02.122-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_v201201" /><category scheme="http://www.blogger.com/atom/ns#" term="PQL" /><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><title>Discover DFP API v201201: Syncing Up</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
In the newest version of the API, &lt;a href="http://googleadsdeveloper.blogspot.com/2012/02/announcing-v201201-of-dfp-api.html"&gt;v201201&lt;/a&gt;, we’ve added a feature to streamline the syncing of information in your DFP network to another system. Previously, this was possible but required repeatedly downloading the same objects to see if they had been modified. Now, a new PQL field exists, &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/LineItemService.LineItem.html#lastModifiedDateTime"&gt;lastModifiedDateTime&lt;/a&gt;, which can be used to return objects based on their modification dates. Below is a PHP example that uses the &lt;a href="http://code.google.com/p/google-api-dfp-php/downloads/list"&gt;latest client library&lt;/a&gt; to display all line items modified in the past 30 days. &lt;br /&gt;
&lt;pre class="prettyprint"&gt;// Get the LineItemService.
$lineItemService = $user-&amp;gt;GetService('LineItemService', 'v201201');

// Calculate time from thirty days ago.
$thirtyDaysAgo = date(DateTimeUtils::$DFP_DATE_TIME_STRING_FORMAT,
    strtotime('-30 day'));

// Create bind variables.
$vars = MapUtils::GetMapEntries(array(
    'thirtyDaysAgo' =&gt; new TextValue($thirtyDaysAgo)));

// Create statement object to only select line items that
// have been modified in the last 30 days.
$filterStatement = new Statement(
    "WHERE lastModifiedDateTime &gt;= :thirtyDaysAgo "
    . "LIMIT 500", $vars);

// Get line items by statement.
$page = $lineItemService-&gt;getLineItemsByStatement($filterStatement);
&lt;/pre&gt;
You will notice that we utilized a constant, DFP_DATE_TIME_STRING_FORMAT ('Y-m-d\TH:i:s'),  from the library to easily format the date/time string. Also, keep in mind that the date and time specified should be in terms of the time zone that is configured for the network and any timezone specified in the string will be ignored by the server. &lt;br /&gt;
&lt;br /&gt;
We hope you'll use this new feature to help save bandwidth and processing time. You can check out a full working example in &lt;a href="http://code.google.com/p/google-api-dfp-php/source/browse/trunk/examples/v201201/LineItemService/GetRecentlyUpdatedLineItems.php"&gt;PHP&lt;/a&gt; or other languages in our &lt;a href="http://code.google.com/apis/dfp/docs/clients.html"&gt;client libraries&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Feel free to leave us a comment on the &lt;a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api"&gt;forum&lt;/a&gt; with any feedback you have for the API or topics you would like to see in the discover series.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/104679465567407024302/"&gt;&lt;img height="20" src="https://lh5.googleusercontent.com/oQZTvGY1RNICm4p-kpeNseyIOgEfFdRDfMNyaMs0hrBVvzjZQODeEnRRPbHA0SoebObwNhQnL7bEDImdE16tYXjwViv-90GTbywThxtii7XS7MO3RzE?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/104679465567407024302/" rel="author"&gt;Paul Rashidi&lt;/a&gt;, DFP API Team&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-2183826051204268000?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/uOiNHjdorrg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2183826051204268000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2183826051204268000?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/uOiNHjdorrg/discover-dfp-api-v201201-syncing-up.html" title="Discover DFP API v201201: Syncing Up" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/03/discover-dfp-api-v201201-syncing-up.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4AQn45fyp7ImA9WhVSEEk.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-7135452032724814135</id><published>2012-03-06T05:35:00.000-08:00</published><updated>2012-03-06T05:35:43.027-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T05:35:43.027-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adsense_api" /><category scheme="http://www.blogger.com/atom/ns#" term="faq" /><category scheme="http://www.blogger.com/atom/ns#" term="adsense_management_api" /><title>Frequently Asked Questions for the AdSense Management API</title><content type="html">&lt;p&gt;Since launching the &lt;a href="https://developers.google.com/adsense/management/"&gt;AdSense Management API&lt;/a&gt; in October last year, we’ve received a number of questions and feedback from you while coding your applications. Today, we’ll address the most frequently asked questions and share some best practices.&lt;/p&gt;


&lt;h2&gt;How do I authenticate? Do I need to use OAuth?&lt;/h2&gt;

&lt;p&gt;Right now, the only authentication method we support is OAuth, but don’t let that intimidate you; OAuth 2.0 supports several authentication methods, for web server, client-side and installed applications and devices, which together cover all use cases.&lt;/p&gt;

&lt;p&gt;You can find more information on how to authenticate in your favourite client library language in our &lt;a href="https://developers.google.com/adsense/management/complete_guide#auth"&gt;client library guide&lt;/a&gt; or the more generic &lt;a href="https://developers.google.com/accounts/docs/OAuth2"&gt;OAuth 2.0 documentation&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;How do I stop my users from having to authorize my application every time they use it?&lt;/h2&gt;

&lt;p&gt;If you don’t take steps to store your users’ authentication data or set the appropriate flags on your request, the authentication process will run them through a permission-granting dialog similar to the one below every time:&lt;/p&gt;

&lt;br/&gt;
&lt;a href="http://2.bp.blogspot.com/-C2nngT6CVt8/T1YQxUPQDtI/AAAAAAAAAH0/Cy3QsbnQh_Q/s1600/consent1.png" imageanchor="1" style=""&gt;&lt;img border="0" height="270" width="320" src="http://2.bp.blogspot.com/-C2nngT6CVt8/T1YQxUPQDtI/AAAAAAAAAH0/Cy3QsbnQh_Q/s320/consent1.png" /&gt;&lt;/a&gt;



&lt;p&gt;In order to avoid this and improve the experience for users of your web or installed application, you should store their authentication data.&lt;/p&gt;

&lt;p&gt;There are two types of token that we need to know about here: &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;access tokens&lt;/span&gt; and &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;refresh tokens&lt;/span&gt;. Access tokens give you immediate access to a user’s data, and are short-lived, whereas refresh tokens are long-lived, allowing you to generate new access tokens when you need them, even if the user isn’t present.&lt;/p&gt;

&lt;p&gt;For installed or web applications we recommend storing both, and using the refresh token to generate a new access token whenever the one you stored expires.&lt;/p&gt;

&lt;p&gt;For client-side applications, things should be a little easier, as all it should take is a redirect. The &lt;a href="https://developers.google.com/accounts/docs/OAuth2UserAgent"&gt;OAuth 2.0 documentation for client-side applications&lt;/a&gt; has all the information you need.&lt;/p&gt;

&lt;p&gt;For more information on request tokens, you can check the &lt;a href="https://developers.google.com/accounts/docs/OAuth2InstalledApp#refresh"&gt;relevant section in the OAuth 2.0 documentation&lt;/a&gt;, or the &lt;a href="https://developers.google.com/adsense/management/complete_guide#auth_persist"&gt;“Persisting authentication data” section&lt;/a&gt; in our client library guide if you’re using one of the client libraries.&lt;/p&gt;


&lt;h2&gt;How often can I run my report queries?&lt;/h2&gt;

&lt;p&gt;Every application has different needs, so the answer to this question will no doubt depend on what you’re doing. There are, however, a few guidelines we can give you.&lt;/p&gt;

&lt;p&gt;First of all, try to collect data on the same frequency that you analyze it. That is, if you’re interested in daily performance, there’s no need for you to collect data more often than once a day, as our reporting can compile that data for you.&lt;/p&gt;

&lt;p&gt;On the other hand, if you’re trying to get data as frequently as possible, bear in mind that we cache our report data for 60 seconds. There’s thus no point in running the same report more often than once a minute; the data you get won’t be any fresher, and you’ll just be wasting your request quota.&lt;/p&gt;


&lt;h2&gt;How do I get my performance data per country / domain?&lt;/h2&gt;

&lt;p&gt;Most reports are based on a time dimension such as &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;DATE&lt;/span&gt;, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;WEEK&lt;/span&gt; or &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;MONTH&lt;/span&gt;, which is to say that they’re grouped by that particular dimension.&lt;/p&gt;

&lt;p&gt;Not all reports need to be based on a time dimension, however. In fact, a very useful report for those of you with many international visitors is to get a breakdown of visitors per country. In order to get that, just set your start and end dates and choose &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;COUNTRY_CODE&lt;/span&gt; or &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;COUNTRY_NAME&lt;/span&gt; as the dimension.&lt;/p&gt;

&lt;p&gt;You can combine both approaches as well, to get a breakdown per country for every month, for example.&lt;/p&gt;

&lt;p&gt;To get some more background on reports and the concepts behind them, check out our &lt;a href="http://adsenseapi.blogspot.com/2011/11/adsense-management-api-diving-into.html"&gt;Diving into Reports blog post&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;What should I do if my question isn’t answered here?&lt;/h2&gt;

&lt;p&gt;We’ve got a whole bunch of resources for you, from the &lt;a href="https://developers.google.com/adsense/management/v1.1/reference/"&gt;reference documentation&lt;/a&gt; to our &lt;a href="https://developers.google.com/adsense/management/complete_guide"&gt;client library guide&lt;/a&gt; and &lt;a href="https://developers.google.com/adsense/management/libraries"&gt;code examples for several programming languages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If that doesn’t help, take a look in &lt;a href="https://developers.google.com/adsense/community/"&gt;our forum&lt;/a&gt;, and you might find a similar question or get a chance to post your own. You can also join us in a Hangout during our regular &lt;a href="https://developers.google.com/adsense/community/officehours"&gt;office hours&lt;/a&gt;. We’ll be around to give you a hand in either case!&lt;/p&gt;

&lt;p&gt;&lt;span class="post-author"&gt;&lt;a href="http://plus.google.com/u/0/112096250552967536954/about"&gt;&lt;img width="20" height="20" src="https://lh5.googleusercontent.com/-4-fuZGAEbvk/AAAAAAAAAAI/AAAAAAAAABI/QRvIXrk01T8/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="http://plus.google.com/u/0/112096250552967536954/about" rel="author"&gt;Sérgio Gomes&lt;/a&gt;, AdSense API Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-7135452032724814135?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/WeV4wELXzCU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/7135452032724814135?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/7135452032724814135?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/WeV4wELXzCU/frequently-asked-questions-for-adsense.html" title="Frequently Asked Questions for the AdSense Management API" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-C2nngT6CVt8/T1YQxUPQDtI/AAAAAAAAAH0/Cy3QsbnQh_Q/s72-c/consent1.png" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/03/frequently-asked-questions-for-adsense.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBSXY-eip7ImA9WhVTFkk.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-1308037589979305090</id><published>2012-03-01T16:00:00.000-08:00</published><updated>2012-03-01T16:02:38.852-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-01T16:02:38.852-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwhirl" /><title>Effect of Configuring a New Ad Network to an Existing AdWhirl Application</title><content type="html">&lt;p&gt;We’ve received questions asking us what happens new ad networks are added to an existing AdWhirl application.  In this post we’ll explain how older versions of your apps will handle a new ad network configuration.&lt;/p&gt;

&lt;p&gt;Say you published an application using &lt;a href="https://www.adwhirl.com/"&gt;AdWhirl&lt;/a&gt;, configured to use two ad networks.  Now it’s time to release the next version, and you’d like to add a third ad network while you’re at it.  But how will that affect the ad network request distribution for users running an older version of your application, which doesn’t have the new ad network SDK bundled?  Older versions will request the updated configuration for both iOS and Android, but the two SDKs will process the configuration differently.&lt;/p&gt;

&lt;h2&gt;How the iOS SDK Distributes Ad Network Requests&lt;/h2&gt;

&lt;p&gt;When the iOS SDK &lt;a href="http://code.google.com/p/adwhirl/source/browse/iphone/AdWhirl/internal/AdWhirlConfig.m?repo=sdk-iphone#460"&gt;parses&lt;/a&gt; the new configuration, it will only consider an ad network valid if it meets certain conditions, including &lt;a href="http://code.google.com/p/adwhirl/source/browse/iphone/AdWhirl/internal/AdWhirlAdNetworkConfig.m?repo=sdk-iphone#121"&gt;having the corresponding network adapter&lt;/a&gt;.  If the adapter doesn’t exist, then &lt;b&gt;that network will be ignored&lt;/b&gt;.  Your ad network percentages will then be &lt;b&gt;normalized&lt;/b&gt; based on the total valid percentage of allocations.&lt;/p&gt;

&lt;br/&gt;
&lt;br/&gt;
&lt;center&gt;
&lt;a href="http://4.bp.blogspot.com/-blK6X3U5K-s/T07EbaW2iHI/AAAAAAAAAHE/-pSXv-G1jt0/s1600/AdWhirliOSConfigurations3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="209" width="480" src="http://4.bp.blogspot.com/-blK6X3U5K-s/T07EbaW2iHI/AAAAAAAAAHE/-pSXv-G1jt0/s400/AdWhirliOSConfigurations3.png" /&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;br/&gt;

&lt;p&gt;Let’s demonstrate this with the above example.  Say your original app had two ad networks, Network 1 and Network 2; now you’re adding Network 3 to the next version of your app.  If your new ad network configuration sends 30% of requests to Network 1, 10% to Network 2, and 60% to Network 3, users running an app version without Network 3 will send 75% of the total ad requests to Network 1 and 25% of requests to Network 2.  Backfill priority will be the same as specified on the server, but it will not include network 3.&lt;/p&gt;

&lt;h2&gt;How the Android SDK Distributes Ad Network Requests&lt;/h2&gt;

&lt;p&gt;When the Android SDK &lt;a href="http://code.google.com/p/adwhirl/source/browse/src/com/adwhirl/AdWhirlManager.java?repo=sdk-android#339"&gt;parses&lt;/a&gt; the new configuration, it will blindly add all networks as valid choices.  When it tries to make a request to an ad network whose SDK is not available, the request will fail gracefully.  However, AdWhirl will then &lt;b&gt;rollover to your backfill priority&lt;/b&gt;.  What does this mean for the ad network percentage distribution?&lt;/p&gt;

&lt;br/&gt;
&lt;br/&gt;
&lt;center&gt;
&lt;a href="http://3.bp.blogspot.com/-D_uqlOatoxc/T07ExJZeCJI/AAAAAAAAAHQ/hJ6zQX5W1gE/s1600/AdWhirlAndroidConfigurations3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="209" width="480" src="http://3.bp.blogspot.com/-D_uqlOatoxc/T07ExJZeCJI/AAAAAAAAAHQ/hJ6zQX5W1gE/s400/AdWhirlAndroidConfigurations3.png" /&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;br/&gt;

&lt;p&gt;Using the same example configuration, the 60% of requests to Network 3 will fail for users with an older version, and AdWhirl will rollover to your top backfill option.  If your top backfill option is Network 2, then Network 2 will consume the Network 3 traffic - you will have 30% of all requests going to Network 1, and &lt;b&gt;70%&lt;/b&gt; to Network 2.  This is likely not what you would expect, so be careful when adding new networks to an existing Android application.&lt;/p&gt;

&lt;p&gt;In summary, the iOS SDK will respect the percentages given to the valid ad networks (expected), but the Android SDK will send the invalid ad network traffic to the top backfill option (unexpected).&lt;/p&gt;

&lt;p&gt;We value your feedback, so please post to our &lt;a href="http://groups.google.com/group/adwhirl-users"&gt;developer forum&lt;/a&gt; if you have any questions about AdWhirl.&lt;/p&gt;


&lt;p&gt;&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/112870803958713211515/"&gt;&lt;img width="20" height="20" src="https://lh4.googleusercontent.com/-VjOdMVF5_qc/AAAAAAAAAAI/AAAAAAAAAB8/aYikCy7pZmw/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/112870803958713211515/" rel="author"&gt;Eric Leichtenschlag&lt;/a&gt;, AdMob Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-1308037589979305090?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/wJRtj1dC2-c" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1308037589979305090?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1308037589979305090?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/wJRtj1dC2-c/effect-of-configuring-new-ad-network-to.html" title="Effect of Configuring a New Ad Network to an Existing AdWhirl Application" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-blK6X3U5K-s/T07EbaW2iHI/AAAAAAAAAHE/-pSXv-G1jt0/s72-c/AdWhirliOSConfigurations3.png" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/03/effect-of-configuring-new-ad-network-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAMQHo8cCp7ImA9WhVTEUw.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-8059752632339178798</id><published>2012-02-24T12:19:00.000-08:00</published><updated>2012-02-24T12:19:41.478-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-24T12:19:41.478-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="client_libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="examples" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><title>Streamline your coding with AdWords API examples</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Are you getting started with the AdWords API but short on time to read the documentation? Do you need a reference implementation of a particular API operation? Check out our client libraries code examples which have undergone extensive renovations in the last libraries release!&lt;br /&gt;&lt;br /&gt;

The code examples are one of the best resources to learn the API and understand version changes. It is also helpful to have a working code to troubleshoot issues you may have with your own implementation. You can find the list of the client libraries and the resources for each library on the &lt;a href="http://code.google.com/apis/adwords/docs/clientlibraries.html"&gt;AdWords API site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

There were a number of changes introduced which we hope will make the examples code base more useful and easy to follow:

&lt;ul&gt;
&lt;li&gt;The code examples are now oriented around typical use cases rather than the API-specific operations. To get Criteria report look for the getCriteriaReport example, to create text ads - for the createTextAds example.&lt;/li&gt;
&lt;li&gt;The number of input parameters was reduced which means you can run more examples as-is now, without adding specific object IDs.&lt;/li&gt;
&lt;li&gt;For each example the code is wrapped into a function which can be called with parameters. This makes it easier to find out what parameters are required and improves examples testability.&lt;/li&gt;
&lt;li&gt;Some of our &lt;a href="http://code.google.com/apis/adwords/docs/bestpractices.html"&gt;Best Practices&lt;/a&gt; are now also demonstrated in the examples and described in the comments.&lt;/li&gt;
&lt;/ul&gt;

We’ve also changed the example files layout. We’ve noticed developers find it easier to navigate defined sections:

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;BasicOperations&lt;/b&gt;: start here if you are new to the AdWords API. This directory contains examples of basic operations such as creation, updating and deletion of most commonly used objects. The examples demonstrate the principles used in the rest of the API: selectors, predicates, paging, grouping of operations.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Targeting, CampaignManagement&lt;/b&gt;: these sections contain more advanced examples on the AdWords API such as geo targeting, location extensions, experiments and ad parameters.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ErrorHandling&lt;/b&gt;: examples in the ErrorHandling directory demonstrate how to handle different kind of errors occurring during the API calls. The errors covered here are API-specific (e.g. not network errors) and not transient so they could not be solved by retrying the exact same request.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reporting&lt;/b&gt;: this section includes examples on how to retrieve a report with the client libraries. You can find the list of reports and their fields available on our &lt;a href="http://code.google.com/apis/adwords/docs/appendix/reports.html"&gt;codesite page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AccountManagement&lt;/b&gt;: examples in the AccountManagement section will be helpful if you manage more than one account via the API. Here you can find code which retrieves accounts’ hierarchy or finds units spent on particular account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Optimization&lt;/b&gt;: If you are looking for keyword or placement ideas or traffic estimations, you can find the examples in this section.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remarketing&lt;/b&gt;: conversion tracker and audience operations are shown in examples in the Remarketing section.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Misc&lt;/b&gt;: this section contains examples that don’t fit into any other category and also some library-specific code samples. Check out our OAuth authorization code example here.&lt;/li&gt;
&lt;/ul&gt;

Browse updated examples code in: &lt;a href="http://code.google.com/p/google-api-adwords-dotnet/source/browse/#svn/trunk/examples/csharp/v201109"&gt;DotNet&lt;/a&gt;, &lt;a href="http://code.google.com/p/google-api-ads-python/source/browse/#svn%2Ftrunk%2Fexamples%2Fadspygoogle%2Fadwords%2Fv201109"&gt;Python&lt;/a&gt;, &lt;a href="http://code.google.com/p/google-api-ads-ruby/source/browse/#git/adwords_api/examples/v201109"&gt;Ruby&lt;/a&gt;, &lt;a href="http://code.google.com/p/google-api-adwords-perl/source/browse/#svn/tags/current/examples/v201109"&gt;Perl&lt;/a&gt;, &lt;a href="http://code.google.com/p/google-api-adwords-php/source/browse/trunk#trunk/examples/v201109"&gt;PHP&lt;/a&gt;. We are working to update examples for Java and JavaScript as well.&lt;br /&gt;&lt;br /&gt;

As always, please feel free to ask any questions regarding the AdWords API on our &lt;a href="http://code.google.com/apis/adwords/community/"&gt;forum&lt;/a&gt; or during scheduled &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;office hours&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

&lt;span class='post-author'&gt;&lt;img height="20" width="20" src="https://lh4.googleusercontent.com/TC_19eKTaQylmDvvwc4e--LTo8pVpPIexf-WKpH7ShHWSvgWGh7dnoptR16yZcx116ZSHbFkVuTIeQFEURaS6fgeTVzFNBEO6gjkJ0dc-iwSZL2PAZY" style="vertical-align: middle; border:none;"/&gt; - &lt;a href="https://plus.google.com/116761214452114671837?rel=author"&gt;Danial Klimkin&lt;/a&gt;, AdWords API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-8059752632339178798?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/_He8OgF7zBk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/8059752632339178798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/8059752632339178798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/_He8OgF7zBk/streamline-your-coding-with-adwords-api.html" title="Streamline your coding with AdWords API examples" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/streamline-your-coding-with-adwords-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEGRn88eyp7ImA9WhVTEUw.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-3484298121776496579</id><published>2012-02-24T11:20:00.000-08:00</published><updated>2012-02-24T13:07:07.173-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-24T13:07:07.173-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_v201201" /><category scheme="http://www.blogger.com/atom/ns#" term="PQL" /><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><category scheme="http://www.blogger.com/atom/ns#" term="reports" /><title>Discover DFP API v201201: PQL Report Filtering</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
In the &lt;a href="http://googleadsdeveloper.blogspot.com/2012/02/announcing-v201201-of-dfp-api.html"&gt;v201201 version&lt;/a&gt; of the API, we’ve added the ability to perform &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.ReportQuery.html#statement"&gt;PQL filtering&lt;/a&gt; in reports.  As an example of what you can do with this feature, you can now limit the report to only orders and line items you want to see. This will help shorten the report job processing time and reduces the size of the report generated.  The following Java code snippet creates a report job to pull all the line items belonging to an order in your network:&lt;br /&gt;
&lt;pre class="prettyprint"&gt;Long orderId = Long.parseLong("INSERT_ORDER_ID_HERE");
// Create statement to filter for an order.
Statement filterStatement = new StatementBuilder(
    "WHERE ORDER_ID = :id").putValue("id", orderId).toStatement();

// Create report job.
ReportJob reportJob = new ReportJob();

// Create report query.
ReportQuery reportQuery = new ReportQuery();
reportQuery.setStatement(filterStatement);
reportQuery.setDateRangeType(DateRangeType.LAST_MONTH);
reportQuery.setDimensions(new Dimension[] {Dimension.LINE_ITEM});
reportQuery.setDimensionAttributes(new DimensionAttribute[] {
DimensionAttribute.ORDER_TRAFFICKER});
reportQuery.setColumns(
    new Column[] {Column.AD_SERVER_IMPRESSIONS, Column.AD_SERVER_REVENUE});
reportJob.setReportQuery(reportQuery);
&lt;/pre&gt;
The ‘ORDER_ID’ field in the WHERE clause is a &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.ReportQuery.html#dimensions"&gt;dimension&lt;/a&gt; enumeration name. A full breakdown of the supported filter enumerations can be found in the &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.Dimension.html"&gt;documentation&lt;/a&gt;.  We encourage the use of &lt;a href="http://code.google.com/apis/dfp/docs/bestpractices.html#UseBindParameter"&gt;bind variables&lt;/a&gt; to build reusable filter statements, much like other services in the API where PQL is used.  Whenever possible, try to filter on IDs rather than names (i.e. use CITY_CRITERIA_ID over CITY_NAME) since matching by name is case sensitive.  &lt;br /&gt;
&lt;br /&gt;
If you also specify the &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.ReportQuery.html#dateRangeType"&gt;dateRangeType&lt;/a&gt; and &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.ReportQuery.html#dimensionFilters"&gt;dimensionFilters&lt;/a&gt; fields on the &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/ReportService.ReportQuery.html"&gt;ReportQuery&lt;/a&gt; object, the filter statement will be applied in conjunction (in a logical AND) so that each entry in the report will match all of the filter criteria.  You can check out a full working example in &lt;a href="http://code.google.com/p/google-api-dfp-java/source/browse/trunk/examples/v201201/reportservice/RunDeliveryReportExample.java"&gt;Java&lt;/a&gt; or language equivalent in our &lt;a href="http://code.google.com/apis/dfp/docs/clients.html"&gt;client libraries&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This is the first post in the &lt;a href="http://googleadsdeveloper.blogspot.com/search/label/dfp_v201201"&gt;Discover DFP API in v201201 series&lt;/a&gt;; our next post will cover syncing objects with the new &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/LineItemService.LineItem.html#lastModifiedDateTime"&gt;lastModifiedDateTime&lt;/a&gt; field.  Leave us a comment on the &lt;a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api"&gt;forum&lt;/a&gt; with any feedback you have for the API or topics you would like to see in the discover series.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/115474229489284556707"&gt;&lt;img height="20" src="https://lh3.googleusercontent.com/-pDdv2kTjyNw/AAAAAAAAAAI/AAAAAAAAAnE/q_kK4BYy-mM/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/u/0/115474229489284556707" rel="author"&gt;Jeffrey Sham&lt;/a&gt;, DFP API Team&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-3484298121776496579?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/eSiQc4MISqk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3484298121776496579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3484298121776496579?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/eSiQc4MISqk/discover-dfp-api-in-v201201-pql-report.html" title="Discover DFP API v201201: PQL Report Filtering" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-pDdv2kTjyNw/AAAAAAAAAAI/AAAAAAAAAnE/q_kK4BYy-mM/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/discover-dfp-api-in-v201201-pql-report.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUICRnYyeSp7ImA9WhVTEE8.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-4911512211983528800</id><published>2012-02-23T10:59:00.000-08:00</published><updated>2012-02-23T10:59:27.891-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-23T10:59:27.891-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ad_exchange_rtb" /><category scheme="http://www.blogger.com/atom/ns#" term="ad_exchange" /><title>Upcoming changes to the Ad Exchange RTB Protocol</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
In April 2012, we will be making two changes to the &lt;i&gt;allowed_vendor_type&lt;/i&gt; field of the Ad Exchange &lt;a href="https://code.google.com/apis/adx-rtb/docs/request.html"&gt;real-time bidding protocol&lt;/a&gt;. Before describing the upcoming changes, let’s review how to use technology vendors on the exchange.

&lt;h2&gt;Ad Exchange vendor policies&lt;/h2&gt;&lt;br&gt;

One of the benefits of buying on the DoubleClick Ad Exchange is the ability to use technology vendors for ad serving, research, remarketing and more. To protect Ad Exchange publishers, we certify vendors before they’re allowed to run on the exchange. And once they’re certified, we divide them into two categories, outlined in our &lt;a href="http://support.google.com/adxbuyer/bin/answer.py?hl=en&amp;amp;answer=186777"&gt;Help Center&lt;/a&gt;:

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;No Declaration Required&lt;/b&gt;: Vendors that are whitelisted to run across the exchange, and therefore do not need to be declared in a bid response.&lt;/li&gt;&lt;br /&gt;

&lt;li&gt;&lt;b&gt;Declaration Required&lt;/b&gt;: Vendors that publishers are permitted to block, and therefore must be declared in a bid response.&lt;/li&gt;&lt;br /&gt;

Because Ad Exchange buyers have access to sites in the &lt;a href="http://support.google.com/adwords/bin/answer.py?hl=en&amp;amp;answer=6104"&gt;Google Display Network&lt;/a&gt; (GDN), the GDN runs an additional certification process to determine which vendors may run on their network. Therefore, there is a third label applied to vendors:&lt;br /&gt;&lt;br /&gt;

&lt;li&gt;&lt;b&gt;GDN Allowed&lt;/b&gt;: Vendors that are permitted to run on the Google Display Network. Note that categories 1 and 2 still apply to this subset; that is, some GDN Allowed vendors require declaration, and others don’t.&lt;/li&gt;
&lt;/ol&gt;

GDN Allowed vendors are listed in the GDN &lt;a href="http://support.google.com/adwordspolicy/bin/answer.py?hl=en&amp;amp;answer=94230"&gt;Requirements for 3rd Party Ad Serving&lt;/a&gt;. On this page, navigate to &lt;b&gt;Vendors list (global)&lt;/b&gt; under the &lt;b&gt;Requirements on the Google Display Network through the DoubleClick Ad Exchange&lt;/b&gt; section. Vendors marked with a + sign are bucket 2, Declaration Required.

&lt;h2&gt;An overview of the changes&lt;/h2&gt;&lt;br&gt;

In April 2012, we will make two simplifications to the &lt;i&gt;allowed_vendor_type&lt;/i&gt; field of the Ad Exchange real-time bidding protocol.

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Removal of No Declaration Required vendors&lt;/b&gt;: In the bid request, the &lt;i&gt;allowed_vendor_type&lt;/i&gt; field will only contain vendors from category 2, Declaration Required; you will no longer see any bid requests with vendors from category 1. Accordingly, your bid responses should only contain vendors from category 2 (though your response will not be rejected if it contains a category 1 vendor). We have updated our &lt;a href="http://commondatastorage.googleapis.com/adx-rtb-dictionaries/vendors.txt"&gt;vendors.txt&lt;/a&gt; file to include only the vendors that need to be declared.&lt;/li&gt;&lt;br /&gt;

&lt;li&gt;&lt;b&gt;Removal of allowed_vendor_type for GDN requests&lt;/b&gt;: Because every GDN site has the same set of allowed vendors, we will no longer include allowed vendors in bid requests for GDN sites (denoted by seller_network: “GCN”, soon to be updated to “GDN”). However, if the vendor you’re using falls into the Declaration Required bucket, &lt;b&gt;you must still include it in your bid response&lt;/b&gt;. We have listed these vendors - those that are allowed on the GDN, and won’t appear in bid requests, but still require declaration - in &lt;a href="http://commondatastorage.googleapis.com/adx-rtb-dictionaries/gdn-vendors.txt"&gt;gdn-vendors.txt&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

As always, please reach out to your Google account team with any questions about this change.&lt;br /&gt;&lt;br /&gt;

&lt;span class='post-author'&gt;Posted by Eileen Duffy, Ad Exchange Trainer&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-4911512211983528800?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/B6mmcAorNwE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/4911512211983528800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/4911512211983528800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/B6mmcAorNwE/upcoming-changes-to-ad-exchange-rtb.html" title="Upcoming changes to the Ad Exchange RTB Protocol" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/upcoming-changes-to-ad-exchange-rtb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCSXw7fSp7ImA9WhRaGUk.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-1384975861271115821</id><published>2012-02-22T11:49:00.000-08:00</published><updated>2012-02-22T11:49:28.205-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-22T11:49:28.205-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_v201109" /><title>AdWords API v201109 migration deadline is next week. Make the move today to avoid errors</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
We would like to once again remind you that after February 29, 2012, calls made using the following AdWords API versions will return errors:

&lt;ul&gt;&lt;li&gt;AdWords API versions v13, v200909, v201003, v201008, v201101&lt;/li&gt;&lt;/ul&gt;

We strongly encourage you to make the move to v201109 before the February 29th deadline. This will give you the opportunity to identify any issues before it is too late to roll back to previous versions.&lt;br /&gt;&lt;br /&gt;

In addition, check that you have no automated or scheduled scripts running that are using old code.&lt;br /&gt;&lt;br /&gt;

To ensure that your code uses only v201109, be sure you are using the latest version of our &lt;a href="http://code.google.com/apis/adwords/docs/clientlibraries.html"&gt;client libraries&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

If you have specific migration questions, you can asking them in &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;upcoming office hours&lt;/a&gt; or on the &lt;a href="https://groups.google.com/forum/#!forum/adwords-api"&gt;forum&lt;/a&gt;. Additional migration resources are available &lt;a href="http://googleadsdeveloper.blogspot.com/2012/01/30-days-left-to-migrate-to-adwords-api.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

&lt;span class='post-author'&gt;Posted by Katie Miller, AdWords API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-1384975861271115821?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/SJcxXfdyTuM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1384975861271115821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1384975861271115821?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/SJcxXfdyTuM/adwords-api-v201109-migration-deadline.html" title="AdWords API v201109 migration deadline is next week. Make the move today to avoid errors" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/adwords-api-v201109-migration-deadline.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQCQnY4fyp7ImA9WhRaGEg.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-1087480646381472400</id><published>2012-02-21T11:42:00.000-08:00</published><updated>2012-02-21T11:42:43.837-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-21T11:42:43.837-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfa_api" /><category scheme="http://www.blogger.com/atom/ns#" term="dfa_v1.17" /><title>Introducing DFA API v1.17</title><content type="html">&lt;p&gt;The newest version of the DFA API is now available: v1.17. This release includes a variety of bug fixes, many of which resolve issues that you reported on our &lt;a href="https://groups.google.com/group/google-doubleclick-for-advertisers-api"&gt;forum&lt;/a&gt;. It also pares down a few outdated and unused operations.&lt;/p&gt;

&lt;h2&gt;Bug Fix Highlights&lt;/h2&gt;

&lt;p&gt;Some of the bugs tackled in this release include:
&lt;ul&gt;&lt;li&gt;Placement end date validation has been fixed. [&lt;a href="https://groups.google.com/group/google-doubleclick-for-advertisers-api/browse_thread/thread/b4a3d28abc6b19fd/5414fe5e6391501e"&gt;Reported on our forum&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;activeFilter&lt;/code&gt; field of &lt;a href="https://developers.google.com/doubleclick-advertisers/docs/reference/current/ad/objects/AdSearchCriteria"&gt;AdSearchCritera&lt;/a&gt; is no longer ignored. [&lt;a href="https://groups.google.com/group/google-doubleclick-for-advertisers-api/browse_thread/thread/57b313edd0f77434/f8d879642c3f7b60"&gt;Reported on our forum&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Attempting to save an incorrect &lt;a href="https://developers.google.com/doubleclick-advertisers/docs/reference/current/ad/objects/DefaultAd"&gt;DefaultAd&lt;/a&gt; now gives a more descriptive error message. [&lt;a href="https://groups.google.com/group/google-doubleclick-for-advertisers-api/browse_thread/thread/3c2849536331516e/ee7f1fcbbe55fddc"&gt;Reported on our forum&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;expectedUrl&lt;/code&gt; field of &lt;a href="https://developers.google.com/doubleclick-advertisers/docs/reference/current/spotlight/objects/SpotlightActivity"&gt;SpotlightActivity&lt;/a&gt; is now required. Passing in a &lt;code&gt;null&lt;/code&gt; value used to result in a default URL of "http://". It now results in an invalid URL error.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;h2&gt;Deprecation and Sunset of v1.15&lt;/h2&gt;

&lt;p&gt;With this new release, our friend v1.15--the version from two releases ago--is now deprecated.  As &lt;a href="http://googleadsdeveloper.blogspot.com/2011/12/introducing-dfa-api-v116.html"&gt;previously announced&lt;/a&gt;, we will continue to support it until March 3rd, 2012 at which time it will be entirely removed from service. Be sure to migrate any applications currently using v1.15 to one of the two supported versions by this time. Come benefit from the v1.17 fixes!&lt;/p&gt;

&lt;h2&gt;Sunset of v1.16 in Early June&lt;/h2&gt;

&lt;p&gt;Keeping with our standard release cycle, v1.16 will be sunset in early June. Please use this time window to make arrangements for migrating any v1.16 implementations before it is retired.&lt;/p&gt;

&lt;h2&gt;Complete Release Notes&lt;/h2&gt;

&lt;p&gt;This post reflects just some of the changes in the release. Our updated &lt;a href="https://developers.google.com/doubleclick-advertisers/docs/release_notes"&gt;release notes page&lt;/a&gt; gives you a more in-depth breakdown of what has changed since the previous version. Please refer to this page when upgrading your applications.&lt;/p&gt;

&lt;p&gt;As always, we highly value your feedback and questions. Please join us on our &lt;a href="https://groups.google.com/group/google-doubleclick-for-advertisers-api"&gt;forum&lt;/a&gt; whenever you’d like to reach us.&lt;/p&gt;

&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/113204894998269100367/"&gt;&lt;img height="20" src="https://lh5.googleusercontent.com/-jfMpzPefhpA/AAAAAAAAAAI/AAAAAAAAAC4/RiK3R7FaK-8/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/113204894998269100367/" rel="author"&gt;Joseph DiLallo&lt;/a&gt;, DFA API Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-1087480646381472400?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/Fr-iPMBiJU0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1087480646381472400?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1087480646381472400?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/Fr-iPMBiJU0/introducing-dfa-api-v117.html" title="Introducing DFA API v1.17" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-jfMpzPefhpA/AAAAAAAAAAI/AAAAAAAAAC4/RiK3R7FaK-8/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/introducing-dfa-api-v117.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ECQnkyeip7ImA9WhRaFUw.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-860557255951550654</id><published>2012-02-17T15:01:00.000-08:00</published><updated>2012-02-17T15:01:03.792-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-17T15:01:03.792-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_ReportDefinitionService" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="reporting" /><title>Demographic performance report deprecation</title><content type="html">&lt;p&gt;Demographic reports allow you to see the performance of your ads by age groups and gender on the specific sites in the Display Network that provide this information. As part of a greater effort to simplify AdWords, the &lt;a href="http://code.google.com/apis/adwords/docs/appendix/reports.html#demographic"&gt;DEMOGRAPHIC_PERFORMANCE_REPORT&lt;/a&gt; is being deprecated and will no longer be available in the API starting on or around March 21, 2012. You can back up the historical demographic data for your campaigns by downloading these reports before they sunset.&lt;/p&gt;

&lt;p&gt;Please be aware that this change doesn’t impact demographic exclusions for your campaigns, which are done via the &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CampaignCriterionService.AgeRange.html"&gt;AgeRange&lt;/a&gt; and &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CampaignCriterionService.Gender.html"&gt;Gender&lt;/a&gt; criteria in the &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CampaignCriterionService.html"&gt;CampaignCriterionService&lt;/a&gt;. If you have additional questions about this deprecation, please reach out to us on the &lt;a href="http://code.google.com/apis/adwords/community/"&gt;AdWords API forum&lt;/a&gt; or one of our regular &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;Google+ Hangout office hours&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/103231502413952116096"&gt;&lt;img width="20" height="20" src="https://lh4.googleusercontent.com/-qbaZRXjidts/AAAAAAAAAAI/AAAAAAAAABo/HfCK2T4S-14/s200-c-k/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/u/0/103231502413952116096" rel="author"&gt;Eric Koleda&lt;/a&gt;, AdWords API Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-860557255951550654?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/rVM07oIUo5I" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/860557255951550654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/860557255951550654?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/rVM07oIUo5I/demographic-performance-report.html" title="Demographic performance report deprecation" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/demographic-performance-report.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQ3c6eSp7ImA9WhRaFEw.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-8046261340815542113</id><published>2012-02-16T10:00:00.000-08:00</published><updated>2012-02-16T10:00:42.911-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-16T10:00:42.911-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_v201109" /><title>Migrate to AdWords API v201109 in the next 2 weeks to avoid application interruption</title><content type="html">This is a reminder that after February 29, 2012, calls made using the following AdWords API versions will return errors:
&lt;ul&gt;&lt;li&gt;AdWords API versions v13, v200909, v201003, v201008, v201101&lt;/li&gt;&lt;/ul&gt;

If you would like your applications to run without interruption, you must migrate to AdWords API v201109 by February 29th.

Migration resources are available &lt;a href="http://googleadsdeveloper.blogspot.com/2012/01/30-days-left-to-migrate-to-adwords-api.html"&gt;here&lt;/a&gt;. In addition, if you have specific questions, we encourage you to &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;attend office hours&lt;/a&gt; or post questions to the &lt;a href="https://groups.google.com/forum/#!forum/adwords-api"&gt;forum&lt;/a&gt;.

&lt;p&gt;&lt;span class="post-author"&gt;Posted by Katie Miller, AdWords API Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-8046261340815542113?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/T6mkZ6EDJZs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/8046261340815542113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/8046261340815542113?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/T6mkZ6EDJZs/migrate-to-adwords-api-v201109-in-next.html" title="Migrate to AdWords API v201109 in the next 2 weeks to avoid application interruption" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/migrate-to-adwords-api-v201109-in-next.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ERng_eyp7ImA9WhRaFE0.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-6521513247128007729</id><published>2012-02-16T07:56:00.002-08:00</published><updated>2012-02-16T07:56:47.643-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-16T07:56:47.643-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ad_exchange" /><title>Welcoming the Ad Exchange developer community</title><content type="html">The &lt;a href="http://www.google.com/doubleclick/advertisers/ad_exchange.html"&gt;DoubleClick Ad Exchange&lt;/a&gt; launched five years ago (logging its first impression in June 2007), and it didn’t take long for the product to open up to developers. In 2008, we launched a &lt;a href="https://code.google.com/apis/adx-rtb/"&gt;real-time bidding (RTB) protocol&lt;/a&gt;, enabling sophisticated buyers to analyze and bid for impressions in real time. As the Ad Exchange and RTB grew, so did our pool of developers.&lt;br /&gt;&lt;br /&gt;

Presently, close to 75 percent of all Ad Exchange spend comes via RTB. Some of our largest buyers are agency trading desks and demand-side platforms that were created around the RTB opportunity. Simply put, Ad Exchange thrives thanks to the work of our developer community.&lt;br /&gt;&lt;br /&gt;

&lt;div class="separator" style="text-align: center;"&gt;&lt;img border="0" height="240" width="320" src="https://lh6.googleusercontent.com/plFSjfJh5aKaliAozcgxHyukMq0uqqxBuwZ_kI3S2fIa45LiwoDYO1cVT8P1pUY0gWsez0VmEqd6QSxQItzBqDRLbSF0qe_rR53Tl58_R5ui3fui8Vk" /&gt;&lt;/div&gt;&lt;br /&gt;

Today, we officially welcome Ad Exchange developers to the Google Ads Developer Blog. We’ll be using the blog to update Ad Exchange developers on news, best practices, and beta features. We’ll also highlight upcoming events like webinars, Google+ Hangouts, and on-site Developer Day workshops.&lt;br /&gt;&lt;br /&gt;

The Ad Exchange team is excited to engage more with our developer community. To subscribe to Ad Exchange news, click on our &lt;a href="http://feeds.feedburner.com/blogspot/NkvlC"&gt;ad_exchange&lt;/a&gt; feed.&lt;br /&gt;&lt;br /&gt;

&lt;span class='post-author'&gt;Posted by Ad Exchange Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-6521513247128007729?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/ydLFSg6Q21U" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/6521513247128007729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/6521513247128007729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/ydLFSg6Q21U/welcoming-ad-exchange-developer.html" title="Welcoming the Ad Exchange developer community" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/welcoming-ad-exchange-developer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFQ388fip7ImA9WhRaGEk.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-2640206279870522648</id><published>2012-02-16T03:02:00.000-08:00</published><updated>2012-02-21T09:28:32.176-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-21T09:28:32.176-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chart_tools" /><category scheme="http://www.blogger.com/atom/ns#" term="adsense_management_api" /><title>Chart tuning: user interactivity</title><content type="html">&lt;p&gt;&lt;a href="http://googleadsdeveloper.blogspot.com/2012/02/chart-tuning-advanced-data.html"&gt;Welcome back&lt;/a&gt; to Chart Tuning! In this second half of the series we will show you how to define the different views for our chart and implement the zooming functionalities.&lt;/p&gt;

&lt;p&gt;Before diving into the code explanation, check out the &lt;a href="http://savedbythegoog.appspot.com/?id=e582e195db515b23aec104980f0cb80a7b689043"&gt;live example&lt;/a&gt; and the &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/#git%2FChartTuning"&gt;source code&lt;/a&gt; of the example chart if you haven’t yet.&lt;/p&gt;
&lt;h2&gt;Defining week and month view&lt;/h2&gt;

&lt;p&gt;Now that all our data is in place, we can get the &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#46"&gt;visualization started&lt;/a&gt;. First we create a &lt;code&gt;&lt;a href="http://code.google.com/apis/chart/interactive/docs/reference.html#chartwrapperobject"&gt;ChartWrapper&lt;/a&gt;&lt;/code&gt; by calling &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#178"&gt;getChartWrapper&lt;/a&gt;&lt;/code&gt;. After setting the data table for our chart, we set the visualization mode to month and we can draw the chart.&lt;/p&gt;

&lt;p&gt;The function &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#204"&gt;setMonthView&lt;/a&gt;&lt;/code&gt; shows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how to set the view window of the chart so that the values on the X axis (the dates) goes from 0 to the last day of the current month&lt;/li&gt;&lt;br/&gt;
&lt;li&gt;how to add the required text to points on the X axis&lt;/li&gt;&lt;br/&gt;
&lt;li&gt;how to visualize the subset of columns that we want in the month view.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The function &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#223"&gt;setWeekView&lt;/a&gt;&lt;/code&gt; shows how to set the view window so that we show seven points centered on the user’s selection and how to visualize all the columns, as per requirement of the week view.&lt;/p&gt;
&lt;h2&gt;Handling events&lt;/h2&gt;

&lt;p&gt;Google charts can fire events for which you can listen. &lt;a href="http://code.google.com/apis/chart/interactive/docs/events.html"&gt;Events&lt;/a&gt; can be triggered by user actions: for example a user clicks on a chart. This comes in handy for our zooming functionality, as we need to intercept a user clicking a column in the chart.&lt;/p&gt;

&lt;p&gt;To listen for these clicks, &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#50"&gt;we add&lt;/a&gt; an event listener on the chart, and call the &lt;code&gt;setWeekView&lt;/code&gt; function when the select event occurs.&lt;/p&gt;
&lt;h2&gt;Job done!&lt;/h2&gt;

&lt;p&gt;And that’s it, our chart is ready!&lt;/p&gt;

&lt;p&gt;Have you noticed the graceful transition of the chart when using the zoom functionality? &lt;a href="http://code.google.com/apis/chart/interactive/docs/animation.html"&gt;Transition animations&lt;/a&gt; are one of the latest additions to the Google Chart Tools, and you can experiment with different transition behaviors to properly tune your chart!&lt;/p&gt;
&lt;h2&gt;Some more thoughts on the User Experience&lt;/h2&gt;

&lt;p&gt;The zooming effect is nice to see, and when we’re in week view, we can use it to scroll the chart without changing a single line of code: if we click on one of the columns, the view centers on the selected point.&lt;/p&gt;

&lt;p&gt;Thinking about the user experience, we have to consider that it might not be clear for our user that the zooming effect is activated when clicking on one column, or that they can still scroll the chart by clicking the other columns.&lt;/p&gt;

&lt;p&gt;We can provide a better user experience by adding a button to toggle between week and month view; when in week view, we can add two arrow buttons to allow the user to scroll to the previous or the following week.&lt;/p&gt;

&lt;p&gt;Why don’t you try to modify the source code to implement this feature request? We will add our solutions to the example chart source code on February 21, and then discuss possible solutions and other improvement ideas during the &lt;a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg0LEgVFdmVudBjKrBMM/"&gt;AdSense Management API Office Hours&lt;/a&gt; scheduled for that day.&lt;/p&gt;

&lt;p&gt;For any questions or suggestions, don’t hesitate to engage with us in our forums:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/adsense-api"&gt;Google AdSense API forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://groups.google.com/forum/#!forum/google-visualization-api"&gt;Google Visualization API forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="color: red;"&gt;Update&lt;/span&gt;: &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/detail?r=604b3ddc19bcffcc12de1f4cbc25f68b42a515c3"&gt;our solution&lt;/a&gt; has been added to the AdSense API showcase project.&lt;/p&gt;

&lt;p&gt;&lt;span class="post-author"&gt; &lt;a href="https://plus.google.com/118276561380249048216/about"&gt;&lt;img src="https://lh5.googleusercontent.com/-RMp-hn38AZI/AAAAAAAAAAI/AAAAAAAAADE/59YQber32iU/photo.jpg?sz=20" style="vertical-align: middle; border: none;" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/118276561380249048216/about" rel="author"&gt;Silvano Luciani&lt;/a&gt;, AdSense API Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-2640206279870522648?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/koOvJydgM-M" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2640206279870522648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2640206279870522648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/koOvJydgM-M/chart-tuning-user-interactivity.html" title="Chart tuning: user interactivity" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-RMp-hn38AZI/AAAAAAAAAAI/AAAAAAAAADE/59YQber32iU/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/chart-tuning-user-interactivity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4AR305eyp7ImA9WhRaE08.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-3073765414751508768</id><published>2012-02-15T10:00:00.000-08:00</published><updated>2012-02-15T10:02:26.323-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T10:02:26.323-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="admob_sdk" /><title>Ship with the latest AdMob SDK every quarter</title><content type="html">&lt;p&gt;You asked for an &lt;a href="http://code.google.com/mobile/ads/docs/"&gt;AdMob SDK&lt;/a&gt; release schedule to time your own app releases, and we listened.  From here onwards, AdMob will ship an Android and iOS SDK release in the first two weeks of January, April, July and October.&lt;/p&gt;

&lt;p&gt;We are excited about adding clarity and predictability to your development cycles, while bringing you powerful features that accelerate your business with each SDK release.&lt;/p&gt;

&lt;p&gt;AdMob SDK v6.0 ships in April.  Stay tuned!&lt;/p&gt;

&lt;p&gt;&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/117301302576912694200/"&gt;&lt;img width="20" height="20" src="https://lh5.googleusercontent.com/-peXH4OqQoHo/AAAAAAAAAAI/AAAAAAAAAAA/D4WcEoCt4LI/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/117301302576912694200/" rel="author"&gt;Ayush Agarwal&lt;/a&gt;, Product Manager, AdMob&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-3073765414751508768?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/XwSu16-MqPg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3073765414751508768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3073765414751508768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/XwSu16-MqPg/ship-with-latest-admob-sdk-every.html" title="Ship with the latest AdMob SDK every quarter" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-peXH4OqQoHo/AAAAAAAAAAI/AAAAAAAAAAA/D4WcEoCt4LI/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/ship-with-latest-admob-sdk-every.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUNQnw_fCp7ImA9WhRaE00.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-2061650137413146237</id><published>2012-02-15T03:11:00.000-08:00</published><updated>2012-02-15T03:11:33.244-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T03:11:33.244-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chart_tools" /><category scheme="http://www.blogger.com/atom/ns#" term="adsense_management_api" /><title>Chart tuning: advanced data visualization</title><content type="html">&lt;p&gt;During &lt;a href="http://googleadsdeveloper.blogspot.com/search/label/chart_tools"&gt;Chart Tools Week&lt;/a&gt;, we showed you how to create a basic dashboard for &lt;a href="http://google.com/adsense"&gt;AdSense&lt;/a&gt; reporting using the &lt;a href="http://code.google.com/apis/adsense/management/"&gt;AdSense Management API&lt;/a&gt; and &lt;a href="http://code.google.com/apis/chart/"&gt;Google Chart Tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this new two-part series, we’ll examine more advanced charting techniques that will improve the look and feel of our chart as well as enable user interactivity.&lt;/p&gt;

&lt;p&gt;We’ll also show you how to use the &lt;a href="http://code.google.com/closure/library/"&gt;Google Closure Library&lt;/a&gt; to ease some of the data manipulation tasks when writing a JavaScript application.&lt;/p&gt;
&lt;h2&gt;The goal&lt;/h2&gt;

&lt;p&gt;Our goal is to produce &lt;a href="http://savedbythegoog.appspot.com/?id=e582e195db515b23aec104980f0cb80a7b689043"&gt;this Column Chart&lt;/a&gt; showing the earnings per day for the current month. We also want a zoom feature, with the following requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The chart is initially shown in a month view: standard columns are shown for the days of the current month up to the current day. For the current and future days we draw the columns with a different visualization style, to visually outline the uncertainty of the data measurement. On the X axis we show 4 or 5 titles, for day 1, 8, 15, 22 and 29 (except for non leap year February). The title is the day of the month.&lt;/li&gt;&lt;br /&gt;

&lt;li&gt;By clicking one of the columns, the user can zoom the chart to a week view. In the week view we show the values over the week centered on the day selected by the user: 7 columns are visualized, and for each data point we show the title on the X axis. We also add two other columns to the data visualization in order to supply more detailed information:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.google.com/adsense/bin/answer.py?hl=en&amp;answer=112030&amp;topic=19363&amp;ctx=topic"&gt;page views RPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://support.google.com/adsense/bin/answer.py?hl=en&amp;answer=1082522&amp;topic=19363&amp;ctx=topic"&gt;ad requests RPM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Finally, we add to the visualization a &lt;strong&gt;Zoom Out&lt;/strong&gt; button to allow the user to go back to the month view. The &lt;strong&gt;Zoom Out&lt;/strong&gt; button will disappear when the user zooms all the way out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dive with us into the &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/#git%2FChartTuning"&gt;source code&lt;/a&gt; of our example chart to see how easy this task can be! You can find instructions on how to setup the example project to use Closure in the &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/README"&gt;README&lt;/a&gt; file.&lt;/p&gt;
&lt;h2&gt;Getting to the goal: fetching the data&lt;/h2&gt;

&lt;p&gt;After the Google API JavaScript client &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/index.html#48"&gt;has loaded&lt;/a&gt;, the OAuth 2.0 flow completes, and the user logs in, &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#31"&gt;makeApiCall&lt;/a&gt;&lt;/code&gt; is called to start the generation of the chart.&lt;/p&gt;
 
&lt;p&gt;The first thing we do in &lt;code&gt;makeApiCall&lt;/code&gt; is fetch our data from the AdSense Management API. We want &lt;code&gt;DATE&lt;/code&gt; to be the dimension for our report, and &lt;code&gt;EARNINGS&lt;/code&gt;, &lt;code&gt;PAGE_VIEWS_RPM&lt;/code&gt; and &lt;code&gt;AD_REQUEST_RPM&lt;/code&gt; as our metrics. To determine &lt;code&gt;start date&lt;/code&gt; and &lt;code&gt;end date&lt;/code&gt;, we can use the Google Closure Library as shown in the &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#59"&gt;getRequestParams&lt;/a&gt;&lt;/code&gt; function. After that we are ready to &lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#39"&gt;send our request&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Formatting the data: using roles&lt;/h2&gt;

&lt;p&gt;Once we have the data, the next step is to format it into a &lt;code&gt;&lt;a href="http://code.google.com/apis/chart/interactive/docs/reference.html#DataTable"&gt;DataTable&lt;/a&gt;&lt;/code&gt; that will be consumed by our chart. The &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#77"&gt;addTableHeaders&lt;/a&gt;&lt;/code&gt; function shows how to add the columns that we need for our chart. Two column declarations might catch your attention:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
dt.addColumn({'type': 'string', role: 'tooltip'});
dt.addColumn({'type': 'boolean', role:'certainty'});
&lt;/pre&gt;

&lt;p&gt;For these columns we are using &lt;a href="http://code.google.com/apis/chart/interactive/docs/roles.html"&gt;DataTable Roles&lt;/a&gt;, an experimental feature of the Google Chart Tools that can be used to describe the purpose of the data in a column. Using the &lt;code&gt;tooltip&lt;/code&gt; role we can edit the text to display when the user hovers over data points. Using the &lt;code&gt;certainty&lt;/code&gt; role we can indicate whether a data point is certain or not, and have the column visualized in a different way accordingly.&lt;/p&gt;
&lt;h2&gt;Formatting the data: the content&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#45"&gt;After defining the columns&lt;/a&gt;, we can add rows of data to our &lt;code&gt;DataTable&lt;/code&gt;. To do this, we need to keep the following into account:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The AdSense Management API will return a result for a day only if there is a nonzero value for that day. In other words, if one day we had zero views, the API will not return a result for that day. This also means that we will not get results for days in the future.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;We want to make the certainty of a data point visible, so that we have a different visualization for measures that are certain and measures that are in progress or not started.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the first point, we need to iterate through the values returned from the API. If a &lt;code&gt;DATE&lt;/code&gt; is not present in the response, we add a row with value zero for all the metrics for that &lt;code&gt;DATE&lt;/code&gt; to the table. To satisfy the second point, we need to check if the current day of the iteration is the current day of the month or a day in the future. If it is in the future, we need to flag the row as uncertain.&lt;/p&gt;

&lt;p&gt;Remember that the rows part of the API response will be an array similar to:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
"rows": [
  ["2012-01-03", "28", "46", "41"],
  ...
  ["2011-11-07", "2", "3", "3"]
]
&lt;/pre&gt;

&lt;p&gt;The function &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#107"&gt;addTableRows&lt;/a&gt;&lt;/code&gt; implements the data manipulation algorithm, using Closure to help out with dates formatting and days iteration.&lt;/p&gt;

&lt;p&gt;The function &lt;code&gt;&lt;a href="http://code.google.com/p/adsense-apis-showcase/source/browse/ChartTuning/chart.js#150"&gt;formatRow&lt;/a&gt;&lt;/code&gt; shows how to create rows for our &lt;code&gt;DataTable&lt;/code&gt; and add data for our &lt;code&gt;tooltip&lt;/code&gt; and &lt;code&gt;certainty&lt;/code&gt; columns. In the example, we have built the tooltips to show the full name of the day of the week for each data point, to help the user to better contextualize the value.&lt;/p&gt;
&lt;h2&gt;Enough for today!&lt;/h2&gt;

&lt;p&gt;At the end of day one, we have all the data ready to be visualized. Tomorrow we’ll see more on how to define our week and month views and implement the zooming functionalities.&lt;/p&gt;

&lt;p&gt;In the meantime, don’t hesitate to ask your questions, leave your suggestions, and engage with us in our forums:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/adsense-api"&gt;Google AdSense Management API forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://groups.google.com/forum/#!forum/google-visualization-api"&gt;Google Visualization API forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;span class="post-author"&gt; &lt;a href="https://plus.google.com/118276561380249048216/about"&gt;&lt;img src="https://lh5.googleusercontent.com/-RMp-hn38AZI/AAAAAAAAAAI/AAAAAAAAADE/59YQber32iU/photo.jpg?sz=20" style="vertical-align: middle; border: none;" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/118276561380249048216/about" rel="author"&gt;Silvano Luciani&lt;/a&gt;, AdSense API Team&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-2061650137413146237?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/_TvMvD5e43A" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2061650137413146237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2061650137413146237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/_TvMvD5e43A/chart-tuning-advanced-data.html" title="Chart tuning: advanced data visualization" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-RMp-hn38AZI/AAAAAAAAAAI/AAAAAAAAADE/59YQber32iU/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/chart-tuning-advanced-data.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMDR3Yzeip7ImA9WhRbGU0.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-200783030784804679</id><published>2012-02-10T12:30:00.000-08:00</published><updated>2012-02-10T12:41:16.882-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:41:16.882-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><category scheme="http://www.blogger.com/atom/ns#" term="deprecation" /><title>Retiring support for v201103, v201104, and v201107 of the DFP API</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Today, we are announcing the deprecation of versions &lt;b&gt;v201103&lt;/b&gt;, &lt;b&gt;v201104&lt;/b&gt;, and &lt;b&gt;v201107&lt;/b&gt; of the DFP API. In 3 months, on &lt;b&gt;May 11th&lt;/b&gt;, these versions will be turned off. We are turning off older versions to make sure that everyone can benefit from the improvements in more recent releases and so that we can focus on releasing new features.&lt;br /&gt;
&lt;br /&gt;
As mentioned in previous deprecation announcements, we will always give at least 3 months notice before turning off a version. Our &lt;a href="http://code.google.com/apis/dfp/docs/rel_notes.html"&gt;release notes page&lt;/a&gt; also contains changelogs for each version, which will help you migrate to a newer version.  If you aren’t using one of our &lt;a href="http://code.google.com/apis/dfp/docs/clients.html"&gt;client libraries&lt;/a&gt;, now would be a great time to start as well.  If you have any feedback or comments about this deprecation, or the API in general, please feel free to leave them on our&lt;a href="http://code.google.com/apis/dfp/forum/discussions.html"&gt; forum&lt;/a&gt; or join us in &lt;a href="https://www.google.com/calendar/b/0/render?eid=dWNkNXF0OTFqbm5mMTlsa2U4NGYwNmNsanMgN2JycWc2MmkwbWJpbnUyMjZpYmxwY25tb29AZw&amp;amp;pli=1&amp;amp;sf=true&amp;amp;output=xml"&gt;a future hangout&lt;/a&gt;&amp;nbsp;on Feb 28th.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://plus.google.com/100742954389084668497" style="text-align: left;"&gt;&lt;img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border-bottom-style: none; border-color: initial; border-image: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&lt;span style="text-align: left;"&gt;&amp;nbsp;-&amp;nbsp;&lt;/span&gt;&lt;a href="https://plus.google.com/100742954389084668497" rel="author" style="text-align: left;"&gt;Adam Rogal&lt;/a&gt;&lt;span style="text-align: left;"&gt;, DFP API Team&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-200783030784804679?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/rRWXKJDxfAk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/200783030784804679?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/200783030784804679?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/rRWXKJDxfAk/retiring-support-for-v201103-v201104.html" title="Retiring support for v201103, v201104, and v201107 of the DFP API" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/retiring-support-for-v201103-v201104.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cAR3k-fyp7ImA9WhRbFk4.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-5173830637488605564</id><published>2012-02-07T10:00:00.000-08:00</published><updated>2012-02-07T10:24:06.757-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-07T10:24:06.757-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><title>isocket and Shiny Ads deliver new innovations using the DFP API</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;i&gt;Editor’s note: We’d like to share with you this &lt;a href="http://doubleclickpublishers.blogspot.com/2012/02/isocket-and-shiny-ads-deliver-new.html"&gt;post&lt;/a&gt; from John Park about the growing DFP API  ecosystem and a few success stories from our&amp;nbsp;&lt;a href="http://support.google.com/dfp_premium/bin/topic.py?hl=en&amp;amp;topic=2456651"&gt;partner directory&lt;/a&gt;. -- Adam Rogal, Ads Developer Relations Team&lt;/i&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: small; line-height: 20px;"&gt;
&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: small; line-height: 20px;"&gt;
&lt;span id="internal-source-marker_0.36028193356469274"&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;With thousands of publishers using the DFP and DFP Small Business ad serving platforms, we know first-hand that no two publishers are identical. Publishers may use in-house billing systems, have unique approval workflows, or use third-party tools to handle their ad operations.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;To give publishers the flexibility to easily integrate their unique processes and systems with their ad server, DFP offers publishers an open &lt;/span&gt;&lt;a href="http://code.google.com/apis/dfp/" style="font-weight: bold;"&gt;&lt;span style="color: #1155cc; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;API&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt; to easily &lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;create tools that complement their ad operations. &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br class="kix-line-break" /&gt;We’ve seen hundreds of developers build new ad serving innovations using the API, including applications to manage inventory, create orders, pull reports, and more. The API has created a new ecosystem of partner innovations, giving publishers access to new ad serving tools and applications. Two such applications come from &lt;/span&gt;&lt;a href="https://www.isocket.com/" style="font-weight: bold;"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;isocket&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt; and &lt;/span&gt;&lt;a href="http://shinyads.com/" style="font-weight: bold;"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Shiny Ads&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt; who have used the DFP API to build applications that help publishers manage and sell their ad space.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"&gt;isocket uses the API to create tools that streamlines sales&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;Seeing the need to streamline the manual steps involved with buying and selling inventory, isocket engineered a direct and self-service ad sales tool to simplify sales workflows. By leveraging the DFP API, isocket was able to build an application to automate sales processes and save money. “We were interested in using the API because it allowed us to eliminate the hassle of manually coordinating campaigns, while still keeping the important parts like publisher control and approval. Integrating with the DFP API has allowed us to make things a lot simpler for publishers,” said Ben Trenda, VP of Sales at isocket.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.google.com/doubleclick/pdfs/DFP-API-iSocket.pdf" style="font-weight: bold;"&gt;&lt;span style="color: #1155cc; font-family: Arial; font-size: 13px; font-style: italic; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt; about how isocket integrated with the DFP API. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"&gt;Shiny Ads builds application to help publishers save time&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;To help facilitate publishers’ direct ad campaign management, Shiny Ads began using&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;the DFP API to integrate its self-serve advertising platform with DFP in order to help publishers streamline their sales processes. This integration has helped save publishers time since they no longer need to manually book sales orders. “Our solution needs to support DFP - our customers demand it” &amp;nbsp;said CEO and founder Roy Pereira. “The API made integrating with DFP easy for us, and most importantly, easy for our clients. Without the DFP API, Shiny Ads would not have the fully functional solution we have today.” &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.google.com/doubleclick/pdfs/DFP-API-ShinyAds.pdf" style="font-weight: bold;"&gt;&lt;span style="color: #1155cc; font-family: Arial; font-size: 13px; font-style: italic; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt; about how Shiny Ads integrated with the DFP API. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b id="internal-source-marker_0.36028193356469274" style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: small; line-height: 20px;"&gt;&lt;span style="font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Over the coming months, we’ll share more stories on how our partners are using the DFP API to deliver exciting ad serving innovations. For a complete list of partners who have built applications using the DFP API, please visit our &lt;/span&gt;&lt;a href="http://support.google.com/dfp_premium/bin/topic.py?hl=en&amp;amp;topic=2456651"&gt;&lt;span style="color: #1155cc; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;partner directory&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="post-author" style="background-color: white; color: #666666; display: block; font-family: Arial, sans-serif; font-size: x-small; line-height: 20px; margin-bottom: 0.7em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="post-author" style="background-color: white; color: #666666; display: block; font-family: Arial, sans-serif; font-size: x-small; line-height: 20px; margin-bottom: 0.7em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Posted by John Park, Partner Programs Manager, and Adam Rogal, Developer Relations&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-5173830637488605564?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/9VYYtRZMXrQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5173830637488605564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5173830637488605564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/9VYYtRZMXrQ/editors-note-wed-like-to-share-with-you.html" title="isocket and Shiny Ads deliver new innovations using the DFP API" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/editors-note-wed-like-to-share-with-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNRngzfSp7ImA9WhRbFUo.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-1126164877319273523</id><published>2012-02-06T15:00:00.000-08:00</published><updated>2012-02-06T15:19:57.685-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T15:19:57.685-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_v201201" /><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><title>Announcing v201201 of the DFP API</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
The newest version of the API, v201201, brings some frequently requested features including using date time strings in PQL statements, filtering objects based on last modified date and times, including a PQL statement to limit a report (such as just running a report for one order), and more. A full list of features can be found on our &lt;a href="http://code.google.com/apis/dfp/docs/rel_notes.html"&gt;release notes page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Filtering&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In v201201, we’ve focused on improving filtering with PQL statements across the entire API. We’ve introduced a better way to do &lt;a href="http://code.google.com/apis/dfp/docs/pqlreference.html#syntax"&gt;date time filtering&lt;/a&gt;, a new &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/LineItemService.LineItem.html#lastModifiedDateTime"&gt;lastModifiedDateTime&lt;/a&gt;&amp;nbsp;field to search on, and the ability to &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/ReportService.ReportQuery.html#statement"&gt;filter&lt;/a&gt; from within a report.&lt;br /&gt;
&lt;br /&gt;
With the ability to filter by date and time fields directly in the PQL statement, you’ll now be able to limit the objects on the server, rather than fetch all line items and checking their &lt;a href="http://code.google.com/apis/dfp/docs/reference/v201201/LineItemService.LineItem.html#startDateTime"&gt;startDateTime&lt;/a&gt; property one at a time. For example, if you want to retrieve all line items that started so far in January, include
&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;startDateTime&lt;/pre&gt;
as a predicate of your filter with a date and time string, e.g. &lt;br /&gt;
&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;WHERE startDateTime &amp;gt;= ‘2012-01-01T00:00:00’&lt;/pre&gt;
. Note here that the date and time are in ISO 8061 format, i.e. &lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;YYYY-MM-DDThh:mm:ss&lt;/pre&gt;
, and the time zone is assumed to be that of the network’s. You can also bind a DateTime object instead of using a string, i.e. &lt;br /&gt;
&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;WHERE startDateTime &amp;gt; :dateTime&lt;/pre&gt;
, where &lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;:dateTime&lt;/pre&gt;
is bound to a &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/LineItemService.DateTimeValue.html"&gt;DateTimeValue&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
We’ve also added the new &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/LineItemService.LineItem.html#lastModifiedDateTime"&gt;lastModifiedDateTime&lt;/a&gt; field to companies, creatives, ad units, line item creative associations, line items, orders, and placements. Using this field, you can now query for objects that have changed recently. Combined with the new date and time filtering feature mentioned above, you will be able to pull all objects changed so far this year, e.g. &lt;br /&gt;
&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;WHERE lastModifiedDateTime &amp;gt;= ‘2012-01-01T00:00:00’&lt;/pre&gt;
. If you are a developing an application that has to keep in sync with changes made through the UI, only pulling down objects that have changed since your last fetch time will speed up your calls and decrease processing time.&lt;br /&gt;
&lt;br /&gt;
Finally, one of the largest requests from our developers was to limit what data is returned from within a report. We’ve add the ability to define a &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/ReportService.ReportQuery.html#statement"&gt;PQL statement&lt;/a&gt;&amp;nbsp;in a report definition to do just that. Now when you create a report, you’ll be able to supply statements to limit it to just one order, e.g.&lt;br&gt;&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;WHERE orderId = :orderId&lt;/pre&gt;, or with only one salesperson as well, e.g. &lt;br&gt;&lt;pre style="border: none; display: inline; margin: 0px; padding: 0px;"&gt;WHERE orderId = :orderId AND salespersonId = :salespersonId&lt;/pre&gt;.&lt;br&gt;
&lt;br /&gt;
&lt;b&gt;Creatives&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In v201102, we’ve added three new creative types that are only available to small business networks:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/CreativeService.FlashExpandableCreative.html"&gt;FlashExpandableCreative&lt;/a&gt; - an expandable creative where the collapsed size is a Flash SWF file and the expanded size is another Flash SWF file.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/CreativeService.FlashPushdownCreative.html"&gt;FlashPushdownCreative&lt;/a&gt; - a creative that pushes page content down when the creative expands.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/CreativeService.TextAdCreative.html"&gt;TextAdCreative&lt;/a&gt; - a text-based creative.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Teams&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We’ve introduced a new service with this version, &lt;a href="http://code.google.com/apis/dfp/docs/reference/latest/TeamService.html"&gt;TeamService&lt;/a&gt;, which lets you group users into teams. Although currently not editable via the API, teams will be used to limit access to entities such as companies, inventory, and orders.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Coming soon&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Over the next few weeks, you’ll learn about all of the features a bit more in the &lt;i&gt;Discover v201201&lt;/i&gt; series starting first with a discussion of filtering and syncing best practices. Let us know if you want to see anything else on our &lt;a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api"&gt;forum&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://plus.google.com/100742954389084668497"&gt;&lt;img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt; - &lt;a href="https://plus.google.com/100742954389084668497" rel="author"&gt;Adam Rogal&lt;/a&gt;, DFP API Team
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-1126164877319273523?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/HLpWIoqh5So" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1126164877319273523?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/1126164877319273523?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/HLpWIoqh5So/announcing-v201201-of-dfp-api.html" title="Announcing v201201 of the DFP API" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/announcing-v201201-of-dfp-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAEQXY4fip7ImA9WhRbEU0.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-5385912837403857911</id><published>2012-02-01T06:31:00.000-08:00</published><updated>2012-02-01T06:31:40.836-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-01T06:31:40.836-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="common_questions" /><category scheme="http://www.blogger.com/atom/ns#" term="best_practices" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><title>AdWords API: Retrieving large result sets</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;p&gt;When you need to retrieve a large set of objects, such as a list of criteria for an account, it’s tempting to use one simple query with a paging parameter to pull the data from the server page-by-page.&lt;/p&gt;
&lt;p&gt;While this approach is acceptable for most queries, it has some limitations:
&lt;ul&gt;&lt;li&gt;The AdWords API does not allow you to retrieve data whose start index is past 50000&lt;li&gt;Unit cost for the request will depend on the number of pages and will be relatively expensive&lt;li&gt;A parallel update request may interfere with the process&lt;li&gt;Error handling and retry logic could be complex&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;We recommend using one of the following approaches instead:
&lt;ol&gt;&lt;li&gt;Use AdHoc reporting to obtain data. With reports, you can still retrieve &lt;a href="http://code.google.com/apis/adwords/docs/appendix/reports.html"&gt;most fields&lt;/a&gt; available through SOAP requests, with the added bonus of AdHoc reporting being faster and free of unit costs.&lt;li&gt;Try to narrow the query as much as possible with predicates. Group queries by Campaign and AdGroup to retrieve only required data and to fit all results into one response.&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Also, you can save bandwidth and retrieve large results faster by enabling transparent gzip compression. Check out our &lt;a href="http://code.google.com/apis/adwords/docs/guides/bestpractices.html"&gt;best practices page&lt;/a&gt; for more details on this feature and other recommendations.&lt;/p&gt;
&lt;p&gt;As always, please feel free to ask any questions regarding the AdWords API on our &lt;a href="http://code.google.com/apis/adwords/community/"&gt;forum&lt;/a&gt; or during scheduled &lt;a href="http://code.google.com/apis/adwords/community/officehours.html"&gt;office hours&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/116761214452114671837?rel=author" rel="author"&gt;&lt;img width="20" height="20" src="https://lh5.googleusercontent.com/-Hq6rboNwMwM/AAAAAAAAAAI/AAAAAAAAAB8/h6qaLWk4PzE/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/116761214452114671837?rel=author" rel="author"&gt;Danial Klimkin&lt;/a&gt;, AdWords API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-5385912837403857911?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/0So4CcSt8VM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5385912837403857911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5385912837403857911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/0So4CcSt8VM/adwords-api-retrieving-large-result.html" title="AdWords API: Retrieving large result sets" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-Hq6rboNwMwM/AAAAAAAAAAI/AAAAAAAAAB8/h6qaLWk4PzE/s72-c/photo.jpg?sz=20" height="72" width="72" /><georss:featurename>St Petersburg, Russia</georss:featurename><georss:point>60.0762383 30.1213829</georss:point><georss:box>59.5693143 28.8579554 60.5831623 31.3848104</georss:box><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/02/adwords-api-retrieving-large-result.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QMRnw5eyp7ImA9WhRUGUk.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-3444996606669881315</id><published>2012-01-30T09:43:00.000-08:00</published><updated>2012-01-30T09:43:07.223-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T09:43:07.223-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_v201109" /><title>30 days left to migrate to AdWords API v201109</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="background-color: transparent;"&gt;
&lt;b id="internal-source-marker_0.088384501170367" style="font-weight: normal;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;On February 29, 2012, we will be sunsetting the following versions and services:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;AdWords API versions v13, v200909, v201003, v201008, v201101&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;AdWords API version v13 AccountService will only be available on a whitelist basis.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Calls made using these versions will return errors after February 29th. It is therefore critical that you migrate to AdWords API v201109 if you would like your applications to run without interruption.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;We encourage you to use the following resources for a successful migration:&lt;/span&gt;&lt;ul&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Review the resources in the &lt;/span&gt;&lt;a href="http://code.google.com/apis/adwords/docs/clientlibraries.html"&gt;&lt;span style="background-color: white; color: #000099; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;AdWords API client libraries&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Review the “&lt;/span&gt;&lt;a href="http://googleadsdeveloper.blogspot.com/search/label/adwords_v201109"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Discover v201109&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;” blog series.&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Subscribe to the &lt;/span&gt;&lt;a href="https://twitter.com/#%21/adwordsapi"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;AdWords API Twitter account&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, which will share daily migration tips for the next month&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Make sure you’ve completed everything on this &lt;/span&gt;&lt;a href="http://googleadsdeveloper.blogspot.com/2012/01/prepare-for-sunset-with-adwords-api.html"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;migration checklist&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Give yourself ample time to migrate &lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;from v13 to AdHoc reporting. Resources to help with this migration are available&lt;/span&gt;&lt;a href="http://code.google.com/apis/adwords/docs/guides/uireports.html"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Attend &lt;/span&gt;&lt;a href="https://groups.google.com/forum/#%21forum/adwords-api"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;office hours&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Make sure your &lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;contact information is up to date in your &lt;/span&gt;&lt;a href="http://www.google.com/intl/en/adwords/myclientcenter/"&gt;&lt;span style="background-color: white; color: #000099; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;My Client Center account&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Post questions on &lt;/span&gt;&lt;a href="https://groups.google.com/forum/#%21forum/adwords-api"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;the forum&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/b&gt;&lt;b id="internal-source-marker_0.088384501170367" style="font-weight: normal;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Posted by Katie Miller, AdWords API Team&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-3444996606669881315?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/iZfAknDHprg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3444996606669881315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3444996606669881315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/iZfAknDHprg/30-days-left-to-migrate-to-adwords-api.html" title="30 days left to migrate to AdWords API v201109" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/01/30-days-left-to-migrate-to-adwords-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cERXg5eCp7ImA9WhRUF0w.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-2479021491273786424</id><published>2012-01-27T16:36:00.000-08:00</published><updated>2012-01-27T16:36:44.620-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T16:36:44.620-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="admob_sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Announcing AdCatalog v1 for iOS</title><content type="html">&lt;p&gt;We’re very pleased to announce the release of &lt;a href="http://code.google.com/p/google-mobile-dev/"&gt;AdCatalog&lt;/a&gt; v1 for the iOS platform.  AdCatalog is a sample project that demonstrates how to incorporate banner and interstitial ad units into your application.  In particular, AdCatalog showcases implementations for two standard banner ad sizes&amp;mdash;320x50 and 300x250&amp;mdash;and several use cases for interstitial ad units: basic, app launch splash screen, in-between game levels, and before playing a stored video.&lt;/p&gt;

&lt;p&gt;AdCatalog can be downloaded as a zip from our &lt;a href="http://code.google.com/p/google-mobile-dev/downloads/list"&gt;google-mobile-dev&lt;/a&gt; project.  Additionally, feel free to clone the repository or examine the source from the &lt;a href="http://code.google.com/p/google-mobile-dev/source/checkout?repo=adcatalog-ios"&gt;checkout page&lt;/a&gt;.  In version 2, we’ll be looking to add even more advanced layout options to our banner scenario, so be sure to stay tuned.  As usual, if you have any questions, comments, concerns, or feature requests, we appreciate hearing the feedback on our &lt;a href="http://groups.google.com/group/google-admob-ads-sdk"&gt;developer forum&lt;/a&gt;.&lt;/p&gt;
&lt;br&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/100951976559465900344" rel="author"&gt;&lt;img width="20" height="20" src="https://lh4.googleusercontent.com/-JJsLfLVCckY/AAAAAAAAAAI/AAAAAAABVog/oL3K4YTTcJA/photo.jpg?sz=20" style="vertical-align:middle; border:none;"&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/u/0/100951976559465900344" rel="author"&gt;Wes Goodman&lt;/a&gt;, AdMob Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-2479021491273786424?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/jRwS3ZhuE0Y" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2479021491273786424?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/2479021491273786424?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/jRwS3ZhuE0Y/announcing-adcatalog-v1-for-ios.html" title="Announcing AdCatalog v1 for iOS" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-JJsLfLVCckY/AAAAAAAAAAI/AAAAAAABVog/oL3K4YTTcJA/s72-c/photo.jpg?sz=20" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/01/announcing-adcatalog-v1-for-ios.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEBSHk9cSp7ImA9WhRUFkU.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-5001515692051637725</id><published>2012-01-27T09:49:00.000-08:00</published><updated>2012-01-27T10:07:39.769-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T10:07:39.769-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><category scheme="http://www.blogger.com/atom/ns#" term="adwords_v201109" /><title>Prepare for the sunset with the AdWords API v201109 migration checklist</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
As announced in October, we will sunsetting all versions of the AdWords API prior to v201109 on February 29, 2012. To help you prepare to migrate to v201109, we've created a checklist that covers all of the required changes:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Required Changes:&lt;/b&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Migrate all API calls to use v201109 services&lt;/li&gt;
&lt;li&gt;Migrate all API calls to use clientCustomerId (instead of clientEmail) to identify an account as the target of an operation (&lt;a href="http://adwordsapi.blogspot.com/2011/11/discover-v201109-changes-to-accounts.html"&gt;Blog post&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Migrate campaign geo target creation and identification to use the new location criterion object (available through the &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CampaignCriterionService.html"&gt;CampaignCriterionService&lt;/a&gt; and the &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/LocationCriterionService.html"&gt;LocationCriterionService&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Migrate all other campaign targets (except ad scheduling) from the CampaignTargetService to &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CampaignCriterionService.html"&gt;CampaignCriterionService&lt;/a&gt; using the appropriate criterion objects defined within that service*&lt;/li&gt;
&lt;li&gt;Migrate cross client reporting to v201109 AdHoc (single account) reports (&lt;a href="http://adwordsapi.blogspot.com/2011/11/discover-v201109-adhoc-reports.html"&gt;Blog post&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Provide developerToken as HTTP header in AdHoc report requests &lt;/li&gt;
&lt;li&gt;The last few API releases have seen various services migrate to generic selectors, as you update to v201109 you’ll need to migrate from service specific selectors to generic selectors as required. See the &lt;a href="http://code.google.com/apis/adwords/docs/selectorguide.html"&gt;Selector Migration Reference&lt;/a&gt; for details&lt;/li&gt;
&lt;li&gt;Update to the very latest version of the &lt;a href="http://code.google.com/apis/adwords/docs/clientlibraries.html"&gt;AdWords API client library&lt;/a&gt; specific to the programming language(s) that you use for API tool/platform development**&lt;/li&gt;
&lt;li&gt;If you generate your own client side stubs from the API Service WSDLs, make sure that your requests strictly adhere to the WSDL definition as we have implemented stricter validation for the SOAP header and envelope (&lt;a href="http://googleadsdeveloper.blogspot.com/2012/01/adwords-soap-header-validation-is-being.html"&gt;Blog post&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Optional Changes:&lt;/b&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You can now use the v201109 &lt;a href="http://code.google.com/apis/adwords/docs/reference/latest/CreateAccountService.html"&gt;CreateAccountService&lt;/a&gt; to create AdWords optional-login accounts
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Note: &lt;/b&gt;If you do not make the required changes, calls made using versions of the AdWords API prior to v201109 will return errors after February 29th 2012&lt;br /&gt;
&lt;br /&gt;
Additional Notes:&lt;br /&gt;
*In v201109, most targets become criteria, with each having it’s own ‘type’ of criterion object (see this &lt;a href="http://adwordsapi.blogspot.com/2011/11/discovering-v201109-how-to-target.html"&gt;Blog post&lt;/a&gt; for more details)&lt;br /&gt;
**This is an important requirement, so do make sure to check the version of the library or libraries that you are using against those available &lt;a href="http://code.google.com/apis/adwords/docs/clientlibraries.html"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/105936431317651182231/posts"&gt;&lt;img height="20" src="https://lh4.googleusercontent.com/-fdgv1YNMZlU/AAAAAAAAAAI/AAAAAAAAAQI/UdMK6R1o2ZY/s200-c-k/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt; - &lt;a href="https://plus.google.com/u/0/105936431317651182231/posts" rel="author"&gt;Mandy Waite&lt;/a&gt;, AdWords API Team&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-5001515692051637725?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/3xGml61qWA0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5001515692051637725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/5001515692051637725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/3xGml61qWA0/prepare-for-sunset-with-adwords-api.html" title="Prepare for the sunset with the AdWords API v201109 migration checklist" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/01/prepare-for-sunset-with-adwords-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMHQXgyeip7ImA9WhRUFk0.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-643332180493763528</id><published>2012-01-26T11:00:00.000-08:00</published><updated>2012-01-26T11:33:50.692-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-26T11:33:50.692-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dfp_api" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>Getting Started With the PHP Client Library</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently, we released our first &lt;a href="http://code.google.com/apis/dfp/docs/videos.html"&gt;client library walkthrough video&lt;/a&gt; for the DoubleClick for Publishers API. This five-minute video guide shows you how to get up and running with the &lt;a href="http://code.google.com/p/google-api-dfp-php/"&gt;PHP client library&lt;/a&gt; from downloading the code to running one of the examples. All you need to get started is a &lt;a href="http://code.google.com/apis/dfp/docs/prod_signup.html"&gt;DFP account&lt;/a&gt; (production or sandbox) and a machine with PHP 5.2.x and the &lt;a href="http://us3.php.net/manual/en/book.soap.php"&gt;SoapClient&lt;/a&gt;, &lt;a href="http://php.net/manual/en/book.openssl.php"&gt;OpenSSL&lt;/a&gt;, and &lt;a href="http://php.net/manual/en/book.curl.php"&gt;cURL&lt;/a&gt; extensions. For new users to the API, it’s a great way to get acquainted with the documentation pages, project site, and client library features.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/eNwxMyHVmwY" width="480"&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
The video takes you through an explanation of how the &lt;a href="http://code.google.com/p/google-api-dfp-php/source/browse/trunk/examples/v201111/CreativeService/GetCreativesByStatementExample.php"&gt;getCreativesByStatement&lt;/a&gt; example makes an API call and highlights common usage patterns and best practices for the client library.  We also show you what happens when a call returns an error and how you can configure logging to get more information and troubleshoot an issue. &lt;br /&gt;
&lt;br /&gt;
Please let us know about any topics you would like us to cover in a video guide or blog by leaving a comment on our &lt;a href="http://code.google.com/apis/dfp/forum/discussions.html"&gt;forum&lt;/a&gt;.  You can also chat with us live at one of our &lt;a href="http://googleadsdeveloper.blogspot.com/search/label/dfp_api"&gt;DFP API Office Hours Hangouts&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="c2"&gt;
&lt;/div&gt;
&lt;div class="c2"&gt;
&lt;/div&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/115474229489284556707"&gt;&lt;img height="20" src="https://lh3.googleusercontent.com/-pDdv2kTjyNw/AAAAAAAAAAI/AAAAAAAAAnE/q_kK4BYy-mM/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/u/0/115474229489284556707" rel="author"&gt;Jeffrey Sham&lt;/a&gt;, DFP API Team&lt;/span&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-643332180493763528?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/EFkAdAg6xK4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/643332180493763528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/643332180493763528?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/EFkAdAg6xK4/getting-started-with-php-client-library.html" title="Getting Started With the PHP Client Library" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/eNwxMyHVmwY/default.jpg" height="72" width="72" /><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/01/getting-started-with-php-client-library.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HRX48eSp7ImA9WhRUFUw.&quot;"><id>tag:blogger.com,1999:blog-7815614485808579332.post-3827324289758060642</id><published>2012-01-25T11:30:00.000-08:00</published><updated>2012-01-25T11:30:34.071-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-25T11:30:34.071-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="adwords_api" /><title>AdWords SOAP Header validation is being enabled</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Starting with v201109, we &lt;a href="http://googleadsdeveloper.blogspot.com/2011/12/discover-adwords-api-v201109-xml.html"&gt;enabled stricter validation&lt;/a&gt; of the SOAP Body, meaning that XML that did not closely follow the XML Schema defined in the WSDL would be rejected with a SOAP fault.  This stricter validation enables developers to detect flaws in their applications, such as sending an unsupported field, at development time rather than later discovering that field was ignored.&lt;br /&gt;
&lt;br /&gt;
In the coming weeks, we will also be enabling stricter validation of the SOAP Headers.  Currently, SOAP Headers that don’t validate against the XML Schema are ignored.  This includes headers such as clientEmail/applicationToken (both of which do not apply to v201109) or partialFailure, which is case sensitive (will not accept “TRUE” or “True”, only “true”).  When clientEmail is ignored, the request will target the authenticating account (often an MCC), which will, for example, return an error message if you attempt to add a Campaign or no results if you make a GET request.&lt;br /&gt;
&lt;br /&gt;
The stricter validation will trigger a SOAP fault for any SOAP Headers that do not match the XML Schema defined in the WSDL.  This may cause your application to see more errors such as those referenced in our &lt;a href="http://googleadsdeveloper.blogspot.com/2011/12/discover-adwords-api-v201109-xml.html"&gt;previous blog post&lt;/a&gt;.  This validation will enable developers to better detect bugs in their application that were previously silently ignored.&lt;br /&gt;
&lt;br /&gt;
If you have any questions, please post on&amp;nbsp;&lt;a href="https://groups.google.com/forum/#!forum/adwords-api"&gt;the forum&lt;/a&gt; or attend one of the&amp;nbsp;&lt;a href="https://www.google.com/calendar/b/0/embed?src=7brqg62i0mbinu226iblpcnmoo@group.calendar.google.com&amp;amp;ctz=America/New_York"&gt;AdWords API Office Hours&lt;/a&gt; Hangouts.&lt;/div&gt;
&lt;br /&gt;
&lt;span class="post-author"&gt;&lt;a href="https://plus.google.com/u/0/110892224480992063622/posts"&gt;&lt;img height="20" src="https://lh6.googleusercontent.com/-Bm_0uFwE20M/AAAAAAAAAAI/AAAAAAAAALY/hflk83UJtt4/s200-c-k/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="https://plus.google.com/u/0/110892224480992063622/posts" rel="author"&gt;Kevin Winter&lt;/a&gt;, AdWords API Team&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7815614485808579332-3827324289758060642?l=googleadsdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleAdsDeveloperBlog/~4/Df6sUY7eyLA" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3827324289758060642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7815614485808579332/posts/default/3827324289758060642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleAdsDeveloperBlog/~3/Df6sUY7eyLA/adwords-soap-header-validation-is-being.html" title="AdWords SOAP Header validation is being enabled" /><author><name>Google Ads Developer Advisor</name><uri>http://www.blogger.com/profile/16700526826531306391</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://googleadsdeveloper.blogspot.com/2012/01/adwords-soap-header-validation-is-being.html</feedburner:origLink></entry></feed>

