| Index: generated/googleapis/lib/dfareporting/v2_1.dart
 | 
| diff --git a/generated/googleapis/lib/dfareporting/v2_0.dart b/generated/googleapis/lib/dfareporting/v2_1.dart
 | 
| similarity index 86%
 | 
| copy from generated/googleapis/lib/dfareporting/v2_0.dart
 | 
| copy to generated/googleapis/lib/dfareporting/v2_1.dart
 | 
| index 64a36f81c1f8fc59664b4b20189d187adfea5fca..a8cf3a8584979c865189cf14125f3a422e2255dd 100644
 | 
| --- a/generated/googleapis/lib/dfareporting/v2_0.dart
 | 
| +++ b/generated/googleapis/lib/dfareporting/v2_1.dart
 | 
| @@ -1,6 +1,6 @@
 | 
|  // This is a generated file (see the discoveryapis_generator project).
 | 
|  
 | 
| -library googleapis.dfareporting.v2_0;
 | 
| +library googleapis.dfareporting.v2_1;
 | 
|  
 | 
|  import 'dart:core' as core;
 | 
|  import 'dart:async' as async;
 | 
| @@ -14,7 +14,7 @@ export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show
 | 
|      ResumableUploadOptions, DownloadOptions, PartialDownloadOptions,
 | 
|      ByteRange;
 | 
|  
 | 
| -const core.String USER_AGENT = 'dart-api-client dfareporting/v2.0';
 | 
| +const core.String USER_AGENT = 'dart-api-client dfareporting/v2.1';
 | 
|  
 | 
|  /** Manage your DoubleClick Campaign Manager ad campaigns and reports. */
 | 
