Release notes

This page provides release notes for the Google Bid Manager API.

Version 2

Made structural changes to the API, including updating the service endpoint and renaming services and methods.

Significantly updated Query and Report resources by removing uneccesary fields, reorganizing existing fields, and changing field types. This includes changing field types to use named objects instead of a general "nested object" definition.

Required running ad-hoc queries using the queries.run method instead of having them run automatically after creation.

Replaced the queries.run query parameter asynchronous with synchronous.

Simplified report retrieval through the following changes:

Updated error messages returned by the API to be more specific and provide more prescriptive solutions.

Follow the instructions presented in the v2 Migration Guide to migrate from v1.1 to v2.

New features

Known issues

None.

Version 1.1

One-to-one filter to report column mapping

Filters that mapped to multiple report columns now map to single columns.

For example, in v1, including the filter FILTER_ADVERTISER yields a report with columns "Advertiser" in addition to "Advertiser ID". In v1.1, all report columns have their own filters. For example, a new filter FILTER_ADVERTISER_NAME maps to "Advertiser". To get both "Advertiser ID" and "Advertiser" columns in reports, both filters FILTER_ADVERTISER and FILTER_ADVERTISER_NAME, respectively, will have to be included in Queries.createquery requests.

More concretely, the createquery request:

{
...
"params": {
  ...
  "groupBys": ["FILTER_ADVERTISER"],
  "metrics": ["METRIC_IMPRESSIONS"],
  ...
}
...
}

generates a report file with the following headers in v1:

Advertiser,Advertiser ID,Advertiser Status,Advertiser Integration Code,Impressions

and the following headers in v1.1:

Advertiser,Impressions

The following v1 code used to get report columns in the example above:

List<String> groupBys = new ArrayList<>();
groupBys.add("FILTER_ADVERTISER");
List<String> metrics = new ArrayList<>();
metrics.add("METRIC_IMPRESSIONS");
com.google.api.services.doubleclickbidmanager.model.Parameters createQueryParameters =
    new com.google.api.services.doubleclickbidmanager.model.Parameters()
        .setGroupBys(groupBys)
        .setMetrics(metrics);

will have to be modified similar to the following in v1.1 (note filter ordering):

List<String> groupBys = new ArrayList<>();
groupBys.add("FILTER_ADVERTISER_NAME");
groupBys.add("FILTER_ADVERTISER");
groupBys.add("FILTER_ADVERTISER_INTEGRATION_STATUS");
groupBys.add("FILTER_ADVERTISER_INTEGRATION_CODE");
List<String> metrics = new ArrayList<>();
metrics.add("METRIC_IMPRESSIONS");
com.google.api.services.doubleclickbidmanager.model.Parameters createQueryParameters =
    new com.google.api.services.doubleclickbidmanager.model.Parameters()
        .setGroupBys(groupBys)
        .setMetrics(metrics);
Original filter Added filters
FILTER_ADVERTISER FILTER_ADVERTISER_NAME
FILTER_ADVERTISER_INTEGRATION_CODE
FILTER_ADVERTISER_INTEGRATION_STATUS
FILTER_AD_POSITION FILTER_AD_POSITION_NAME
FILTER_CARRIER FILTER_CARRIER_NAME
FILTER_CHANNEL_ID FILTER_CHANNEL_NAME
FILTER_CITY FILTER_CITY_NAME
FILTER_COMPANION_CREATIVE_ID FILTER_COMPANION_CREATIVE_NAME
FILTER_DMA FILTER_DMA_NAME
FILTER_INSERTION_ORDER FILTER_INSERTION_ORDER_NAME
FILTER_PARTNER FILTER_PARTNER_NAME
FILTER_PARTNER_STATUS
FILTER_REGION FILTER_REGION_NAME
FILTER_TRUEVIEW_DMA FILTER_TRUEVIEW_DMA_NAME
FILTER_TRUEVIEW_IAR_REGION FILTER_TRUEVIEW_IAR_REGION_NAME
FILTER_USER_LIST_FIRST_PARTY FILTER_USER_LIST_FIRST_PARTY_NAME
FILTER_USER_LIST_THIRD_PARTY FILTER_USER_LIST_THIRD_PARTY_NAME

Pagination

v1.1 adds pagination to methods Queries.listqueries and Reports.listreports.

In v1.1, the number of results returned by these methods is equal to a newly added parameter pageSize (it defaults to 100 if not specified). Responses contain a newly added nextPageToken field that can be used to retrieve the next set of results. This field is blank if results have been exhausted.

The following v1 code to retrieve all reports belonging to a specific query:

public class GetReports {
  public List<Report> getReports(DoubleClickBidManager service, long queryId) throws IOException {
    ListReportsResponse reportListResponse = service.reports().listreports(queryId).execute();

    return reportListResponse.getReports();
  }
}

will have to be modified similar to the following in v1.1, in order to continue retrieving all reports:

public class GetReports {
  public List<Report> getReports(DoubleClickBidManager service, long queryId) throws IOException {
    ListReportsResponse reportListResponse = service.reports().listreports(queryId).execute();

    List<Report> reports = new ArrayList<>(reportListResponse.getReports());
    while (reportListResponse.getNextPageToken() != null
        && reportListResponse.getNextPageToken().length() > 0) {
      // Get next set of results, aka page.
      reportListResponse =
          service
              .reports()
              .listreports(queryId)
              .setPageToken(reportListResponse.getNextPageToken())
              .execute();
      reports.addAll(reportListResponse.getReports());
    }

    return reports;
  }
}

See Queries.listqueries and Reports.listreports method documentation for more details.

Known issues

None.

Version 1

This is the initial version of the API.

Known issues

None.