Generate 0.1.0 version of googleapis/googleapis_beta

R=sgjesse@google.com

Review URL: https://codereview.chromium.org//559053002
diff --git a/generated/googleapis/lib/doubleclickbidmanager/v1.dart b/generated/googleapis/lib/doubleclickbidmanager/v1.dart
new file mode 100644
index 0000000..ac90b3a
--- /dev/null
+++ b/generated/googleapis/lib/doubleclickbidmanager/v1.dart
@@ -0,0 +1,1515 @@
+library googleapis.doubleclickbidmanager.v1;
+
+import "dart:core" as core;
+import "dart:collection" as collection;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import "package:crypto/crypto.dart" as crypto;
+import 'package:http/http.dart' as http;
+import '../src/common_internal.dart' as common_internal;
+import '../common/common.dart' as common;
+
+export '../common/common.dart' show ApiRequestError;
+export '../common/common.dart' show DetailedApiRequestError;
+
+/** API for viewing and managing your reports in DoubleClick Bid Manager. */
+class DoubleclickbidmanagerApi {
+
+  final common_internal.ApiRequester _requester;
+
+  LineitemsResourceApi get lineitems => new LineitemsResourceApi(_requester);
+  QueriesResourceApi get queries => new QueriesResourceApi(_requester);
+  ReportsResourceApi get reports => new ReportsResourceApi(_requester);
+
+  DoubleclickbidmanagerApi(http.Client client) : 
+      _requester = new common_internal.ApiRequester(client, "https://www.googleapis.com/", "/doubleclickbidmanager/v1/");
+}
+
+
+/** Not documented yet. */
+class LineitemsResourceApi {
+  final common_internal.ApiRequester _requester;
+
+  LineitemsResourceApi(common_internal.ApiRequester client) : 
+      _requester = client;
+
+  /**
+   * Retrieves line items in CSV format.
+   *
+   * [request] - The metadata request object.
+   *
+   * Request parameters:
+   *
+   * Completes with a [DownloadLineItemsResponse].
+   *
+   * Completes with a [common.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<DownloadLineItemsResponse> downloadlineitems(DownloadLineItemsRequest request) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+
+
+    _url = 'lineitems/downloadlineitems';
+
+    var _response = _requester.request(_url,
+                                       "POST",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new DownloadLineItemsResponse.fromJson(data));
+  }
+
+  /**
+   * Uploads line items in CSV format.
+   *
+   * [request] - The metadata request object.
+   *
+   * Request parameters:
+   *
+   * Completes with a [UploadLineItemsResponse].
+   *
+   * Completes with a [common.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<UploadLineItemsResponse> uploadlineitems(UploadLineItemsRequest request) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+
+
+    _url = 'lineitems/uploadlineitems';
+
+    var _response = _requester.request(_url,
+                                       "POST",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new UploadLineItemsResponse.fromJson(data));
+  }
+
+}
+
+
+/** Not documented yet. */
+class QueriesResourceApi {
+  final common_internal.ApiRequester _requester;
+
+  QueriesResourceApi(common_internal.ApiRequester client) : 
+      _requester = client;
+
+  /**
+   * Creates a query.
+   *
+   * [request] - The metadata request object.
+   *
+   * Request parameters:
+   *
+   * Completes with a [Query].
+   *
+   * Completes with a [common.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<Query> createquery(Query request) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+
+
+    _url = 'query';
+
+    var _response = _requester.request(_url,
+                                       "POST",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new Query.fromJson(data));
+  }
+
+  /**
+   * Deletes a stored query as well as the associated stored reports.
+   *
+   * Request parameters:
+   *
+   * [queryId] - Query ID to delete.
+   *
+   * Completes with a [common.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 deletequery(core.String queryId) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (queryId == null) {
+      throw new core.ArgumentError("Parameter queryId is required.");
+    }
+
+    _downloadOptions = null;
+
+    _url = 'query/' + common_internal.Escaper.ecapeVariable('$queryId');
+
+    var _response = _requester.request(_url,
+                                       "DELETE",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => null);
+  }
+
+  /**
+   * Retrieves a stored query.
+   *
+   * Request parameters:
+   *
+   * [queryId] - Query ID to retrieve.
+   *
+   * Completes with a [Query].
+   *
+   * Completes with a [common.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<Query> getquery(core.String queryId) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (queryId == null) {
+      throw new core.ArgumentError("Parameter queryId is required.");
+    }
+
+
+    _url = 'query/' + common_internal.Escaper.ecapeVariable('$queryId');
+
+    var _response = _requester.request(_url,
+                                       "GET",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new Query.fromJson(data));
+  }
+
+  /**
+   * Retrieves stored queries.
+   *
+   * Request parameters:
+   *
+   * Completes with a [ListQueriesResponse].
+   *
+   * Completes with a [common.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<ListQueriesResponse> listqueries() {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+
+
+    _url = 'queries';
+
+    var _response = _requester.request(_url,
+                                       "GET",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListQueriesResponse.fromJson(data));
+  }
+
+  /**
+   * Runs a stored query to generate a report.
+   *
+   * [request] - The metadata request object.
+   *
+   * Request parameters:
+   *
+   * [queryId] - Query ID to run.
+   *
+   * Completes with a [common.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 runquery(RunQueryRequest request, core.String queryId) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (queryId == null) {
+      throw new core.ArgumentError("Parameter queryId is required.");
+    }
+
+    _downloadOptions = null;
+
+    _url = 'query/' + common_internal.Escaper.ecapeVariable('$queryId');
+
+    var _response = _requester.request(_url,
+                                       "POST",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => null);
+  }
+
+}
+
+
+/** Not documented yet. */
+class ReportsResourceApi {
+  final common_internal.ApiRequester _requester;
+
+  ReportsResourceApi(common_internal.ApiRequester client) : 
+      _requester = client;
+
+  /**
+   * Retrieves stored reports.
+   *
+   * Request parameters:
+   *
+   * [queryId] - Query ID with which the reports are associated.
+   *
+   * Completes with a [ListReportsResponse].
+   *
+   * Completes with a [common.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<ListReportsResponse> listreports(core.String queryId) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = common.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (queryId == null) {
+      throw new core.ArgumentError("Parameter queryId is required.");
+    }
+
+
+    _url = 'queries/' + common_internal.Escaper.ecapeVariable('$queryId') + '/reports';
+
+    var _response = _requester.request(_url,
+                                       "GET",
+                                       body: _body,
+                                       queryParams: _queryParams,
+                                       uploadOptions: _uploadOptions,
+                                       uploadMedia: _uploadMedia,
+                                       downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListReportsResponse.fromJson(data));
+  }
+
+}
+
+
+
+/** Request to fetch stored line items. */
+class DownloadLineItemsRequest {
+  /**
+   * Ids of the specified filter type used to filter line items to fetch. If
+   * omitted, all the line items will be returned.
+   */
+  core.List<core.String> filterIds;
+
+  /**
+   * Filter type used to filter line items to fetch.
+   * Possible string values are:
+   * - "ADVERTISER_ID"
+   * - "INSERTION_ORDER_ID"
+   * - "LINE_ITEM_ID"
+   */
+  core.String filterType;
+
+  /**
+   * Format in which the line items will be returned. Default to CSV.
+   * Possible string values are:
+   * - "CSV"
+   */
+  core.String format;
+
+
+  DownloadLineItemsRequest();
+
+  DownloadLineItemsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("filterIds")) {
+      filterIds = _json["filterIds"];
+    }
+    if (_json.containsKey("filterType")) {
+      filterType = _json["filterType"];
+    }
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (filterIds != null) {
+      _json["filterIds"] = filterIds;
+    }
+    if (filterType != null) {
+      _json["filterType"] = filterType;
+    }
+    if (format != null) {
+      _json["format"] = format;
+    }
+    return _json;
+  }
+}
+
+
+/** Download line items response. */
+class DownloadLineItemsResponse {
+  /**
+   * Retrieved line items in CSV format. Refer to  Entity Write File Format for
+   * more information on file format.
+   */
+  core.String lineItems;
+
+
+  DownloadLineItemsResponse();
+
+  DownloadLineItemsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("lineItems")) {
+      lineItems = _json["lineItems"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (lineItems != null) {
+      _json["lineItems"] = lineItems;
+    }
+    return _json;
+  }
+}
+
+
+/** Filter used to match traffic data in your report. */
+class FilterPair {
+  /**
+   * Filter type.
+   * Possible string values are:
+   * - "FILTER_ACTIVITY_ID"
+   * - "FILTER_ADVERTISER"
+   * - "FILTER_ADVERTISER_CURRENCY"
+   * - "FILTER_ADVERTISER_TIMEZONE"
+   * - "FILTER_AD_POSITION"
+   * - "FILTER_BRANDSAFE_CHANNEL_ID"
+   * - "FILTER_BROWSER"
+   * - "FILTER_CAMPAIGN_DAILY_FREQUENCY"
+   * - "FILTER_CARRIER"
+   * - "FILTER_CHANNEL_ID"
+   * - "FILTER_CITY"
+   * - "FILTER_CONVERSION_DELAY"
+   * - "FILTER_COUNTRY"
+   * - "FILTER_CREATIVE_ID"
+   * - "FILTER_CREATIVE_SIZE"
+   * - "FILTER_CREATIVE_TYPE"
+   * - "FILTER_DATA_PROVIDER"
+   * - "FILTER_DATE"
+   * - "FILTER_DAY_OF_WEEK"
+   * - "FILTER_DMA"
+   * - "FILTER_EXCHANGE_ID"
+   * - "FILTER_FLOODLIGHT_PIXEL_ID"
+   * - "FILTER_INSERTION_ORDER"
+   * - "FILTER_INVENTORY_FORMAT"
+   * - "FILTER_INVENTORY_SOURCE"
+   * - "FILTER_KEYWORD"
+   * - "FILTER_LINE_ITEM"
+   * - "FILTER_LINE_ITEM_DAILY_FREQUENCY"
+   * - "FILTER_LINE_ITEM_LIFETIME_FREQUENCY"
+   * - "FILTER_LINE_ITEM_TYPE"
+   * - "FILTER_MOBILE_DEVICE_MAKE"
+   * - "FILTER_MOBILE_DEVICE_MAKE_MODEL"
+   * - "FILTER_MOBILE_DEVICE_TYPE"
+   * - "FILTER_MONTH"
+   * - "FILTER_ORDER_ID"
+   * - "FILTER_OS"
+   * - "FILTER_PAGE_CATEGORY"
+   * - "FILTER_PAGE_LAYOUT"
+   * - "FILTER_PARTNER"
+   * - "FILTER_PARTNER_CURRENCY"
+   * - "FILTER_PUBLIC_INVENTORY"
+   * - "FILTER_REGION"
+   * - "FILTER_REGULAR_CHANNEL_ID"
+   * - "FILTER_SITE_ID"
+   * - "FILTER_SITE_LANGUAGE"
+   * - "FILTER_TARGETED_USER_LIST"
+   * - "FILTER_TIME_OF_DAY"
+   * - "FILTER_UNKNOWN"
+   * - "FILTER_USER_LIST"
+   * - "FILTER_USER_LIST_FIRST_PARTY"
+   * - "FILTER_USER_LIST_THIRD_PARTY"
+   * - "FILTER_VIDEO_AD_POSITION_IN_STREAM"
+   * - "FILTER_VIDEO_CREATIVE_DURATION"
+   * - "FILTER_VIDEO_DURATION_SECONDS"
+   * - "FILTER_VIDEO_FORMAT_SUPPORT"
+   * - "FILTER_VIDEO_INVENTORY_TYPE"
+   * - "FILTER_VIDEO_PLAYER_SIZE"
+   * - "FILTER_VIDEO_RATING_TIER"
+   * - "FILTER_VIDEO_SKIPPABLE_SUPPORT"
+   * - "FILTER_VIDEO_VPAID_SUPPORT"
+   * - "FILTER_WEEK"
+   * - "FILTER_YEAR"
+   * - "FILTER_YOUTUBE_VERTICAL"
+   * - "FILTER_ZIP_CODE"
+   */
+  core.String type;
+
+  /** Filter value. */
+  core.String value;
+
+
+  FilterPair();
+
+  FilterPair.fromJson(core.Map _json) {
+    if (_json.containsKey("type")) {
+      type = _json["type"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (type != null) {
+      _json["type"] = type;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+
+/** List queries response. */
+class ListQueriesResponse {
+  /**
+   * Identifies what kind of resource this is. Value: the fixed string
+   * "doubleclickbidmanager#listQueriesResponse".
+   */
+  core.String kind;
+
+  /** Retrieved queries. */
+  core.List<Query> queries;
+
+
+  ListQueriesResponse();
+
+  ListQueriesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("queries")) {
+      queries = _json["queries"].map((value) => new Query.fromJson(value)).toList();
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (queries != null) {
+      _json["queries"] = queries.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+
+/** List reports response. */
+class ListReportsResponse {
+  /**
+   * Identifies what kind of resource this is. Value: the fixed string
+   * "doubleclickbidmanager#listReportsResponse".
+   */
+  core.String kind;
+
+  /** Retrieved reports. */
+  core.List<Report> reports;
+
+
+  ListReportsResponse();
+
+  ListReportsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("reports")) {
+      reports = _json["reports"].map((value) => new Report.fromJson(value)).toList();
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (reports != null) {
+      _json["reports"] = reports.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+
+/** Parameters of a query or report. */
+class Parameters {
+  /** Filters used to match traffic data in your report. */
+  core.List<FilterPair> filters;
+
+  /** Data is grouped by the filters listed in this field. */
+  core.List<core.String> groupBys;
+
+  /** Whether to include data from Invite Media. */
+  core.bool includeInviteData;
+
+  /** Metrics to include as columns in your report. */
+  core.List<core.String> metrics;
+
+  /**
+   * Report type.
+   * Possible string values are:
+   * - "TYPE_ACTIVE_GRP"
+   * - "TYPE_AUDIENCE_COMPOSITION"
+   * - "TYPE_AUDIENCE_PERFORMANCE"
+   * - "TYPE_CLIENT_SAFE"
+   * - "TYPE_CROSS_FEE"
+   * - "TYPE_CROSS_PARTNER"
+   * - "TYPE_CROSS_PARTNER_THIRD_PARTY_DATA_PROVIDER"
+   * - "TYPE_FEE"
+   * - "TYPE_GENERAL"
+   * - "TYPE_INVENTORY_AVAILABILITY"
+   * - "TYPE_KEYWORD"
+   * - "TYPE_ORDER_ID"
+   * - "TYPE_PAGE_CATEGORY"
+   * - "TYPE_PIXEL_LOAD"
+   * - "TYPE_THIRD_PARTY_DATA_PROVIDER"
+   * - "TYPE_YOUTUBE_VERTICAL"
+   */
+  core.String type;
+
+
+  Parameters();
+
+  Parameters.fromJson(core.Map _json) {
+    if (_json.containsKey("filters")) {
+      filters = _json["filters"].map((value) => new FilterPair.fromJson(value)).toList();
+    }
+    if (_json.containsKey("groupBys")) {
+      groupBys = _json["groupBys"];
+    }
+    if (_json.containsKey("includeInviteData")) {
+      includeInviteData = _json["includeInviteData"];
+    }
+    if (_json.containsKey("metrics")) {
+      metrics = _json["metrics"];
+    }
+    if (_json.containsKey("type")) {
+      type = _json["type"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (filters != null) {
+      _json["filters"] = filters.map((value) => (value).toJson()).toList();
+    }
+    if (groupBys != null) {
+      _json["groupBys"] = groupBys;
+    }
+    if (includeInviteData != null) {
+      _json["includeInviteData"] = includeInviteData;
+    }
+    if (metrics != null) {
+      _json["metrics"] = metrics;
+    }
+    if (type != null) {
+      _json["type"] = type;
+    }
+    return _json;
+  }
+}
+
+
+/** Represents a query. */
+class Query {
+  /**
+   * Identifies what kind of resource this is. Value: the fixed string
+   * "doubleclickbidmanager#query".
+   */
+  core.String kind;
+
+  /** Query metadata. */
+  QueryMetadata metadata;
+
+  /** Query parameters. */
+  Parameters params;
+
+  /** Query ID. */
+  core.String queryId;
+
+  /**
+   * The ending time for the data that is shown in the report. Note,
+   * reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and
+   * ignored otherwise.
+   */
+  core.String reportDataEndTimeMs;
+
+  /**
+   * The starting time for the data that is shown in the report. Note,
+   * reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and
+   * ignored otherwise.
+   */
+  core.String reportDataStartTimeMs;
+
+  /** Information on how often and when to run a query. */
+  QuerySchedule schedule;
+
+  /**
+   * Canonical timezone code for report data time. Defaults to America/New_York.
+   */
+  core.String timezoneCode;
+
+
+  Query();
+
+  Query.fromJson(core.Map _json) {
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("metadata")) {
+      metadata = new QueryMetadata.fromJson(_json["metadata"]);
+    }
+    if (_json.containsKey("params")) {
+      params = new Parameters.fromJson(_json["params"]);
+    }
+    if (_json.containsKey("queryId")) {
+      queryId = _json["queryId"];
+    }
+    if (_json.containsKey("reportDataEndTimeMs")) {
+      reportDataEndTimeMs = _json["reportDataEndTimeMs"];
+    }
+    if (_json.containsKey("reportDataStartTimeMs")) {
+      reportDataStartTimeMs = _json["reportDataStartTimeMs"];
+    }
+    if (_json.containsKey("schedule")) {
+      schedule = new QuerySchedule.fromJson(_json["schedule"]);
+    }
+    if (_json.containsKey("timezoneCode")) {
+      timezoneCode = _json["timezoneCode"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (metadata != null) {
+      _json["metadata"] = (metadata).toJson();
+    }
+    if (params != null) {
+      _json["params"] = (params).toJson();
+    }
+    if (queryId != null) {
+      _json["queryId"] = queryId;
+    }
+    if (reportDataEndTimeMs != null) {
+      _json["reportDataEndTimeMs"] = reportDataEndTimeMs;
+    }
+    if (reportDataStartTimeMs != null) {
+      _json["reportDataStartTimeMs"] = reportDataStartTimeMs;
+    }
+    if (schedule != null) {
+      _json["schedule"] = (schedule).toJson();
+    }
+    if (timezoneCode != null) {
+      _json["timezoneCode"] = timezoneCode;
+    }
+    return _json;
+  }
+}
+
+
+/** Query metadata. */
+class QueryMetadata {
+  /**
+   * Range of report data.
+   * Possible string values are:
+   * - "ALL_TIME"
+   * - "CURRENT_DAY"
+   * - "CUSTOM_DATES"
+   * - "LAST_14_DAYS"
+   * - "LAST_30_DAYS"
+   * - "LAST_365_DAYS"
+   * - "LAST_7_DAYS"
+   * - "LAST_90_DAYS"
+   * - "MONTH_TO_DATE"
+   * - "PREVIOUS_DAY"
+   * - "PREVIOUS_HALF_MONTH"
+   * - "PREVIOUS_MONTH"
+   * - "PREVIOUS_QUARTER"
+   * - "PREVIOUS_WEEK"
+   * - "PREVIOUS_YEAR"
+   * - "QUARTER_TO_DATE"
+   * - "WEEK_TO_DATE"
+   * - "YEAR_TO_DATE"
+   */
+  core.String dataRange;
+
+  /**
+   * Format of the generated report.
+   * Possible string values are:
+   * - "CSV"
+   * - "EXCEL_CSV"
+   * - "XLSX"
+   */
+  core.String format;
+
+  /**
+   * The path to the location in Google Cloud Storage where the latest report is
+   * stored.
+   */
+  core.String googleCloudStoragePathForLatestReport;
+
+  /** The path in Google Drive for the latest report. */
+  core.String googleDrivePathForLatestReport;
+
+  /** The time when the latest report started to run. */
+  core.String latestReportRunTimeMs;
+
+  /** Number of reports that have been generated for the query. */
+  core.int reportCount;
+
+  /** Whether the latest report is currently running. */
+  core.bool running;
+
+  /**
+   * Whether to send an email notification when a report is ready. Default to
+   * false.
+   */
+  core.bool sendNotification;
+
+  /**
+   * List of email addresses which are sent email notifications when the report
+   * is finished. Separate from sendNotification.
+   */
+  core.List<core.String> shareEmailAddress;
+
+  /** Query title. It is used to name the reports generated from this query. */
+  core.String title;
+
+
+  QueryMetadata();
+
+  QueryMetadata.fromJson(core.Map _json) {
+    if (_json.containsKey("dataRange")) {
+      dataRange = _json["dataRange"];
+    }
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+    if (_json.containsKey("googleCloudStoragePathForLatestReport")) {
+      googleCloudStoragePathForLatestReport = _json["googleCloudStoragePathForLatestReport"];
+    }
+    if (_json.containsKey("googleDrivePathForLatestReport")) {
+      googleDrivePathForLatestReport = _json["googleDrivePathForLatestReport"];
+    }
+    if (_json.containsKey("latestReportRunTimeMs")) {
+      latestReportRunTimeMs = _json["latestReportRunTimeMs"];
+    }
+    if (_json.containsKey("reportCount")) {
+      reportCount = _json["reportCount"];
+    }
+    if (_json.containsKey("running")) {
+      running = _json["running"];
+    }
+    if (_json.containsKey("sendNotification")) {
+      sendNotification = _json["sendNotification"];
+    }
+    if (_json.containsKey("shareEmailAddress")) {
+      shareEmailAddress = _json["shareEmailAddress"];
+    }
+    if (_json.containsKey("title")) {
+      title = _json["title"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (dataRange != null) {
+      _json["dataRange"] = dataRange;
+    }
+    if (format != null) {
+      _json["format"] = format;
+    }
+    if (googleCloudStoragePathForLatestReport != null) {
+      _json["googleCloudStoragePathForLatestReport"] = googleCloudStoragePathForLatestReport;
+    }
+    if (googleDrivePathForLatestReport != null) {
+      _json["googleDrivePathForLatestReport"] = googleDrivePathForLatestReport;
+    }
+    if (latestReportRunTimeMs != null) {
+      _json["latestReportRunTimeMs"] = latestReportRunTimeMs;
+    }
+    if (reportCount != null) {
+      _json["reportCount"] = reportCount;
+    }
+    if (running != null) {
+      _json["running"] = running;
+    }
+    if (sendNotification != null) {
+      _json["sendNotification"] = sendNotification;
+    }
+    if (shareEmailAddress != null) {
+      _json["shareEmailAddress"] = shareEmailAddress;
+    }
+    if (title != null) {
+      _json["title"] = title;
+    }
+    return _json;
+  }
+}
+
+
+/** Information on how frequently and when to run a query. */
+class QuerySchedule {
+  /** Datetime to periodically run the query until. */
+  core.String endTimeMs;
+
+  /**
+   * How often the query is run.
+   * Possible string values are:
+   * - "DAILY"
+   * - "MONTHLY"
+   * - "ONE_TIME"
+   * - "QUARTERLY"
+   * - "SEMI_MONTHLY"
+   * - "WEEKLY"
+   */
+  core.String frequency;
+
+  /**
+   * Time of day at which a new report will be generated, represented as minutes
+   * past midnight Range is 0 to 1439. Only applies to scheduled reports.
+   */
+  core.int nextRunMinuteOfDay;
+
+  /**
+   * Canonical timezone code for report generation time. Defaults to
+   * America/New_York.
+   */
+  core.String nextRunTimezoneCode;
+
+
+  QuerySchedule();
+
+  QuerySchedule.fromJson(core.Map _json) {
+    if (_json.containsKey("endTimeMs")) {
+      endTimeMs = _json["endTimeMs"];
+    }
+    if (_json.containsKey("frequency")) {
+      frequency = _json["frequency"];
+    }
+    if (_json.containsKey("nextRunMinuteOfDay")) {
+      nextRunMinuteOfDay = _json["nextRunMinuteOfDay"];
+    }
+    if (_json.containsKey("nextRunTimezoneCode")) {
+      nextRunTimezoneCode = _json["nextRunTimezoneCode"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (endTimeMs != null) {
+      _json["endTimeMs"] = endTimeMs;
+    }
+    if (frequency != null) {
+      _json["frequency"] = frequency;
+    }
+    if (nextRunMinuteOfDay != null) {
+      _json["nextRunMinuteOfDay"] = nextRunMinuteOfDay;
+    }
+    if (nextRunTimezoneCode != null) {
+      _json["nextRunTimezoneCode"] = nextRunTimezoneCode;
+    }
+    return _json;
+  }
+}
+
+
+/** Represents a report. */
+class Report {
+  /** Key used to identify a report. */
+  ReportKey key;
+
+  /** Report metadata. */
+  ReportMetadata metadata;
+
+  /** Report parameters. */
+  Parameters params;
+
+
+  Report();
+
+  Report.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = new ReportKey.fromJson(_json["key"]);
+    }
+    if (_json.containsKey("metadata")) {
+      metadata = new ReportMetadata.fromJson(_json["metadata"]);
+    }
+    if (_json.containsKey("params")) {
+      params = new Parameters.fromJson(_json["params"]);
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (key != null) {
+      _json["key"] = (key).toJson();
+    }
+    if (metadata != null) {
+      _json["metadata"] = (metadata).toJson();
+    }
+    if (params != null) {
+      _json["params"] = (params).toJson();
+    }
+    return _json;
+  }
+}
+
+
+/** An explanation of a report failure. */
+class ReportFailure {
+  /**
+   * Error code that shows why the report was not created.
+   * Possible string values are:
+   * - "AUTHENTICATION_ERROR"
+   * - "DEPRECATED_REPORTING_INVALID_QUERY"
+   * - "REPORTING_BUCKET_NOT_FOUND"
+   * - "REPORTING_CREATE_BUCKET_FAILED"
+   * - "REPORTING_DELETE_BUCKET_FAILED"
+   * - "REPORTING_FATAL_ERROR"
+   * - "REPORTING_ILLEGAL_FILENAME"
+   * - "REPORTING_IMCOMPATIBLE_METRICS"
+   * - "REPORTING_INVALID_QUERY_MISSING_PARTNER_AND_ADVERTISER_FILTERS"
+   * - "REPORTING_INVALID_QUERY_TITLE_MISSING"
+   * - "REPORTING_INVALID_QUERY_TOO_MANY_UNFILTERED_LARGE_GROUP_BYS"
+   * - "REPORTING_QUERY_NOT_FOUND"
+   * - "REPORTING_TRANSIENT_ERROR"
+   * - "REPORTING_UPDATE_BUCKET_PERMISSION_FAILED"
+   * - "REPORTING_WRITE_BUCKET_OBJECT_FAILED"
+   * - "SERVER_ERROR"
+   * - "UNAUTHORIZED_API_ACCESS"
+   * - "VALIDATION_ERROR"
+   */
+  core.String errorCode;
+
+
+  ReportFailure();
+
+  ReportFailure.fromJson(core.Map _json) {
+    if (_json.containsKey("errorCode")) {
+      errorCode = _json["errorCode"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (errorCode != null) {
+      _json["errorCode"] = errorCode;
+    }
+    return _json;
+  }
+}
+
+
+/** Key used to identify a report. */
+class ReportKey {
+  /** Query ID. */
+  core.String queryId;
+
+  /** Report ID. */
+  core.String reportId;
+
+
+  ReportKey();
+
+  ReportKey.fromJson(core.Map _json) {
+    if (_json.containsKey("queryId")) {
+      queryId = _json["queryId"];
+    }
+    if (_json.containsKey("reportId")) {
+      reportId = _json["reportId"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (queryId != null) {
+      _json["queryId"] = queryId;
+    }
+    if (reportId != null) {
+      _json["reportId"] = reportId;
+    }
+    return _json;
+  }
+}
+
+
+/** Report metadata. */
+class ReportMetadata {
+  /**
+   * The path to the location in Google Cloud Storage where the report is
+   * stored.
+   */
+  core.String googleCloudStoragePath;
+
+  /** The ending time for the data that is shown in the report. */
+  core.String reportDataEndTimeMs;
+
+  /** The starting time for the data that is shown in the report. */
+  core.String reportDataStartTimeMs;
+
+  /** Report status. */
+  ReportStatus status;
+
+
+  ReportMetadata();
+
+  ReportMetadata.fromJson(core.Map _json) {
+    if (_json.containsKey("googleCloudStoragePath")) {
+      googleCloudStoragePath = _json["googleCloudStoragePath"];
+    }
+    if (_json.containsKey("reportDataEndTimeMs")) {
+      reportDataEndTimeMs = _json["reportDataEndTimeMs"];
+    }
+    if (_json.containsKey("reportDataStartTimeMs")) {
+      reportDataStartTimeMs = _json["reportDataStartTimeMs"];
+    }
+    if (_json.containsKey("status")) {
+      status = new ReportStatus.fromJson(_json["status"]);
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (googleCloudStoragePath != null) {
+      _json["googleCloudStoragePath"] = googleCloudStoragePath;
+    }
+    if (reportDataEndTimeMs != null) {
+      _json["reportDataEndTimeMs"] = reportDataEndTimeMs;
+    }
+    if (reportDataStartTimeMs != null) {
+      _json["reportDataStartTimeMs"] = reportDataStartTimeMs;
+    }
+    if (status != null) {
+      _json["status"] = (status).toJson();
+    }
+    return _json;
+  }
+}
+
+
+/** Report status. */
+class ReportStatus {
+  /** If the report failed, this records the cause. */
+  ReportFailure failure;
+
+  /** The time when this report either completed successfully or failed. */
+  core.String finishTimeMs;
+
+  /**
+   * The file type of the report.
+   * Possible string values are:
+   * - "CSV"
+   * - "EXCEL_CSV"
+   * - "XLSX"
+   */
+  core.String format;
+
+  /**
+   * The state of the report.
+   * Possible string values are:
+   * - "DONE"
+   * - "FAILED"
+   * - "RUNNING"
+   */
+  core.String state;
+
+
+  ReportStatus();
+
+  ReportStatus.fromJson(core.Map _json) {
+    if (_json.containsKey("failure")) {
+      failure = new ReportFailure.fromJson(_json["failure"]);
+    }
+    if (_json.containsKey("finishTimeMs")) {
+      finishTimeMs = _json["finishTimeMs"];
+    }
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+    if (_json.containsKey("state")) {
+      state = _json["state"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (failure != null) {
+      _json["failure"] = (failure).toJson();
+    }
+    if (finishTimeMs != null) {
+      _json["finishTimeMs"] = finishTimeMs;
+    }
+    if (format != null) {
+      _json["format"] = format;
+    }
+    if (state != null) {
+      _json["state"] = state;
+    }
+    return _json;
+  }
+}
+
+
+/** Represents the upload status of a row in the request. */
+class RowStatus {
+  /** Whether the stored entity is changed as a result of upload. */
+  core.bool changed;
+
+  /** Entity Id. */
+  core.String entityId;
+
+  /** Entity name. */
+  core.String entityName;
+
+  /** Reasons why the entity can't be uploaded. */
+  core.List<core.String> errors;
+
+  /** Whether the entity is persisted. */
+  core.bool persisted;
+
+  /** Row number. */
+  core.int rowNumber;
+
+
+  RowStatus();
+
+  RowStatus.fromJson(core.Map _json) {
+    if (_json.containsKey("changed")) {
+      changed = _json["changed"];
+    }
+    if (_json.containsKey("entityId")) {
+      entityId = _json["entityId"];
+    }
+    if (_json.containsKey("entityName")) {
+      entityName = _json["entityName"];
+    }
+    if (_json.containsKey("errors")) {
+      errors = _json["errors"];
+    }
+    if (_json.containsKey("persisted")) {
+      persisted = _json["persisted"];
+    }
+    if (_json.containsKey("rowNumber")) {
+      rowNumber = _json["rowNumber"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (changed != null) {
+      _json["changed"] = changed;
+    }
+    if (entityId != null) {
+      _json["entityId"] = entityId;
+    }
+    if (entityName != null) {
+      _json["entityName"] = entityName;
+    }
+    if (errors != null) {
+      _json["errors"] = errors;
+    }
+    if (persisted != null) {
+      _json["persisted"] = persisted;
+    }
+    if (rowNumber != null) {
+      _json["rowNumber"] = rowNumber;
+    }
+    return _json;
+  }
+}
+
+
+/** Request to run a stored query to generate a report. */
+class RunQueryRequest {
+  /**
+   * Report data range used to generate the report.
+   * Possible string values are:
+   * - "ALL_TIME"
+   * - "CURRENT_DAY"
+   * - "CUSTOM_DATES"
+   * - "LAST_14_DAYS"
+   * - "LAST_30_DAYS"
+   * - "LAST_365_DAYS"
+   * - "LAST_7_DAYS"
+   * - "LAST_90_DAYS"
+   * - "MONTH_TO_DATE"
+   * - "PREVIOUS_DAY"
+   * - "PREVIOUS_HALF_MONTH"
+   * - "PREVIOUS_MONTH"
+   * - "PREVIOUS_QUARTER"
+   * - "PREVIOUS_WEEK"
+   * - "PREVIOUS_YEAR"
+   * - "QUARTER_TO_DATE"
+   * - "WEEK_TO_DATE"
+   * - "YEAR_TO_DATE"
+   */
+  core.String dataRange;
+
+  /**
+   * The ending time for the data that is shown in the report. Note,
+   * reportDataEndTimeMs is required if dataRange is CUSTOM_DATES and ignored
+   * otherwise.
+   */
+  core.String reportDataEndTimeMs;
+
+  /**
+   * The starting time for the data that is shown in the report. Note,
+   * reportDataStartTimeMs is required if dataRange is CUSTOM_DATES and ignored
+   * otherwise.
+   */
+  core.String reportDataStartTimeMs;
+
+  /**
+   * Canonical timezone code for report data time. Defaults to America/New_York.
+   */
+  core.String timezoneCode;
+
+
+  RunQueryRequest();
+
+  RunQueryRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("dataRange")) {
+      dataRange = _json["dataRange"];
+    }
+    if (_json.containsKey("reportDataEndTimeMs")) {
+      reportDataEndTimeMs = _json["reportDataEndTimeMs"];
+    }
+    if (_json.containsKey("reportDataStartTimeMs")) {
+      reportDataStartTimeMs = _json["reportDataStartTimeMs"];
+    }
+    if (_json.containsKey("timezoneCode")) {
+      timezoneCode = _json["timezoneCode"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (dataRange != null) {
+      _json["dataRange"] = dataRange;
+    }
+    if (reportDataEndTimeMs != null) {
+      _json["reportDataEndTimeMs"] = reportDataEndTimeMs;
+    }
+    if (reportDataStartTimeMs != null) {
+      _json["reportDataStartTimeMs"] = reportDataStartTimeMs;
+    }
+    if (timezoneCode != null) {
+      _json["timezoneCode"] = timezoneCode;
+    }
+    return _json;
+  }
+}
+
+
+/** Request to upload line items. */
+class UploadLineItemsRequest {
+  /**
+   * Set to true to get upload status without actually persisting the line
+   * items.
+   */
+  core.bool dryRun;
+
+  /**
+   * Format the line items are in. Default to CSV.
+   * Possible string values are:
+   * - "CSV"
+   */
+  core.String format;
+
+  /**
+   * Line items in CSV to upload. Refer to  Entity Write File Format for more
+   * information on file format.
+   */
+  core.String lineItems;
+
+
+  UploadLineItemsRequest();
+
+  UploadLineItemsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("dryRun")) {
+      dryRun = _json["dryRun"];
+    }
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+    if (_json.containsKey("lineItems")) {
+      lineItems = _json["lineItems"];
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (dryRun != null) {
+      _json["dryRun"] = dryRun;
+    }
+    if (format != null) {
+      _json["format"] = format;
+    }
+    if (lineItems != null) {
+      _json["lineItems"] = lineItems;
+    }
+    return _json;
+  }
+}
+
+
+/** Upload line items response. */
+class UploadLineItemsResponse {
+  /** Status of upload. */
+  UploadStatus uploadStatus;
+
+
+  UploadLineItemsResponse();
+
+  UploadLineItemsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("uploadStatus")) {
+      uploadStatus = new UploadStatus.fromJson(_json["uploadStatus"]);
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (uploadStatus != null) {
+      _json["uploadStatus"] = (uploadStatus).toJson();
+    }
+    return _json;
+  }
+}
+
+
+/** Represents the status of upload. */
+class UploadStatus {
+  /** Reasons why upload can't be completed. */
+  core.List<core.String> errors;
+
+  /** Per-row upload status. */
+  core.List<RowStatus> rowStatus;
+
+
+  UploadStatus();
+
+  UploadStatus.fromJson(core.Map _json) {
+    if (_json.containsKey("errors")) {
+      errors = _json["errors"];
+    }
+    if (_json.containsKey("rowStatus")) {
+      rowStatus = _json["rowStatus"].map((value) => new RowStatus.fromJson(value)).toList();
+    }
+  }
+
+  core.Map toJson() {
+    var _json = new core.Map();
+    if (errors != null) {
+      _json["errors"] = errors;
+    }
+    if (rowStatus != null) {
+      _json["rowStatus"] = rowStatus.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+