Archived release notes

This page provides release notes for sunset versions of the Bid Manager API.

Navigate to our main release notes page for all releases to live versions.

April 15, 2021

New features

Released Bid Manager API v1.1.

v1.1

SDF and Line Item services sunset

SDF and Line Item services are now sunset.

Users who seek to download Structured Data Files or manage line items must instead use the Display & Video 360 API.

Known issues

None.

August 6, 2020

New features

v1.1

Path & Path Attribution Reports

TYPE_PATH and TYPE_PATH_ATTRIBUTION report types are now live.

This includes the addition of new field params.options.pathQueryOptions (which contains fields pathFilters and channelGrouping) to query and report resources.

New Filters added:

  • FILTER_CHANNEL_GROUPING
  • FILTER_EVENT_TYPE
  • FILTER_PATH_EVENT_INDEX
  • FILTER_PATH_PATTERN_ID

New Metrics added:

  • METRIC_ACTIVITY_REVENUE
  • METRIC_CONVERTING_PATHS
  • METRIC_EXPOSURE_CONVERSION_RATE
  • METRIC_LAST_TOUCH_CLICK_THROUGH_CONVERSIONS
  • METRIC_LAST_TOUCH_TOTAL_CONVERSIONS
  • METRIC_LAST_TOUCH_VIEW_THROUGH_CONVERSIONS
  • METRIC_PATH_CONVERSION_RATE
  • METRIC_PROVISIONAL_IMPRESSIONS
  • METRIC_TOTAL_EXPOSURES
  • METRIC_TOTAL_PATHS

Known issues

None.

March 20, 2020

New features

v1.1

Asynchronous query run

Queries.createquery and Queries.runquery method now allow running queries asynchronously.

See new parameter asynchronous in createquery and runquery for more details.

Known issues

None.

January 14, 2020

New features

v1.1

Query schedule start time

Queries.createquery method now allows specifying the date at which query run schedules start.

See new field schedule.startTimeMs for more details.

Known issues

None.

January 8, 2020

New features

v1.1

Toggle targeted audience lists data

Queries.createquery method now allows specifying whether audience list data should be limited to specific insertion orders or line items.

See new field params.options.includeOnlyTargetedUserLists for more details.

Known issues

None.

November 19, 2019

New features

v1.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 the report columns:

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, or page, of results.
      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.