|  class DfareportingApi {
 | 
| @@ -59,27 +59,34 @@ class DfareportingApi {
 | 
|    FloodlightActivitiesResourceApi get floodlightActivities => new FloodlightActivitiesResourceApi(_requester);
 | 
|    FloodlightActivityGroupsResourceApi get floodlightActivityGroups => new FloodlightActivityGroupsResourceApi(_requester);
 | 
|    FloodlightConfigurationsResourceApi get floodlightConfigurations => new FloodlightConfigurationsResourceApi(_requester);
 | 
| +  InventoryItemsResourceApi get inventoryItems => new InventoryItemsResourceApi(_requester);
 | 
|    LandingPagesResourceApi get landingPages => new LandingPagesResourceApi(_requester);
 | 
|    MetrosResourceApi get metros => new MetrosResourceApi(_requester);
 | 
|    MobileCarriersResourceApi get mobileCarriers => new MobileCarriersResourceApi(_requester);
 | 
|    OperatingSystemVersionsResourceApi get operatingSystemVersions => new OperatingSystemVersionsResourceApi(_requester);
 | 
|    OperatingSystemsResourceApi get operatingSystems => new OperatingSystemsResourceApi(_requester);
 | 
| +  OrderDocumentsResourceApi get orderDocuments => new OrderDocumentsResourceApi(_requester);
 | 
| +  OrdersResourceApi get orders => new OrdersResourceApi(_requester);
 | 
|    PlacementGroupsResourceApi get placementGroups => new PlacementGroupsResourceApi(_requester);
 | 
|    PlacementStrategiesResourceApi get placementStrategies => new PlacementStrategiesResourceApi(_requester);
 | 
|    PlacementsResourceApi get placements => new PlacementsResourceApi(_requester);
 | 
|    PlatformTypesResourceApi get platformTypes => new PlatformTypesResourceApi(_requester);
 | 
|    PostalCodesResourceApi get postalCodes => new PostalCodesResourceApi(_requester);
 | 
| +  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
 | 
|    RegionsResourceApi get regions => new RegionsResourceApi(_requester);
 | 
| +  RemarketingListSharesResourceApi get remarketingListShares => new RemarketingListSharesResourceApi(_requester);
 | 
| +  RemarketingListsResourceApi get remarketingLists => new RemarketingListsResourceApi(_requester);
 | 
|    ReportsResourceApi get reports => new ReportsResourceApi(_requester);
 | 
|    SitesResourceApi get sites => new SitesResourceApi(_requester);
 | 
|    SizesResourceApi get sizes => new SizesResourceApi(_requester);
 | 
|    SubaccountsResourceApi get subaccounts => new SubaccountsResourceApi(_requester);
 | 
| +  TargetableRemarketingListsResourceApi get targetableRemarketingLists => new TargetableRemarketingListsResourceApi(_requester);
 | 
|    UserProfilesResourceApi get userProfiles => new UserProfilesResourceApi(_requester);
 | 
|    UserRolePermissionGroupsResourceApi get userRolePermissionGroups => new UserRolePermissionGroupsResourceApi(_requester);
 | 
|    UserRolePermissionsResourceApi get userRolePermissions => new UserRolePermissionsResourceApi(_requester);
 | 
|    UserRolesResourceApi get userRoles => new UserRolesResourceApi(_requester);
 | 
|  
 | 
| -  DfareportingApi(http.Client client, {core.String rootUrl: "https://www.googleapis.com/", core.String servicePath: "dfareporting/v2.0/"}) :
 | 
| +  DfareportingApi(http.Client client, {core.String rootUrl: "https://www.googleapis.com/", core.String servicePath: "dfareporting/v2.1/"}) :
 | 
|        _requester = new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
 | 
|  }
 | 
|  
 | 
| @@ -372,6 +379,50 @@ class AccountUserProfilesResourceApi {
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| +   * Inserts a new account user profile.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [AccountUserProfile].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<AccountUserProfile> insert(AccountUserProfile request, core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/accountUserProfiles';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "POST",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new AccountUserProfile.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
|     * Retrieves a list of account user profiles, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
| @@ -951,6 +1002,7 @@ class AdsResourceApi {
 | 
|     * - "RICH_MEDIA_MULTI_FLOATING"
 | 
|     * - "RICH_MEDIA_PEEL_DOWN"
 | 
|     * - "TRACKING_TEXT"
 | 
| +   * - "VAST_REDIRECT"
 | 
|     * - "VPAID_LINEAR"
 | 
|     * - "VPAID_NON_LINEAR"
 | 
|     *
 | 
| @@ -2390,6 +2442,7 @@ class ChangeLogsResourceApi {
 | 
|     * - "ACTION_PUSH"
 | 
|     * - "ACTION_REMOVE"
 | 
|     * - "ACTION_SEND"
 | 
| +   * - "ACTION_SHARE"
 | 
|     * - "ACTION_UNASSIGN"
 | 
|     * - "ACTION_UNLINK"
 | 
|     * - "ACTION_UPDATE"
 | 
| @@ -2600,6 +2653,50 @@ class ConnectionTypesResourceApi {
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| +   * Gets one connection type by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - Connection type ID.
 | 
| +   *
 | 
| +   * Completes with a [ConnectionType].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<ConnectionType> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/connectionTypes/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new ConnectionType.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
|     * Retrieves a list of connection types.
 | 
|     *
 | 
|     * Request parameters:
 | 
| @@ -3103,9 +3200,9 @@ class CreativeAssetsResourceApi {
 | 
|      if (_uploadMedia == null) {
 | 
|        _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/creativeAssets/' + commons.Escaper.ecapeVariable('$advertiserId') + '/creativeAssets';
 | 
|      } else if (_uploadOptions is commons.ResumableUploadOptions) {
 | 
| -      _url = '/resumable/upload/dfareporting/v2.0/userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/creativeAssets/' + commons.Escaper.ecapeVariable('$advertiserId') + '/creativeAssets';
 | 
| +      _url = '/resumable/upload/dfareporting/v2.1/userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/creativeAssets/' + commons.Escaper.ecapeVariable('$advertiserId') + '/creativeAssets';
 | 
|      } else {
 | 
| -      _url = '/upload/dfareporting/v2.0/userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/creativeAssets/' + commons.Escaper.ecapeVariable('$advertiserId') + '/creativeAssets';
 | 
| +      _url = '/upload/dfareporting/v2.1/userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/creativeAssets/' + commons.Escaper.ecapeVariable('$advertiserId') + '/creativeAssets';
 | 
|      }
 | 
|  
 | 
|  
 | 
| @@ -4653,6 +4750,50 @@ class DirectorySitesResourceApi {
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| +   * Inserts a new directory site.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [DirectorySite].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<DirectorySite> insert(DirectorySite request, core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/directorySites';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "POST",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new DirectorySite.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
|     * Retrieves a list of directory sites, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
| @@ -4926,14 +5067,16 @@ class EventTagsResourceApi {
 | 
|     *
 | 
|     * [campaignId] - Select only event tags that belong to this campaign.
 | 
|     *
 | 
| -   * [definitionsOnly] - Examine only the specified ad or campaign or
 | 
| -   * advertiser's event tags for matching selector criteria. When set to false,
 | 
| -   * the parent advertiser and parent campaign is examined as well. In addition,
 | 
| -   * when set to false, the status field is examined as well along with the
 | 
| -   * enabledByDefault field.
 | 
| +   * [definitionsOnly] - Examine only the specified campaign or advertiser's
 | 
| +   * event tags for matching selector criteria. When set to false, the parent
 | 
| +   * advertiser and parent campaign of the specified ad or campaign is examined
 | 
| +   * as well. In addition, when set to false, the status field is examined as
 | 
| +   * well, along with the enabledByDefault field. This parameter can not be set
 | 
| +   * to true when adId is specified as ads do not define their own even tags.
 | 
|     *
 | 
| -   * [enabled] - Select only enabled event tags. When definitionsOnly is set to
 | 
| -   * true, only the specified advertiser or campaign's event tags'
 | 
| +   * [enabled] - Select only enabled event tags. What is considered enabled or
 | 
| +   * disabled depends on the definitionsOnly parameter. When definitionsOnly is
 | 
| +   * set to true, only the specified advertiser or campaign's event tags'
 | 
|     * enabledByDefault field is examined. When definitionsOnly is set to false,
 | 
|     * the specified ad or specified campaign's parent advertiser's or parent
 | 
|     * campaign's event tags' enabledByDefault and status fields are examined as
 | 
| @@ -6216,6 +6359,155 @@ class FloodlightConfigurationsResourceApi {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +class InventoryItemsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  InventoryItemsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one inventory item by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [projectId] - Project ID for order documents.
 | 
| +   *
 | 
| +   * [id] - Inventory item ID.
 | 
| +   *
 | 
| +   * Completes with a [InventoryItem].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<InventoryItem> get(core.String profileId, core.String projectId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/inventoryItems/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new InventoryItem.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of inventory items, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [projectId] - Project ID for order documents.
 | 
| +   *
 | 
| +   * [ids] - Select only inventory items with these IDs.
 | 
| +   *
 | 
| +   * [inPlan] - Select only inventory items that are in plan.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [orderId] - Select only inventory items that belong to specified orders.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [siteId] - Select only inventory items that are associated with these
 | 
| +   * sites.
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [InventoryItemsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<InventoryItemsListResponse> list(core.String profileId, core.String projectId, {core.List<core.String> ids, core.bool inPlan, core.int maxResults, core.List<core.String> orderId, core.String pageToken, core.List<core.String> siteId, core.String sortField, core.String sortOrder}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (inPlan != null) {
 | 
| +      _queryParams["inPlan"] = ["${inPlan}"];
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (orderId != null) {
 | 
| +      _queryParams["orderId"] = orderId;
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (siteId != null) {
 | 
| +      _queryParams["siteId"] = siteId;
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/inventoryItems';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new InventoryItemsListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
|  class LandingPagesResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| @@ -6576,13 +6868,15 @@ class MobileCarriersResourceApi {
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of mobile carriers.
 | 
| +   * Gets one mobile carrier by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [MobileCarriersListResponse].
 | 
| +   * [id] - Mobile carrier ID.
 | 
| +   *
 | 
| +   * Completes with a [MobileCarrier].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6590,7 +6884,7 @@ class MobileCarriersResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<MobileCarriersListResponse> list(core.String profileId) {
 | 
| +  async.Future<MobileCarrier> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6601,8 +6895,11 @@ class MobileCarriersResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/mobileCarriers';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/mobileCarriers/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -6611,26 +6908,17 @@ class MobileCarriersResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new MobileCarriersListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new MobileCarrier.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class OperatingSystemVersionsResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  OperatingSystemVersionsResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Retrieves a list of operating system versions.
 | 
| +   * Retrieves a list of mobile carriers.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [OperatingSystemVersionsListResponse].
 | 
| +   * Completes with a [MobileCarriersListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6638,7 +6926,7 @@ class OperatingSystemVersionsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<OperatingSystemVersionsListResponse> list(core.String profileId) {
 | 
| +  async.Future<MobileCarriersListResponse> list(core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6650,7 +6938,7 @@ class OperatingSystemVersionsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystemVersions';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/mobileCarriers';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -6659,26 +6947,28 @@ class OperatingSystemVersionsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new OperatingSystemVersionsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new MobileCarriersListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class OperatingSystemsResourceApi {
 | 
| +class OperatingSystemVersionsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  OperatingSystemsResourceApi(commons.ApiRequester client) : 
 | 
| +  OperatingSystemVersionsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of operating systems.
 | 
| +   * Gets one operating system version by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [OperatingSystemsListResponse].
 | 
| +   * [id] - Operating system version ID.
 | 
| +   *
 | 
| +   * Completes with a [OperatingSystemVersion].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6686,7 +6976,7 @@ class OperatingSystemsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<OperatingSystemsListResponse> list(core.String profileId) {
 | 
| +  async.Future<OperatingSystemVersion> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6697,8 +6987,11 @@ class OperatingSystemsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystems';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystemVersions/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -6707,28 +7000,67 @@ class OperatingSystemsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new OperatingSystemsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new OperatingSystemVersion.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of operating system versions.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [OperatingSystemVersionsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<OperatingSystemVersionsListResponse> list(core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystemVersions';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new OperatingSystemVersionsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class PlacementGroupsResourceApi {
 | 
| +class OperatingSystemsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  PlacementGroupsResourceApi(commons.ApiRequester client) : 
 | 
| +  OperatingSystemsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Gets one placement group by ID.
 | 
| +   * Gets one operating system by DART ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement group ID.
 | 
| +   * [dartId] - Operating system DART ID.
 | 
|     *
 | 
| -   * Completes with a [PlacementGroup].
 | 
| +   * Completes with a [OperatingSystem].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6736,7 +7068,7 @@ class PlacementGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementGroup> get(core.String profileId, core.String id) {
 | 
| +  async.Future<OperatingSystem> get(core.String profileId, core.String dartId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6747,11 +7079,11 @@ class PlacementGroupsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (dartId == null) {
 | 
| +      throw new core.ArgumentError("Parameter dartId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystems/' + commons.Escaper.ecapeVariable('$dartId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -6760,19 +7092,17 @@ class PlacementGroupsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
| +    return _response.then((data) => new OperatingSystem.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new placement group.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Retrieves a list of operating systems.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PlacementGroup].
 | 
| +   * Completes with a [OperatingSystemsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6780,7 +7110,7 @@ class PlacementGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementGroup> insert(PlacementGroup request, core.String profileId) {
 | 
| +  async.Future<OperatingSystemsListResponse> list(core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6788,78 +7118,109 @@ class PlacementGroupsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/operatingSystems';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
| +    return _response.then((data) => new OperatingSystemsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class OrderDocumentsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  OrderDocumentsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Retrieves a list of placement groups, possibly filtered.
 | 
| +   * Gets one order document by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [advertiserIds] - Select only placement groups that belong to these
 | 
| -   * advertisers.
 | 
| +   * [projectId] - Project ID for order documents.
 | 
|     *
 | 
| -   * [archived] - Select only archived placements. Don't set this field to
 | 
| -   * select both archived and non-archived placements.
 | 
| +   * [id] - Order document ID.
 | 
|     *
 | 
| -   * [campaignIds] - Select only placement groups that belong to these
 | 
| -   * campaigns.
 | 
| +   * Completes with a [OrderDocument].
 | 
|     *
 | 
| -   * [contentCategoryIds] - Select only placement groups that are associated
 | 
| -   * with these content categories.
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
|     *
 | 
| -   * [directorySiteIds] - Select only placement groups that are associated with
 | 
| -   * these directory sites.
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<OrderDocument> get(core.String profileId, core.String projectId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/orderDocuments/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new OrderDocument.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of order documents, possibly filtered.
 | 
|     *
 | 
| -   * [ids] - Select only placement groups with these IDs.
 | 
| +   * Request parameters:
 | 
|     *
 | 
| -   * [maxResults] - Maximum number of results to return.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   * [projectId] - Project ID for order documents.
 | 
|     *
 | 
| -   * [placementGroupType] - Select only placement groups belonging with this
 | 
| -   * group type. A package is a simple group of placements that acts as a single
 | 
| -   * pricing point for a group of tags. A roadblock is a group of placements
 | 
| -   * that not only acts as a single pricing point but also assumes that all the
 | 
| -   * tags in it will be served at the same time. A roadblock requires one of its
 | 
| -   * assigned placements to be marked as primary for reporting.
 | 
| -   * Possible string values are:
 | 
| -   * - "PLACEMENT_PACKAGE"
 | 
| -   * - "PLACEMENT_ROADBLOCK"
 | 
| +   * [approved] - Select only order documents that have been approved by at
 | 
| +   * least one user.
 | 
|     *
 | 
| -   * [placementStrategyIds] - Select only placement groups that are associated
 | 
| -   * with these placement strategies.
 | 
| +   * [ids] - Select only order documents with these IDs.
 | 
|     *
 | 
| -   * [pricingTypes] - Select only placement groups with these pricing types.
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
|     *
 | 
| -   * [searchString] - Allows searching for placement groups by name or ID.
 | 
| -   * Wildcards (*) are allowed. For example, "placement*2015" will return
 | 
| -   * placement groups with names like "placement group June 2015", "placement
 | 
| -   * group May 2015", or simply "placements 2015". Most of the searches also add
 | 
| +   * [orderId] - Select only order documents for specified orders.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for order documents by name or ID.
 | 
| +   * Wildcards (*) are allowed. For example, "orderdocument*2015" will return
 | 
| +   * order documents with names like "orderdocument June 2015", "orderdocument
 | 
| +   * April 2015", or simply "orderdocument 2015". Most of the searches also add
 | 
|     * wildcards implicitly at the start and the end of the search string. For
 | 
| -   * example, a search string of "placementgroup" will match placement groups
 | 
| -   * with name "my placementgroup", "placementgroup 2015", or simply
 | 
| -   * "placementgroup".
 | 
| +   * example, a search string of "orderdocument" will match order documents with
 | 
| +   * name "my orderdocument", "orderdocument 2015", or simply "orderdocument".
 | 
|     *
 | 
| -   * [siteIds] - Select only placement groups that are associated with these
 | 
| +   * [siteId] - Select only order documents that are associated with these
 | 
|     * sites.
 | 
|     *
 | 
|     * [sortField] - Field by which to sort the list.
 | 
| @@ -6872,7 +7233,7 @@ class PlacementGroupsResourceApi {
 | 
|     * - "ASCENDING"
 | 
|     * - "DESCENDING"
 | 
|     *
 | 
| -   * Completes with a [PlacementGroupsListResponse].
 | 
| +   * Completes with a [OrderDocumentsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6880,7 +7241,7 @@ class PlacementGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementGroupsListResponse> list(core.String profileId, {core.List<core.String> advertiserIds, core.bool archived, core.List<core.String> campaignIds, core.List<core.String> contentCategoryIds, core.List<core.String> directorySiteIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String placementGroupType, core.List<core.String> placementStrategyIds, core.List<core.String> pricingTypes, core.String searchString, core.List<core.String> siteIds, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<OrderDocumentsListResponse> list(core.String profileId, core.String projectId, {core.bool approved, core.List<core.String> ids, core.int maxResults, core.List<core.String> orderId, core.String pageToken, core.String searchString, core.List<core.String> siteId, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6891,20 +7252,11 @@ class PlacementGroupsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (advertiserIds != null) {
 | 
| -      _queryParams["advertiserIds"] = advertiserIds;
 | 
| -    }
 | 
| -    if (archived != null) {
 | 
| -      _queryParams["archived"] = ["${archived}"];
 | 
| -    }
 | 
| -    if (campaignIds != null) {
 | 
| -      _queryParams["campaignIds"] = campaignIds;
 | 
| -    }
 | 
| -    if (contentCategoryIds != null) {
 | 
| -      _queryParams["contentCategoryIds"] = contentCategoryIds;
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
|      }
 | 
| -    if (directorySiteIds != null) {
 | 
| -      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| +    if (approved != null) {
 | 
| +      _queryParams["approved"] = ["${approved}"];
 | 
|      }
 | 
|      if (ids != null) {
 | 
|        _queryParams["ids"] = ids;
 | 
| @@ -6912,23 +7264,17 @@ class PlacementGroupsResourceApi {
 | 
|      if (maxResults != null) {
 | 
|        _queryParams["maxResults"] = ["${maxResults}"];
 | 
|      }
 | 
| +    if (orderId != null) {
 | 
| +      _queryParams["orderId"] = orderId;
 | 
| +    }
 | 
|      if (pageToken != null) {
 | 
|        _queryParams["pageToken"] = [pageToken];
 | 
|      }
 | 
| -    if (placementGroupType != null) {
 | 
| -      _queryParams["placementGroupType"] = [placementGroupType];
 | 
| -    }
 | 
| -    if (placementStrategyIds != null) {
 | 
| -      _queryParams["placementStrategyIds"] = placementStrategyIds;
 | 
| -    }
 | 
| -    if (pricingTypes != null) {
 | 
| -      _queryParams["pricingTypes"] = pricingTypes;
 | 
| -    }
 | 
|      if (searchString != null) {
 | 
|        _queryParams["searchString"] = [searchString];
 | 
|      }
 | 
| -    if (siteIds != null) {
 | 
| -      _queryParams["siteIds"] = siteIds;
 | 
| +    if (siteId != null) {
 | 
| +      _queryParams["siteId"] = siteId;
 | 
|      }
 | 
|      if (sortField != null) {
 | 
|        _queryParams["sortField"] = [sortField];
 | 
| @@ -6937,7 +7283,7 @@ class PlacementGroupsResourceApi {
 | 
|        _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/orderDocuments';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -6946,21 +7292,30 @@ class PlacementGroupsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementGroupsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new OrderDocumentsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class OrdersResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  OrdersResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Updates an existing placement group. This method supports patch semantics.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Gets one order by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement group ID.
 | 
| +   * [projectId] - Project ID for orders.
 | 
|     *
 | 
| -   * Completes with a [PlacementGroup].
 | 
| +   * [id] - Order ID.
 | 
| +   *
 | 
| +   * Completes with a [Order].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -6968,7 +7323,7 @@ class PlacementGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementGroup> patch(PlacementGroup request, core.String profileId, core.String id) {
 | 
| +  async.Future<Order> get(core.String profileId, core.String projectId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -6976,39 +7331,63 @@ class PlacementGroupsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
| +    }
 | 
|      if (id == null) {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
| -    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/orders/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PATCH",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
| +    return _response.then((data) => new Order.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing placement group.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Retrieves a list of orders, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PlacementGroup].
 | 
| +   * [projectId] - Project ID for orders.
 | 
| +   *
 | 
| +   * [ids] - Select only orders with these IDs.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for orders by name or ID. Wildcards (*)
 | 
| +   * are allowed. For example, "order*2015" will return orders with names like
 | 
| +   * "order June 2015", "order April 2015", or simply "order 2015". Most of the
 | 
| +   * searches also add wildcards implicitly at the start and the end of the
 | 
| +   * search string. For example, a search string of "order" will match orders
 | 
| +   * with name "my order", "order 2015", or simply "order".
 | 
| +   *
 | 
| +   * [siteId] - Select only orders that are associated with these site IDs.
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [OrdersListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7016,7 +7395,7 @@ class PlacementGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementGroup> update(PlacementGroup request, core.String profileId) {
 | 
| +  async.Future<OrdersListResponse> list(core.String profileId, core.String projectId, {core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.List<core.String> siteId, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7024,88 +7403,65 @@ class PlacementGroupsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (projectId == null) {
 | 
| +      throw new core.ArgumentError("Parameter projectId is required.");
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
| +    if (siteId != null) {
 | 
| +      _queryParams["siteId"] = siteId;
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$projectId') + '/orders';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PUT",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
| +    return _response.then((data) => new OrdersListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class PlacementStrategiesResourceApi {
 | 
| +class PlacementGroupsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  PlacementStrategiesResourceApi(commons.ApiRequester client) : 
 | 
| +  PlacementGroupsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Deletes an existing placement strategy.
 | 
| -   *
 | 
| -   * Request parameters:
 | 
| -   *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| -   *
 | 
| -   * [id] - Placement strategy ID.
 | 
| -   *
 | 
| -   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| -   * error.
 | 
| -   *
 | 
| -   * If the used [http.Client] completes with an error when making a REST call,
 | 
| -   * this method will complete with the same error.
 | 
| -   */
 | 
| -  async.Future delete(core.String profileId, core.String id) {
 | 
| -    var _url = null;
 | 
| -    var _queryParams = new core.Map();
 | 
| -    var _uploadMedia = null;
 | 
| -    var _uploadOptions = null;
 | 
| -    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| -    var _body = null;
 | 
| -
 | 
| -    if (profileId == null) {
 | 
| -      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| -    }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| -    }
 | 
| -
 | 
| -    _downloadOptions = null;
 | 
| -
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies/' + commons.Escaper.ecapeVariable('$id');
 | 
| -
 | 
| -    var _response = _requester.request(_url,
 | 
| -                                       "DELETE",
 | 
| -                                       body: _body,
 | 
| -                                       queryParams: _queryParams,
 | 
| -                                       uploadOptions: _uploadOptions,
 | 
| -                                       uploadMedia: _uploadMedia,
 | 
| -                                       downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => null);
 | 
| -  }
 | 
| -
 | 
| -  /**
 | 
| -   * Gets one placement strategy by ID.
 | 
| +   * Gets one placement group by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement strategy ID.
 | 
| +   * [id] - Placement group ID.
 | 
|     *
 | 
| -   * Completes with a [PlacementStrategy].
 | 
| +   * Completes with a [PlacementGroup].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7113,7 +7469,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementStrategy> get(core.String profileId, core.String id) {
 | 
| +  async.Future<PlacementGroup> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7128,7 +7484,7 @@ class PlacementStrategiesResourceApi {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -7137,11 +7493,11 @@ class PlacementStrategiesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new placement strategy.
 | 
| +   * Inserts a new placement group.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7149,7 +7505,7 @@ class PlacementStrategiesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PlacementStrategy].
 | 
| +   * Completes with a [PlacementGroup].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7157,7 +7513,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementStrategy> insert(PlacementStrategy request, core.String profileId) {
 | 
| +  async.Future<PlacementGroup> insert(PlacementGroup request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7172,7 +7528,7 @@ class PlacementStrategiesResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "POST",
 | 
| @@ -7181,30 +7537,63 @@ class PlacementStrategiesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of placement strategies, possibly filtered.
 | 
| +   * Retrieves a list of placement groups, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [ids] - Select only placement strategies with these IDs.
 | 
| +   * [advertiserIds] - Select only placement groups that belong to these
 | 
| +   * advertisers.
 | 
| +   *
 | 
| +   * [archived] - Select only archived placements. Don't set this field to
 | 
| +   * select both archived and non-archived placements.
 | 
| +   *
 | 
| +   * [campaignIds] - Select only placement groups that belong to these
 | 
| +   * campaigns.
 | 
| +   *
 | 
| +   * [contentCategoryIds] - Select only placement groups that are associated
 | 
| +   * with these content categories.
 | 
| +   *
 | 
| +   * [directorySiteIds] - Select only placement groups that are associated with
 | 
| +   * these directory sites.
 | 
| +   *
 | 
| +   * [ids] - Select only placement groups with these IDs.
 | 
|     *
 | 
|     * [maxResults] - Maximum number of results to return.
 | 
|     *
 | 
|     * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
|     *
 | 
| -   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| -   * are allowed. For example, "placementstrategy*2015" will return objects with
 | 
| -   * names like "placementstrategy June 2015", "placementstrategy April 2015",
 | 
| -   * or simply "placementstrategy 2015". Most of the searches also add wildcards
 | 
| -   * implicitly at the start and the end of the search string. For example, a
 | 
| -   * search string of "placementstrategy" will match objects with name "my
 | 
| -   * placementstrategy", "placementstrategy 2015", or simply
 | 
| -   * "placementstrategy".
 | 
| +   * [placementGroupType] - Select only placement groups belonging with this
 | 
| +   * group type. A package is a simple group of placements that acts as a single
 | 
| +   * pricing point for a group of tags. A roadblock is a group of placements
 | 
| +   * that not only acts as a single pricing point but also assumes that all the
 | 
| +   * tags in it will be served at the same time. A roadblock requires one of its
 | 
| +   * assigned placements to be marked as primary for reporting.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLACEMENT_PACKAGE"
 | 
| +   * - "PLACEMENT_ROADBLOCK"
 | 
| +   *
 | 
| +   * [placementStrategyIds] - Select only placement groups that are associated
 | 
| +   * with these placement strategies.
 | 
| +   *
 | 
| +   * [pricingTypes] - Select only placement groups with these pricing types.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for placement groups by name or ID.
 | 
| +   * Wildcards (*) are allowed. For example, "placement*2015" will return
 | 
| +   * placement groups with names like "placement group June 2015", "placement
 | 
| +   * group May 2015", or simply "placements 2015". Most of the searches also add
 | 
| +   * wildcards implicitly at the start and the end of the search string. For
 | 
| +   * example, a search string of "placementgroup" will match placement groups
 | 
| +   * with name "my placementgroup", "placementgroup 2015", or simply
 | 
| +   * "placementgroup".
 | 
| +   *
 | 
| +   * [siteIds] - Select only placement groups that are associated with these
 | 
| +   * sites.
 | 
|     *
 | 
|     * [sortField] - Field by which to sort the list.
 | 
|     * Possible string values are:
 | 
| @@ -7216,7 +7605,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * - "ASCENDING"
 | 
|     * - "DESCENDING"
 | 
|     *
 | 
| -   * Completes with a [PlacementStrategiesListResponse].
 | 
| +   * Completes with a [PlacementGroupsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7224,7 +7613,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementStrategiesListResponse> list(core.String profileId, {core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<PlacementGroupsListResponse> list(core.String profileId, {core.List<core.String> advertiserIds, core.bool archived, core.List<core.String> campaignIds, core.List<core.String> contentCategoryIds, core.List<core.String> directorySiteIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String placementGroupType, core.List<core.String> placementStrategyIds, core.List<core.String> pricingTypes, core.String searchString, core.List<core.String> siteIds, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7235,6 +7624,21 @@ class PlacementStrategiesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (advertiserIds != null) {
 | 
| +      _queryParams["advertiserIds"] = advertiserIds;
 | 
| +    }
 | 
| +    if (archived != null) {
 | 
| +      _queryParams["archived"] = ["${archived}"];
 | 
| +    }
 | 
| +    if (campaignIds != null) {
 | 
| +      _queryParams["campaignIds"] = campaignIds;
 | 
| +    }
 | 
| +    if (contentCategoryIds != null) {
 | 
| +      _queryParams["contentCategoryIds"] = contentCategoryIds;
 | 
| +    }
 | 
| +    if (directorySiteIds != null) {
 | 
| +      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| +    }
 | 
|      if (ids != null) {
 | 
|        _queryParams["ids"] = ids;
 | 
|      }
 | 
| @@ -7244,9 +7648,21 @@ class PlacementStrategiesResourceApi {
 | 
|      if (pageToken != null) {
 | 
|        _queryParams["pageToken"] = [pageToken];
 | 
|      }
 | 
| +    if (placementGroupType != null) {
 | 
| +      _queryParams["placementGroupType"] = [placementGroupType];
 | 
| +    }
 | 
| +    if (placementStrategyIds != null) {
 | 
| +      _queryParams["placementStrategyIds"] = placementStrategyIds;
 | 
| +    }
 | 
| +    if (pricingTypes != null) {
 | 
| +      _queryParams["pricingTypes"] = pricingTypes;
 | 
| +    }
 | 
|      if (searchString != null) {
 | 
|        _queryParams["searchString"] = [searchString];
 | 
|      }
 | 
| +    if (siteIds != null) {
 | 
| +      _queryParams["siteIds"] = siteIds;
 | 
| +    }
 | 
|      if (sortField != null) {
 | 
|        _queryParams["sortField"] = [sortField];
 | 
|      }
 | 
| @@ -7254,7 +7670,7 @@ class PlacementStrategiesResourceApi {
 | 
|        _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -7263,12 +7679,11 @@ class PlacementStrategiesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementStrategiesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementGroupsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing placement strategy. This method supports patch
 | 
| -   * semantics.
 | 
| +   * Updates an existing placement group. This method supports patch semantics.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7276,9 +7691,9 @@ class PlacementStrategiesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement strategy ID.
 | 
| +   * [id] - Placement group ID.
 | 
|     *
 | 
| -   * Completes with a [PlacementStrategy].
 | 
| +   * Completes with a [PlacementGroup].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7286,7 +7701,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementStrategy> patch(PlacementStrategy request, core.String profileId, core.String id) {
 | 
| +  async.Future<PlacementGroup> patch(PlacementGroup request, core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7305,7 +7720,7 @@ class PlacementStrategiesResourceApi {
 | 
|      }
 | 
|      _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "PATCH",
 | 
| @@ -7314,11 +7729,11 @@ class PlacementStrategiesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing placement strategy.
 | 
| +   * Updates an existing placement group.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7326,7 +7741,7 @@ class PlacementStrategiesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PlacementStrategy].
 | 
| +   * Completes with a [PlacementGroup].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7334,7 +7749,7 @@ class PlacementStrategiesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementStrategy> update(PlacementStrategy request, core.String profileId) {
 | 
| +  async.Future<PlacementGroup> update(PlacementGroup request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7349,7 +7764,7 @@ class PlacementStrategiesResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementGroups';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "PUT",
 | 
| @@ -7358,33 +7773,26 @@ class PlacementStrategiesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementGroup.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class PlacementsResourceApi {
 | 
| +class PlacementStrategiesResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  PlacementsResourceApi(commons.ApiRequester client) : 
 | 
| +  PlacementStrategiesResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Generates tags for a placement.
 | 
| +   * Deletes an existing placement strategy.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [campaignId] - Generate placements belonging to this campaign. This is a
 | 
| -   * required field.
 | 
| -   *
 | 
| -   * [placementIds] - Generate tags for these placements.
 | 
| -   *
 | 
| -   * [tagFormats] - Tag formats to generate for these placements.
 | 
| -   *
 | 
| -   * Completes with a [PlacementsGenerateTagsResponse].
 | 
| +   * [id] - Placement strategy ID.
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7392,7 +7800,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementsGenerateTagsResponse> generatetags(core.String profileId, {core.String campaignId, core.List<core.String> placementIds, core.List<core.String> tagFormats}) {
 | 
| +  async.Future delete(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7403,38 +7811,34 @@ class PlacementsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (campaignId != null) {
 | 
| -      _queryParams["campaignId"] = [campaignId];
 | 
| -    }
 | 
| -    if (placementIds != null) {
 | 
| -      _queryParams["placementIds"] = placementIds;
 | 
| -    }
 | 
| -    if (tagFormats != null) {
 | 
| -      _queryParams["tagFormats"] = tagFormats;
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements/generatetags';
 | 
| +    _downloadOptions = null;
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "DELETE",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementsGenerateTagsResponse.fromJson(data));
 | 
| +    return _response.then((data) => null);
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Gets one placement by ID.
 | 
| +   * Gets one placement strategy by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement ID.
 | 
| +   * [id] - Placement strategy ID.
 | 
|     *
 | 
| -   * Completes with a [Placement].
 | 
| +   * Completes with a [PlacementStrategy].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7442,7 +7846,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Placement> get(core.String profileId, core.String id) {
 | 
| +  async.Future<PlacementStrategy> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7457,7 +7861,7 @@ class PlacementsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -7466,11 +7870,11 @@ class PlacementsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Placement.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new placement.
 | 
| +   * Inserts a new placement strategy.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7478,7 +7882,7 @@ class PlacementsResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Placement].
 | 
| +   * Completes with a [PlacementStrategy].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7486,7 +7890,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Placement> insert(Placement request, core.String profileId) {
 | 
| +  async.Future<PlacementStrategy> insert(PlacementStrategy request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7501,7 +7905,7 @@ class PlacementsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "POST",
 | 
| @@ -7510,65 +7914,30 @@ class PlacementsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Placement.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of placements, possibly filtered.
 | 
| +   * Retrieves a list of placement strategies, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [advertiserIds] - Select only placements that belong to these advertisers.
 | 
| -   *
 | 
| -   * [archived] - Select only archived placements. Don't set this field to
 | 
| -   * select both archived and non-archived placements.
 | 
| -   *
 | 
| -   * [campaignIds] - Select only placements that belong to these campaigns.
 | 
| -   *
 | 
| -   * [compatibilities] - Select only placements that are associated with these
 | 
| -   * compatibilities. WEB and WEB_INTERSTITIAL refer to rendering either on
 | 
| -   * desktop or on mobile devices for regular or interstitial ads respectively.
 | 
| -   * APP and APP_INTERSTITIAL are for rendering in mobile apps.IN_STREAM_VIDEO
 | 
| -   * refers to rendering in in-stream video ads developed with the VAST
 | 
| -   * standard.
 | 
| -   *
 | 
| -   * [contentCategoryIds] - Select only placements that are associated with
 | 
| -   * these content categories.
 | 
| -   *
 | 
| -   * [directorySiteIds] - Select only placements that are associated with these
 | 
| -   * directory sites.
 | 
| -   *
 | 
| -   * [groupIds] - Select only placements that belong to these placement groups.
 | 
| -   *
 | 
| -   * [ids] - Select only placements with these IDs.
 | 
| +   * [ids] - Select only placement strategies with these IDs.
 | 
|     *
 | 
|     * [maxResults] - Maximum number of results to return.
 | 
|     *
 | 
|     * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
|     *
 | 
| -   * [paymentSource] - Select only placements with this payment source.
 | 
| -   * Possible string values are:
 | 
| -   * - "PLACEMENT_AGENCY_PAID"
 | 
| -   * - "PLACEMENT_PUBLISHER_PAID"
 | 
| -   *
 | 
| -   * [placementStrategyIds] - Select only placements that are associated with
 | 
| -   * these placement strategies.
 | 
| -   *
 | 
| -   * [pricingTypes] - Select only placements with these pricing types.
 | 
| -   *
 | 
| -   * [searchString] - Allows searching for placements by name or ID. Wildcards
 | 
| -   * (*) are allowed. For example, "placement*2015" will return placements with
 | 
| -   * names like "placement June 2015", "placement May 2015", or simply
 | 
| -   * "placements 2015". Most of the searches also add wildcards implicitly at
 | 
| -   * the start and the end of the search string. For example, a search string of
 | 
| -   * "placement" will match placements with name "my placement", "placement
 | 
| -   * 2015", or simply "placement".
 | 
| -   *
 | 
| -   * [siteIds] - Select only placements that are associated with these sites.
 | 
| -   *
 | 
| -   * [sizeIds] - Select only placements that are associated with these sizes.
 | 
| +   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| +   * are allowed. For example, "placementstrategy*2015" will return objects with
 | 
| +   * names like "placementstrategy June 2015", "placementstrategy April 2015",
 | 
| +   * or simply "placementstrategy 2015". Most of the searches also add wildcards
 | 
| +   * implicitly at the start and the end of the search string. For example, a
 | 
| +   * search string of "placementstrategy" will match objects with name "my
 | 
| +   * placementstrategy", "placementstrategy 2015", or simply
 | 
| +   * "placementstrategy".
 | 
|     *
 | 
|     * [sortField] - Field by which to sort the list.
 | 
|     * Possible string values are:
 | 
| @@ -7580,7 +7949,7 @@ class PlacementsResourceApi {
 | 
|     * - "ASCENDING"
 | 
|     * - "DESCENDING"
 | 
|     *
 | 
| -   * Completes with a [PlacementsListResponse].
 | 
| +   * Completes with a [PlacementStrategiesListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7588,7 +7957,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlacementsListResponse> list(core.String profileId, {core.List<core.String> advertiserIds, core.bool archived, core.List<core.String> campaignIds, core.List<core.String> compatibilities, core.List<core.String> contentCategoryIds, core.List<core.String> directorySiteIds, core.List<core.String> groupIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String paymentSource, core.List<core.String> placementStrategyIds, core.List<core.String> pricingTypes, core.String searchString, core.List<core.String> siteIds, core.List<core.String> sizeIds, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<PlacementStrategiesListResponse> list(core.String profileId, {core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7599,27 +7968,6 @@ class PlacementsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (advertiserIds != null) {
 | 
| -      _queryParams["advertiserIds"] = advertiserIds;
 | 
| -    }
 | 
| -    if (archived != null) {
 | 
| -      _queryParams["archived"] = ["${archived}"];
 | 
| -    }
 | 
| -    if (campaignIds != null) {
 | 
| -      _queryParams["campaignIds"] = campaignIds;
 | 
| -    }
 | 
| -    if (compatibilities != null) {
 | 
| -      _queryParams["compatibilities"] = compatibilities;
 | 
| -    }
 | 
| -    if (contentCategoryIds != null) {
 | 
| -      _queryParams["contentCategoryIds"] = contentCategoryIds;
 | 
| -    }
 | 
| -    if (directorySiteIds != null) {
 | 
| -      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| -    }
 | 
| -    if (groupIds != null) {
 | 
| -      _queryParams["groupIds"] = groupIds;
 | 
| -    }
 | 
|      if (ids != null) {
 | 
|        _queryParams["ids"] = ids;
 | 
|      }
 | 
| @@ -7629,24 +7977,9 @@ class PlacementsResourceApi {
 | 
|      if (pageToken != null) {
 | 
|        _queryParams["pageToken"] = [pageToken];
 | 
|      }
 | 
| -    if (paymentSource != null) {
 | 
| -      _queryParams["paymentSource"] = [paymentSource];
 | 
| -    }
 | 
| -    if (placementStrategyIds != null) {
 | 
| -      _queryParams["placementStrategyIds"] = placementStrategyIds;
 | 
| -    }
 | 
| -    if (pricingTypes != null) {
 | 
| -      _queryParams["pricingTypes"] = pricingTypes;
 | 
| -    }
 | 
|      if (searchString != null) {
 | 
|        _queryParams["searchString"] = [searchString];
 | 
|      }
 | 
| -    if (siteIds != null) {
 | 
| -      _queryParams["siteIds"] = siteIds;
 | 
| -    }
 | 
| -    if (sizeIds != null) {
 | 
| -      _queryParams["sizeIds"] = sizeIds;
 | 
| -    }
 | 
|      if (sortField != null) {
 | 
|        _queryParams["sortField"] = [sortField];
 | 
|      }
 | 
| @@ -7654,7 +7987,7 @@ class PlacementsResourceApi {
 | 
|        _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -7663,11 +7996,12 @@ class PlacementsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlacementsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementStrategiesListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing placement. This method supports patch semantics.
 | 
| +   * Updates an existing placement strategy. This method supports patch
 | 
| +   * semantics.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7675,9 +8009,9 @@ class PlacementsResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Placement ID.
 | 
| +   * [id] - Placement strategy ID.
 | 
|     *
 | 
| -   * Completes with a [Placement].
 | 
| +   * Completes with a [PlacementStrategy].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7685,7 +8019,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Placement> patch(Placement request, core.String profileId, core.String id) {
 | 
| +  async.Future<PlacementStrategy> patch(PlacementStrategy request, core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7704,7 +8038,7 @@ class PlacementsResourceApi {
 | 
|      }
 | 
|      _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "PATCH",
 | 
| @@ -7713,11 +8047,11 @@ class PlacementsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Placement.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing placement.
 | 
| +   * Updates an existing placement strategy.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -7725,7 +8059,7 @@ class PlacementsResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Placement].
 | 
| +   * Completes with a [PlacementStrategy].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7733,7 +8067,7 @@ class PlacementsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Placement> update(Placement request, core.String profileId) {
 | 
| +  async.Future<PlacementStrategy> update(PlacementStrategy request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7748,7 +8082,7 @@ class PlacementsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placementStrategies';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "PUT",
 | 
| @@ -7757,26 +8091,33 @@ class PlacementsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Placement.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementStrategy.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class PlatformTypesResourceApi {
 | 
| +class PlacementsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  PlatformTypesResourceApi(commons.ApiRequester client) : 
 | 
| +  PlacementsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of platform types.
 | 
| +   * Generates tags for a placement.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PlatformTypesListResponse].
 | 
| +   * [campaignId] - Generate placements belonging to this campaign. This is a
 | 
| +   * required field.
 | 
| +   *
 | 
| +   * [placementIds] - Generate tags for these placements.
 | 
| +   *
 | 
| +   * [tagFormats] - Tag formats to generate for these placements.
 | 
| +   *
 | 
| +   * Completes with a [PlacementsGenerateTagsResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7784,7 +8125,7 @@ class PlatformTypesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PlatformTypesListResponse> list(core.String profileId) {
 | 
| +  async.Future<PlacementsGenerateTagsResponse> generatetags(core.String profileId, {core.String campaignId, core.List<core.String> placementIds, core.List<core.String> tagFormats}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7795,36 +8136,38 @@ class PlatformTypesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (campaignId != null) {
 | 
| +      _queryParams["campaignId"] = [campaignId];
 | 
| +    }
 | 
| +    if (placementIds != null) {
 | 
| +      _queryParams["placementIds"] = placementIds;
 | 
| +    }
 | 
| +    if (tagFormats != null) {
 | 
| +      _queryParams["tagFormats"] = tagFormats;
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/platformTypes';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements/generatetags';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PlatformTypesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementsGenerateTagsResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class PostalCodesResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  PostalCodesResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Retrieves a list of postal codes.
 | 
| +   * Gets one placement by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [PostalCodesListResponse].
 | 
| +   * [id] - Placement ID.
 | 
| +   *
 | 
| +   * Completes with a [Placement].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7832,7 +8175,7 @@ class PostalCodesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<PostalCodesListResponse> list(core.String profileId) {
 | 
| +  async.Future<Placement> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7843,8 +8186,11 @@ class PostalCodesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/postalCodes';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -7853,26 +8199,19 @@ class PostalCodesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new PostalCodesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new Placement.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class RegionsResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  RegionsResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Retrieves a list of regions.
 | 
| +   * Inserts a new placement.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [RegionsListResponse].
 | 
| +   * Completes with a [Placement].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7880,7 +8219,7 @@ class RegionsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<RegionsListResponse> list(core.String profileId) {
 | 
| +  async.Future<Placement> insert(Placement request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7888,88 +8227,93 @@ class RegionsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/regions';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new RegionsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new Placement.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class ReportsResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  ReportsCompatibleFieldsResourceApi get compatibleFields => new ReportsCompatibleFieldsResourceApi(_requester);
 | 
| -  ReportsFilesResourceApi get files => new ReportsFilesResourceApi(_requester);
 | 
| -
 | 
| -  ReportsResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Deletes a report by its ID.
 | 
| +   * Retrieves a list of placements, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [reportId] - The ID of the report.
 | 
| +   * [advertiserIds] - Select only placements that belong to these advertisers.
 | 
|     *
 | 
| -   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| -   * error.
 | 
| +   * [archived] - Select only archived placements. Don't set this field to
 | 
| +   * select both archived and non-archived placements.
 | 
|     *
 | 
| -   * If the used [http.Client] completes with an error when making a REST call,
 | 
| -   * this method will complete with the same error.
 | 
| -   */
 | 
| -  async.Future delete(core.String profileId, core.String reportId) {
 | 
| -    var _url = null;
 | 
| -    var _queryParams = new core.Map();
 | 
| -    var _uploadMedia = null;
 | 
| -    var _uploadOptions = null;
 | 
| -    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| -    var _body = null;
 | 
| -
 | 
| -    if (profileId == null) {
 | 
| -      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| -    }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| -    }
 | 
| -
 | 
| -    _downloadOptions = null;
 | 
| -
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
| -
 | 
| -    var _response = _requester.request(_url,
 | 
| -                                       "DELETE",
 | 
| -                                       body: _body,
 | 
| -                                       queryParams: _queryParams,
 | 
| -                                       uploadOptions: _uploadOptions,
 | 
| -                                       uploadMedia: _uploadMedia,
 | 
| -                                       downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => null);
 | 
| -  }
 | 
| -
 | 
| -  /**
 | 
| -   * Retrieves a report by its ID.
 | 
| +   * [campaignIds] - Select only placements that belong to these campaigns.
 | 
|     *
 | 
| -   * Request parameters:
 | 
| +   * [compatibilities] - Select only placements that are associated with these
 | 
| +   * compatibilities. WEB and WEB_INTERSTITIAL refer to rendering either on
 | 
| +   * desktop or on mobile devices for regular or interstitial ads respectively.
 | 
| +   * APP and APP_INTERSTITIAL are for rendering in mobile apps.IN_STREAM_VIDEO
 | 
| +   * refers to rendering in in-stream video ads developed with the VAST
 | 
| +   * standard.
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [contentCategoryIds] - Select only placements that are associated with
 | 
| +   * these content categories.
 | 
|     *
 | 
| -   * [reportId] - The ID of the report.
 | 
| +   * [directorySiteIds] - Select only placements that are associated with these
 | 
| +   * directory sites.
 | 
|     *
 | 
| -   * Completes with a [Report].
 | 
| +   * [groupIds] - Select only placements that belong to these placement groups.
 | 
| +   *
 | 
| +   * [ids] - Select only placements with these IDs.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [paymentSource] - Select only placements with this payment source.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLACEMENT_AGENCY_PAID"
 | 
| +   * - "PLACEMENT_PUBLISHER_PAID"
 | 
| +   *
 | 
| +   * [placementStrategyIds] - Select only placements that are associated with
 | 
| +   * these placement strategies.
 | 
| +   *
 | 
| +   * [pricingTypes] - Select only placements with these pricing types.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for placements by name or ID. Wildcards
 | 
| +   * (*) are allowed. For example, "placement*2015" will return placements with
 | 
| +   * names like "placement June 2015", "placement May 2015", or simply
 | 
| +   * "placements 2015". Most of the searches also add wildcards implicitly at
 | 
| +   * the start and the end of the search string. For example, a search string of
 | 
| +   * "placement" will match placements with name "my placement", "placement
 | 
| +   * 2015", or simply "placement".
 | 
| +   *
 | 
| +   * [siteIds] - Select only placements that are associated with these sites.
 | 
| +   *
 | 
| +   * [sizeIds] - Select only placements that are associated with these sizes.
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [PlacementsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -7977,7 +8321,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Report> get(core.String profileId, core.String reportId) {
 | 
| +  async.Future<PlacementsListResponse> list(core.String profileId, {core.List<core.String> advertiserIds, core.bool archived, core.List<core.String> campaignIds, core.List<core.String> compatibilities, core.List<core.String> contentCategoryIds, core.List<core.String> directorySiteIds, core.List<core.String> groupIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String paymentSource, core.List<core.String> placementStrategyIds, core.List<core.String> pricingTypes, core.String searchString, core.List<core.String> siteIds, core.List<core.String> sizeIds, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -7988,11 +8332,62 @@ class ReportsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    if (advertiserIds != null) {
 | 
| +      _queryParams["advertiserIds"] = advertiserIds;
 | 
| +    }
 | 
| +    if (archived != null) {
 | 
| +      _queryParams["archived"] = ["${archived}"];
 | 
| +    }
 | 
| +    if (campaignIds != null) {
 | 
| +      _queryParams["campaignIds"] = campaignIds;
 | 
| +    }
 | 
| +    if (compatibilities != null) {
 | 
| +      _queryParams["compatibilities"] = compatibilities;
 | 
| +    }
 | 
| +    if (contentCategoryIds != null) {
 | 
| +      _queryParams["contentCategoryIds"] = contentCategoryIds;
 | 
| +    }
 | 
| +    if (directorySiteIds != null) {
 | 
| +      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| +    }
 | 
| +    if (groupIds != null) {
 | 
| +      _queryParams["groupIds"] = groupIds;
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (paymentSource != null) {
 | 
| +      _queryParams["paymentSource"] = [paymentSource];
 | 
| +    }
 | 
| +    if (placementStrategyIds != null) {
 | 
| +      _queryParams["placementStrategyIds"] = placementStrategyIds;
 | 
| +    }
 | 
| +    if (pricingTypes != null) {
 | 
| +      _queryParams["pricingTypes"] = pricingTypes;
 | 
| +    }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
| +    if (siteIds != null) {
 | 
| +      _queryParams["siteIds"] = siteIds;
 | 
| +    }
 | 
| +    if (sizeIds != null) {
 | 
| +      _queryParams["sizeIds"] = sizeIds;
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8001,19 +8396,21 @@ class ReportsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Report.fromJson(data));
 | 
| +    return _response.then((data) => new PlacementsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Creates a report.
 | 
| +   * Updates an existing placement. This method supports patch semantics.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Report].
 | 
| +   * [id] - Placement ID.
 | 
| +   *
 | 
| +   * Completes with a [Placement].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8021,7 +8418,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Report> insert(Report request, core.String profileId) {
 | 
| +  async.Future<Placement> patch(Placement request, core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8035,49 +8432,33 @@ class ReportsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "PATCH",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Report.fromJson(data));
 | 
| +    return _response.then((data) => new Placement.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves list of reports.
 | 
| -   *
 | 
| -   * Request parameters:
 | 
| -   *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| -   *
 | 
| -   * [maxResults] - Maximum number of results to return.
 | 
| -   * Value must be between "0" and "10".
 | 
| -   *
 | 
| -   * [pageToken] - The value of the nextToken from the previous result page.
 | 
| +   * Updates an existing placement.
 | 
|     *
 | 
| -   * [scope] - The scope that defines which results are returned, default is
 | 
| -   * 'MINE'.
 | 
| -   * Possible string values are:
 | 
| -   * - "ALL" : All reports in account.
 | 
| -   * - "MINE" : My reports.
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
| -   * [sortField] - The field by which to sort the list.
 | 
| -   * Possible string values are:
 | 
| -   * - "ID" : Sort by report ID.
 | 
| -   * - "LAST_MODIFIED_TIME" : Sort by 'lastModifiedTime' field.
 | 
| -   * - "NAME" : Sort by name of reports.
 | 
| +   * Request parameters:
 | 
|     *
 | 
| -   * [sortOrder] - Order of sorted results, default is 'DESCENDING'.
 | 
| -   * Possible string values are:
 | 
| -   * - "ASCENDING" : Ascending order.
 | 
| -   * - "DESCENDING" : Descending order.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [ReportList].
 | 
| +   * Completes with a [Placement].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8085,7 +8466,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<ReportList> list(core.String profileId, {core.int maxResults, core.String pageToken, core.String scope, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<Placement> update(Placement request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8093,49 +8474,44 @@ class ReportsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (maxResults != null) {
 | 
| -      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| -    }
 | 
| -    if (pageToken != null) {
 | 
| -      _queryParams["pageToken"] = [pageToken];
 | 
| -    }
 | 
| -    if (scope != null) {
 | 
| -      _queryParams["scope"] = [scope];
 | 
| -    }
 | 
| -    if (sortField != null) {
 | 
| -      _queryParams["sortField"] = [sortField];
 | 
| -    }
 | 
| -    if (sortOrder != null) {
 | 
| -      _queryParams["sortOrder"] = [sortOrder];
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/placements';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "PUT",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new ReportList.fromJson(data));
 | 
| +    return _response.then((data) => new Placement.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class PlatformTypesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  PlatformTypesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Updates a report. This method supports patch semantics.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Gets one platform type by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [reportId] - The ID of the report.
 | 
| +   * [id] - Platform type ID.
 | 
|     *
 | 
| -   * Completes with a [Report].
 | 
| +   * Completes with a [PlatformType].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8143,7 +8519,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Report> patch(Report request, core.String profileId, core.String reportId) {
 | 
| +  async.Future<PlatformType> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8151,40 +8527,33 @@ class ReportsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/platformTypes/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PATCH",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Report.fromJson(data));
 | 
| +    return _response.then((data) => new PlatformType.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Runs a report.
 | 
| +   * Retrieves a list of platform types.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA profile ID.
 | 
| -   *
 | 
| -   * [reportId] - The ID of the report.
 | 
| -   *
 | 
| -   * [synchronous] - If set and true, tries to run the report synchronously.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [File].
 | 
| +   * Completes with a [PlatformTypesListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8192,7 +8561,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<File> run(core.String profileId, core.String reportId, {core.bool synchronous}) {
 | 
| +  async.Future<PlatformTypesListResponse> list(core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8203,37 +8572,38 @@ class ReportsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| -    }
 | 
| -    if (synchronous != null) {
 | 
| -      _queryParams["synchronous"] = ["${synchronous}"];
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/run';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/platformTypes';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new File.fromJson(data));
 | 
| +    return _response.then((data) => new PlatformTypesListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class PostalCodesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  PostalCodesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Updates a report.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Gets one postal code by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [reportId] - The ID of the report.
 | 
| +   * [code] - Postal code ID.
 | 
|     *
 | 
| -   * Completes with a [Report].
 | 
| +   * Completes with a [PostalCode].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8241,7 +8611,7 @@ class ReportsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Report> update(Report request, core.String profileId, core.String reportId) {
 | 
| +  async.Future<PostalCode> get(core.String profileId, core.String code) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8249,49 +8619,33 @@ class ReportsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    if (code == null) {
 | 
| +      throw new core.ArgumentError("Parameter code is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/postalCodes/' + commons.Escaper.ecapeVariable('$code');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PUT",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Report.fromJson(data));
 | 
| +    return _response.then((data) => new PostalCode.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class ReportsCompatibleFieldsResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  ReportsCompatibleFieldsResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Returns the fields that are compatible to be selected in the respective
 | 
| -   * sections of a report criteria, given the fields already selected in the
 | 
| -   * input report and user permissions.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Retrieves a list of postal codes.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA user profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [CompatibleFields].
 | 
| +   * Completes with a [PostalCodesListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8299,7 +8653,7 @@ class ReportsCompatibleFieldsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<CompatibleFields> query(Report request, core.String profileId) {
 | 
| +  async.Future<PostalCodesListResponse> list(core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8307,54 +8661,41 @@ class ReportsCompatibleFieldsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/compatiblefields/query';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/postalCodes';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new CompatibleFields.fromJson(data));
 | 
| +    return _response.then((data) => new PostalCodesListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class ReportsFilesResourceApi {
 | 
| +class ProjectsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  ReportsFilesResourceApi(commons.ApiRequester client) : 
 | 
| +  ProjectsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a report file.
 | 
| +   * Gets one project by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA profile ID.
 | 
| -   *
 | 
| -   * [reportId] - The ID of the report.
 | 
| -   *
 | 
| -   * [fileId] - The ID of the report file.
 | 
| -   *
 | 
| -   * [downloadOptions] - Options for downloading. A download can be either a
 | 
| -   * Metadata (default) or Media download. Partial Media downloads are possible
 | 
| -   * as well.
 | 
| -   *
 | 
| -   * Completes with a
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * - [File] for Metadata downloads (see [downloadOptions]).
 | 
| +   * [id] - Project ID.
 | 
|     *
 | 
| -   * - [commons.Media] for Media downloads (see [downloadOptions]).
 | 
| +   * Completes with a [Project].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8362,7 +8703,7 @@ class ReportsFilesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future get(core.String profileId, core.String reportId, core.String fileId, {commons.DownloadOptions downloadOptions: commons.DownloadOptions.Metadata}) {
 | 
| +  async.Future<Project> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8373,16 +8714,11 @@ class ReportsFilesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| -    }
 | 
| -    if (fileId == null) {
 | 
| -      throw new core.ArgumentError("Parameter fileId is required.");
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _downloadOptions = downloadOptions;
 | 
| -
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/files/' + commons.Escaper.ecapeVariable('$fileId');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8391,39 +8727,42 @@ class ReportsFilesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    if (_downloadOptions == null ||
 | 
| -        _downloadOptions == commons.DownloadOptions.Metadata) {
 | 
| -      return _response.then((data) => new File.fromJson(data));
 | 
| -    } else {
 | 
| -      return _response;
 | 
| -    }
 | 
| +    return _response.then((data) => new Project.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Lists files for a report.
 | 
| +   * Retrieves a list of projects, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The DFA profile ID.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [reportId] - The ID of the parent report.
 | 
| +   * [advertiserIds] - Select only projects with these advertiser IDs.
 | 
| +   *
 | 
| +   * [ids] - Select only projects with these IDs.
 | 
|     *
 | 
|     * [maxResults] - Maximum number of results to return.
 | 
| -   * Value must be between "0" and "10".
 | 
|     *
 | 
| -   * [pageToken] - The value of the nextToken from the previous result page.
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
|     *
 | 
| -   * [sortField] - The field by which to sort the list.
 | 
| +   * [searchString] - Allows searching for projects by name or ID. Wildcards (*)
 | 
| +   * are allowed. For example, "project*2015" will return projects with names
 | 
| +   * like "project June 2015", "project April 2015", or simply "project 2015".
 | 
| +   * Most of the searches also add wildcards implicitly at the start and the end
 | 
| +   * of the search string. For example, a search string of "project" will match
 | 
| +   * projects with name "my project", "project 2015", or simply "project".
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
|     * Possible string values are:
 | 
| -   * - "ID" : Sort by file ID.
 | 
| -   * - "LAST_MODIFIED_TIME" : Sort by 'lastmodifiedAt' field.
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
|     *
 | 
| -   * [sortOrder] - Order of sorted results, default is 'DESCENDING'.
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
|     * Possible string values are:
 | 
| -   * - "ASCENDING" : Ascending order.
 | 
| -   * - "DESCENDING" : Descending order.
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
|     *
 | 
| -   * Completes with a [FileList].
 | 
| +   * Completes with a [ProjectsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8431,7 +8770,7 @@ class ReportsFilesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<FileList> list(core.String profileId, core.String reportId, {core.int maxResults, core.String pageToken, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<ProjectsListResponse> list(core.String profileId, {core.List<core.String> advertiserIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8442,8 +8781,11 @@ class ReportsFilesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (reportId == null) {
 | 
| -      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    if (advertiserIds != null) {
 | 
| +      _queryParams["advertiserIds"] = advertiserIds;
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
|      }
 | 
|      if (maxResults != null) {
 | 
|        _queryParams["maxResults"] = ["${maxResults}"];
 | 
| @@ -8451,6 +8793,9 @@ class ReportsFilesResourceApi {
 | 
|      if (pageToken != null) {
 | 
|        _queryParams["pageToken"] = [pageToken];
 | 
|      }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
|      if (sortField != null) {
 | 
|        _queryParams["sortField"] = [sortField];
 | 
|      }
 | 
| @@ -8458,7 +8803,7 @@ class ReportsFilesResourceApi {
 | 
|        _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/files';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/projects';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8467,28 +8812,26 @@ class ReportsFilesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new FileList.fromJson(data));
 | 
| +    return _response.then((data) => new ProjectsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class SitesResourceApi {
 | 
| +class RegionsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  SitesResourceApi(commons.ApiRequester client) : 
 | 
| +  RegionsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Gets one site by ID.
 | 
| +   * Retrieves a list of regions.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Site ID.
 | 
| -   *
 | 
| -   * Completes with a [Site].
 | 
| +   * Completes with a [RegionsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8496,7 +8839,7 @@ class SitesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Site> get(core.String profileId, core.String id) {
 | 
| +  async.Future<RegionsListResponse> list(core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8507,11 +8850,8 @@ class SitesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/regions';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8520,19 +8860,28 @@ class SitesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Site.fromJson(data));
 | 
| +    return _response.then((data) => new RegionsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class RemarketingListSharesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  RemarketingListSharesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Inserts a new site.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Gets one remarketing list share by remarketing list ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Site].
 | 
| +   * [remarketingListId] - Remarketing list ID.
 | 
| +   *
 | 
| +   * Completes with a [RemarketingListShare].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8540,7 +8889,7 @@ class SitesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Site> insert(Site request, core.String profileId) {
 | 
| +  async.Future<RemarketingListShare> get(core.String profileId, core.String remarketingListId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8548,78 +8897,86 @@ class SitesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (remarketingListId == null) {
 | 
| +      throw new core.ArgumentError("Parameter remarketingListId is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingListShares/' + commons.Escaper.ecapeVariable('$remarketingListId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Site.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingListShare.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of sites, possibly filtered.
 | 
| +   * Updates an existing remarketing list share. This method supports patch
 | 
| +   * semantics.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [acceptsInStreamVideoPlacements] - This search filter is no longer
 | 
| -   * supported and will have no effect on the results returned.
 | 
| -   *
 | 
| -   * [acceptsInterstitialPlacements] - This search filter is no longer supported
 | 
| -   * and will have no effect on the results returned.
 | 
| -   *
 | 
| -   * [acceptsPublisherPaidPlacements] - Select only sites that accept publisher
 | 
| -   * paid placements.
 | 
| -   *
 | 
| -   * [adWordsSite] - Select only AdWords sites.
 | 
| -   *
 | 
| -   * [approved] - Select only approved sites.
 | 
| -   *
 | 
| -   * [campaignIds] - Select only sites with these campaign IDs.
 | 
| -   *
 | 
| -   * [directorySiteIds] - Select only sites with these directory site IDs.
 | 
| -   *
 | 
| -   * [ids] - Select only sites with these IDs.
 | 
| -   *
 | 
| -   * [maxResults] - Maximum number of results to return.
 | 
| +   * [remarketingListId] - Remarketing list ID.
 | 
|     *
 | 
| -   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   * Completes with a [RemarketingListShare].
 | 
|     *
 | 
| -   * [searchString] - Allows searching for objects by name, ID or keyName.
 | 
| -   * Wildcards (*) are allowed. For example, "site*2015" will return objects
 | 
| -   * with names like "site June 2015", "site April 2015", or simply "site 2015".
 | 
| -   * Most of the searches also add wildcards implicitly at the start and the end
 | 
| -   * of the search string. For example, a search string of "site" will match
 | 
| -   * objects with name "my site", "site 2015", or simply "site".
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
|     *
 | 
| -   * [sortField] - Field by which to sort the list.
 | 
| -   * Possible string values are:
 | 
| -   * - "ID"
 | 
| -   * - "NAME"
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<RemarketingListShare> patch(RemarketingListShare request, core.String profileId, core.String remarketingListId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (remarketingListId == null) {
 | 
| +      throw new core.ArgumentError("Parameter remarketingListId is required.");
 | 
| +    }
 | 
| +    _queryParams["remarketingListId"] = [remarketingListId];
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingListShares';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "PATCH",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new RemarketingListShare.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Updates an existing remarketing list share.
 | 
|     *
 | 
| -   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| -   * Possible string values are:
 | 
| -   * - "ASCENDING"
 | 
| -   * - "DESCENDING"
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
| -   * [subaccountId] - Select only sites with this subaccount ID.
 | 
| +   * Request parameters:
 | 
|     *
 | 
| -   * [unmappedSite] - Select only sites that have not been mapped to a directory
 | 
| -   * site.
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [SitesListResponse].
 | 
| +   * Completes with a [RemarketingListShare].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8627,7 +8984,7 @@ class SitesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<SitesListResponse> list(core.String profileId, {core.bool acceptsInStreamVideoPlacements, core.bool acceptsInterstitialPlacements, core.bool acceptsPublisherPaidPlacements, core.bool adWordsSite, core.bool approved, core.List<core.String> campaignIds, core.List<core.String> directorySiteIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder, core.String subaccountId, core.bool unmappedSite}) {
 | 
| +  async.Future<RemarketingListShare> update(RemarketingListShare request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8635,79 +8992,44 @@ class SitesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (acceptsInStreamVideoPlacements != null) {
 | 
| -      _queryParams["acceptsInStreamVideoPlacements"] = ["${acceptsInStreamVideoPlacements}"];
 | 
| -    }
 | 
| -    if (acceptsInterstitialPlacements != null) {
 | 
| -      _queryParams["acceptsInterstitialPlacements"] = ["${acceptsInterstitialPlacements}"];
 | 
| -    }
 | 
| -    if (acceptsPublisherPaidPlacements != null) {
 | 
| -      _queryParams["acceptsPublisherPaidPlacements"] = ["${acceptsPublisherPaidPlacements}"];
 | 
| -    }
 | 
| -    if (adWordsSite != null) {
 | 
| -      _queryParams["adWordsSite"] = ["${adWordsSite}"];
 | 
| -    }
 | 
| -    if (approved != null) {
 | 
| -      _queryParams["approved"] = ["${approved}"];
 | 
| -    }
 | 
| -    if (campaignIds != null) {
 | 
| -      _queryParams["campaignIds"] = campaignIds;
 | 
| -    }
 | 
| -    if (directorySiteIds != null) {
 | 
| -      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| -    }
 | 
| -    if (ids != null) {
 | 
| -      _queryParams["ids"] = ids;
 | 
| -    }
 | 
| -    if (maxResults != null) {
 | 
| -      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| -    }
 | 
| -    if (pageToken != null) {
 | 
| -      _queryParams["pageToken"] = [pageToken];
 | 
| -    }
 | 
| -    if (searchString != null) {
 | 
| -      _queryParams["searchString"] = [searchString];
 | 
| -    }
 | 
| -    if (sortField != null) {
 | 
| -      _queryParams["sortField"] = [sortField];
 | 
| -    }
 | 
| -    if (sortOrder != null) {
 | 
| -      _queryParams["sortOrder"] = [sortOrder];
 | 
| -    }
 | 
| -    if (subaccountId != null) {
 | 
| -      _queryParams["subaccountId"] = [subaccountId];
 | 
| -    }
 | 
| -    if (unmappedSite != null) {
 | 
| -      _queryParams["unmappedSite"] = ["${unmappedSite}"];
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingListShares';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "PUT",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new SitesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingListShare.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class RemarketingListsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  RemarketingListsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Updates an existing site. This method supports patch semantics.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Gets one remarketing list by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Site ID.
 | 
| +   * [id] - Remarketing list ID.
 | 
|     *
 | 
| -   * Completes with a [Site].
 | 
| +   * Completes with a [RemarketingList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8715,7 +9037,7 @@ class SitesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Site> patch(Site request, core.String profileId, core.String id) {
 | 
| +  async.Future<RemarketingList> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8723,31 +9045,27 @@ class SitesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|      if (id == null) {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
| -    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingLists/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PATCH",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Site.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingList.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing site.
 | 
| +   * Inserts a new remarketing list.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -8755,7 +9073,7 @@ class SitesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Site].
 | 
| +   * Completes with a [RemarketingList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8763,7 +9081,7 @@ class SitesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Site> update(Site request, core.String profileId) {
 | 
| +  async.Future<RemarketingList> insert(RemarketingList request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8778,37 +9096,55 @@ class SitesResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingLists';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PUT",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Site.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingList.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class SizesResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  SizesResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Gets one size by ID.
 | 
| +   * Retrieves a list of remarketing lists, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - Size ID.
 | 
| +   * [advertiserId] - Select only remarketing lists owned by this advertiser.
 | 
|     *
 | 
| -   * Completes with a [Size].
 | 
| +   * [active] - Select only active or only inactive remarketing lists.
 | 
| +   *
 | 
| +   * [floodlightActivityId] - Select only remarketing lists that have this
 | 
| +   * floodlight activity ID.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [name] - Allows searching for objects by name or ID. Wildcards (*) are
 | 
| +   * allowed. For example, "remarketing list*2015" will return objects with
 | 
| +   * names like "remarketing list June 2015", "remarketing list April 2015", or
 | 
| +   * simply "remarketing list 2015". Most of the searches also add wildcards
 | 
| +   * implicitly at the start and the end of the search string. For example, a
 | 
| +   * search string of "remarketing list" will match objects with name "my
 | 
| +   * remarketing list", "remarketing list 2015", or simply "remarketing list".
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [RemarketingListsListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8816,7 +9152,7 @@ class SizesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Size> get(core.String profileId, core.String id) {
 | 
| +  async.Future<RemarketingListsListResponse> list(core.String profileId, core.String advertiserId, {core.bool active, core.String floodlightActivityId, core.int maxResults, core.String name, core.String pageToken, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8827,11 +9163,33 @@ class SizesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (advertiserId == null) {
 | 
| +      throw new core.ArgumentError("Parameter advertiserId is required.");
 | 
| +    }
 | 
| +    _queryParams["advertiserId"] = [advertiserId];
 | 
| +    if (active != null) {
 | 
| +      _queryParams["active"] = ["${active}"];
 | 
| +    }
 | 
| +    if (floodlightActivityId != null) {
 | 
| +      _queryParams["floodlightActivityId"] = [floodlightActivityId];
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _queryParams["name"] = [name];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingLists';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8840,11 +9198,11 @@ class SizesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Size.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingListsListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new size.
 | 
| +   * Updates an existing remarketing list. This method supports patch semantics.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -8852,7 +9210,9 @@ class SizesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [Size].
 | 
| +   * [id] - Remarketing list ID.
 | 
| +   *
 | 
| +   * Completes with a [RemarketingList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8860,7 +9220,7 @@ class SizesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Size> insert(Size request, core.String profileId) {
 | 
| +  async.Future<RemarketingList> patch(RemarketingList request, core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8874,35 +9234,33 @@ class SizesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingLists';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "PATCH",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Size.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingList.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Retrieves a list of sizes, possibly filtered.
 | 
| +   * Updates an existing remarketing list.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [height] - Select only sizes with this height.
 | 
| -   *
 | 
| -   * [iabStandard] - Select only IAB standard sizes.
 | 
| -   *
 | 
| -   * [ids] - Select only sizes with these IDs.
 | 
| -   *
 | 
| -   * [width] - Select only sizes with this width.
 | 
| -   *
 | 
| -   * Completes with a [SizesListResponse].
 | 
| +   * Completes with a [RemarketingList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8910,7 +9268,7 @@ class SizesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<SizesListResponse> list(core.String profileId, {core.int height, core.bool iabStandard, core.List<core.String> ids, core.int width}) {
 | 
| +  async.Future<RemarketingList> update(RemarketingList request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8918,53 +9276,91 @@ class SizesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (height != null) {
 | 
| -      _queryParams["height"] = ["${height}"];
 | 
| -    }
 | 
| -    if (iabStandard != null) {
 | 
| -      _queryParams["iabStandard"] = ["${iabStandard}"];
 | 
| -    }
 | 
| -    if (ids != null) {
 | 
| -      _queryParams["ids"] = ids;
 | 
| -    }
 | 
| -    if (width != null) {
 | 
| -      _queryParams["width"] = ["${width}"];
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/remarketingLists';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "PUT",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new SizesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new RemarketingList.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class SubaccountsResourceApi {
 | 
| +class ReportsResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  SubaccountsResourceApi(commons.ApiRequester client) : 
 | 
| +  ReportsCompatibleFieldsResourceApi get compatibleFields => new ReportsCompatibleFieldsResourceApi(_requester);
 | 
| +  ReportsFilesResourceApi get files => new ReportsFilesResourceApi(_requester);
 | 
| +
 | 
| +  ReportsResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Gets one subaccount by ID.
 | 
| +   * Deletes a report by its ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
|     *
 | 
| -   * [id] - Subaccount ID.
 | 
| +   * [reportId] - The ID of the report.
 | 
|     *
 | 
| -   * Completes with a [Subaccount].
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future delete(core.String profileId, core.String reportId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _downloadOptions = null;
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "DELETE",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => null);
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a report by its ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
| +   *
 | 
| +   * [reportId] - The ID of the report.
 | 
| +   *
 | 
| +   * Completes with a [Report].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -8972,7 +9368,7 @@ class SubaccountsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Subaccount> get(core.String profileId, core.String id) {
 | 
| +  async.Future<Report> get(core.String profileId, core.String reportId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -8983,11 +9379,11 @@ class SubaccountsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -8996,19 +9392,19 @@ class SubaccountsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +    return _response.then((data) => new Report.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new subaccount.
 | 
| +   * Creates a report.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
|     *
 | 
| -   * Completes with a [Subaccount].
 | 
| +   * Completes with a [Report].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9016,7 +9412,7 @@ class SubaccountsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Subaccount> insert(Subaccount request, core.String profileId) {
 | 
| +  async.Future<Report> insert(Report request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9031,7 +9427,7 @@ class SubaccountsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "POST",
 | 
| @@ -9040,41 +9436,39 @@ class SubaccountsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +    return _response.then((data) => new Report.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Gets a list of subaccounts, possibly filtered.
 | 
| +   * Retrieves list of reports.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| -   *
 | 
| -   * [ids] - Select only subaccounts with these IDs.
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
|     *
 | 
|     * [maxResults] - Maximum number of results to return.
 | 
| +   * Value must be between "0" and "10".
 | 
|     *
 | 
| -   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   * [pageToken] - The value of the nextToken from the previous result page.
 | 
|     *
 | 
| -   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| -   * are allowed. For example, "subaccount*2015" will return objects with names
 | 
| -   * like "subaccount June 2015", "subaccount April 2015", or simply "subaccount
 | 
| -   * 2015". Most of the searches also add wildcards implicitly at the start and
 | 
| -   * the end of the search string. For example, a search string of "subaccount"
 | 
| -   * will match objects with name "my subaccount", "subaccount 2015", or simply
 | 
| -   * "subaccount".
 | 
| +   * [scope] - The scope that defines which results are returned, default is
 | 
| +   * 'MINE'.
 | 
| +   * Possible string values are:
 | 
| +   * - "ALL" : All reports in account.
 | 
| +   * - "MINE" : My reports.
 | 
|     *
 | 
| -   * [sortField] - Field by which to sort the list.
 | 
| +   * [sortField] - The field by which to sort the list.
 | 
|     * Possible string values are:
 | 
| -   * - "ID"
 | 
| -   * - "NAME"
 | 
| +   * - "ID" : Sort by report ID.
 | 
| +   * - "LAST_MODIFIED_TIME" : Sort by 'lastModifiedTime' field.
 | 
| +   * - "NAME" : Sort by name of reports.
 | 
|     *
 | 
| -   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * [sortOrder] - Order of sorted results, default is 'DESCENDING'.
 | 
|     * Possible string values are:
 | 
| -   * - "ASCENDING"
 | 
| -   * - "DESCENDING"
 | 
| +   * - "ASCENDING" : Ascending order.
 | 
| +   * - "DESCENDING" : Descending order.
 | 
|     *
 | 
| -   * Completes with a [SubaccountsListResponse].
 | 
| +   * Completes with a [ReportList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9082,7 +9476,7 @@ class SubaccountsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<SubaccountsListResponse> list(core.String profileId, {core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder}) {
 | 
| +  async.Future<ReportList> list(core.String profileId, {core.int maxResults, core.String pageToken, core.String scope, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9093,17 +9487,14 @@ class SubaccountsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (ids != null) {
 | 
| -      _queryParams["ids"] = ids;
 | 
| -    }
 | 
|      if (maxResults != null) {
 | 
|        _queryParams["maxResults"] = ["${maxResults}"];
 | 
|      }
 | 
|      if (pageToken != null) {
 | 
|        _queryParams["pageToken"] = [pageToken];
 | 
|      }
 | 
| -    if (searchString != null) {
 | 
| -      _queryParams["searchString"] = [searchString];
 | 
| +    if (scope != null) {
 | 
| +      _queryParams["scope"] = [scope];
 | 
|      }
 | 
|      if (sortField != null) {
 | 
|        _queryParams["sortField"] = [sortField];
 | 
| @@ -9112,7 +9503,7 @@ class SubaccountsResourceApi {
 | 
|        _queryParams["sortOrder"] = [sortOrder];
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -9121,21 +9512,21 @@ class SubaccountsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new SubaccountsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new ReportList.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing subaccount. This method supports patch semantics.
 | 
| +   * Updates a report. This method supports patch semantics.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
|     *
 | 
| -   * [id] - Subaccount ID.
 | 
| +   * [reportId] - The ID of the report.
 | 
|     *
 | 
| -   * Completes with a [Subaccount].
 | 
| +   * Completes with a [Report].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9143,7 +9534,7 @@ class SubaccountsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Subaccount> patch(Subaccount request, core.String profileId, core.String id) {
 | 
| +  async.Future<Report> patch(Report request, core.String profileId, core.String reportId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9157,12 +9548,11 @@ class SubaccountsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
|      }
 | 
| -    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "PATCH",
 | 
| @@ -9171,19 +9561,21 @@ class SubaccountsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +    return _response.then((data) => new Report.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing subaccount.
 | 
| -   *
 | 
| -   * [request] - The metadata request object.
 | 
| +   * Runs a report.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA profile ID.
 | 
|     *
 | 
| -   * Completes with a [Subaccount].
 | 
| +   * [reportId] - The ID of the report.
 | 
| +   *
 | 
| +   * [synchronous] - If set and true, tries to run the report synchronously.
 | 
| +   *
 | 
| +   * Completes with a [File].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9191,7 +9583,7 @@ class SubaccountsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<Subaccount> update(Subaccount request, core.String profileId) {
 | 
| +  async.Future<File> run(core.String profileId, core.String reportId, {core.bool synchronous}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9199,42 +9591,40 @@ class SubaccountsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| -    if (request != null) {
 | 
| -      _body = convert.JSON.encode((request).toJson());
 | 
| -    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    }
 | 
| +    if (synchronous != null) {
 | 
| +      _queryParams["synchronous"] = ["${synchronous}"];
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/run';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "PUT",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +    return _response.then((data) => new File.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class UserProfilesResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  UserProfilesResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Gets one user profile by ID.
 | 
| +   * Updates a report.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - The user profile ID.
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
|     *
 | 
| -   * Completes with a [UserProfile].
 | 
| +   * [reportId] - The ID of the report.
 | 
| +   *
 | 
| +   * Completes with a [Report].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9242,7 +9632,7 @@ class UserProfilesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserProfile> get(core.String profileId) {
 | 
| +  async.Future<Report> update(Report request, core.String profileId, core.String reportId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9250,28 +9640,49 @@ class UserProfilesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "PUT",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserProfile.fromJson(data));
 | 
| +    return _response.then((data) => new Report.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class ReportsCompatibleFieldsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  ReportsCompatibleFieldsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Retrieves list of user profiles for a user.
 | 
| +   * Returns the fields that are compatible to be selected in the respective
 | 
| +   * sections of a report criteria, given the fields already selected in the
 | 
| +   * input report and user permissions.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * Completes with a [UserProfileList].
 | 
| +   * [profileId] - The DFA user profile ID.
 | 
| +   *
 | 
| +   * Completes with a [CompatibleFields].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9279,7 +9690,7 @@ class UserProfilesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserProfileList> list() {
 | 
| +  async.Future<CompatibleFields> query(Report request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9287,38 +9698,54 @@ class UserProfilesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/compatiblefields/query';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserProfileList.fromJson(data));
 | 
| +    return _response.then((data) => new CompatibleFields.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class UserRolePermissionGroupsResourceApi {
 | 
| +class ReportsFilesResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  UserRolePermissionGroupsResourceApi(commons.ApiRequester client) : 
 | 
| +  ReportsFilesResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Gets one user role permission group by ID.
 | 
| +   * Retrieves a report file.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA profile ID.
 | 
|     *
 | 
| -   * [id] - User role permission group ID.
 | 
| +   * [reportId] - The ID of the report.
 | 
|     *
 | 
| -   * Completes with a [UserRolePermissionGroup].
 | 
| +   * [fileId] - The ID of the report file.
 | 
| +   *
 | 
| +   * [downloadOptions] - Options for downloading. A download can be either a
 | 
| +   * Metadata (default) or Media download. Partial Media downloads are possible
 | 
| +   * as well.
 | 
| +   *
 | 
| +   * Completes with a
 | 
| +   *
 | 
| +   * - [File] for Metadata downloads (see [downloadOptions]).
 | 
| +   *
 | 
| +   * - [commons.Media] for Media downloads (see [downloadOptions]).
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9326,7 +9753,7 @@ class UserRolePermissionGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRolePermissionGroup> get(core.String profileId, core.String id) {
 | 
| +  async.Future get(core.String profileId, core.String reportId, core.String fileId, {commons.DownloadOptions downloadOptions: commons.DownloadOptions.Metadata}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9337,11 +9764,16 @@ class UserRolePermissionGroupsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    }
 | 
| +    if (fileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter fileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissionGroups/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _downloadOptions = downloadOptions;
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/files/' + commons.Escaper.ecapeVariable('$fileId');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -9350,17 +9782,39 @@ class UserRolePermissionGroupsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRolePermissionGroup.fromJson(data));
 | 
| +    if (_downloadOptions == null ||
 | 
| +        _downloadOptions == commons.DownloadOptions.Metadata) {
 | 
| +      return _response.then((data) => new File.fromJson(data));
 | 
| +    } else {
 | 
| +      return _response;
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Gets a list of all supported user role permission groups.
 | 
| +   * Lists files for a report.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
| -   * [profileId] - User profile ID associated with this request.
 | 
| +   * [profileId] - The DFA profile ID.
 | 
|     *
 | 
| -   * Completes with a [UserRolePermissionGroupsListResponse].
 | 
| +   * [reportId] - The ID of the parent report.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   * Value must be between "0" and "10".
 | 
| +   *
 | 
| +   * [pageToken] - The value of the nextToken from the previous result page.
 | 
| +   *
 | 
| +   * [sortField] - The field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID" : Sort by file ID.
 | 
| +   * - "LAST_MODIFIED_TIME" : Sort by 'lastmodifiedAt' field.
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is 'DESCENDING'.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING" : Ascending order.
 | 
| +   * - "DESCENDING" : Descending order.
 | 
| +   *
 | 
| +   * Completes with a [FileList].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9368,7 +9822,7 @@ class UserRolePermissionGroupsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRolePermissionGroupsListResponse> list(core.String profileId) {
 | 
| +  async.Future<FileList> list(core.String profileId, core.String reportId, {core.int maxResults, core.String pageToken, core.String sortField, core.String sortOrder}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9379,8 +9833,23 @@ class UserRolePermissionGroupsResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| +    if (reportId == null) {
 | 
| +      throw new core.ArgumentError("Parameter reportId is required.");
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissionGroups';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/reports/' + commons.Escaper.ecapeVariable('$reportId') + '/files';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -9389,28 +9858,28 @@ class UserRolePermissionGroupsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRolePermissionGroupsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new FileList.fromJson(data));
 | 
|    }
 | 
|  
 | 
|  }
 | 
|  
 | 
|  
 | 
| -class UserRolePermissionsResourceApi {
 | 
| +class SitesResourceApi {
 | 
|    final commons.ApiRequester _requester;
 | 
|  
 | 
| -  UserRolePermissionsResourceApi(commons.ApiRequester client) : 
 | 
| +  SitesResourceApi(commons.ApiRequester client) : 
 | 
|        _requester = client;
 | 
|  
 | 
|    /**
 | 
| -   * Gets one user role permission by ID.
 | 
| +   * Gets one site by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - User role permission ID.
 | 
| +   * [id] - Site ID.
 | 
|     *
 | 
| -   * Completes with a [UserRolePermission].
 | 
| +   * Completes with a [Site].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9418,7 +9887,7 @@ class UserRolePermissionsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRolePermission> get(core.String profileId, core.String id) {
 | 
| +  async.Future<Site> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9433,7 +9902,7 @@ class UserRolePermissionsResourceApi {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissions/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -9442,19 +9911,19 @@ class UserRolePermissionsResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRolePermission.fromJson(data));
 | 
| +    return _response.then((data) => new Site.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Gets a list of user role permissions, possibly filtered.
 | 
| +   * Inserts a new site.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [ids] - Select only user role permissions with these IDs.
 | 
| -   *
 | 
| -   * Completes with a [UserRolePermissionsListResponse].
 | 
| +   * Completes with a [Site].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9462,7 +9931,7 @@ class UserRolePermissionsResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRolePermissionsListResponse> list(core.String profileId, {core.List<core.String> ids}) {
 | 
| +  async.Future<Site> insert(Site request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9470,42 +9939,78 @@ class UserRolePermissionsResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (ids != null) {
 | 
| -      _queryParams["ids"] = ids;
 | 
| -    }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissions';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "POST",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRolePermissionsListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new Site.fromJson(data));
 | 
|    }
 | 
|  
 | 
| -}
 | 
| -
 | 
| -
 | 
| -class UserRolesResourceApi {
 | 
| -  final commons.ApiRequester _requester;
 | 
| -
 | 
| -  UserRolesResourceApi(commons.ApiRequester client) : 
 | 
| -      _requester = client;
 | 
| -
 | 
|    /**
 | 
| -   * Deletes an existing user role.
 | 
| +   * Retrieves a list of sites, possibly filtered.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - User role ID.
 | 
| +   * [acceptsInStreamVideoPlacements] - This search filter is no longer
 | 
| +   * supported and will have no effect on the results returned.
 | 
| +   *
 | 
| +   * [acceptsInterstitialPlacements] - This search filter is no longer supported
 | 
| +   * and will have no effect on the results returned.
 | 
| +   *
 | 
| +   * [acceptsPublisherPaidPlacements] - Select only sites that accept publisher
 | 
| +   * paid placements.
 | 
| +   *
 | 
| +   * [adWordsSite] - Select only AdWords sites.
 | 
| +   *
 | 
| +   * [approved] - Select only approved sites.
 | 
| +   *
 | 
| +   * [campaignIds] - Select only sites with these campaign IDs.
 | 
| +   *
 | 
| +   * [directorySiteIds] - Select only sites with these directory site IDs.
 | 
| +   *
 | 
| +   * [ids] - Select only sites with these IDs.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for objects by name, ID or keyName.
 | 
| +   * Wildcards (*) are allowed. For example, "site*2015" will return objects
 | 
| +   * with names like "site June 2015", "site April 2015", or simply "site 2015".
 | 
| +   * Most of the searches also add wildcards implicitly at the start and the end
 | 
| +   * of the search string. For example, a search string of "site" will match
 | 
| +   * objects with name "my site", "site 2015", or simply "site".
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * [subaccountId] - Select only sites with this subaccount ID.
 | 
| +   *
 | 
| +   * [unmappedSite] - Select only sites that have not been mapped to a directory
 | 
| +   * site.
 | 
| +   *
 | 
| +   * Completes with a [SitesListResponse].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9513,7 +10018,7 @@ class UserRolesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future delete(core.String profileId, core.String id) {
 | 
| +  async.Future<SitesListResponse> list(core.String profileId, {core.bool acceptsInStreamVideoPlacements, core.bool acceptsInterstitialPlacements, core.bool acceptsPublisherPaidPlacements, core.bool adWordsSite, core.bool approved, core.List<core.String> campaignIds, core.List<core.String> directorySiteIds, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder, core.String subaccountId, core.bool unmappedSite}) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9524,34 +10029,76 @@ class UserRolesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    if (acceptsInStreamVideoPlacements != null) {
 | 
| +      _queryParams["acceptsInStreamVideoPlacements"] = ["${acceptsInStreamVideoPlacements}"];
 | 
| +    }
 | 
| +    if (acceptsInterstitialPlacements != null) {
 | 
| +      _queryParams["acceptsInterstitialPlacements"] = ["${acceptsInterstitialPlacements}"];
 | 
| +    }
 | 
| +    if (acceptsPublisherPaidPlacements != null) {
 | 
| +      _queryParams["acceptsPublisherPaidPlacements"] = ["${acceptsPublisherPaidPlacements}"];
 | 
| +    }
 | 
| +    if (adWordsSite != null) {
 | 
| +      _queryParams["adWordsSite"] = ["${adWordsSite}"];
 | 
| +    }
 | 
| +    if (approved != null) {
 | 
| +      _queryParams["approved"] = ["${approved}"];
 | 
| +    }
 | 
| +    if (campaignIds != null) {
 | 
| +      _queryParams["campaignIds"] = campaignIds;
 | 
| +    }
 | 
| +    if (directorySiteIds != null) {
 | 
| +      _queryParams["directorySiteIds"] = directorySiteIds;
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _queryParams["subaccountId"] = [subaccountId];
 | 
| +    }
 | 
| +    if (unmappedSite != null) {
 | 
| +      _queryParams["unmappedSite"] = ["${unmappedSite}"];
 | 
|      }
 | 
|  
 | 
| -    _downloadOptions = null;
 | 
| -
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "DELETE",
 | 
| +                                       "GET",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => null);
 | 
| +    return _response.then((data) => new SitesListResponse.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Gets one user role by ID.
 | 
| +   * Updates an existing site. This method supports patch semantics.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - User role ID.
 | 
| +   * [id] - Site ID.
 | 
|     *
 | 
| -   * Completes with a [UserRole].
 | 
| +   * Completes with a [Site].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9559,7 +10106,7 @@ class UserRolesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRole> get(core.String profileId, core.String id) {
 | 
| +  async.Future<Site> patch(Site request, core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9567,27 +10114,31 @@ class UserRolesResourceApi {
 | 
|      var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
|      var _body = null;
 | 
|  
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|      if (id == null) {
 | 
|        throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
| +    _queryParams["id"] = [id];
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles/' + commons.Escaper.ecapeVariable('$id');
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "GET",
 | 
| +                                       "PATCH",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRole.fromJson(data));
 | 
| +    return _response.then((data) => new Site.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Inserts a new user role.
 | 
| +   * Updates an existing site.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -9595,7 +10146,7 @@ class UserRolesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * Completes with a [UserRole].
 | 
| +   * Completes with a [Site].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9603,7 +10154,7 @@ class UserRolesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRole> insert(UserRole request, core.String profileId) {
 | 
| +  async.Future<Site> update(Site request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9618,55 +10169,37 @@ class UserRolesResourceApi {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sites';
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
| -                                       "POST",
 | 
| +                                       "PUT",
 | 
|                                         body: _body,
 | 
|                                         queryParams: _queryParams,
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRole.fromJson(data));
 | 
| +    return _response.then((data) => new Site.fromJson(data));
 | 
|    }
 | 
|  
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class SizesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  SizesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
|    /**
 | 
| -   * Retrieves a list of user roles, possibly filtered.
 | 
| +   * Gets one size by ID.
 | 
|     *
 | 
|     * Request parameters:
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [accountUserRoleOnly] - Select only account level user roles not associated
 | 
| -   * with any specific subaccount.
 | 
| -   *
 | 
| -   * [ids] - Select only user roles with the specified IDs.
 | 
| -   *
 | 
| -   * [maxResults] - Maximum number of results to return.
 | 
| -   *
 | 
| -   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| -   *
 | 
| -   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| -   * are allowed. For example, "userrole*2015" will return objects with names
 | 
| -   * like "userrole June 2015", "userrole April 2015", or simply "userrole
 | 
| -   * 2015". Most of the searches also add wildcards implicitly at the start and
 | 
| -   * the end of the search string. For example, a search string of "userrole"
 | 
| -   * will match objects with name "my userrole", "userrole 2015", or simply
 | 
| -   * "userrole".
 | 
| -   *
 | 
| -   * [sortField] - Field by which to sort the list.
 | 
| -   * Possible string values are:
 | 
| -   * - "ID"
 | 
| -   * - "NAME"
 | 
| -   *
 | 
| -   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| -   * Possible string values are:
 | 
| -   * - "ASCENDING"
 | 
| -   * - "DESCENDING"
 | 
| -   *
 | 
| -   * [subaccountId] - Select only user roles that belong to this subaccount.
 | 
| +   * [id] - Size ID.
 | 
|     *
 | 
| -   * Completes with a [UserRolesListResponse].
 | 
| +   * Completes with a [Size].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9674,7 +10207,7 @@ class UserRolesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRolesListResponse> list(core.String profileId, {core.bool accountUserRoleOnly, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder, core.String subaccountId}) {
 | 
| +  async.Future<Size> get(core.String profileId, core.String id) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9685,32 +10218,11 @@ class UserRolesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (accountUserRoleOnly != null) {
 | 
| -      _queryParams["accountUserRoleOnly"] = ["${accountUserRoleOnly}"];
 | 
| -    }
 | 
| -    if (ids != null) {
 | 
| -      _queryParams["ids"] = ids;
 | 
| -    }
 | 
| -    if (maxResults != null) {
 | 
| -      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| -    }
 | 
| -    if (pageToken != null) {
 | 
| -      _queryParams["pageToken"] = [pageToken];
 | 
| -    }
 | 
| -    if (searchString != null) {
 | 
| -      _queryParams["searchString"] = [searchString];
 | 
| -    }
 | 
| -    if (sortField != null) {
 | 
| -      _queryParams["sortField"] = [sortField];
 | 
| -    }
 | 
| -    if (sortOrder != null) {
 | 
| -      _queryParams["sortOrder"] = [sortOrder];
 | 
| -    }
 | 
| -    if (subaccountId != null) {
 | 
| -      _queryParams["subaccountId"] = [subaccountId];
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
|      }
 | 
|  
 | 
| -    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles';
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes/' + commons.Escaper.ecapeVariable('$id');
 | 
|  
 | 
|      var _response = _requester.request(_url,
 | 
|                                         "GET",
 | 
| @@ -9719,11 +10231,11 @@ class UserRolesResourceApi {
 | 
|                                         uploadOptions: _uploadOptions,
 | 
|                                         uploadMedia: _uploadMedia,
 | 
|                                         downloadOptions: _downloadOptions);
 | 
| -    return _response.then((data) => new UserRolesListResponse.fromJson(data));
 | 
| +    return _response.then((data) => new Size.fromJson(data));
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Updates an existing user role. This method supports patch semantics.
 | 
| +   * Inserts a new size.
 | 
|     *
 | 
|     * [request] - The metadata request object.
 | 
|     *
 | 
| @@ -9731,9 +10243,7 @@ class UserRolesResourceApi {
 | 
|     *
 | 
|     * [profileId] - User profile ID associated with this request.
 | 
|     *
 | 
| -   * [id] - User role ID.
 | 
| -   *
 | 
| -   * Completes with a [UserRole].
 | 
| +   * Completes with a [Size].
 | 
|     *
 | 
|     * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
|     * error.
 | 
| @@ -9741,7 +10251,7 @@ class UserRolesResourceApi {
 | 
|     * If the used [http.Client] completes with an error when making a REST call,
 | 
|     * this method will complete with the same error.
 | 
|     */
 | 
| -  async.Future<UserRole> patch(UserRole request, core.String profileId, core.String id) {
 | 
| +  async.Future<Size> insert(Size request, core.String profileId) {
 | 
|      var _url = null;
 | 
|      var _queryParams = new core.Map();
 | 
|      var _uploadMedia = null;
 | 
| @@ -9755,9 +10265,1032 @@ class UserRolesResourceApi {
 | 
|      if (profileId == null) {
 | 
|        throw new core.ArgumentError("Parameter profileId is required.");
 | 
|      }
 | 
| -    if (id == null) {
 | 
| -      throw new core.ArgumentError("Parameter id is required.");
 | 
| -    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "POST",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new Size.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of sizes, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [height] - Select only sizes with this height.
 | 
| +   *
 | 
| +   * [iabStandard] - Select only IAB standard sizes.
 | 
| +   *
 | 
| +   * [ids] - Select only sizes with these IDs.
 | 
| +   *
 | 
| +   * [width] - Select only sizes with this width.
 | 
| +   *
 | 
| +   * Completes with a [SizesListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<SizesListResponse> list(core.String profileId, {core.int height, core.bool iabStandard, core.List<core.String> ids, core.int width}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (height != null) {
 | 
| +      _queryParams["height"] = ["${height}"];
 | 
| +    }
 | 
| +    if (iabStandard != null) {
 | 
| +      _queryParams["iabStandard"] = ["${iabStandard}"];
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (width != null) {
 | 
| +      _queryParams["width"] = ["${width}"];
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/sizes';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new SizesListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class SubaccountsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  SubaccountsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one subaccount by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - Subaccount ID.
 | 
| +   *
 | 
| +   * Completes with a [Subaccount].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<Subaccount> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Inserts a new subaccount.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [Subaccount].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<Subaccount> insert(Subaccount request, core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "POST",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Gets a list of subaccounts, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [ids] - Select only subaccounts with these IDs.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| +   * are allowed. For example, "subaccount*2015" will return objects with names
 | 
| +   * like "subaccount June 2015", "subaccount April 2015", or simply "subaccount
 | 
| +   * 2015". Most of the searches also add wildcards implicitly at the start and
 | 
| +   * the end of the search string. For example, a search string of "subaccount"
 | 
| +   * will match objects with name "my subaccount", "subaccount 2015", or simply
 | 
| +   * "subaccount".
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [SubaccountsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<SubaccountsListResponse> list(core.String profileId, {core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new SubaccountsListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Updates an existing subaccount. This method supports patch semantics.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - Subaccount ID.
 | 
| +   *
 | 
| +   * Completes with a [Subaccount].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<Subaccount> patch(Subaccount request, core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +    _queryParams["id"] = [id];
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "PATCH",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Updates an existing subaccount.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [Subaccount].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<Subaccount> update(Subaccount request, core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/subaccounts';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "PUT",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new Subaccount.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class TargetableRemarketingListsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  TargetableRemarketingListsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one remarketing list by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - Remarketing list ID.
 | 
| +   *
 | 
| +   * Completes with a [TargetableRemarketingList].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<TargetableRemarketingList> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/targetableRemarketingLists/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new TargetableRemarketingList.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of targetable remarketing lists, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [advertiserId] - Select only targetable remarketing lists targetable by
 | 
| +   * these advertisers.
 | 
| +   *
 | 
| +   * [active] - Select only active or only inactive targetable remarketing
 | 
| +   * lists.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [name] - Allows searching for objects by name or ID. Wildcards (*) are
 | 
| +   * allowed. For example, "remarketing list*2015" will return objects with
 | 
| +   * names like "remarketing list June 2015", "remarketing list April 2015", or
 | 
| +   * simply "remarketing list 2015". Most of the searches also add wildcards
 | 
| +   * implicitly at the start and the end of the search string. For example, a
 | 
| +   * search string of "remarketing list" will match objects with name "my
 | 
| +   * remarketing list", "remarketing list 2015", or simply "remarketing list".
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * Completes with a [TargetableRemarketingListsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<TargetableRemarketingListsListResponse> list(core.String profileId, core.String advertiserId, {core.bool active, core.int maxResults, core.String name, core.String pageToken, core.String sortField, core.String sortOrder}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (advertiserId == null) {
 | 
| +      throw new core.ArgumentError("Parameter advertiserId is required.");
 | 
| +    }
 | 
| +    _queryParams["advertiserId"] = [advertiserId];
 | 
| +    if (active != null) {
 | 
| +      _queryParams["active"] = ["${active}"];
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _queryParams["name"] = [name];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/targetableRemarketingLists';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new TargetableRemarketingListsListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class UserProfilesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  UserProfilesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one user profile by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - The user profile ID.
 | 
| +   *
 | 
| +   * Completes with a [UserProfile].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserProfile> get(core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserProfile.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves list of user profiles for a user.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * Completes with a [UserProfileList].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserProfileList> list() {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +
 | 
| +    _url = 'userprofiles';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserProfileList.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class UserRolePermissionGroupsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  UserRolePermissionGroupsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one user role permission group by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - User role permission group ID.
 | 
| +   *
 | 
| +   * Completes with a [UserRolePermissionGroup].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRolePermissionGroup> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissionGroups/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRolePermissionGroup.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Gets a list of all supported user role permission groups.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [UserRolePermissionGroupsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRolePermissionGroupsListResponse> list(core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissionGroups';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRolePermissionGroupsListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class UserRolePermissionsResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  UserRolePermissionsResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one user role permission by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - User role permission ID.
 | 
| +   *
 | 
| +   * Completes with a [UserRolePermission].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRolePermission> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissions/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRolePermission.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Gets a list of user role permissions, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [ids] - Select only user role permissions with these IDs.
 | 
| +   *
 | 
| +   * Completes with a [UserRolePermissionsListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRolePermissionsListResponse> list(core.String profileId, {core.List<core.String> ids}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRolePermissions';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRolePermissionsListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +}
 | 
| +
 | 
| +
 | 
| +class UserRolesResourceApi {
 | 
| +  final commons.ApiRequester _requester;
 | 
| +
 | 
| +  UserRolesResourceApi(commons.ApiRequester client) : 
 | 
| +      _requester = client;
 | 
| +
 | 
| +  /**
 | 
| +   * Deletes an existing user role.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - User role ID.
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future delete(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _downloadOptions = null;
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "DELETE",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => null);
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Gets one user role by ID.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - User role ID.
 | 
| +   *
 | 
| +   * Completes with a [UserRole].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRole> get(core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles/' + commons.Escaper.ecapeVariable('$id');
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRole.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Inserts a new user role.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * Completes with a [UserRole].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRole> insert(UserRole request, core.String profileId) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "POST",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRole.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Retrieves a list of user roles, possibly filtered.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [accountUserRoleOnly] - Select only account level user roles not associated
 | 
| +   * with any specific subaccount.
 | 
| +   *
 | 
| +   * [ids] - Select only user roles with the specified IDs.
 | 
| +   *
 | 
| +   * [maxResults] - Maximum number of results to return.
 | 
| +   *
 | 
| +   * [pageToken] - Value of the nextPageToken from the previous result page.
 | 
| +   *
 | 
| +   * [searchString] - Allows searching for objects by name or ID. Wildcards (*)
 | 
| +   * are allowed. For example, "userrole*2015" will return objects with names
 | 
| +   * like "userrole June 2015", "userrole April 2015", or simply "userrole
 | 
| +   * 2015". Most of the searches also add wildcards implicitly at the start and
 | 
| +   * the end of the search string. For example, a search string of "userrole"
 | 
| +   * will match objects with name "my userrole", "userrole 2015", or simply
 | 
| +   * "userrole".
 | 
| +   *
 | 
| +   * [sortField] - Field by which to sort the list.
 | 
| +   * Possible string values are:
 | 
| +   * - "ID"
 | 
| +   * - "NAME"
 | 
| +   *
 | 
| +   * [sortOrder] - Order of sorted results, default is ASCENDING.
 | 
| +   * Possible string values are:
 | 
| +   * - "ASCENDING"
 | 
| +   * - "DESCENDING"
 | 
| +   *
 | 
| +   * [subaccountId] - Select only user roles that belong to this subaccount.
 | 
| +   *
 | 
| +   * Completes with a [UserRolesListResponse].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRolesListResponse> list(core.String profileId, {core.bool accountUserRoleOnly, core.List<core.String> ids, core.int maxResults, core.String pageToken, core.String searchString, core.String sortField, core.String sortOrder, core.String subaccountId}) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (accountUserRoleOnly != null) {
 | 
| +      _queryParams["accountUserRoleOnly"] = ["${accountUserRoleOnly}"];
 | 
| +    }
 | 
| +    if (ids != null) {
 | 
| +      _queryParams["ids"] = ids;
 | 
| +    }
 | 
| +    if (maxResults != null) {
 | 
| +      _queryParams["maxResults"] = ["${maxResults}"];
 | 
| +    }
 | 
| +    if (pageToken != null) {
 | 
| +      _queryParams["pageToken"] = [pageToken];
 | 
| +    }
 | 
| +    if (searchString != null) {
 | 
| +      _queryParams["searchString"] = [searchString];
 | 
| +    }
 | 
| +    if (sortField != null) {
 | 
| +      _queryParams["sortField"] = [sortField];
 | 
| +    }
 | 
| +    if (sortOrder != null) {
 | 
| +      _queryParams["sortOrder"] = [sortOrder];
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _queryParams["subaccountId"] = [subaccountId];
 | 
| +    }
 | 
| +
 | 
| +    _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles';
 | 
| +
 | 
| +    var _response = _requester.request(_url,
 | 
| +                                       "GET",
 | 
| +                                       body: _body,
 | 
| +                                       queryParams: _queryParams,
 | 
| +                                       uploadOptions: _uploadOptions,
 | 
| +                                       uploadMedia: _uploadMedia,
 | 
| +                                       downloadOptions: _downloadOptions);
 | 
| +    return _response.then((data) => new UserRolesListResponse.fromJson(data));
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Updates an existing user role. This method supports patch semantics.
 | 
| +   *
 | 
| +   * [request] - The metadata request object.
 | 
| +   *
 | 
| +   * Request parameters:
 | 
| +   *
 | 
| +   * [profileId] - User profile ID associated with this request.
 | 
| +   *
 | 
| +   * [id] - User role ID.
 | 
| +   *
 | 
| +   * Completes with a [UserRole].
 | 
| +   *
 | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an
 | 
| +   * error.
 | 
| +   *
 | 
| +   * If the used [http.Client] completes with an error when making a REST call,
 | 
| +   * this method will complete with the same error.
 | 
| +   */
 | 
| +  async.Future<UserRole> patch(UserRole request, core.String profileId, core.String id) {
 | 
| +    var _url = null;
 | 
| +    var _queryParams = new core.Map();
 | 
| +    var _uploadMedia = null;
 | 
| +    var _uploadOptions = null;
 | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata;
 | 
| +    var _body = null;
 | 
| +
 | 
| +    if (request != null) {
 | 
| +      _body = convert.JSON.encode((request).toJson());
 | 
| +    }
 | 
| +    if (profileId == null) {
 | 
| +      throw new core.ArgumentError("Parameter profileId is required.");
 | 
| +    }
 | 
| +    if (id == null) {
 | 
| +      throw new core.ArgumentError("Parameter id is required.");
 | 
| +    }
 | 
|      _queryParams["id"] = [id];
 | 
|  
 | 
|      _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/userRoles';
 | 
| @@ -11061,6 +12594,104 @@ class Ad {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +/** Ad Slot */
 | 
| +class AdSlot {
 | 
| +  /** Comment for this ad slot. */
 | 
| +  core.String comment;
 | 
| +  /**
 | 
| +   * Ad slot compatibility. WEB and WEB_INTERSTITIAL refer to rendering either
 | 
| +   * on desktop or on mobile devices for regular or interstitial ads
 | 
| +   * respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps.
 | 
| +   * IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with
 | 
| +   * the VAST standard.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_RENDERING_ENVIRONMENT_TYPE_APP"
 | 
| +   * - "PLANNING_RENDERING_ENVIRONMENT_TYPE_APP_INTERSTITIAL"
 | 
| +   * - "PLANNING_RENDERING_ENVIRONMENT_TYPE_IN_STREAM_VIDEO"
 | 
| +   * - "PLANNING_RENDERING_ENVIRONMENT_TYPE_WEB"
 | 
| +   * - "PLANNING_RENDERING_ENVIRONMENT_TYPE_WEB_INTERSTITIAL"
 | 
| +   */
 | 
| +  core.String compatibility;
 | 
| +  /** Height of this ad slot. */
 | 
| +  core.String height;
 | 
| +  /**
 | 
| +   * ID of the placement from an external platform that is linked to this ad
 | 
| +   * slot.
 | 
| +   */
 | 
| +  core.String linkedPlacementId;
 | 
| +  /** Name of this ad slot. */
 | 
| +  core.String name;
 | 
| +  /**
 | 
| +   * Payment source type of this ad slot.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_PAYMENT_SOURCE_TYPE_AGENCY_PAID"
 | 
| +   * - "PLANNING_PAYMENT_SOURCE_TYPE_PUBLISHER_PAID"
 | 
| +   */
 | 
| +  core.String paymentSourceType;
 | 
| +  /** Primary ad slot of a roadblock inventory item. */
 | 
| +  core.bool primary;
 | 
| +  /** Width of this ad slot. */
 | 
| +  core.String width;
 | 
| +
 | 
| +  AdSlot();
 | 
| +
 | 
| +  AdSlot.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("comment")) {
 | 
| +      comment = _json["comment"];
 | 
| +    }
 | 
| +    if (_json.containsKey("compatibility")) {
 | 
| +      compatibility = _json["compatibility"];
 | 
| +    }
 | 
| +    if (_json.containsKey("height")) {
 | 
| +      height = _json["height"];
 | 
| +    }
 | 
| +    if (_json.containsKey("linkedPlacementId")) {
 | 
| +      linkedPlacementId = _json["linkedPlacementId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("paymentSourceType")) {
 | 
| +      paymentSourceType = _json["paymentSourceType"];
 | 
| +    }
 | 
| +    if (_json.containsKey("primary")) {
 | 
| +      primary = _json["primary"];
 | 
| +    }
 | 
| +    if (_json.containsKey("width")) {
 | 
| +      width = _json["width"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (comment != null) {
 | 
| +      _json["comment"] = comment;
 | 
| +    }
 | 
| +    if (compatibility != null) {
 | 
| +      _json["compatibility"] = compatibility;
 | 
| +    }
 | 
| +    if (height != null) {
 | 
| +      _json["height"] = height;
 | 
| +    }
 | 
| +    if (linkedPlacementId != null) {
 | 
| +      _json["linkedPlacementId"] = linkedPlacementId;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (paymentSourceType != null) {
 | 
| +      _json["paymentSourceType"] = paymentSourceType;
 | 
| +    }
 | 
| +    if (primary != null) {
 | 
| +      _json["primary"] = primary;
 | 
| +    }
 | 
| +    if (width != null) {
 | 
| +      _json["width"] = width;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  /** Ad List Response */
 | 
|  class AdsListResponse {
 | 
|    /** Ad collection. */
 | 
| @@ -11162,6 +12793,15 @@ class Advertiser {
 | 
|     */
 | 
|    core.String name;
 | 
|    /**
 | 
| +   * Original floodlight configuration before any sharing occurred. Set the
 | 
| +   * floodlightConfigurationId of this advertiser to
 | 
| +   * originalFloodlightConfigurationId to unshare the advertiser's current
 | 
| +   * floodlight configuration. You cannot unshare an advertiser's floodlight
 | 
| +   * configuration if the shared configuration has activities associated with
 | 
| +   * any campaign or placement.
 | 
| +   */
 | 
| +  core.String originalFloodlightConfigurationId;
 | 
| +  /**
 | 
|     * Status of this advertiser.
 | 
|     * Possible string values are:
 | 
|     * - "APPROVED"
 | 
| @@ -11210,6 +12850,9 @@ class Advertiser {
 | 
|      if (_json.containsKey("name")) {
 | 
|        name = _json["name"];
 | 
|      }
 | 
| +    if (_json.containsKey("originalFloodlightConfigurationId")) {
 | 
| +      originalFloodlightConfigurationId = _json["originalFloodlightConfigurationId"];
 | 
| +    }
 | 
|      if (_json.containsKey("status")) {
 | 
|        status = _json["status"];
 | 
|      }
 | 
| @@ -11253,6 +12896,9 @@ class Advertiser {
 | 
|      if (name != null) {
 | 
|        _json["name"] = name;
 | 
|      }
 | 
| +    if (originalFloodlightConfigurationId != null) {
 | 
| +      _json["originalFloodlightConfigurationId"] = originalFloodlightConfigurationId;
 | 
| +    }
 | 
|      if (status != null) {
 | 
|        _json["status"] = status;
 | 
|      }
 | 
| @@ -12688,8 +14334,6 @@ class ContentCategory {
 | 
|     * left blank.
 | 
|     */
 | 
|    core.String accountId;
 | 
| -  /** Description of this content category. */
 | 
| -  core.String description;
 | 
|    /**
 | 
|     * ID of this content category. This is a read-only, auto-generated field.
 | 
|     */
 | 
| @@ -12712,9 +14356,6 @@ class ContentCategory {
 | 
|      if (_json.containsKey("accountId")) {
 | 
|        accountId = _json["accountId"];
 | 
|      }
 | 
| -    if (_json.containsKey("description")) {
 | 
| -      description = _json["description"];
 | 
| -    }
 | 
|      if (_json.containsKey("id")) {
 | 
|        id = _json["id"];
 | 
|      }
 | 
| @@ -12731,9 +14372,6 @@ class ContentCategory {
 | 
|      if (accountId != null) {
 | 
|        _json["accountId"] = accountId;
 | 
|      }
 | 
| -    if (description != null) {
 | 
| -      _json["description"] = description;
 | 
| -    }
 | 
|      if (id != null) {
 | 
|        _json["id"] = id;
 | 
|      }
 | 
| @@ -12972,6 +14610,14 @@ class Creative {
 | 
|     */
 | 
|    core.List<core.String> compatibility;
 | 
|    /**
 | 
| +   * Whether Flash assets associated with the creative need to be automatically
 | 
| +   * converted to HTML5. This flag is enabled by default and users can choose to
 | 
| +   * disable it if they don't want the system to generate and use HTML5 asset
 | 
| +   * for this creative. Applicable to the following creative types:
 | 
| +   * ENHANCED_BANNER and FLASH_INPAGE.
 | 
| +   */
 | 
| +  core.bool convertFlashToHtml5;
 | 
| +  /**
 | 
|     * List of counter events configured for the creative. Applicable to the
 | 
|     * following creative types: all RICH_MEDIA, and all VPAID.
 | 
|     */
 | 
| @@ -13178,6 +14824,7 @@ class Creative {
 | 
|     * - "RICH_MEDIA_MULTI_FLOATING"
 | 
|     * - "RICH_MEDIA_PEEL_DOWN"
 | 
|     * - "TRACKING_TEXT"
 | 
| +   * - "VAST_REDIRECT"
 | 
|     * - "VPAID_LINEAR"
 | 
|     * - "VPAID_NON_LINEAR"
 | 
|     */
 | 
| @@ -13264,6 +14911,9 @@ class Creative {
 | 
|      if (_json.containsKey("compatibility")) {
 | 
|        compatibility = _json["compatibility"];
 | 
|      }
 | 
| +    if (_json.containsKey("convertFlashToHtml5")) {
 | 
| +      convertFlashToHtml5 = _json["convertFlashToHtml5"];
 | 
| +    }
 | 
|      if (_json.containsKey("counterCustomEvents")) {
 | 
|        counterCustomEvents = _json["counterCustomEvents"].map((value) => new CreativeCustomEvent.fromJson(value)).toList();
 | 
|      }
 | 
| @@ -13433,6 +15083,9 @@ class Creative {
 | 
|      if (compatibility != null) {
 | 
|        _json["compatibility"] = compatibility;
 | 
|      }
 | 
| +    if (convertFlashToHtml5 != null) {
 | 
| +      _json["convertFlashToHtml5"] = convertFlashToHtml5;
 | 
| +    }
 | 
|      if (counterCustomEvents != null) {
 | 
|        _json["counterCustomEvents"] = counterCustomEvents.map((value) => (value).toJson()).toList();
 | 
|      }
 | 
| @@ -16038,6 +17691,8 @@ class DirectorySite {
 | 
|  
 | 
|  /** Contains properties of a Site Directory contact. */
 | 
|  class DirectorySiteContact {
 | 
| +  /** Address of this directory site contact. */
 | 
| +  core.String address;
 | 
|    /** Email address of this directory site contact. */
 | 
|    core.String email;
 | 
|    /** First name of this directory site contact. */
 | 
| @@ -16054,6 +17709,8 @@ class DirectorySiteContact {
 | 
|    core.String kind;
 | 
|    /** Last name of this directory site contact. */
 | 
|    core.String lastName;
 | 
| +  /** Phone number of this directory site contact. */
 | 
| +  core.String phone;
 | 
|    /**
 | 
|     * Directory site contact role.
 | 
|     * Possible string values are:
 | 
| @@ -16062,6 +17719,8 @@ class DirectorySiteContact {
 | 
|     * - "VIEW"
 | 
|     */
 | 
|    core.String role;
 | 
| +  /** Title or designation of this directory site contact. */
 | 
| +  core.String title;
 | 
|    /**
 | 
|     * Directory site contact type.
 | 
|     * Possible string values are:
 | 
| @@ -16075,6 +17734,9 @@ class DirectorySiteContact {
 | 
|    DirectorySiteContact();
 | 
|  
 | 
|    DirectorySiteContact.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("address")) {
 | 
| +      address = _json["address"];
 | 
| +    }
 | 
|      if (_json.containsKey("email")) {
 | 
|        email = _json["email"];
 | 
|      }
 | 
| @@ -16090,9 +17752,15 @@ class DirectorySiteContact {
 | 
|      if (_json.containsKey("lastName")) {
 | 
|        lastName = _json["lastName"];
 | 
|      }
 | 
| +    if (_json.containsKey("phone")) {
 | 
| +      phone = _json["phone"];
 | 
| +    }
 | 
|      if (_json.containsKey("role")) {
 | 
|        role = _json["role"];
 | 
|      }
 | 
| +    if (_json.containsKey("title")) {
 | 
| +      title = _json["title"];
 | 
| +    }
 | 
|      if (_json.containsKey("type")) {
 | 
|        type = _json["type"];
 | 
|      }
 | 
| @@ -16100,6 +17768,9 @@ class DirectorySiteContact {
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| +    if (address != null) {
 | 
| +      _json["address"] = address;
 | 
| +    }
 | 
|      if (email != null) {
 | 
|        _json["email"] = email;
 | 
|      }
 | 
| @@ -16115,9 +17786,15 @@ class DirectorySiteContact {
 | 
|      if (lastName != null) {
 | 
|        _json["lastName"] = lastName;
 | 
|      }
 | 
| +    if (phone != null) {
 | 
| +      _json["phone"] = phone;
 | 
| +    }
 | 
|      if (role != null) {
 | 
|        _json["role"] = role;
 | 
|      }
 | 
| +    if (title != null) {
 | 
| +      _json["title"] = title;
 | 
| +    }
 | 
|      if (type != null) {
 | 
|        _json["type"] = type;
 | 
|      }
 | 
| @@ -16380,7 +18057,7 @@ class EventTag {
 | 
|     * determines whether this is a whitelist or blacklist filter.
 | 
|     */
 | 
|    core.List<core.String> siteIds;
 | 
| -  /** Whether this tag is SSL-compliant or not. */
 | 
| +  /** Whether this tag is SSL-compliant or not. This is a read-only field. */
 | 
|    core.bool sslCompliant;
 | 
|    /**
 | 
|     * Status of this event tag. Must be ENABLED for this event tag to fire. This
 | 
| @@ -16792,6 +18469,52 @@ class FileList {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +/** Flight */
 | 
| +class Flight {
 | 
| +  /** Inventory item flight end date. */
 | 
| +  core.DateTime endDate;
 | 
| +  /** Rate or cost of this flight. */
 | 
| +  core.String rateOrCost;
 | 
| +  /** Inventory item flight start date. */
 | 
| +  core.DateTime startDate;
 | 
| +  /** Units of this flight. */
 | 
| +  core.String units;
 | 
| +
 | 
| +  Flight();
 | 
| +
 | 
| +  Flight.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("endDate")) {
 | 
| +      endDate = core.DateTime.parse(_json["endDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("rateOrCost")) {
 | 
| +      rateOrCost = _json["rateOrCost"];
 | 
| +    }
 | 
| +    if (_json.containsKey("startDate")) {
 | 
| +      startDate = core.DateTime.parse(_json["startDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("units")) {
 | 
| +      units = _json["units"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (endDate != null) {
 | 
| +      _json["endDate"] = "${(endDate).year.toString().padLeft(4, '0')}-${(endDate).month.toString().padLeft(2, '0')}-${(endDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (rateOrCost != null) {
 | 
| +      _json["rateOrCost"] = rateOrCost;
 | 
| +    }
 | 
| +    if (startDate != null) {
 | 
| +      _json["startDate"] = "${(startDate).year.toString().padLeft(4, '0')}-${(startDate).month.toString().padLeft(2, '0')}-${(startDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (units != null) {
 | 
| +      _json["units"] = units;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  /** Floodlight Activity GenerateTag Response */
 | 
|  class FloodlightActivitiesGenerateTagResponse {
 | 
|    /** Generated tag for this floodlight activity. */
 | 
| @@ -17995,6 +19718,225 @@ class GeoTargeting {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +/** Represents a buy from the DoubleClick Planning inventory store. */
 | 
| +class InventoryItem {
 | 
| +  /** Account ID of this inventory item. */
 | 
| +  core.String accountId;
 | 
| +  /**
 | 
| +   * Ad slots of this inventory item. If this inventory item represents a
 | 
| +   * standalone placement, there will be exactly one ad slot. If this inventory
 | 
| +   * item represents a placement group, there will be more than one ad slot,
 | 
| +   * each representing one child placement in that placement group.
 | 
| +   */
 | 
| +  core.List<AdSlot> adSlots;
 | 
| +  /** Advertiser ID of this inventory item. */
 | 
| +  core.String advertiserId;
 | 
| +  /** Content category ID of this inventory item. */
 | 
| +  core.String contentCategoryId;
 | 
| +  /** Estimated click-through rate of this inventory item. */
 | 
| +  core.String estimatedClickThroughRate;
 | 
| +  /** Estimated conversion rate of this inventory item. */
 | 
| +  core.String estimatedConversionRate;
 | 
| +  /** ID of this inventory item. */
 | 
| +  core.String id;
 | 
| +  /** Whether this inventory item is in plan. */
 | 
| +  core.bool inPlan;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#inventoryItem".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Information about the most recent modification of this inventory item. */
 | 
| +  LastModifiedInfo lastModifiedInfo;
 | 
| +  /**
 | 
| +   * Name of this inventory item. For standalone inventory items, this is the
 | 
| +   * same name as that of its only ad slot. For group inventory items, this can
 | 
| +   * differ from the name of any of its ad slots.
 | 
| +   */
 | 
| +  core.String name;
 | 
| +  /** Negotiation channel ID of this inventory item. */
 | 
| +  core.String negotiationChannelId;
 | 
| +  /** Order ID of this inventory item. */
 | 
| +  core.String orderId;
 | 
| +  /** Placement strategy ID of this inventory item. */
 | 
| +  core.String placementStrategyId;
 | 
| +  /** Pricing of this inventory item. */
 | 
| +  Pricing pricing;
 | 
| +  /** Project ID of this inventory item. */
 | 
| +  core.String projectId;
 | 
| +  /** RFP ID of this inventory item. */
 | 
| +  core.String rfpId;
 | 
| +  /** ID of the site this inventory item is associated with. */
 | 
| +  core.String siteId;
 | 
| +  /** Subaccount ID of this inventory item. */
 | 
| +  core.String subaccountId;
 | 
| +
 | 
| +  InventoryItem();
 | 
| +
 | 
| +  InventoryItem.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("adSlots")) {
 | 
| +      adSlots = _json["adSlots"].map((value) => new AdSlot.fromJson(value)).toList();
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("contentCategoryId")) {
 | 
| +      contentCategoryId = _json["contentCategoryId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("estimatedClickThroughRate")) {
 | 
| +      estimatedClickThroughRate = _json["estimatedClickThroughRate"];
 | 
| +    }
 | 
| +    if (_json.containsKey("estimatedConversionRate")) {
 | 
| +      estimatedConversionRate = _json["estimatedConversionRate"];
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
| +    }
 | 
| +    if (_json.containsKey("inPlan")) {
 | 
| +      inPlan = _json["inPlan"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("lastModifiedInfo")) {
 | 
| +      lastModifiedInfo = new LastModifiedInfo.fromJson(_json["lastModifiedInfo"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("negotiationChannelId")) {
 | 
| +      negotiationChannelId = _json["negotiationChannelId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("orderId")) {
 | 
| +      orderId = _json["orderId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("placementStrategyId")) {
 | 
| +      placementStrategyId = _json["placementStrategyId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("pricing")) {
 | 
| +      pricing = new Pricing.fromJson(_json["pricing"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("projectId")) {
 | 
| +      projectId = _json["projectId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("rfpId")) {
 | 
| +      rfpId = _json["rfpId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("siteId")) {
 | 
| +      siteId = _json["siteId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
| +    }
 | 
| +    if (adSlots != null) {
 | 
| +      _json["adSlots"] = adSlots.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (contentCategoryId != null) {
 | 
| +      _json["contentCategoryId"] = contentCategoryId;
 | 
| +    }
 | 
| +    if (estimatedClickThroughRate != null) {
 | 
| +      _json["estimatedClickThroughRate"] = estimatedClickThroughRate;
 | 
| +    }
 | 
| +    if (estimatedConversionRate != null) {
 | 
| +      _json["estimatedConversionRate"] = estimatedConversionRate;
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
| +    }
 | 
| +    if (inPlan != null) {
 | 
| +      _json["inPlan"] = inPlan;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (lastModifiedInfo != null) {
 | 
| +      _json["lastModifiedInfo"] = (lastModifiedInfo).toJson();
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (negotiationChannelId != null) {
 | 
| +      _json["negotiationChannelId"] = negotiationChannelId;
 | 
| +    }
 | 
| +    if (orderId != null) {
 | 
| +      _json["orderId"] = orderId;
 | 
| +    }
 | 
| +    if (placementStrategyId != null) {
 | 
| +      _json["placementStrategyId"] = placementStrategyId;
 | 
| +    }
 | 
| +    if (pricing != null) {
 | 
| +      _json["pricing"] = (pricing).toJson();
 | 
| +    }
 | 
| +    if (projectId != null) {
 | 
| +      _json["projectId"] = projectId;
 | 
| +    }
 | 
| +    if (rfpId != null) {
 | 
| +      _json["rfpId"] = rfpId;
 | 
| +    }
 | 
| +    if (siteId != null) {
 | 
| +      _json["siteId"] = siteId;
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Inventory item List Response */
 | 
| +class InventoryItemsListResponse {
 | 
| +  /** Inventory item collection */
 | 
| +  core.List<InventoryItem> inventoryItems;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#inventoryItemsListResponse".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +
 | 
| +  InventoryItemsListResponse();
 | 
| +
 | 
| +  InventoryItemsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("inventoryItems")) {
 | 
| +      inventoryItems = _json["inventoryItems"].map((value) => new InventoryItem.fromJson(value)).toList();
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (inventoryItems != null) {
 | 
| +      _json["inventoryItems"] = inventoryItems.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  /** Key Value Targeting Expression. */
 | 
|  class KeyValueTargetingExpression {
 | 
|    /** Keyword expression being targeted by the ad. */
 | 
| @@ -18133,8 +20075,205 @@ class LastModifiedInfo {
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (time != null) {
 | 
| -      _json["time"] = time;
 | 
| +    if (time != null) {
 | 
| +      _json["time"] = time;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/**
 | 
| + * A group clause made up of list population terms representing constraints
 | 
| + * joined by ORs.
 | 
| + */
 | 
| +class ListPopulationClause {
 | 
| +  /**
 | 
| +   * Terms of this list population clause. Each clause is made up of list
 | 
| +   * population terms representing constraints and are joined by ORs.
 | 
| +   */
 | 
| +  core.List<ListPopulationTerm> terms;
 | 
| +
 | 
| +  ListPopulationClause();
 | 
| +
 | 
| +  ListPopulationClause.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("terms")) {
 | 
| +      terms = _json["terms"].map((value) => new ListPopulationTerm.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (terms != null) {
 | 
| +      _json["terms"] = terms.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Remarketing List Population Rule. */
 | 
| +class ListPopulationRule {
 | 
| +  /**
 | 
| +   * Floodlight activity ID associated with this rule. This field can be left
 | 
| +   * blank.
 | 
| +   */
 | 
| +  core.String floodlightActivityId;
 | 
| +  /**
 | 
| +   * Name of floodlight activity associated with this rule. This is a read-only,
 | 
| +   * auto-generated field.
 | 
| +   */
 | 
| +  core.String floodlightActivityName;
 | 
| +  /**
 | 
| +   * Clauses that make up this list population rule. Clauses are joined by ANDs,
 | 
| +   * and the clauses themselves are made up of list population terms which are
 | 
| +   * joined by ORs.
 | 
| +   */
 | 
| +  core.List<ListPopulationClause> listPopulationClauses;
 | 
| +
 | 
| +  ListPopulationRule();
 | 
| +
 | 
| +  ListPopulationRule.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("floodlightActivityId")) {
 | 
| +      floodlightActivityId = _json["floodlightActivityId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("floodlightActivityName")) {
 | 
| +      floodlightActivityName = _json["floodlightActivityName"];
 | 
| +    }
 | 
| +    if (_json.containsKey("listPopulationClauses")) {
 | 
| +      listPopulationClauses = _json["listPopulationClauses"].map((value) => new ListPopulationClause.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (floodlightActivityId != null) {
 | 
| +      _json["floodlightActivityId"] = floodlightActivityId;
 | 
| +    }
 | 
| +    if (floodlightActivityName != null) {
 | 
| +      _json["floodlightActivityName"] = floodlightActivityName;
 | 
| +    }
 | 
| +    if (listPopulationClauses != null) {
 | 
| +      _json["listPopulationClauses"] = listPopulationClauses.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Remarketing List Population Rule Term. */
 | 
| +class ListPopulationTerm {
 | 
| +  /**
 | 
| +   * Will be true if the term should check if the user is in the list and false
 | 
| +   * if the term should check if the user is not in the list. This field is only
 | 
| +   * relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
 | 
| +   */
 | 
| +  core.bool contains;
 | 
| +  /**
 | 
| +   * Whether to negate the comparison result of this term during rule
 | 
| +   * evaluation. This field is only relevant when type is left unset or set to
 | 
| +   * CUSTOM_VARIABLE_TERM or REFERRER_TERM.
 | 
| +   */
 | 
| +  core.bool negation;
 | 
| +  /**
 | 
| +   * Comparison operator of this term. This field is only relevant when type is
 | 
| +   * left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
 | 
| +   * Possible string values are:
 | 
| +   * - "NUM_EQUALS"
 | 
| +   * - "NUM_GREATER_THAN"
 | 
| +   * - "NUM_GREATER_THAN_EQUAL"
 | 
| +   * - "NUM_LESS_THAN"
 | 
| +   * - "NUM_LESS_THAN_EQUAL"
 | 
| +   * - "STRING_CONTAINS"
 | 
| +   * - "STRING_EQUALS"
 | 
| +   */
 | 
| +  core.String operator;
 | 
| +  /**
 | 
| +   * ID of the list in question. This field is only relevant when type is set to
 | 
| +   * LIST_MEMBERSHIP_TERM.
 | 
| +   */
 | 
| +  core.String remarketingListId;
 | 
| +  /**
 | 
| +   * List population term type determines the applicable fields in this object.
 | 
| +   * If left unset or set to CUSTOM_VARIABLE_TERM, then variableName,
 | 
| +   * variableFriendlyName, operator, value, and negation are applicable. If set
 | 
| +   * to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable.
 | 
| +   * If set to REFERRER_TERM then operator, value, and negation are applicable.
 | 
| +   * Possible string values are:
 | 
| +   * - "CUSTOM_VARIABLE_TERM"
 | 
| +   * - "LIST_MEMBERSHIP_TERM"
 | 
| +   * - "REFERRER_TERM"
 | 
| +   */
 | 
| +  core.String type;
 | 
| +  /**
 | 
| +   * Literal to compare the variable to. This field is only relevant when type
 | 
| +   * is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
 | 
| +   */
 | 
| +  core.String value;
 | 
| +  /**
 | 
| +   * Friendly name of this term's variable. This is a read-only, auto-generated
 | 
| +   * field. This field is only relevant when type is left unset or set to
 | 
| +   * CUSTOM_VARIABLE_TERM.
 | 
| +   */
 | 
| +  core.String variableFriendlyName;
 | 
| +  /**
 | 
| +   * Name of the variable (U1, U2, etc.) being compared in this term. This field
 | 
| +   * is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or
 | 
| +   * REFERRER_TERM.
 | 
| +   */
 | 
| +  core.String variableName;
 | 
| +
 | 
| +  ListPopulationTerm();
 | 
| +
 | 
| +  ListPopulationTerm.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("contains")) {
 | 
| +      contains = _json["contains"];
 | 
| +    }
 | 
| +    if (_json.containsKey("negation")) {
 | 
| +      negation = _json["negation"];
 | 
| +    }
 | 
| +    if (_json.containsKey("operator")) {
 | 
| +      operator = _json["operator"];
 | 
| +    }
 | 
| +    if (_json.containsKey("remarketingListId")) {
 | 
| +      remarketingListId = _json["remarketingListId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("type")) {
 | 
| +      type = _json["type"];
 | 
| +    }
 | 
| +    if (_json.containsKey("value")) {
 | 
| +      value = _json["value"];
 | 
| +    }
 | 
| +    if (_json.containsKey("variableFriendlyName")) {
 | 
| +      variableFriendlyName = _json["variableFriendlyName"];
 | 
| +    }
 | 
| +    if (_json.containsKey("variableName")) {
 | 
| +      variableName = _json["variableName"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (contains != null) {
 | 
| +      _json["contains"] = contains;
 | 
| +    }
 | 
| +    if (negation != null) {
 | 
| +      _json["negation"] = negation;
 | 
| +    }
 | 
| +    if (operator != null) {
 | 
| +      _json["operator"] = operator;
 | 
| +    }
 | 
| +    if (remarketingListId != null) {
 | 
| +      _json["remarketingListId"] = remarketingListId;
 | 
| +    }
 | 
| +    if (type != null) {
 | 
| +      _json["type"] = type;
 | 
| +    }
 | 
| +    if (value != null) {
 | 
| +      _json["value"] = value;
 | 
| +    }
 | 
| +    if (variableFriendlyName != null) {
 | 
| +      _json["variableFriendlyName"] = variableFriendlyName;
 | 
| +    }
 | 
| +    if (variableName != null) {
 | 
| +      _json["variableName"] = variableName;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
| @@ -18519,217 +20658,693 @@ class OmnitureSettings {
 | 
|     * Whether placement cost data will be sent to Omniture. This property can be
 | 
|     * enabled only if omnitureIntegrationEnabled is true.
 | 
|     */
 | 
| -  core.bool omnitureCostDataEnabled;
 | 
| +  core.bool omnitureCostDataEnabled;
 | 
| +  /**
 | 
| +   * Whether Omniture integration is enabled. This property can be enabled only
 | 
| +   * when the "Advanced Ad Serving" account setting is enabled.
 | 
| +   */
 | 
| +  core.bool omnitureIntegrationEnabled;
 | 
| +
 | 
| +  OmnitureSettings();
 | 
| +
 | 
| +  OmnitureSettings.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("omnitureCostDataEnabled")) {
 | 
| +      omnitureCostDataEnabled = _json["omnitureCostDataEnabled"];
 | 
| +    }
 | 
| +    if (_json.containsKey("omnitureIntegrationEnabled")) {
 | 
| +      omnitureIntegrationEnabled = _json["omnitureIntegrationEnabled"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (omnitureCostDataEnabled != null) {
 | 
| +      _json["omnitureCostDataEnabled"] = omnitureCostDataEnabled;
 | 
| +    }
 | 
| +    if (omnitureIntegrationEnabled != null) {
 | 
| +      _json["omnitureIntegrationEnabled"] = omnitureIntegrationEnabled;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/**
 | 
| + * Contains information about an operating system that can be targeted by ads.
 | 
| + */
 | 
| +class OperatingSystem {
 | 
| +  /** DART ID of this operating system. This is the ID used for targeting. */
 | 
| +  core.String dartId;
 | 
| +  /** Whether this operating system is for desktop. */
 | 
| +  core.bool desktop;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#operatingSystem".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Whether this operating system is for mobile. */
 | 
| +  core.bool mobile;
 | 
| +  /** Name of this operating system. */
 | 
| +  core.String name;
 | 
| +
 | 
| +  OperatingSystem();
 | 
| +
 | 
| +  OperatingSystem.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("dartId")) {
 | 
| +      dartId = _json["dartId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("desktop")) {
 | 
| +      desktop = _json["desktop"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("mobile")) {
 | 
| +      mobile = _json["mobile"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (dartId != null) {
 | 
| +      _json["dartId"] = dartId;
 | 
| +    }
 | 
| +    if (desktop != null) {
 | 
| +      _json["desktop"] = desktop;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (mobile != null) {
 | 
| +      _json["mobile"] = mobile;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/**
 | 
| + * Contains information about a particular version of an operating system that
 | 
| + * can be targeted by ads.
 | 
| + */
 | 
| +class OperatingSystemVersion {
 | 
| +  /** ID of this operating system version. */
 | 
| +  core.String id;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#operatingSystemVersion".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Major version (leftmost number) of this operating system version. */
 | 
| +  core.String majorVersion;
 | 
| +  /**
 | 
| +   * Minor version (number after the first dot) of this operating system
 | 
| +   * version.
 | 
| +   */
 | 
| +  core.String minorVersion;
 | 
| +  /** Name of this operating system version. */
 | 
| +  core.String name;
 | 
| +  /** Operating system of this operating system version. */
 | 
| +  OperatingSystem operatingSystem;
 | 
| +
 | 
| +  OperatingSystemVersion();
 | 
| +
 | 
| +  OperatingSystemVersion.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("majorVersion")) {
 | 
| +      majorVersion = _json["majorVersion"];
 | 
| +    }
 | 
| +    if (_json.containsKey("minorVersion")) {
 | 
| +      minorVersion = _json["minorVersion"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("operatingSystem")) {
 | 
| +      operatingSystem = new OperatingSystem.fromJson(_json["operatingSystem"]);
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (majorVersion != null) {
 | 
| +      _json["majorVersion"] = majorVersion;
 | 
| +    }
 | 
| +    if (minorVersion != null) {
 | 
| +      _json["minorVersion"] = minorVersion;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (operatingSystem != null) {
 | 
| +      _json["operatingSystem"] = (operatingSystem).toJson();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Operating System Version List Response */
 | 
| +class OperatingSystemVersionsListResponse {
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#operatingSystemVersionsListResponse".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Operating system version collection. */
 | 
| +  core.List<OperatingSystemVersion> operatingSystemVersions;
 | 
| +
 | 
| +  OperatingSystemVersionsListResponse();
 | 
| +
 | 
| +  OperatingSystemVersionsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("operatingSystemVersions")) {
 | 
| +      operatingSystemVersions = _json["operatingSystemVersions"].map((value) => new OperatingSystemVersion.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (operatingSystemVersions != null) {
 | 
| +      _json["operatingSystemVersions"] = operatingSystemVersions.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Operating System List Response */
 | 
| +class OperatingSystemsListResponse {
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#operatingSystemsListResponse".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Operating system collection. */
 | 
| +  core.List<OperatingSystem> operatingSystems;
 | 
| +
 | 
| +  OperatingSystemsListResponse();
 | 
| +
 | 
| +  OperatingSystemsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("operatingSystems")) {
 | 
| +      operatingSystems = _json["operatingSystems"].map((value) => new OperatingSystem.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (operatingSystems != null) {
 | 
| +      _json["operatingSystems"] = operatingSystems.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Creative optimization activity. */
 | 
| +class OptimizationActivity {
 | 
| +  /**
 | 
| +   * Floodlight activity ID of this optimization activity. This is a required
 | 
| +   * field.
 | 
| +   */
 | 
| +  core.String floodlightActivityId;
 | 
| +  /**
 | 
| +   * Dimension value for the ID of the floodlight activity. This is a read-only,
 | 
| +   * auto-generated field.
 | 
| +   */
 | 
| +  DimensionValue floodlightActivityIdDimensionValue;
 | 
|    /**
 | 
| -   * Whether Omniture integration is enabled. This property can be enabled only
 | 
| -   * when the "Advanced Ad Serving" account setting is enabled.
 | 
| +   * Weight associated with this optimization. Must be greater than 1. The
 | 
| +   * weight assigned will be understood in proportion to the weights assigned to
 | 
| +   * the other optimization activities.
 | 
|     */
 | 
| -  core.bool omnitureIntegrationEnabled;
 | 
| +  core.int weight;
 | 
|  
 | 
| -  OmnitureSettings();
 | 
| +  OptimizationActivity();
 | 
|  
 | 
| -  OmnitureSettings.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("omnitureCostDataEnabled")) {
 | 
| -      omnitureCostDataEnabled = _json["omnitureCostDataEnabled"];
 | 
| +  OptimizationActivity.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("floodlightActivityId")) {
 | 
| +      floodlightActivityId = _json["floodlightActivityId"];
 | 
|      }
 | 
| -    if (_json.containsKey("omnitureIntegrationEnabled")) {
 | 
| -      omnitureIntegrationEnabled = _json["omnitureIntegrationEnabled"];
 | 
| +    if (_json.containsKey("floodlightActivityIdDimensionValue")) {
 | 
| +      floodlightActivityIdDimensionValue = new DimensionValue.fromJson(_json["floodlightActivityIdDimensionValue"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("weight")) {
 | 
| +      weight = _json["weight"];
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (omnitureCostDataEnabled != null) {
 | 
| -      _json["omnitureCostDataEnabled"] = omnitureCostDataEnabled;
 | 
| +    if (floodlightActivityId != null) {
 | 
| +      _json["floodlightActivityId"] = floodlightActivityId;
 | 
|      }
 | 
| -    if (omnitureIntegrationEnabled != null) {
 | 
| -      _json["omnitureIntegrationEnabled"] = omnitureIntegrationEnabled;
 | 
| +    if (floodlightActivityIdDimensionValue != null) {
 | 
| +      _json["floodlightActivityIdDimensionValue"] = (floodlightActivityIdDimensionValue).toJson();
 | 
| +    }
 | 
| +    if (weight != null) {
 | 
| +      _json["weight"] = weight;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/**
 | 
| - * Contains information about an operating system that can be targeted by ads.
 | 
| - */
 | 
| -class OperatingSystem {
 | 
| -  /** DART ID of this operating system. This is the ID used for targeting. */
 | 
| -  core.String dartId;
 | 
| -  /** Whether this operating system is for desktop. */
 | 
| -  core.bool desktop;
 | 
| +/** Describes properties of a DoubleClick Planning order. */
 | 
| +class Order {
 | 
| +  /** Account ID of this order. */
 | 
| +  core.String accountId;
 | 
| +  /** Advertiser ID of this order. */
 | 
| +  core.String advertiserId;
 | 
| +  /** IDs for users that have to approve documents created for this order. */
 | 
| +  core.List<core.String> approverUserProfileIds;
 | 
| +  /** Buyer invoice ID associated with this order. */
 | 
| +  core.String buyerInvoiceId;
 | 
| +  /** Name of the buyer organization. */
 | 
| +  core.String buyerOrganizationName;
 | 
| +  /** Comments in this order. */
 | 
| +  core.String comments;
 | 
| +  /** Contacts for this order. */
 | 
| +  core.List<OrderContact> contacts;
 | 
| +  /** ID of this order. This is a read-only, auto-generated field. */
 | 
| +  core.String id;
 | 
|    /**
 | 
|     * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#operatingSystem".
 | 
| +   * "dfareporting#order".
 | 
|     */
 | 
|    core.String kind;
 | 
| -  /** Whether this operating system is for mobile. */
 | 
| -  core.bool mobile;
 | 
| -  /** Name of this operating system. */
 | 
| +  /** Information about the most recent modification of this order. */
 | 
| +  LastModifiedInfo lastModifiedInfo;
 | 
| +  /** Name of this order. */
 | 
|    core.String name;
 | 
| +  /** Notes of this order. */
 | 
| +  core.String notes;
 | 
| +  /** ID of the terms and conditions template used in this order. */
 | 
| +  core.String planningTermId;
 | 
| +  /** Project ID of this order. */
 | 
| +  core.String projectId;
 | 
| +  /** Seller order ID associated with this order. */
 | 
| +  core.String sellerOrderId;
 | 
| +  /** Name of the seller organization. */
 | 
| +  core.String sellerOrganizationName;
 | 
| +  /** Site IDs this order is associated with. */
 | 
| +  core.List<core.String> siteId;
 | 
| +  /** Free-form site names this order is associated with. */
 | 
| +  core.List<core.String> siteNames;
 | 
| +  /** Subaccount ID of this order. */
 | 
| +  core.String subaccountId;
 | 
| +  /** Terms and conditions of this order. */
 | 
| +  core.String termsAndConditions;
 | 
|  
 | 
| -  OperatingSystem();
 | 
| +  Order();
 | 
|  
 | 
| -  OperatingSystem.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("dartId")) {
 | 
| -      dartId = _json["dartId"];
 | 
| +  Order.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
|      }
 | 
| -    if (_json.containsKey("desktop")) {
 | 
| -      desktop = _json["desktop"];
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("approverUserProfileIds")) {
 | 
| +      approverUserProfileIds = _json["approverUserProfileIds"];
 | 
| +    }
 | 
| +    if (_json.containsKey("buyerInvoiceId")) {
 | 
| +      buyerInvoiceId = _json["buyerInvoiceId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("buyerOrganizationName")) {
 | 
| +      buyerOrganizationName = _json["buyerOrganizationName"];
 | 
| +    }
 | 
| +    if (_json.containsKey("comments")) {
 | 
| +      comments = _json["comments"];
 | 
| +    }
 | 
| +    if (_json.containsKey("contacts")) {
 | 
| +      contacts = _json["contacts"].map((value) => new OrderContact.fromJson(value)).toList();
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
|      }
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("mobile")) {
 | 
| -      mobile = _json["mobile"];
 | 
| +    if (_json.containsKey("lastModifiedInfo")) {
 | 
| +      lastModifiedInfo = new LastModifiedInfo.fromJson(_json["lastModifiedInfo"]);
 | 
|      }
 | 
|      if (_json.containsKey("name")) {
 | 
|        name = _json["name"];
 | 
|      }
 | 
| +    if (_json.containsKey("notes")) {
 | 
| +      notes = _json["notes"];
 | 
| +    }
 | 
| +    if (_json.containsKey("planningTermId")) {
 | 
| +      planningTermId = _json["planningTermId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("projectId")) {
 | 
| +      projectId = _json["projectId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("sellerOrderId")) {
 | 
| +      sellerOrderId = _json["sellerOrderId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("sellerOrganizationName")) {
 | 
| +      sellerOrganizationName = _json["sellerOrganizationName"];
 | 
| +    }
 | 
| +    if (_json.containsKey("siteId")) {
 | 
| +      siteId = _json["siteId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("siteNames")) {
 | 
| +      siteNames = _json["siteNames"];
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("termsAndConditions")) {
 | 
| +      termsAndConditions = _json["termsAndConditions"];
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (dartId != null) {
 | 
| -      _json["dartId"] = dartId;
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
|      }
 | 
| -    if (desktop != null) {
 | 
| -      _json["desktop"] = desktop;
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (approverUserProfileIds != null) {
 | 
| +      _json["approverUserProfileIds"] = approverUserProfileIds;
 | 
| +    }
 | 
| +    if (buyerInvoiceId != null) {
 | 
| +      _json["buyerInvoiceId"] = buyerInvoiceId;
 | 
| +    }
 | 
| +    if (buyerOrganizationName != null) {
 | 
| +      _json["buyerOrganizationName"] = buyerOrganizationName;
 | 
| +    }
 | 
| +    if (comments != null) {
 | 
| +      _json["comments"] = comments;
 | 
| +    }
 | 
| +    if (contacts != null) {
 | 
| +      _json["contacts"] = contacts.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
|      }
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| -    if (mobile != null) {
 | 
| -      _json["mobile"] = mobile;
 | 
| +    if (lastModifiedInfo != null) {
 | 
| +      _json["lastModifiedInfo"] = (lastModifiedInfo).toJson();
 | 
|      }
 | 
|      if (name != null) {
 | 
|        _json["name"] = name;
 | 
|      }
 | 
| +    if (notes != null) {
 | 
| +      _json["notes"] = notes;
 | 
| +    }
 | 
| +    if (planningTermId != null) {
 | 
| +      _json["planningTermId"] = planningTermId;
 | 
| +    }
 | 
| +    if (projectId != null) {
 | 
| +      _json["projectId"] = projectId;
 | 
| +    }
 | 
| +    if (sellerOrderId != null) {
 | 
| +      _json["sellerOrderId"] = sellerOrderId;
 | 
| +    }
 | 
| +    if (sellerOrganizationName != null) {
 | 
| +      _json["sellerOrganizationName"] = sellerOrganizationName;
 | 
| +    }
 | 
| +    if (siteId != null) {
 | 
| +      _json["siteId"] = siteId;
 | 
| +    }
 | 
| +    if (siteNames != null) {
 | 
| +      _json["siteNames"] = siteNames;
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
| +    if (termsAndConditions != null) {
 | 
| +      _json["termsAndConditions"] = termsAndConditions;
 | 
| +    }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/**
 | 
| - * Contains information about a particular version of an operating system that
 | 
| - * can be targeted by ads.
 | 
| - */
 | 
| -class OperatingSystemVersion {
 | 
| -  /** ID of this operating system version. */
 | 
| -  core.String id;
 | 
| +/** Contact of an order. */
 | 
| +class OrderContact {
 | 
|    /**
 | 
| -   * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#operatingSystemVersion".
 | 
| +   * Free-form information about this contact. It could be any information
 | 
| +   * related to this contact in addition to type, title, name, and signature
 | 
| +   * user profile ID.
 | 
|     */
 | 
| -  core.String kind;
 | 
| -  /** Major version (leftmost number) of this operating system version. */
 | 
| -  core.String majorVersion;
 | 
| +  core.String contactInfo;
 | 
| +  /** Name of this contact. */
 | 
| +  core.String contactName;
 | 
| +  /** Title of this contact. */
 | 
| +  core.String contactTitle;
 | 
|    /**
 | 
| -   * Minor version (number after the first dot) of this operating system
 | 
| -   * version.
 | 
| +   * Type of this contact.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_ORDER_CONTACT_BUYER_BILLING_CONTACT"
 | 
| +   * - "PLANNING_ORDER_CONTACT_BUYER_CONTACT"
 | 
| +   * - "PLANNING_ORDER_CONTACT_SELLER_CONTACT"
 | 
|     */
 | 
| -  core.String minorVersion;
 | 
| -  /** Name of this operating system version. */
 | 
| -  core.String name;
 | 
| -  /** Operating system of this operating system version. */
 | 
| -  OperatingSystem operatingSystem;
 | 
| +  core.String contactType;
 | 
| +  /**
 | 
| +   * ID of the user profile containing the signature that will be embedded into
 | 
| +   * order documents.
 | 
| +   */
 | 
| +  core.String signatureUserProfileId;
 | 
|  
 | 
| -  OperatingSystemVersion();
 | 
| +  OrderContact();
 | 
|  
 | 
| -  OperatingSystemVersion.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("id")) {
 | 
| -      id = _json["id"];
 | 
| -    }
 | 
| -    if (_json.containsKey("kind")) {
 | 
| -      kind = _json["kind"];
 | 
| +  OrderContact.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("contactInfo")) {
 | 
| +      contactInfo = _json["contactInfo"];
 | 
|      }
 | 
| -    if (_json.containsKey("majorVersion")) {
 | 
| -      majorVersion = _json["majorVersion"];
 | 
| +    if (_json.containsKey("contactName")) {
 | 
| +      contactName = _json["contactName"];
 | 
|      }
 | 
| -    if (_json.containsKey("minorVersion")) {
 | 
| -      minorVersion = _json["minorVersion"];
 | 
| +    if (_json.containsKey("contactTitle")) {
 | 
| +      contactTitle = _json["contactTitle"];
 | 
|      }
 | 
| -    if (_json.containsKey("name")) {
 | 
| -      name = _json["name"];
 | 
| +    if (_json.containsKey("contactType")) {
 | 
| +      contactType = _json["contactType"];
 | 
|      }
 | 
| -    if (_json.containsKey("operatingSystem")) {
 | 
| -      operatingSystem = new OperatingSystem.fromJson(_json["operatingSystem"]);
 | 
| +    if (_json.containsKey("signatureUserProfileId")) {
 | 
| +      signatureUserProfileId = _json["signatureUserProfileId"];
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (id != null) {
 | 
| -      _json["id"] = id;
 | 
| -    }
 | 
| -    if (kind != null) {
 | 
| -      _json["kind"] = kind;
 | 
| +    if (contactInfo != null) {
 | 
| +      _json["contactInfo"] = contactInfo;
 | 
|      }
 | 
| -    if (majorVersion != null) {
 | 
| -      _json["majorVersion"] = majorVersion;
 | 
| +    if (contactName != null) {
 | 
| +      _json["contactName"] = contactName;
 | 
|      }
 | 
| -    if (minorVersion != null) {
 | 
| -      _json["minorVersion"] = minorVersion;
 | 
| +    if (contactTitle != null) {
 | 
| +      _json["contactTitle"] = contactTitle;
 | 
|      }
 | 
| -    if (name != null) {
 | 
| -      _json["name"] = name;
 | 
| +    if (contactType != null) {
 | 
| +      _json["contactType"] = contactType;
 | 
|      }
 | 
| -    if (operatingSystem != null) {
 | 
| -      _json["operatingSystem"] = (operatingSystem).toJson();
 | 
| +    if (signatureUserProfileId != null) {
 | 
| +      _json["signatureUserProfileId"] = signatureUserProfileId;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Operating System Version List Response */
 | 
| -class OperatingSystemVersionsListResponse {
 | 
| +/** Contains properties of a DoubleClick Planning order document. */
 | 
| +class OrderDocument {
 | 
| +  /** Account ID of this order document. */
 | 
| +  core.String accountId;
 | 
| +  /** Advertiser ID of this order document. */
 | 
| +  core.String advertiserId;
 | 
| +  /**
 | 
| +   * The amended order document ID of this order document. An order document can
 | 
| +   * be created by optionally amending another order document so that the change
 | 
| +   * history can be preserved.
 | 
| +   */
 | 
| +  core.String amendedOrderDocumentId;
 | 
| +  /** IDs of users who have approved this order document. */
 | 
| +  core.List<core.String> approvedByUserProfileIds;
 | 
| +  /** Whether this order document is cancelled. */
 | 
| +  core.bool cancelled;
 | 
| +  /** Information about the creation of this order document. */
 | 
| +  LastModifiedInfo createdInfo;
 | 
| +  /** Effective date of this order document. */
 | 
| +  core.DateTime effectiveDate;
 | 
| +  /** ID of this order document. */
 | 
| +  core.String id;
 | 
|    /**
 | 
|     * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#operatingSystemVersionsListResponse".
 | 
| +   * "dfareporting#orderDocument".
 | 
|     */
 | 
|    core.String kind;
 | 
| -  /** Operating system version collection. */
 | 
| -  core.List<OperatingSystemVersion> operatingSystemVersions;
 | 
| +  /** ID of the order from which this order document is created. */
 | 
| +  core.String orderId;
 | 
| +  /** Project ID of this order document. */
 | 
| +  core.String projectId;
 | 
| +  /** Whether this order document has been signed. */
 | 
| +  core.bool signed;
 | 
| +  /** Subaccount ID of this order document. */
 | 
| +  core.String subaccountId;
 | 
| +  /** Title of this order document. */
 | 
| +  core.String title;
 | 
| +  /**
 | 
| +   * Type of this order document
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_ORDER_TYPE_CHANGE_ORDER"
 | 
| +   * - "PLANNING_ORDER_TYPE_INSERTION_ORDER"
 | 
| +   */
 | 
| +  core.String type;
 | 
|  
 | 
| -  OperatingSystemVersionsListResponse();
 | 
| +  OrderDocument();
 | 
|  
 | 
| -  OperatingSystemVersionsListResponse.fromJson(core.Map _json) {
 | 
| +  OrderDocument.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("amendedOrderDocumentId")) {
 | 
| +      amendedOrderDocumentId = _json["amendedOrderDocumentId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("approvedByUserProfileIds")) {
 | 
| +      approvedByUserProfileIds = _json["approvedByUserProfileIds"];
 | 
| +    }
 | 
| +    if (_json.containsKey("cancelled")) {
 | 
| +      cancelled = _json["cancelled"];
 | 
| +    }
 | 
| +    if (_json.containsKey("createdInfo")) {
 | 
| +      createdInfo = new LastModifiedInfo.fromJson(_json["createdInfo"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("effectiveDate")) {
 | 
| +      effectiveDate = core.DateTime.parse(_json["effectiveDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
| +    }
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("operatingSystemVersions")) {
 | 
| -      operatingSystemVersions = _json["operatingSystemVersions"].map((value) => new OperatingSystemVersion.fromJson(value)).toList();
 | 
| +    if (_json.containsKey("orderId")) {
 | 
| +      orderId = _json["orderId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("projectId")) {
 | 
| +      projectId = _json["projectId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("signed")) {
 | 
| +      signed = _json["signed"];
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("title")) {
 | 
| +      title = _json["title"];
 | 
| +    }
 | 
| +    if (_json.containsKey("type")) {
 | 
| +      type = _json["type"];
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
| +    }
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (amendedOrderDocumentId != null) {
 | 
| +      _json["amendedOrderDocumentId"] = amendedOrderDocumentId;
 | 
| +    }
 | 
| +    if (approvedByUserProfileIds != null) {
 | 
| +      _json["approvedByUserProfileIds"] = approvedByUserProfileIds;
 | 
| +    }
 | 
| +    if (cancelled != null) {
 | 
| +      _json["cancelled"] = cancelled;
 | 
| +    }
 | 
| +    if (createdInfo != null) {
 | 
| +      _json["createdInfo"] = (createdInfo).toJson();
 | 
| +    }
 | 
| +    if (effectiveDate != null) {
 | 
| +      _json["effectiveDate"] = "${(effectiveDate).year.toString().padLeft(4, '0')}-${(effectiveDate).month.toString().padLeft(2, '0')}-${(effectiveDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
| +    }
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| -    if (operatingSystemVersions != null) {
 | 
| -      _json["operatingSystemVersions"] = operatingSystemVersions.map((value) => (value).toJson()).toList();
 | 
| +    if (orderId != null) {
 | 
| +      _json["orderId"] = orderId;
 | 
| +    }
 | 
| +    if (projectId != null) {
 | 
| +      _json["projectId"] = projectId;
 | 
| +    }
 | 
| +    if (signed != null) {
 | 
| +      _json["signed"] = signed;
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
| +    if (title != null) {
 | 
| +      _json["title"] = title;
 | 
| +    }
 | 
| +    if (type != null) {
 | 
| +      _json["type"] = type;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Operating System List Response */
 | 
| -class OperatingSystemsListResponse {
 | 
| +/** Order document List Response */
 | 
| +class OrderDocumentsListResponse {
 | 
|    /**
 | 
|     * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#operatingSystemsListResponse".
 | 
| +   * "dfareporting#orderDocumentsListResponse".
 | 
|     */
 | 
|    core.String kind;
 | 
| -  /** Operating system collection. */
 | 
| -  core.List<OperatingSystem> operatingSystems;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +  /** Order document collection */
 | 
| +  core.List<OrderDocument> orderDocuments;
 | 
|  
 | 
| -  OperatingSystemsListResponse();
 | 
| +  OrderDocumentsListResponse();
 | 
|  
 | 
| -  OperatingSystemsListResponse.fromJson(core.Map _json) {
 | 
| +  OrderDocumentsListResponse.fromJson(core.Map _json) {
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("operatingSystems")) {
 | 
| -      operatingSystems = _json["operatingSystems"].map((value) => new OperatingSystem.fromJson(value)).toList();
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
| +    }
 | 
| +    if (_json.containsKey("orderDocuments")) {
 | 
| +      orderDocuments = _json["orderDocuments"].map((value) => new OrderDocument.fromJson(value)).toList();
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -18738,56 +21353,52 @@ class OperatingSystemsListResponse {
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| -    if (operatingSystems != null) {
 | 
| -      _json["operatingSystems"] = operatingSystems.map((value) => (value).toJson()).toList();
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
| +    }
 | 
| +    if (orderDocuments != null) {
 | 
| +      _json["orderDocuments"] = orderDocuments.map((value) => (value).toJson()).toList();
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Creative optimization activity. */
 | 
| -class OptimizationActivity {
 | 
| -  /**
 | 
| -   * Floodlight activity ID of this optimization activity. This is a required
 | 
| -   * field.
 | 
| -   */
 | 
| -  core.String floodlightActivityId;
 | 
| -  /**
 | 
| -   * Dimension value for the ID of the floodlight activity. This is a read-only,
 | 
| -   * auto-generated field.
 | 
| -   */
 | 
| -  DimensionValue floodlightActivityIdDimensionValue;
 | 
| +/** Order List Response */
 | 
| +class OrdersListResponse {
 | 
|    /**
 | 
| -   * Weight associated with this optimization. Must be greater than 1. The
 | 
| -   * weight assigned will be understood in proportion to the weights assigned to
 | 
| -   * the other optimization activities.
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#ordersListResponse".
 | 
|     */
 | 
| -  core.int weight;
 | 
| +  core.String kind;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +  /** Order collection. */
 | 
| +  core.List<Order> orders;
 | 
|  
 | 
| -  OptimizationActivity();
 | 
| +  OrdersListResponse();
 | 
|  
 | 
| -  OptimizationActivity.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("floodlightActivityId")) {
 | 
| -      floodlightActivityId = _json["floodlightActivityId"];
 | 
| +  OrdersListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("floodlightActivityIdDimensionValue")) {
 | 
| -      floodlightActivityIdDimensionValue = new DimensionValue.fromJson(_json["floodlightActivityIdDimensionValue"]);
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
|      }
 | 
| -    if (_json.containsKey("weight")) {
 | 
| -      weight = _json["weight"];
 | 
| +    if (_json.containsKey("orders")) {
 | 
| +      orders = _json["orders"].map((value) => new Order.fromJson(value)).toList();
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (floodlightActivityId != null) {
 | 
| -      _json["floodlightActivityId"] = floodlightActivityId;
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
|      }
 | 
| -    if (floodlightActivityIdDimensionValue != null) {
 | 
| -      _json["floodlightActivityIdDimensionValue"] = (floodlightActivityIdDimensionValue).toJson();
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
|      }
 | 
| -    if (weight != null) {
 | 
| -      _json["weight"] = weight;
 | 
| +    if (orders != null) {
 | 
| +      _json["orders"] = orders.map((value) => (value).toJson()).toList();
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
| @@ -20042,6 +22653,8 @@ class PopupWindowProperties {
 | 
|  
 | 
|  /** Contains information about a postal code that can be targeted by ads. */
 | 
|  class PostalCode {
 | 
| +  /** Postal code. This is equivalent to the id field. */
 | 
| +  core.String code;
 | 
|    /** Country code of the country to which this postal code belongs. */
 | 
|    core.String countryCode;
 | 
|    /** DART ID of the country to which this postal code belongs. */
 | 
| @@ -20057,6 +22670,9 @@ class PostalCode {
 | 
|    PostalCode();
 | 
|  
 | 
|    PostalCode.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("code")) {
 | 
| +      code = _json["code"];
 | 
| +    }
 | 
|      if (_json.containsKey("countryCode")) {
 | 
|        countryCode = _json["countryCode"];
 | 
|      }
 | 
| @@ -20073,6 +22689,9 @@ class PostalCode {
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| +    if (code != null) {
 | 
| +      _json["code"] = code;
 | 
| +    }
 | 
|      if (countryCode != null) {
 | 
|        _json["countryCode"] = countryCode;
 | 
|      }
 | 
| @@ -20122,6 +22741,99 @@ class PostalCodesListResponse {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +/** Pricing Information */
 | 
| +class Pricing {
 | 
| +  /**
 | 
| +   * Cap cost type of this inventory item.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_PLACEMENT_CAP_COST_TYPE_CUMULATIVE"
 | 
| +   * - "PLANNING_PLACEMENT_CAP_COST_TYPE_MONTHLY"
 | 
| +   * - "PLANNING_PLACEMENT_CAP_COST_TYPE_NONE"
 | 
| +   */
 | 
| +  core.String capCostType;
 | 
| +  /** End date of this inventory item. */
 | 
| +  core.DateTime endDate;
 | 
| +  /**
 | 
| +   * Flights of this inventory item. A flight (a.k.a. pricing period) represents
 | 
| +   * the inventory item pricing information for a specific period of time.
 | 
| +   */
 | 
| +  core.List<Flight> flights;
 | 
| +  /**
 | 
| +   * Group type of this inventory item if it represents a placement group. Is
 | 
| +   * null otherwise. There are two type of placement groups:
 | 
| +   * PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of inventory items
 | 
| +   * that acts as a single pricing point for a group of tags.
 | 
| +   * PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory items that
 | 
| +   * not only acts as a single pricing point, but also assumes that all the tags
 | 
| +   * in it will be served at the same time. A roadblock requires one of its
 | 
| +   * assigned inventory items to be marked as primary.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE"
 | 
| +   * - "PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK"
 | 
| +   */
 | 
| +  core.String groupType;
 | 
| +  /**
 | 
| +   * Pricing type of this inventory item.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_CLICKS"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_CPA"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_CPC"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_CPM"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_CLICKS"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
 | 
| +   * - "PLANNING_PLACEMENT_PRICING_TYPE_IMPRESSIONS"
 | 
| +   */
 | 
| +  core.String pricingType;
 | 
| +  /** Start date of this inventory item. */
 | 
| +  core.DateTime startDate;
 | 
| +
 | 
| +  Pricing();
 | 
| +
 | 
| +  Pricing.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("capCostType")) {
 | 
| +      capCostType = _json["capCostType"];
 | 
| +    }
 | 
| +    if (_json.containsKey("endDate")) {
 | 
| +      endDate = core.DateTime.parse(_json["endDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("flights")) {
 | 
| +      flights = _json["flights"].map((value) => new Flight.fromJson(value)).toList();
 | 
| +    }
 | 
| +    if (_json.containsKey("groupType")) {
 | 
| +      groupType = _json["groupType"];
 | 
| +    }
 | 
| +    if (_json.containsKey("pricingType")) {
 | 
| +      pricingType = _json["pricingType"];
 | 
| +    }
 | 
| +    if (_json.containsKey("startDate")) {
 | 
| +      startDate = core.DateTime.parse(_json["startDate"]);
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (capCostType != null) {
 | 
| +      _json["capCostType"] = capCostType;
 | 
| +    }
 | 
| +    if (endDate != null) {
 | 
| +      _json["endDate"] = "${(endDate).year.toString().padLeft(4, '0')}-${(endDate).month.toString().padLeft(2, '0')}-${(endDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (flights != null) {
 | 
| +      _json["flights"] = flights.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    if (groupType != null) {
 | 
| +      _json["groupType"] = groupType;
 | 
| +    }
 | 
| +    if (pricingType != null) {
 | 
| +      _json["pricingType"] = pricingType;
 | 
| +    }
 | 
| +    if (startDate != null) {
 | 
| +      _json["startDate"] = "${(startDate).year.toString().padLeft(4, '0')}-${(startDate).month.toString().padLeft(2, '0')}-${(startDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  /** Pricing Schedule */
 | 
|  class PricingSchedule {
 | 
|    /**
 | 
| @@ -20293,82 +23005,328 @@ class PricingSchedulePricingPeriod {
 | 
|      if (endDate != null) {
 | 
|        _json["endDate"] = "${(endDate).year.toString().padLeft(4, '0')}-${(endDate).month.toString().padLeft(2, '0')}-${(endDate).day.toString().padLeft(2, '0')}";
 | 
|      }
 | 
| -    if (pricingComment != null) {
 | 
| -      _json["pricingComment"] = pricingComment;
 | 
| +    if (pricingComment != null) {
 | 
| +      _json["pricingComment"] = pricingComment;
 | 
| +    }
 | 
| +    if (rateOrCostNanos != null) {
 | 
| +      _json["rateOrCostNanos"] = rateOrCostNanos;
 | 
| +    }
 | 
| +    if (startDate != null) {
 | 
| +      _json["startDate"] = "${(startDate).year.toString().padLeft(4, '0')}-${(startDate).month.toString().padLeft(2, '0')}-${(startDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (units != null) {
 | 
| +      _json["units"] = units;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Programmatic Setting */
 | 
| +class ProgrammaticSetting {
 | 
| +  /** Adx deal IDs assigned to the placement. */
 | 
| +  core.List<core.String> adxDealIds;
 | 
| +  /** Insertion order ID. */
 | 
| +  core.String insertionOrderId;
 | 
| +  /**
 | 
| +   * Whether insertion order ID has been placed in DFP. This is a read-only
 | 
| +   * field.
 | 
| +   */
 | 
| +  core.bool insertionOrderIdStatus;
 | 
| +  /** Media cost for the programmatic placement. */
 | 
| +  core.String mediaCostNanos;
 | 
| +  /** Whether programmatic is enabled. */
 | 
| +  core.bool programmatic;
 | 
| +  /** Trafficker emails assigned to the placement. */
 | 
| +  core.List<core.String> traffickerEmails;
 | 
| +
 | 
| +  ProgrammaticSetting();
 | 
| +
 | 
| +  ProgrammaticSetting.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("adxDealIds")) {
 | 
| +      adxDealIds = _json["adxDealIds"];
 | 
| +    }
 | 
| +    if (_json.containsKey("insertionOrderId")) {
 | 
| +      insertionOrderId = _json["insertionOrderId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("insertionOrderIdStatus")) {
 | 
| +      insertionOrderIdStatus = _json["insertionOrderIdStatus"];
 | 
| +    }
 | 
| +    if (_json.containsKey("mediaCostNanos")) {
 | 
| +      mediaCostNanos = _json["mediaCostNanos"];
 | 
| +    }
 | 
| +    if (_json.containsKey("programmatic")) {
 | 
| +      programmatic = _json["programmatic"];
 | 
| +    }
 | 
| +    if (_json.containsKey("traffickerEmails")) {
 | 
| +      traffickerEmails = _json["traffickerEmails"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (adxDealIds != null) {
 | 
| +      _json["adxDealIds"] = adxDealIds;
 | 
| +    }
 | 
| +    if (insertionOrderId != null) {
 | 
| +      _json["insertionOrderId"] = insertionOrderId;
 | 
| +    }
 | 
| +    if (insertionOrderIdStatus != null) {
 | 
| +      _json["insertionOrderIdStatus"] = insertionOrderIdStatus;
 | 
| +    }
 | 
| +    if (mediaCostNanos != null) {
 | 
| +      _json["mediaCostNanos"] = mediaCostNanos;
 | 
| +    }
 | 
| +    if (programmatic != null) {
 | 
| +      _json["programmatic"] = programmatic;
 | 
| +    }
 | 
| +    if (traffickerEmails != null) {
 | 
| +      _json["traffickerEmails"] = traffickerEmails;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Contains properties of a DoubleClick Planning project. */
 | 
| +class Project {
 | 
| +  /** Account ID of this project. */
 | 
| +  core.String accountId;
 | 
| +  /** Advertiser ID of this project. */
 | 
| +  core.String advertiserId;
 | 
| +  /**
 | 
| +   * Audience age group of this project.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_AUDIENCE_AGE_18_24"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_25_34"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_35_44"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_45_54"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_55_64"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_65_OR_MORE"
 | 
| +   * - "PLANNING_AUDIENCE_AGE_UNKNOWN"
 | 
| +   */
 | 
| +  core.String audienceAgeGroup;
 | 
| +  /**
 | 
| +   * Audience gender of this project.
 | 
| +   * Possible string values are:
 | 
| +   * - "PLANNING_AUDIENCE_GENDER_FEMALE"
 | 
| +   * - "PLANNING_AUDIENCE_GENDER_MALE"
 | 
| +   */
 | 
| +  core.String audienceGender;
 | 
| +  /**
 | 
| +   * Budget of this project in the currency specified by the current account.
 | 
| +   * The value stored in this field represents only the non-fractional amount.
 | 
| +   * For example, for USD, the smallest value that can be represented by this
 | 
| +   * field is 1 US dollar.
 | 
| +   */
 | 
| +  core.String budget;
 | 
| +  /** Client billing code of this project. */
 | 
| +  core.String clientBillingCode;
 | 
| +  /** Name of the project client. */
 | 
| +  core.String clientName;
 | 
| +  /** End date of the project. */
 | 
| +  core.DateTime endDate;
 | 
| +  /** ID of this project. This is a read-only, auto-generated field. */
 | 
| +  core.String id;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#project".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Information about the most recent modification of this project. */
 | 
| +  LastModifiedInfo lastModifiedInfo;
 | 
| +  /** Name of this project. */
 | 
| +  core.String name;
 | 
| +  /** Overview of this project. */
 | 
| +  core.String overview;
 | 
| +  /** Start date of the project. */
 | 
| +  core.DateTime startDate;
 | 
| +  /** Subaccount ID of this project. */
 | 
| +  core.String subaccountId;
 | 
| +  /** Number of clicks that the advertiser is targeting. */
 | 
| +  core.String targetClicks;
 | 
| +  /** Number of conversions that the advertiser is targeting. */
 | 
| +  core.String targetConversions;
 | 
| +  /** CPA that the advertiser is targeting. */
 | 
| +  core.String targetCpaNanos;
 | 
| +  /** CPC that the advertiser is targeting. */
 | 
| +  core.String targetCpcNanos;
 | 
| +  /** CPM that the advertiser is targeting. */
 | 
| +  core.String targetCpmNanos;
 | 
| +  /** Number of impressions that the advertiser is targeting. */
 | 
| +  core.String targetImpressions;
 | 
| +
 | 
| +  Project();
 | 
| +
 | 
| +  Project.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("audienceAgeGroup")) {
 | 
| +      audienceAgeGroup = _json["audienceAgeGroup"];
 | 
| +    }
 | 
| +    if (_json.containsKey("audienceGender")) {
 | 
| +      audienceGender = _json["audienceGender"];
 | 
| +    }
 | 
| +    if (_json.containsKey("budget")) {
 | 
| +      budget = _json["budget"];
 | 
| +    }
 | 
| +    if (_json.containsKey("clientBillingCode")) {
 | 
| +      clientBillingCode = _json["clientBillingCode"];
 | 
| +    }
 | 
| +    if (_json.containsKey("clientName")) {
 | 
| +      clientName = _json["clientName"];
 | 
| +    }
 | 
| +    if (_json.containsKey("endDate")) {
 | 
| +      endDate = core.DateTime.parse(_json["endDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("lastModifiedInfo")) {
 | 
| +      lastModifiedInfo = new LastModifiedInfo.fromJson(_json["lastModifiedInfo"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("overview")) {
 | 
| +      overview = _json["overview"];
 | 
| +    }
 | 
| +    if (_json.containsKey("startDate")) {
 | 
| +      startDate = core.DateTime.parse(_json["startDate"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetClicks")) {
 | 
| +      targetClicks = _json["targetClicks"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetConversions")) {
 | 
| +      targetConversions = _json["targetConversions"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetCpaNanos")) {
 | 
| +      targetCpaNanos = _json["targetCpaNanos"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetCpcNanos")) {
 | 
| +      targetCpcNanos = _json["targetCpcNanos"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetCpmNanos")) {
 | 
| +      targetCpmNanos = _json["targetCpmNanos"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetImpressions")) {
 | 
| +      targetImpressions = _json["targetImpressions"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
| +    }
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (audienceAgeGroup != null) {
 | 
| +      _json["audienceAgeGroup"] = audienceAgeGroup;
 | 
| +    }
 | 
| +    if (audienceGender != null) {
 | 
| +      _json["audienceGender"] = audienceGender;
 | 
| +    }
 | 
| +    if (budget != null) {
 | 
| +      _json["budget"] = budget;
 | 
| +    }
 | 
| +    if (clientBillingCode != null) {
 | 
| +      _json["clientBillingCode"] = clientBillingCode;
 | 
| +    }
 | 
| +    if (clientName != null) {
 | 
| +      _json["clientName"] = clientName;
 | 
| +    }
 | 
| +    if (endDate != null) {
 | 
| +      _json["endDate"] = "${(endDate).year.toString().padLeft(4, '0')}-${(endDate).month.toString().padLeft(2, '0')}-${(endDate).day.toString().padLeft(2, '0')}";
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
|      }
 | 
| -    if (rateOrCostNanos != null) {
 | 
| -      _json["rateOrCostNanos"] = rateOrCostNanos;
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (lastModifiedInfo != null) {
 | 
| +      _json["lastModifiedInfo"] = (lastModifiedInfo).toJson();
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (overview != null) {
 | 
| +      _json["overview"] = overview;
 | 
|      }
 | 
|      if (startDate != null) {
 | 
|        _json["startDate"] = "${(startDate).year.toString().padLeft(4, '0')}-${(startDate).month.toString().padLeft(2, '0')}-${(startDate).day.toString().padLeft(2, '0')}";
 | 
|      }
 | 
| -    if (units != null) {
 | 
| -      _json["units"] = units;
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
| +    if (targetClicks != null) {
 | 
| +      _json["targetClicks"] = targetClicks;
 | 
| +    }
 | 
| +    if (targetConversions != null) {
 | 
| +      _json["targetConversions"] = targetConversions;
 | 
| +    }
 | 
| +    if (targetCpaNanos != null) {
 | 
| +      _json["targetCpaNanos"] = targetCpaNanos;
 | 
| +    }
 | 
| +    if (targetCpcNanos != null) {
 | 
| +      _json["targetCpcNanos"] = targetCpcNanos;
 | 
| +    }
 | 
| +    if (targetCpmNanos != null) {
 | 
| +      _json["targetCpmNanos"] = targetCpmNanos;
 | 
| +    }
 | 
| +    if (targetImpressions != null) {
 | 
| +      _json["targetImpressions"] = targetImpressions;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Programmatic Setting */
 | 
| -class ProgrammaticSetting {
 | 
| -  /** Adx deal IDs assigned to the placement. */
 | 
| -  core.List<core.String> adxDealIds;
 | 
| -  /** Insertion order ID. */
 | 
| -  core.String insertionOrderId;
 | 
| +/** Project List Response */
 | 
| +class ProjectsListResponse {
 | 
|    /**
 | 
| -   * Whether insertion order ID has been placed in DFP. This is a read-only
 | 
| -   * field.
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#projectsListResponse".
 | 
|     */
 | 
| -  core.bool insertionOrderIdStatus;
 | 
| -  /** Media cost for the programmatic placement. */
 | 
| -  core.String mediaCostNanos;
 | 
| -  /** Whether programmatic is enabled. */
 | 
| -  core.bool programmatic;
 | 
| -  /** Trafficker emails assigned to the placement. */
 | 
| -  core.List<core.String> traffickerEmails;
 | 
| +  core.String kind;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +  /** Project collection. */
 | 
| +  core.List<Project> projects;
 | 
|  
 | 
| -  ProgrammaticSetting();
 | 
| +  ProjectsListResponse();
 | 
|  
 | 
| -  ProgrammaticSetting.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("adxDealIds")) {
 | 
| -      adxDealIds = _json["adxDealIds"];
 | 
| -    }
 | 
| -    if (_json.containsKey("insertionOrderId")) {
 | 
| -      insertionOrderId = _json["insertionOrderId"];
 | 
| -    }
 | 
| -    if (_json.containsKey("insertionOrderIdStatus")) {
 | 
| -      insertionOrderIdStatus = _json["insertionOrderIdStatus"];
 | 
| -    }
 | 
| -    if (_json.containsKey("mediaCostNanos")) {
 | 
| -      mediaCostNanos = _json["mediaCostNanos"];
 | 
| +  ProjectsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("programmatic")) {
 | 
| -      programmatic = _json["programmatic"];
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
|      }
 | 
| -    if (_json.containsKey("traffickerEmails")) {
 | 
| -      traffickerEmails = _json["traffickerEmails"];
 | 
| +    if (_json.containsKey("projects")) {
 | 
| +      projects = _json["projects"].map((value) => new Project.fromJson(value)).toList();
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (adxDealIds != null) {
 | 
| -      _json["adxDealIds"] = adxDealIds;
 | 
| -    }
 | 
| -    if (insertionOrderId != null) {
 | 
| -      _json["insertionOrderId"] = insertionOrderId;
 | 
| -    }
 | 
| -    if (insertionOrderIdStatus != null) {
 | 
| -      _json["insertionOrderIdStatus"] = insertionOrderIdStatus;
 | 
| -    }
 | 
| -    if (mediaCostNanos != null) {
 | 
| -      _json["mediaCostNanos"] = mediaCostNanos;
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
|      }
 | 
| -    if (programmatic != null) {
 | 
| -      _json["programmatic"] = programmatic;
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
|      }
 | 
| -    if (traffickerEmails != null) {
 | 
| -      _json["traffickerEmails"] = traffickerEmails;
 | 
| +    if (projects != null) {
 | 
| +      _json["projects"] = projects.map((value) => (value).toJson()).toList();
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
| @@ -20477,112 +23435,358 @@ class Recipient {
 | 
|      if (_json.containsKey("deliveryType")) {
 | 
|        deliveryType = _json["deliveryType"];
 | 
|      }
 | 
| -    if (_json.containsKey("email")) {
 | 
| -      email = _json["email"];
 | 
| +    if (_json.containsKey("email")) {
 | 
| +      email = _json["email"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (deliveryType != null) {
 | 
| +      _json["deliveryType"] = deliveryType;
 | 
| +    }
 | 
| +    if (email != null) {
 | 
| +      _json["email"] = email;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Contains information about a region that can be targeted by ads. */
 | 
| +class Region {
 | 
| +  /** Country code of the country to which this region belongs. */
 | 
| +  core.String countryCode;
 | 
| +  /** DART ID of the country to which this region belongs. */
 | 
| +  core.String countryDartId;
 | 
| +  /** DART ID of this region. */
 | 
| +  core.String dartId;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#region".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Name of this region. */
 | 
| +  core.String name;
 | 
| +  /** Region code. */
 | 
| +  core.String regionCode;
 | 
| +
 | 
| +  Region();
 | 
| +
 | 
| +  Region.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("countryCode")) {
 | 
| +      countryCode = _json["countryCode"];
 | 
| +    }
 | 
| +    if (_json.containsKey("countryDartId")) {
 | 
| +      countryDartId = _json["countryDartId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("dartId")) {
 | 
| +      dartId = _json["dartId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("regionCode")) {
 | 
| +      regionCode = _json["regionCode"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (countryCode != null) {
 | 
| +      _json["countryCode"] = countryCode;
 | 
| +    }
 | 
| +    if (countryDartId != null) {
 | 
| +      _json["countryDartId"] = countryDartId;
 | 
| +    }
 | 
| +    if (dartId != null) {
 | 
| +      _json["dartId"] = dartId;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (regionCode != null) {
 | 
| +      _json["regionCode"] = regionCode;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Region List Response */
 | 
| +class RegionsListResponse {
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#regionsListResponse".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Region collection. */
 | 
| +  core.List<Region> regions;
 | 
| +
 | 
| +  RegionsListResponse();
 | 
| +
 | 
| +  RegionsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("regions")) {
 | 
| +      regions = _json["regions"].map((value) => new Region.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (regions != null) {
 | 
| +      _json["regions"] = regions.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/**
 | 
| + * Contains properties of a remarketing list. Remarketing enables you to create
 | 
| + * lists of users who have performed specific actions on a site, then target ads
 | 
| + * to members of those lists. This resource can be used to manage remarketing
 | 
| + * lists that are owned by your advertisers. To see all remarketing lists that
 | 
| + * are visible to your advertisers, including those that are shared to your
 | 
| + * advertiser or account, use the TargetableRemarketingLists resource.
 | 
| + */
 | 
| +class RemarketingList {
 | 
| +  /**
 | 
| +   * Account ID of this remarketing list. This is a read-only, auto-generated
 | 
| +   * field that is only returned in GET requests.
 | 
| +   */
 | 
| +  core.String accountId;
 | 
| +  /** Whether this remarketing list is active. */
 | 
| +  core.bool active;
 | 
| +  /**
 | 
| +   * Dimension value for the advertiser ID that owns this remarketing list. This
 | 
| +   * is a required field.
 | 
| +   */
 | 
| +  core.String advertiserId;
 | 
| +  /**
 | 
| +   * Dimension value for the ID of the advertiser. This is a read-only,
 | 
| +   * auto-generated field.
 | 
| +   */
 | 
| +  DimensionValue advertiserIdDimensionValue;
 | 
| +  /** Remarketing list description. */
 | 
| +  core.String description;
 | 
| +  /** Remarketing list ID. This is a read-only, auto-generated field. */
 | 
| +  core.String id;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#remarketingList".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /**
 | 
| +   * Number of days that a user should remain in the remarketing list without an
 | 
| +   * impression.
 | 
| +   */
 | 
| +  core.String lifeSpan;
 | 
| +  /** Rule used to populate the remarketing list with users. */
 | 
| +  ListPopulationRule listPopulationRule;
 | 
| +  /** Number of users currently in the list. This is a read-only field. */
 | 
| +  core.String listSize;
 | 
| +  /**
 | 
| +   * Product from which this remarketing list was originated.
 | 
| +   * Possible string values are:
 | 
| +   * - "REMARKETING_LIST_SOURCE_DBM"
 | 
| +   * - "REMARKETING_LIST_SOURCE_DFA"
 | 
| +   * - "REMARKETING_LIST_SOURCE_DMP"
 | 
| +   * - "REMARKETING_LIST_SOURCE_GA"
 | 
| +   * - "REMARKETING_LIST_SOURCE_OTHER"
 | 
| +   */
 | 
| +  core.String listSource;
 | 
| +  /**
 | 
| +   * Name of the remarketing list. This is a required field. Must be no greater
 | 
| +   * than 128 characters long.
 | 
| +   */
 | 
| +  core.String name;
 | 
| +  /**
 | 
| +   * Subaccount ID of this remarketing list. This is a read-only, auto-generated
 | 
| +   * field that is only returned in GET requests.
 | 
| +   */
 | 
| +  core.String subaccountId;
 | 
| +
 | 
| +  RemarketingList();
 | 
| +
 | 
| +  RemarketingList.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("active")) {
 | 
| +      active = _json["active"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserIdDimensionValue")) {
 | 
| +      advertiserIdDimensionValue = new DimensionValue.fromJson(_json["advertiserIdDimensionValue"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("description")) {
 | 
| +      description = _json["description"];
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
|      }
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| +    if (_json.containsKey("lifeSpan")) {
 | 
| +      lifeSpan = _json["lifeSpan"];
 | 
| +    }
 | 
| +    if (_json.containsKey("listPopulationRule")) {
 | 
| +      listPopulationRule = new ListPopulationRule.fromJson(_json["listPopulationRule"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("listSize")) {
 | 
| +      listSize = _json["listSize"];
 | 
| +    }
 | 
| +    if (_json.containsKey("listSource")) {
 | 
| +      listSource = _json["listSource"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (deliveryType != null) {
 | 
| -      _json["deliveryType"] = deliveryType;
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
|      }
 | 
| -    if (email != null) {
 | 
| -      _json["email"] = email;
 | 
| +    if (active != null) {
 | 
| +      _json["active"] = active;
 | 
| +    }
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (advertiserIdDimensionValue != null) {
 | 
| +      _json["advertiserIdDimensionValue"] = (advertiserIdDimensionValue).toJson();
 | 
| +    }
 | 
| +    if (description != null) {
 | 
| +      _json["description"] = description;
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
|      }
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| +    if (lifeSpan != null) {
 | 
| +      _json["lifeSpan"] = lifeSpan;
 | 
| +    }
 | 
| +    if (listPopulationRule != null) {
 | 
| +      _json["listPopulationRule"] = (listPopulationRule).toJson();
 | 
| +    }
 | 
| +    if (listSize != null) {
 | 
| +      _json["listSize"] = listSize;
 | 
| +    }
 | 
| +    if (listSource != null) {
 | 
| +      _json["listSource"] = listSource;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Contains information about a region that can be targeted by ads. */
 | 
| -class Region {
 | 
| -  /** Country code of the country to which this region belongs. */
 | 
| -  core.String countryCode;
 | 
| -  /** DART ID of the country to which this region belongs. */
 | 
| -  core.String countryDartId;
 | 
| -  /** DART ID of this region. */
 | 
| -  core.String dartId;
 | 
| +/**
 | 
| + * Contains properties of a remarketing list's sharing information. Sharing
 | 
| + * allows other accounts or advertisers to target to your remarketing lists.
 | 
| + * This resource can be used to manage remarketing list sharing to other
 | 
| + * accounts and advertisers.
 | 
| + */
 | 
| +class RemarketingListShare {
 | 
|    /**
 | 
|     * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#region".
 | 
| +   * "dfareporting#remarketingListShare".
 | 
|     */
 | 
|    core.String kind;
 | 
| -  /** Name of this region. */
 | 
| -  core.String name;
 | 
| -  /** Region code. */
 | 
| -  core.String regionCode;
 | 
| +  /** Remarketing list ID. This is a read-only, auto-generated field. */
 | 
| +  core.String remarketingListId;
 | 
| +  /** Accounts that the remarketing list is shared with. */
 | 
| +  core.List<core.String> sharedAccountIds;
 | 
| +  /** Advertisers that the remarketing list is shared with. */
 | 
| +  core.List<core.String> sharedAdvertiserIds;
 | 
|  
 | 
| -  Region();
 | 
| +  RemarketingListShare();
 | 
|  
 | 
| -  Region.fromJson(core.Map _json) {
 | 
| -    if (_json.containsKey("countryCode")) {
 | 
| -      countryCode = _json["countryCode"];
 | 
| -    }
 | 
| -    if (_json.containsKey("countryDartId")) {
 | 
| -      countryDartId = _json["countryDartId"];
 | 
| -    }
 | 
| -    if (_json.containsKey("dartId")) {
 | 
| -      dartId = _json["dartId"];
 | 
| -    }
 | 
| +  RemarketingListShare.fromJson(core.Map _json) {
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("name")) {
 | 
| -      name = _json["name"];
 | 
| +    if (_json.containsKey("remarketingListId")) {
 | 
| +      remarketingListId = _json["remarketingListId"];
 | 
|      }
 | 
| -    if (_json.containsKey("regionCode")) {
 | 
| -      regionCode = _json["regionCode"];
 | 
| +    if (_json.containsKey("sharedAccountIds")) {
 | 
| +      sharedAccountIds = _json["sharedAccountIds"];
 | 
| +    }
 | 
| +    if (_json.containsKey("sharedAdvertiserIds")) {
 | 
| +      sharedAdvertiserIds = _json["sharedAdvertiserIds"];
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| -    if (countryCode != null) {
 | 
| -      _json["countryCode"] = countryCode;
 | 
| -    }
 | 
| -    if (countryDartId != null) {
 | 
| -      _json["countryDartId"] = countryDartId;
 | 
| -    }
 | 
| -    if (dartId != null) {
 | 
| -      _json["dartId"] = dartId;
 | 
| -    }
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| -    if (name != null) {
 | 
| -      _json["name"] = name;
 | 
| +    if (remarketingListId != null) {
 | 
| +      _json["remarketingListId"] = remarketingListId;
 | 
|      }
 | 
| -    if (regionCode != null) {
 | 
| -      _json["regionCode"] = regionCode;
 | 
| +    if (sharedAccountIds != null) {
 | 
| +      _json["sharedAccountIds"] = sharedAccountIds;
 | 
| +    }
 | 
| +    if (sharedAdvertiserIds != null) {
 | 
| +      _json["sharedAdvertiserIds"] = sharedAdvertiserIds;
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -/** Region List Response */
 | 
| -class RegionsListResponse {
 | 
| +/** Remarketing list response */
 | 
| +class RemarketingListsListResponse {
 | 
|    /**
 | 
|     * Identifies what kind of resource this is. Value: the fixed string
 | 
| -   * "dfareporting#regionsListResponse".
 | 
| +   * "dfareporting#remarketingListsListResponse".
 | 
|     */
 | 
|    core.String kind;
 | 
| -  /** Region collection. */
 | 
| -  core.List<Region> regions;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +  /** Remarketing list collection. */
 | 
| +  core.List<RemarketingList> remarketingLists;
 | 
|  
 | 
| -  RegionsListResponse();
 | 
| +  RemarketingListsListResponse();
 | 
|  
 | 
| -  RegionsListResponse.fromJson(core.Map _json) {
 | 
| +  RemarketingListsListResponse.fromJson(core.Map _json) {
 | 
|      if (_json.containsKey("kind")) {
 | 
|        kind = _json["kind"];
 | 
|      }
 | 
| -    if (_json.containsKey("regions")) {
 | 
| -      regions = _json["regions"].map((value) => new Region.fromJson(value)).toList();
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
| +    }
 | 
| +    if (_json.containsKey("remarketingLists")) {
 | 
| +      remarketingLists = _json["remarketingLists"].map((value) => new RemarketingList.fromJson(value)).toList();
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -20591,8 +23795,11 @@ class RegionsListResponse {
 | 
|      if (kind != null) {
 | 
|        _json["kind"] = kind;
 | 
|      }
 | 
| -    if (regions != null) {
 | 
| -      _json["regions"] = regions.map((value) => (value).toJson()).toList();
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
| +    }
 | 
| +    if (remarketingLists != null) {
 | 
| +      _json["remarketingLists"] = remarketingLists.map((value) => (value).toJson()).toList();
 | 
|      }
 | 
|      return _json;
 | 
|    }
 | 
| @@ -21845,6 +25052,8 @@ class Site {
 | 
|  
 | 
|  /** Site Contact */
 | 
|  class SiteContact {
 | 
| +  /** Address of this site contact. */
 | 
| +  core.String address;
 | 
|    /**
 | 
|     * Site contact type.
 | 
|     * Possible string values are:
 | 
| @@ -21860,10 +25069,17 @@ class SiteContact {
 | 
|    core.String id;
 | 
|    /** Last name of this site contact. */
 | 
|    core.String lastName;
 | 
| +  /** Primary phone number of this site contact. */
 | 
| +  core.String phone;
 | 
| +  /** Title or designation of this site contact. */
 | 
| +  core.String title;
 | 
|  
 | 
|    SiteContact();
 | 
|  
 | 
|    SiteContact.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("address")) {
 | 
| +      address = _json["address"];
 | 
| +    }
 | 
|      if (_json.containsKey("contactType")) {
 | 
|        contactType = _json["contactType"];
 | 
|      }
 | 
| @@ -21879,10 +25095,19 @@ class SiteContact {
 | 
|      if (_json.containsKey("lastName")) {
 | 
|        lastName = _json["lastName"];
 | 
|      }
 | 
| +    if (_json.containsKey("phone")) {
 | 
| +      phone = _json["phone"];
 | 
| +    }
 | 
| +    if (_json.containsKey("title")) {
 | 
| +      title = _json["title"];
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    core.Map toJson() {
 | 
|      var _json = new core.Map();
 | 
| +    if (address != null) {
 | 
| +      _json["address"] = address;
 | 
| +    }
 | 
|      if (contactType != null) {
 | 
|        _json["contactType"] = contactType;
 | 
|      }
 | 
| @@ -21898,6 +25123,12 @@ class SiteContact {
 | 
|      if (lastName != null) {
 | 
|        _json["lastName"] = lastName;
 | 
|      }
 | 
| +    if (phone != null) {
 | 
| +      _json["phone"] = phone;
 | 
| +    }
 | 
| +    if (title != null) {
 | 
| +      _json["title"] = title;
 | 
| +    }
 | 
|      return _json;
 | 
|    }
 | 
|  }
 | 
| @@ -21973,7 +25204,7 @@ class SitesListResponse {
 | 
|    core.String kind;
 | 
|    /** Pagination token to be used for the next list operation. */
 | 
|    core.String nextPageToken;
 | 
| -  /** Site collection */
 | 
| +  /** Site collection. */
 | 
|    core.List<Site> sites;
 | 
|  
 | 
|    SitesListResponse();
 | 
| @@ -22260,12 +25491,17 @@ class TagData {
 | 
|     * - "PLACEMENT_TAG_CLICK_COMMANDS"
 | 
|     * - "PLACEMENT_TAG_IFRAME_ILAYER"
 | 
|     * - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
 | 
| +   * - "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY"
 | 
|     * - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
 | 
| +   * - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3"
 | 
|     * - "PLACEMENT_TAG_INTERNAL_REDIRECT"
 | 
|     * - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
 | 
| +   * - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY"
 | 
|     * - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
 | 
|     * - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
 | 
| +   * - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY"
 | 
|     * - "PLACEMENT_TAG_JAVASCRIPT"
 | 
| +   * - "PLACEMENT_TAG_JAVASCRIPT_LEGACY"
 | 
|     * - "PLACEMENT_TAG_STANDARD"
 | 
|     * - "PLACEMENT_TAG_TRACKING"
 | 
|     * - "PLACEMENT_TAG_TRACKING_IFRAME"
 | 
| @@ -22445,6 +25681,192 @@ class TargetWindow {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +/**
 | 
| + * Contains properties of a targetable remarketing list. Remarketing enables you
 | 
| + * to create lists of users who have performed specific actions on a site, then
 | 
| + * target ads to members of those lists. This resource is a read-only view of a
 | 
| + * remarketing list to be used to faciliate targeting ads to specific lists.
 | 
| + * Remarketing lists that are owned by your advertisers and those that are
 | 
| + * shared to your advertisers or account are accessible via this resource. To
 | 
| + * manage remarketing lists that are owned by your advertisers, use the
 | 
| + * RemarketingLists resource.
 | 
| + */
 | 
| +class TargetableRemarketingList {
 | 
| +  /**
 | 
| +   * Account ID of this remarketing list. This is a read-only, auto-generated
 | 
| +   * field that is only returned in GET requests.
 | 
| +   */
 | 
| +  core.String accountId;
 | 
| +  /** Whether this targetable remarketing list is active. */
 | 
| +  core.bool active;
 | 
| +  /**
 | 
| +   * Dimension value for the advertiser ID that owns this targetable remarketing
 | 
| +   * list.
 | 
| +   */
 | 
| +  core.String advertiserId;
 | 
| +  /** Dimension value for the ID of the advertiser. */
 | 
| +  DimensionValue advertiserIdDimensionValue;
 | 
| +  /** Targetable remarketing list description. */
 | 
| +  core.String description;
 | 
| +  /** Targetable remarketing list ID. */
 | 
| +  core.String id;
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#targetableRemarketingList".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /**
 | 
| +   * Number of days that a user should remain in the targetable remarketing list
 | 
| +   * without an impression.
 | 
| +   */
 | 
| +  core.String lifeSpan;
 | 
| +  /** Number of users currently in the list. This is a read-only field. */
 | 
| +  core.String listSize;
 | 
| +  /**
 | 
| +   * Product from which this targetable remarketing list was originated.
 | 
| +   * Possible string values are:
 | 
| +   * - "REMARKETING_LIST_SOURCE_DBM"
 | 
| +   * - "REMARKETING_LIST_SOURCE_DFA"
 | 
| +   * - "REMARKETING_LIST_SOURCE_DMP"
 | 
| +   * - "REMARKETING_LIST_SOURCE_GA"
 | 
| +   * - "REMARKETING_LIST_SOURCE_OTHER"
 | 
| +   */
 | 
| +  core.String listSource;
 | 
| +  /**
 | 
| +   * Name of the targetable remarketing list. Is no greater than 128 characters
 | 
| +   * long.
 | 
| +   */
 | 
| +  core.String name;
 | 
| +  /**
 | 
| +   * Subaccount ID of this remarketing list. This is a read-only, auto-generated
 | 
| +   * field that is only returned in GET requests.
 | 
| +   */
 | 
| +  core.String subaccountId;
 | 
| +
 | 
| +  TargetableRemarketingList();
 | 
| +
 | 
| +  TargetableRemarketingList.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("accountId")) {
 | 
| +      accountId = _json["accountId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("active")) {
 | 
| +      active = _json["active"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserId")) {
 | 
| +      advertiserId = _json["advertiserId"];
 | 
| +    }
 | 
| +    if (_json.containsKey("advertiserIdDimensionValue")) {
 | 
| +      advertiserIdDimensionValue = new DimensionValue.fromJson(_json["advertiserIdDimensionValue"]);
 | 
| +    }
 | 
| +    if (_json.containsKey("description")) {
 | 
| +      description = _json["description"];
 | 
| +    }
 | 
| +    if (_json.containsKey("id")) {
 | 
| +      id = _json["id"];
 | 
| +    }
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("lifeSpan")) {
 | 
| +      lifeSpan = _json["lifeSpan"];
 | 
| +    }
 | 
| +    if (_json.containsKey("listSize")) {
 | 
| +      listSize = _json["listSize"];
 | 
| +    }
 | 
| +    if (_json.containsKey("listSource")) {
 | 
| +      listSource = _json["listSource"];
 | 
| +    }
 | 
| +    if (_json.containsKey("name")) {
 | 
| +      name = _json["name"];
 | 
| +    }
 | 
| +    if (_json.containsKey("subaccountId")) {
 | 
| +      subaccountId = _json["subaccountId"];
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (accountId != null) {
 | 
| +      _json["accountId"] = accountId;
 | 
| +    }
 | 
| +    if (active != null) {
 | 
| +      _json["active"] = active;
 | 
| +    }
 | 
| +    if (advertiserId != null) {
 | 
| +      _json["advertiserId"] = advertiserId;
 | 
| +    }
 | 
| +    if (advertiserIdDimensionValue != null) {
 | 
| +      _json["advertiserIdDimensionValue"] = (advertiserIdDimensionValue).toJson();
 | 
| +    }
 | 
| +    if (description != null) {
 | 
| +      _json["description"] = description;
 | 
| +    }
 | 
| +    if (id != null) {
 | 
| +      _json["id"] = id;
 | 
| +    }
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (lifeSpan != null) {
 | 
| +      _json["lifeSpan"] = lifeSpan;
 | 
| +    }
 | 
| +    if (listSize != null) {
 | 
| +      _json["listSize"] = listSize;
 | 
| +    }
 | 
| +    if (listSource != null) {
 | 
| +      _json["listSource"] = listSource;
 | 
| +    }
 | 
| +    if (name != null) {
 | 
| +      _json["name"] = name;
 | 
| +    }
 | 
| +    if (subaccountId != null) {
 | 
| +      _json["subaccountId"] = subaccountId;
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +/** Targetable remarketing list response */
 | 
| +class TargetableRemarketingListsListResponse {
 | 
| +  /**
 | 
| +   * Identifies what kind of resource this is. Value: the fixed string
 | 
| +   * "dfareporting#targetableRemarketingListsListResponse".
 | 
| +   */
 | 
| +  core.String kind;
 | 
| +  /** Pagination token to be used for the next list operation. */
 | 
| +  core.String nextPageToken;
 | 
| +  /** Targetable remarketing list collection. */
 | 
| +  core.List<TargetableRemarketingList> targetableRemarketingLists;
 | 
| +
 | 
| +  TargetableRemarketingListsListResponse();
 | 
| +
 | 
| +  TargetableRemarketingListsListResponse.fromJson(core.Map _json) {
 | 
| +    if (_json.containsKey("kind")) {
 | 
| +      kind = _json["kind"];
 | 
| +    }
 | 
| +    if (_json.containsKey("nextPageToken")) {
 | 
| +      nextPageToken = _json["nextPageToken"];
 | 
| +    }
 | 
| +    if (_json.containsKey("targetableRemarketingLists")) {
 | 
| +      targetableRemarketingLists = _json["targetableRemarketingLists"].map((value) => new TargetableRemarketingList.fromJson(value)).toList();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  core.Map toJson() {
 | 
| +    var _json = new core.Map();
 | 
| +    if (kind != null) {
 | 
| +      _json["kind"] = kind;
 | 
| +    }
 | 
| +    if (nextPageToken != null) {
 | 
| +      _json["nextPageToken"] = nextPageToken;
 | 
| +    }
 | 
| +    if (targetableRemarketingLists != null) {
 | 
| +      _json["targetableRemarketingLists"] = targetableRemarketingLists.map((value) => (value).toJson()).toList();
 | 
| +    }
 | 
| +    return _json;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  /** Technology Targeting. */
 | 
|  class TechnologyTargeting {
 | 
|    /**
 | 
| @@ -22607,7 +26029,6 @@ class UserDefinedVariableConfiguration {
 | 
|     * Possible string values are:
 | 
|     * - "U1"
 | 
|     * - "U10"
 | 
| -   * - "U100"
 | 
|     * - "U11"
 | 
|     * - "U12"
 | 
|     * - "U13"
 | 
| @@ -22619,92 +26040,13 @@ class UserDefinedVariableConfiguration {
 | 
|     * - "U19"
 | 
|     * - "U2"
 | 
|     * - "U20"
 | 
| -   * - "U21"
 | 
| -   * - "U22"
 | 
| -   * - "U23"
 | 
| -   * - "U24"
 | 
| -   * - "U25"
 | 
| -   * - "U26"
 | 
| -   * - "U27"
 | 
| -   * - "U28"
 | 
| -   * - "U29"
 | 
|     * - "U3"
 | 
| -   * - "U30"
 | 
| -   * - "U31"
 | 
| -   * - "U32"
 | 
| -   * - "U33"
 | 
| -   * - "U34"
 | 
| -   * - "U35"
 | 
| -   * - "U36"
 | 
| -   * - "U37"
 | 
| -   * - "U38"
 | 
| -   * - "U39"
 | 
|     * - "U4"
 | 
| -   * - "U40"
 | 
| -   * - "U41"
 | 
| -   * - "U42"
 | 
| -   * - "U43"
 | 
| -   * - "U44"
 | 
| -   * - "U45"
 | 
| -   * - "U46"
 | 
| -   * - "U47"
 | 
| -   * - "U48"
 | 
| -   * - "U49"
 | 
|     * - "U5"
 | 
| -   * - "U50"
 | 
| -   * - "U51"
 | 
| -   * - "U52"
 | 
| -   * - "U53"
 | 
| -   * - "U54"
 | 
| -   * - "U55"
 | 
| -   * - "U56"
 | 
| -   * - "U57"
 | 
| -   * - "U58"
 | 
| -   * - "U59"
 | 
|     * - "U6"
 | 
| -   * - "U60"
 | 
| -   * - "U61"
 | 
| -   * - "U62"
 | 
| -   * - "U63"
 | 
| -   * - "U64"
 | 
| -   * - "U65"
 | 
| -   * - "U66"
 | 
| -   * - "U67"
 | 
| -   * - "U68"
 | 
| -   * - "U69"
 | 
|     * - "U7"
 | 
| -   * - "U70"
 | 
| -   * - "U71"
 | 
| -   * - "U72"
 | 
| -   * - "U73"
 | 
| -   * - "U74"
 | 
| -   * - "U75"
 | 
| -   * - "U76"
 | 
| -   * - "U77"
 | 
| -   * - "U78"
 | 
| -   * - "U79"
 | 
|     * - "U8"
 | 
| -   * - "U80"
 | 
| -   * - "U81"
 | 
| -   * - "U82"
 | 
| -   * - "U83"
 | 
| -   * - "U84"
 | 
| -   * - "U85"
 | 
| -   * - "U86"
 | 
| -   * - "U87"
 | 
| -   * - "U88"
 | 
| -   * - "U89"
 | 
|     * - "U9"
 | 
| -   * - "U90"
 | 
| -   * - "U91"
 | 
| -   * - "U92"
 | 
| -   * - "U93"
 | 
| -   * - "U94"
 | 
| -   * - "U95"
 | 
| -   * - "U96"
 | 
| -   * - "U97"
 | 
| -   * - "U98"
 | 
| -   * - "U99"
 | 
|     */
 | 
|    core.String variableType;
 | 
|  
 | 
| 
 |