Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart

Issue 2936613002: Api-Roll 50: 2017-06-12 (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « generated/googleapis_beta/CHANGELOG.md ('k') | generated/googleapis_beta/lib/appengine/v1beta.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
diff --git a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
index a2ecdc8738ba49f2e631c22ef4cc0629bd9d8c3c..34f4e2b5568562d86ac196f099c1c30e4722a885 100644
--- a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
+++ b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
@@ -38,6 +38,7 @@ class AccountsResourceApi {
AccountsClientsResourceApi get clients => new AccountsClientsResourceApi(_requester);
AccountsCreativesResourceApi get creatives => new AccountsCreativesResourceApi(_requester);
+ AccountsFilterSetsResourceApi get filterSets => new AccountsFilterSetsResourceApi(_requester);
AccountsResourceApi(commons.ApiRequester client) :
_requester = client;
@@ -515,10 +516,6 @@ class AccountsClientsUsersResourceApi {
* to list all the client users for all the clients
* of a given sponsor buyer.
*
- * [pageSize] - Requested page size. The server may return fewer clients than
- * requested.
- * If unspecified, the server will pick an appropriate default.
- *
* [pageToken] - A token identifying a page of results the server should
* return.
* Typically, this is the value of
@@ -526,6 +523,10 @@ class AccountsClientsUsersResourceApi {
* returned from the previous call to the
* accounts.clients.users.list method.
*
+ * [pageSize] - Requested page size. The server may return fewer clients than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
* Completes with a [ListClientUsersResponse].
*
* Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -534,7 +535,7 @@ class AccountsClientsUsersResourceApi {
* If the used [http.Client] completes with an error when making a REST call,
* this method will complete with the same error.
*/
- async.Future<ListClientUsersResponse> list(core.String accountId, core.String clientAccountId, {core.int pageSize, core.String pageToken}) {
+ async.Future<ListClientUsersResponse> list(core.String accountId, core.String clientAccountId, {core.String pageToken, core.int pageSize}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
@@ -548,12 +549,12 @@ class AccountsClientsUsersResourceApi {
if (clientAccountId == null) {
throw new core.ArgumentError("Parameter clientAccountId is required.");
}
- if (pageSize != null) {
- _queryParams["pageSize"] = ["${pageSize}"];
- }
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
_url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/clients/' + commons.Escaper.ecapeVariable('$clientAccountId') + '/users';
@@ -1165,1157 +1166,3404 @@ class AccountsCreativesDealAssociationsResourceApi {
}
+class AccountsFilterSetsResourceApi {
+ final commons.ApiRequester _requester;
-/** A request for associating a deal and a creative. */
-class AddDealAssociationRequest {
- /** The association between a creative and a deal that should be added. */
- CreativeDealAssociation association;
+ AccountsFilterSetsBidMetricsResourceApi get bidMetrics => new AccountsFilterSetsBidMetricsResourceApi(_requester);
+ AccountsFilterSetsBidResponseErrorsResourceApi get bidResponseErrors => new AccountsFilterSetsBidResponseErrorsResourceApi(_requester);
+ AccountsFilterSetsBidResponsesWithoutBidsResourceApi get bidResponsesWithoutBids => new AccountsFilterSetsBidResponsesWithoutBidsResourceApi(_requester);
+ AccountsFilterSetsFilteredBidRequestsResourceApi get filteredBidRequests => new AccountsFilterSetsFilteredBidRequestsResourceApi(_requester);
+ AccountsFilterSetsFilteredBidsResourceApi get filteredBids => new AccountsFilterSetsFilteredBidsResourceApi(_requester);
+ AccountsFilterSetsFilteredImpressionsResourceApi get filteredImpressions => new AccountsFilterSetsFilteredImpressionsResourceApi(_requester);
+ AccountsFilterSetsImpressionMetricsResourceApi get impressionMetrics => new AccountsFilterSetsImpressionMetricsResourceApi(_requester);
+ AccountsFilterSetsLosingBidsResourceApi get losingBids => new AccountsFilterSetsLosingBidsResourceApi(_requester);
- AddDealAssociationRequest();
+ AccountsFilterSetsResourceApi(commons.ApiRequester client) :
+ _requester = client;
- AddDealAssociationRequest.fromJson(core.Map _json) {
- if (_json.containsKey("association")) {
- association = new CreativeDealAssociation.fromJson(_json["association"]);
- }
- }
+ /**
+ * Creates the specified filter set for the account with the given account ID.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [isTransient] - Whether the filter set is transient, or should be persisted
+ * indefinitely.
+ * By default, filter sets are not transient.
+ * If transient, it will be available for at least 1 hour after creation.
+ *
+ * Completes with a [FilterSet].
+ *
+ * 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<FilterSet> create(FilterSet request, core.String accountId, {core.bool isTransient}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
- core.Map toJson() {
- var _json = new core.Map();
- if (association != null) {
- _json["association"] = (association).toJson();
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (isTransient != null) {
+ _queryParams["isTransient"] = ["${isTransient}"];
}
- return _json;
- }
-}
-
-/** @OutputOnly The app type the restriction applies to for mobile device. */
-class AppContext {
- /** The app types this restriction applies to. */
- core.List<core.String> appTypes;
- AppContext();
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets';
- AppContext.fromJson(core.Map _json) {
- if (_json.containsKey("appTypes")) {
- appTypes = _json["appTypes"];
- }
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new FilterSet.fromJson(data));
}
- core.Map toJson() {
- var _json = new core.Map();
- if (appTypes != null) {
- _json["appTypes"] = appTypes;
+ /**
+ * Deletes the requested filter set from the account with the given account
+ * ID.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to delete.
+ *
+ * Completes with a [Empty].
+ *
+ * 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<Empty> delete(core.String accountId, core.String filterSetId) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
}
- return _json;
- }
-}
-/** @OutputOnly The auction type the restriction applies to. */
-class AuctionContext {
- /** The auction types this restriction applies to. */
- core.List<core.String> auctionTypes;
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId');
- AuctionContext();
+ var _response = _requester.request(_url,
+ "DELETE",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
- AuctionContext.fromJson(core.Map _json) {
- if (_json.containsKey("auctionTypes")) {
- auctionTypes = _json["auctionTypes"];
+ /**
+ * Retrieves the requested filter set for the account with the given account
+ * ID.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to get.
+ *
+ * Completes with a [FilterSet].
+ *
+ * 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<FilterSet> get(core.String accountId, core.String filterSetId) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
}
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new FilterSet.fromJson(data));
}
- core.Map toJson() {
- var _json = new core.Map();
- if (auctionTypes != null) {
- _json["auctionTypes"] = auctionTypes;
+ /**
+ * Lists all filter sets for the account with the given account ID.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListFilterSetsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.rtbBreakout.filterSets.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListFilterSetsResponse].
+ *
+ * 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<ListFilterSetsResponse> list(core.String accountId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
}
- return _json;
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListFilterSetsResponse.fromJson(data));
}
+
}
-/**
- * A client resource represents a client buyer&mdash;an agency,
- * a brand, or an advertiser customer of the sponsor buyer.
- * Users associated with the client buyer have restricted access to
- * the Ad Exchange Marketplace and certain other sections
- * of the Ad Exchange Buyer UI based on the role
- * granted to the client buyer.
- * All fields are required unless otherwise specified.
- */
-class Client {
- /**
- * The globally-unique numerical ID of the client.
- * The value of this field is ignored in create and update operations.
- */
- core.String clientAccountId;
- /**
- * Name used to represent this client to publishers.
- * You may have multiple clients that map to the same entity,
- * but for each client the combination of `clientName` and entity
- * must be unique.
- * You can specify this field as empty.
- */
- core.String clientName;
+
+class AccountsFilterSetsBidMetricsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsBidMetricsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
/**
- * Numerical identifier of the client entity.
- * The entity can be an advertiser, a brand, or an agency.
- * This identifier is unique among all the entities with the same type.
+ * Lists all metrics that are measured in terms of number of bids.
*
- * A list of all known advertisers with their identifiers is available in the
- * [advertisers.txt](https://storage.googleapis.com/adx-rtb-dictionaries/advertisers.txt)
- * file.
+ * Request parameters:
*
- * A list of all known brands with their identifiers is available in the
- * [brands.txt](https://storage.googleapis.com/adx-rtb-dictionaries/brands.txt)
- * file.
+ * [accountId] - Account ID of the buyer.
*
- * A list of all known agencies with their identifiers is available in the
- * [agencies.txt](https://storage.googleapis.com/adx-rtb-dictionaries/agencies.txt)
- * file.
- */
- core.String entityId;
- /**
- * The name of the entity. This field is automatically fetched based on
- * the type and ID.
- * The value of this field is ignored in create and update operations.
- */
- core.String entityName;
- /**
- * The type of the client entity: `ADVERTISER`, `BRAND`, or `AGENCY`.
- * Possible string values are:
- * - "ENTITY_TYPE_UNSPECIFIED" : A placeholder for an undefined client entity
- * type. Should not be used.
- * - "ADVERTISER" : An advertiser.
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListBidMetricsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.bidMetrics.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListBidMetricsResponse].
+ *
+ * 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<ListBidMetricsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/bidMetrics';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListBidMetricsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsBidResponseErrorsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsBidResponseErrorsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all errors that occurred in bid responses, with the number of bid
+ * responses affected for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListBidResponseErrorsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.bidResponseErrors.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListBidResponseErrorsResponse].
+ *
+ * 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<ListBidResponseErrorsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/bidResponseErrors';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListBidResponseErrorsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsBidResponsesWithoutBidsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsBidResponsesWithoutBidsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all reasons for which bid responses were considered to have no
+ * applicable bids, with the number of bid responses affected for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListBidResponsesWithoutBidsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.bidResponsesWithoutBids.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListBidResponsesWithoutBidsResponse].
+ *
+ * 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<ListBidResponsesWithoutBidsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/bidResponsesWithoutBids';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListBidResponsesWithoutBidsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredBidRequestsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredBidRequestsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all reasons that caused a bid request not to be sent for an
+ * impression, with the number of bid requests not sent for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListFilteredBidRequestsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredBidRequests.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListFilteredBidRequestsResponse].
+ *
+ * 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<ListFilteredBidRequestsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredBidRequests';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListFilteredBidRequestsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredBidsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredBidsCreativesResourceApi get creatives => new AccountsFilterSetsFilteredBidsCreativesResourceApi(_requester);
+ AccountsFilterSetsFilteredBidsDetailsResourceApi get details => new AccountsFilterSetsFilteredBidsDetailsResourceApi(_requester);
+
+ AccountsFilterSetsFilteredBidsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all reasons for which bids were filtered, with the number of bids
+ * filtered for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListFilteredBidsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredBids.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListFilteredBidsResponse].
+ *
+ * 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<ListFilteredBidsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredBids';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListFilteredBidsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredBidsCreativesResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredBidsCreativesDetailsResourceApi get details => new AccountsFilterSetsFilteredBidsCreativesDetailsResourceApi(_requester);
+
+ AccountsFilterSetsFilteredBidsCreativesResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all creatives associated with a specific reason for which bids were
+ * filtered, with the number of bids filtered for each creative.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [creativeStatusId] - The ID of the creative status for which to retrieve a
+ * breakdown by
+ * creative.
+ * See
+ * [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListCreativeStatusBreakdownByCreativeResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredBids.creatives.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListCreativeStatusBreakdownByCreativeResponse].
+ *
+ * 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<ListCreativeStatusBreakdownByCreativeResponse> list(core.String accountId, core.String filterSetId, core.int creativeStatusId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (creativeStatusId == null) {
+ throw new core.ArgumentError("Parameter creativeStatusId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredBids/' + commons.Escaper.ecapeVariable('$creativeStatusId') + '/creatives';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListCreativeStatusBreakdownByCreativeResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredBidsCreativesDetailsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredBidsCreativesDetailsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all details associated with a specific reason for which bids were
+ * filtered and a specific creative that was filtered for that reason, with
+ * the number of bids filtered for each detail.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [creativeStatusId] - The ID of the creative status for which to retrieve a
+ * breakdown by detail.
+ * See
+ * [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+ *
+ * [creativeId] - The creative ID for which to retrieve a breakdown by detail.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListCreativeStatusAndCreativeBreakdownByDetailResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredBids.creatives.details.list
+ * method.
+ *
+ * Completes with a [ListCreativeStatusAndCreativeBreakdownByDetailResponse].
+ *
+ * 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<ListCreativeStatusAndCreativeBreakdownByDetailResponse> list(core.String accountId, core.String filterSetId, core.int creativeStatusId, core.String creativeId, {core.int pageSize, core.String pageToken}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (creativeStatusId == null) {
+ throw new core.ArgumentError("Parameter creativeStatusId is required.");
+ }
+ if (creativeId == null) {
+ throw new core.ArgumentError("Parameter creativeId is required.");
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredBids/' + commons.Escaper.ecapeVariable('$creativeStatusId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + '/details';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListCreativeStatusAndCreativeBreakdownByDetailResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredBidsDetailsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredBidsDetailsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all details associated with a specific reason for which bids were
+ * filtered, with the number of bids filtered for each detail.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [creativeStatusId] - The ID of the creative status for which to retrieve a
+ * breakdown by detail.
+ * See
+ * [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListCreativeStatusBreakdownByDetailResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredBids.details.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListCreativeStatusBreakdownByDetailResponse].
+ *
+ * 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<ListCreativeStatusBreakdownByDetailResponse> list(core.String accountId, core.String filterSetId, core.int creativeStatusId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (creativeStatusId == null) {
+ throw new core.ArgumentError("Parameter creativeStatusId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredBids/' + commons.Escaper.ecapeVariable('$creativeStatusId') + '/details';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListCreativeStatusBreakdownByDetailResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsFilteredImpressionsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsFilteredImpressionsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all reasons that caused an impression to be filtered (i.e. not
+ * considered as an inventory match), with the number of impressions that were
+ * filtered for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListFilteredImpressionsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.filteredImpressions.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListFilteredImpressionsResponse].
+ *
+ * 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<ListFilteredImpressionsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/filteredImpressions';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListFilteredImpressionsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsImpressionMetricsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsImpressionMetricsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Lists all metrics that are measured in terms of number of impressions.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListImpressionMetricsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.impressionMetrics.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListImpressionMetricsResponse].
+ *
+ * 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<ListImpressionMetricsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/impressionMetrics';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListImpressionMetricsResponse.fromJson(data));
+ }
+
+}
+
+
+class AccountsFilterSetsLosingBidsResourceApi {
+ final commons.ApiRequester _requester;
+
+ AccountsFilterSetsLosingBidsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * List all reasons for which bids lost in the auction, with the number of
+ * bids that lost for each reason.
+ *
+ * Request parameters:
+ *
+ * [accountId] - Account ID of the buyer.
+ *
+ * [filterSetId] - The ID of the filter set to apply.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ * Typically, this is the value of
+ * ListLosingBidsResponse.nextPageToken
+ * returned from the previous call to the
+ * accounts.filterSets.losingBids.list
+ * method.
+ *
+ * [pageSize] - Requested page size. The server may return fewer than
+ * requested.
+ * If unspecified, the server will pick an appropriate default.
+ *
+ * Completes with a [ListLosingBidsResponse].
+ *
+ * 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<ListLosingBidsResponse> list(core.String accountId, core.String filterSetId, {core.String pageToken, core.int pageSize}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (accountId == null) {
+ throw new core.ArgumentError("Parameter accountId is required.");
+ }
+ if (filterSetId == null) {
+ throw new core.ArgumentError("Parameter filterSetId is required.");
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/filterSets/' + commons.Escaper.ecapeVariable('$filterSetId') + '/losingBids';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListLosingBidsResponse.fromJson(data));
+ }
+
+}
+
+
+
+/**
+ * An absolute date range, specified by its start date and end date.
+ * The supported range of dates begins 30 days before today and ends today.
+ * Validity checked upon filter set creation. If a filter set with an absolute
+ * date range is run at a later date more than 30 days after start_date, it will
+ * fail.
+ */
+class AbsoluteDateRange {
+ /**
+ * The end date of the range (inclusive).
+ * Must be within the 30 days leading up to current date, and must be equal to
+ * or after start_date.
+ */
+ Date endDate;
+ /**
+ * The start date of the range (inclusive).
+ * Must be within the 30 days leading up to current date, and must be equal to
+ * or before end_date.
+ */
+ Date startDate;
+
+ AbsoluteDateRange();
+
+ AbsoluteDateRange.fromJson(core.Map _json) {
+ if (_json.containsKey("endDate")) {
+ endDate = new Date.fromJson(_json["endDate"]);
+ }
+ if (_json.containsKey("startDate")) {
+ startDate = new Date.fromJson(_json["startDate"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (endDate != null) {
+ _json["endDate"] = (endDate).toJson();
+ }
+ if (startDate != null) {
+ _json["startDate"] = (startDate).toJson();
+ }
+ return _json;
+ }
+}
+
+/** A request for associating a deal and a creative. */
+class AddDealAssociationRequest {
+ /** The association between a creative and a deal that should be added. */
+ CreativeDealAssociation association;
+
+ AddDealAssociationRequest();
+
+ AddDealAssociationRequest.fromJson(core.Map _json) {
+ if (_json.containsKey("association")) {
+ association = new CreativeDealAssociation.fromJson(_json["association"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (association != null) {
+ _json["association"] = (association).toJson();
+ }
+ return _json;
+ }
+}
+
+/** @OutputOnly The app type the restriction applies to for mobile device. */
+class AppContext {
+ /** The app types this restriction applies to. */
+ core.List<core.String> appTypes;
+
+ AppContext();
+
+ AppContext.fromJson(core.Map _json) {
+ if (_json.containsKey("appTypes")) {
+ appTypes = _json["appTypes"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (appTypes != null) {
+ _json["appTypes"] = appTypes;
+ }
+ return _json;
+ }
+}
+
+/** @OutputOnly The auction type the restriction applies to. */
+class AuctionContext {
+ /** The auction types this restriction applies to. */
+ core.List<core.String> auctionTypes;
+
+ AuctionContext();
+
+ AuctionContext.fromJson(core.Map _json) {
+ if (_json.containsKey("auctionTypes")) {
+ auctionTypes = _json["auctionTypes"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (auctionTypes != null) {
+ _json["auctionTypes"] = auctionTypes;
+ }
+ return _json;
+ }
+}
+
+/**
+ * The set of metrics that are measured in numbers of bids, representing how
+ * many bids with the specified dimension values were considered eligible at
+ * each stage of the bidding funnel;
+ */
+class BidMetricsRow {
+ /** The number of bids that Ad Exchange received from the buyer. */
+ MetricValue bids;
+ /** The number of bids that were permitted to compete in the auction. */
+ MetricValue bidsInAuction;
+ /** The number of bids for which the buyer was billed. */
+ MetricValue billedImpressions;
+ /** The number of bids that won an impression. */
+ MetricValue impressionsWon;
+ /**
+ * The values of all dimensions associated with metric values in this row.
+ */
+ RowDimensions rowDimensions;
+ /**
+ * The number of bids for which the corresponding impression was viewable (as
+ * defined by Active View).
+ */
+ MetricValue viewableImpressions;
+
+ BidMetricsRow();
+
+ BidMetricsRow.fromJson(core.Map _json) {
+ if (_json.containsKey("bids")) {
+ bids = new MetricValue.fromJson(_json["bids"]);
+ }
+ if (_json.containsKey("bidsInAuction")) {
+ bidsInAuction = new MetricValue.fromJson(_json["bidsInAuction"]);
+ }
+ if (_json.containsKey("billedImpressions")) {
+ billedImpressions = new MetricValue.fromJson(_json["billedImpressions"]);
+ }
+ if (_json.containsKey("impressionsWon")) {
+ impressionsWon = new MetricValue.fromJson(_json["impressionsWon"]);
+ }
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
+ }
+ if (_json.containsKey("viewableImpressions")) {
+ viewableImpressions = new MetricValue.fromJson(_json["viewableImpressions"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bids != null) {
+ _json["bids"] = (bids).toJson();
+ }
+ if (bidsInAuction != null) {
+ _json["bidsInAuction"] = (bidsInAuction).toJson();
+ }
+ if (billedImpressions != null) {
+ _json["billedImpressions"] = (billedImpressions).toJson();
+ }
+ if (impressionsWon != null) {
+ _json["impressionsWon"] = (impressionsWon).toJson();
+ }
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
+ }
+ if (viewableImpressions != null) {
+ _json["viewableImpressions"] = (viewableImpressions).toJson();
+ }
+ return _json;
+ }
+}
+
+/**
+ * The number of impressions with the specified dimension values that were
+ * considered to have no applicable bids, as described by the specified status.
+ */
+class BidResponseWithoutBidsStatusRow {
+ /**
+ * The number of impressions for which there was a bid response with the
+ * specified status.
+ */
+ MetricValue impressionCount;
+ /**
+ * The values of all dimensions associated with metric values in this row.
+ */
+ RowDimensions rowDimensions;
+ /**
+ * The status that caused the bid response to be considered to have no
+ * applicable bids.
+ * Possible string values are:
+ * - "STATUS_UNSPECIFIED" : A placeholder for an undefined status.
+ * This value will never be returned in responses.
+ * - "RESPONSES_WITHOUT_BIDS" : The response had no bids.
+ * - "RESPONSES_WITHOUT_BIDS_FOR_ACCOUNT" : The response had no bids for the
+ * specified account, though it may have
+ * included bids on behalf of other accounts.
+ * - "RESPONSES_WITHOUT_BIDS_FOR_DEAL" : The response had no bids for the
+ * specified deal, though it may have
+ * included bids on other deals on behalf of the account to which the deal
+ * belongs.
+ */
+ core.String status;
+
+ BidResponseWithoutBidsStatusRow();
+
+ BidResponseWithoutBidsStatusRow.fromJson(core.Map _json) {
+ if (_json.containsKey("impressionCount")) {
+ impressionCount = new MetricValue.fromJson(_json["impressionCount"]);
+ }
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
+ }
+ if (_json.containsKey("status")) {
+ status = _json["status"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (impressionCount != null) {
+ _json["impressionCount"] = (impressionCount).toJson();
+ }
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
+ }
+ if (status != null) {
+ _json["status"] = status;
+ }
+ return _json;
+ }
+}
+
+/**
+ * The number of impressions with the specified dimension values where the
+ * corresponding bid request or bid response was not successful, as described by
+ * the specified callout status.
+ */
+class CalloutStatusRow {
+ /**
+ * The ID of the callout status.
+ * See
+ * [callout-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/callout-status-codes).
+ */
+ core.int calloutStatusId;
+ /**
+ * The number of impressions for which there was a bid request or bid response
+ * with the specified callout status.
+ */
+ MetricValue impressionCount;
+ /**
+ * The values of all dimensions associated with metric values in this row.
+ */
+ RowDimensions rowDimensions;
+
+ CalloutStatusRow();
+
+ CalloutStatusRow.fromJson(core.Map _json) {
+ if (_json.containsKey("calloutStatusId")) {
+ calloutStatusId = _json["calloutStatusId"];
+ }
+ if (_json.containsKey("impressionCount")) {
+ impressionCount = new MetricValue.fromJson(_json["impressionCount"]);
+ }
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (calloutStatusId != null) {
+ _json["calloutStatusId"] = calloutStatusId;
+ }
+ if (impressionCount != null) {
+ _json["impressionCount"] = (impressionCount).toJson();
+ }
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
+ }
+ return _json;
+ }
+}
+
+/**
+ * A client resource represents a client buyer&mdash;an agency,
+ * a brand, or an advertiser customer of the sponsor buyer.
+ * Users associated with the client buyer have restricted access to
+ * the Ad Exchange Marketplace and certain other sections
+ * of the Ad Exchange Buyer UI based on the role
+ * granted to the client buyer.
+ * All fields are required unless otherwise specified.
+ */
+class Client {
+ /**
+ * The globally-unique numerical ID of the client.
+ * The value of this field is ignored in create and update operations.
+ */
+ core.String clientAccountId;
+ /**
+ * Name used to represent this client to publishers.
+ * You may have multiple clients that map to the same entity,
+ * but for each client the combination of `clientName` and entity
+ * must be unique.
+ * You can specify this field as empty.
+ */
+ core.String clientName;
+ /**
+ * Numerical identifier of the client entity.
+ * The entity can be an advertiser, a brand, or an agency.
+ * This identifier is unique among all the entities with the same type.
+ *
+ * A list of all known advertisers with their identifiers is available in the
+ * [advertisers.txt](https://storage.googleapis.com/adx-rtb-dictionaries/advertisers.txt)
+ * file.
+ *
+ * A list of all known brands with their identifiers is available in the
+ * [brands.txt](https://storage.googleapis.com/adx-rtb-dictionaries/brands.txt)
+ * file.
+ *
+ * A list of all known agencies with their identifiers is available in the
+ * [agencies.txt](https://storage.googleapis.com/adx-rtb-dictionaries/agencies.txt)
+ * file.
+ */
+ core.String entityId;
+ /**
+ * The name of the entity. This field is automatically fetched based on
+ * the type and ID.
+ * The value of this field is ignored in create and update operations.
+ */
+ core.String entityName;
+ /**
+ * The type of the client entity: `ADVERTISER`, `BRAND`, or `AGENCY`.
+ * Possible string values are:
+ * - "ENTITY_TYPE_UNSPECIFIED" : A placeholder for an undefined client entity
+ * type. Should not be used.
+ * - "ADVERTISER" : An advertiser.
* - "BRAND" : A brand.
* - "AGENCY" : An advertising agency.
*/
- core.String entityType;
+ core.String entityType;
+ /**
+ * The role which is assigned to the client buyer. Each role implies a set of
+ * permissions granted to the client. Must be one of `CLIENT_DEAL_VIEWER`,
+ * `CLIENT_DEAL_NEGOTIATOR` or `CLIENT_DEAL_APPROVER`.
+ * Possible string values are:
+ * - "CLIENT_ROLE_UNSPECIFIED" : A placeholder for an undefined client role.
+ * - "CLIENT_DEAL_VIEWER" : Users associated with this client can see
+ * publisher deal offers
+ * in the Marketplace.
+ * They can neither negotiate proposals nor approve deals.
+ * If this client is visible to publishers, they can send deal proposals
+ * to this client.
+ * - "CLIENT_DEAL_NEGOTIATOR" : Users associated with this client can respond
+ * to deal proposals
+ * sent to them by publishers. They can also initiate deal proposals
+ * of their own.
+ * - "CLIENT_DEAL_APPROVER" : Users associated with this client can approve
+ * eligible deals
+ * on your behalf. Some deals may still explicitly require publisher
+ * finalization. If this role is not selected, the sponsor buyer
+ * will need to manually approve each of their deals.
+ */
+ core.String role;
+ /**
+ * The status of the client buyer.
+ * Possible string values are:
+ * - "CLIENT_STATUS_UNSPECIFIED" : A placeholder for an undefined client
+ * status.
+ * - "DISABLED" : A client that is currently disabled.
+ * - "ACTIVE" : A client that is currently active.
+ */
+ core.String status;
+ /** Whether the client buyer will be visible to sellers. */
+ core.bool visibleToSeller;
+
+ Client();
+
+ Client.fromJson(core.Map _json) {
+ if (_json.containsKey("clientAccountId")) {
+ clientAccountId = _json["clientAccountId"];
+ }
+ if (_json.containsKey("clientName")) {
+ clientName = _json["clientName"];
+ }
+ if (_json.containsKey("entityId")) {
+ entityId = _json["entityId"];
+ }
+ if (_json.containsKey("entityName")) {
+ entityName = _json["entityName"];
+ }
+ if (_json.containsKey("entityType")) {
+ entityType = _json["entityType"];
+ }
+ if (_json.containsKey("role")) {
+ role = _json["role"];
+ }
+ if (_json.containsKey("status")) {
+ status = _json["status"];
+ }
+ if (_json.containsKey("visibleToSeller")) {
+ visibleToSeller = _json["visibleToSeller"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (clientAccountId != null) {
+ _json["clientAccountId"] = clientAccountId;
+ }
+ if (clientName != null) {
+ _json["clientName"] = clientName;
+ }
+ if (entityId != null) {
+ _json["entityId"] = entityId;
+ }
+ if (entityName != null) {
+ _json["entityName"] = entityName;
+ }
+ if (entityType != null) {
+ _json["entityType"] = entityType;
+ }
+ if (role != null) {
+ _json["role"] = role;
+ }
+ if (status != null) {
+ _json["status"] = status;
+ }
+ if (visibleToSeller != null) {
+ _json["visibleToSeller"] = visibleToSeller;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A client user is created under a client buyer and has restricted access to
+ * the Ad Exchange Marketplace and certain other sections
+ * of the Ad Exchange Buyer UI based on the role
+ * granted to the associated client buyer.
+ *
+ * The only way a new client user can be created is via accepting an
+ * email invitation
+ * (see the
+ * accounts.clients.invitations.create
+ * method).
+ *
+ * All fields are required unless otherwise specified.
+ */
+class ClientUser {
+ /**
+ * Numerical account ID of the client buyer
+ * with which the user is associated; the
+ * buyer must be a client of the current sponsor buyer.
+ * The value of this field is ignored in an update operation.
+ */
+ core.String clientAccountId;
+ /**
+ * User's email address. The value of this field
+ * is ignored in an update operation.
+ */
+ core.String email;
+ /**
+ * The status of the client user.
+ * Possible string values are:
+ * - "USER_STATUS_UNSPECIFIED" : A placeholder for an undefined user status.
+ * - "PENDING" : A user who was already created but hasn't accepted the
+ * invitation yet.
+ * - "ACTIVE" : A user that is currently active.
+ * - "DISABLED" : A user that is currently disabled.
+ */
+ core.String status;
+ /**
+ * The unique numerical ID of the client user
+ * that has accepted an invitation.
+ * The value of this field is ignored in an update operation.
+ */
+ core.String userId;
+
+ ClientUser();
+
+ ClientUser.fromJson(core.Map _json) {
+ if (_json.containsKey("clientAccountId")) {
+ clientAccountId = _json["clientAccountId"];
+ }
+ if (_json.containsKey("email")) {
+ email = _json["email"];
+ }
+ if (_json.containsKey("status")) {
+ status = _json["status"];
+ }
+ if (_json.containsKey("userId")) {
+ userId = _json["userId"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (clientAccountId != null) {
+ _json["clientAccountId"] = clientAccountId;
+ }
+ if (email != null) {
+ _json["email"] = email;
+ }
+ if (status != null) {
+ _json["status"] = status;
+ }
+ if (userId != null) {
+ _json["userId"] = userId;
+ }
+ return _json;
+ }
+}
+
+/**
+ * An invitation for a new client user to get access to the Ad Exchange
+ * Buyer UI.
+ * All fields are required unless otherwise specified.
+ */
+class ClientUserInvitation {
+ /**
+ * Numerical account ID of the client buyer
+ * that the invited user is associated with.
+ * The value of this field is ignored in create operations.
+ */
+ core.String clientAccountId;
+ /**
+ * The email address to which the invitation is sent. Email
+ * addresses should be unique among all client users under each sponsor
+ * buyer.
+ */
+ core.String email;
+ /**
+ * The unique numerical ID of the invitation that is sent to the user.
+ * The value of this field is ignored in create operations.
+ */
+ core.String invitationId;
+
+ ClientUserInvitation();
+
+ ClientUserInvitation.fromJson(core.Map _json) {
+ if (_json.containsKey("clientAccountId")) {
+ clientAccountId = _json["clientAccountId"];
+ }
+ if (_json.containsKey("email")) {
+ email = _json["email"];
+ }
+ if (_json.containsKey("invitationId")) {
+ invitationId = _json["invitationId"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (clientAccountId != null) {
+ _json["clientAccountId"] = clientAccountId;
+ }
+ if (email != null) {
+ _json["email"] = email;
+ }
+ if (invitationId != null) {
+ _json["invitationId"] = invitationId;
+ }
+ return _json;
+ }
+}
+
+/** @OutputOnly Shows any corrections that were applied to this creative. */
+class Correction {
+ /** The contexts for the correction. */
+ core.List<ServingContext> contexts;
+ /** Additional details about what was corrected. */
+ core.List<core.String> details;
+ /**
+ * The type of correction that was applied to the creative.
+ * Possible string values are:
+ * - "CORRECTION_TYPE_UNSPECIFIED" : The correction type is unknown. Refer to
+ * the details for more information.
+ * - "VENDOR_IDS_ADDED" : The ad's declared vendors did not match the vendors
+ * that were detected.
+ * The detected vendors were added.
+ * - "SSL_ATTRIBUTE_REMOVED" : The ad had the SSL attribute declared but was
+ * not SSL-compliant.
+ * The SSL attribute was removed.
+ * - "FLASH_FREE_ATTRIBUTE_REMOVED" : The ad was declared as Flash-free but
+ * contained Flash, so the Flash-free
+ * attribute was removed.
+ * - "FLASH_FREE_ATTRIBUTE_ADDED" : The ad was not declared as Flash-free but
+ * it did not reference any flash
+ * content, so the Flash-free attribute was added.
+ * - "REQUIRED_ATTRIBUTE_ADDED" : The ad did not declare a required creative
+ * attribute.
+ * The attribute was added.
+ * - "REQUIRED_VENDOR_ADDED" : The ad did not declare a required technology
+ * vendor.
+ * The technology vendor was added.
+ * - "SSL_ATTRIBUTE_ADDED" : The ad did not declare the SSL attribute but was
+ * SSL-compliant, so the
+ * SSL attribute was added.
+ * - "IN_BANNER_VIDEO_ATTRIBUTE_ADDED" : Properties consistent with In-banner
+ * video were found, so an
+ * In-Banner Video attribute was added.
+ * - "MRAID_ATTRIBUTE_ADDED" : The ad makes calls to the MRAID API so the
+ * MRAID attribute was added.
+ * - "FLASH_ATTRIBUTE_REMOVED" : The ad unnecessarily declared the Flash
+ * attribute, so the Flash attribute
+ * was removed.
+ * - "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" : The ad contains video content.
+ */
+ core.String type;
+
+ Correction();
+
+ Correction.fromJson(core.Map _json) {
+ if (_json.containsKey("contexts")) {
+ contexts = _json["contexts"].map((value) => new ServingContext.fromJson(value)).toList();
+ }
+ if (_json.containsKey("details")) {
+ details = _json["details"];
+ }
+ if (_json.containsKey("type")) {
+ type = _json["type"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (contexts != null) {
+ _json["contexts"] = contexts.map((value) => (value).toJson()).toList();
+ }
+ if (details != null) {
+ _json["details"] = details;
+ }
+ if (type != null) {
+ _json["type"] = type;
+ }
+ return _json;
+ }
+}
+
+/** A creative and its classification data. */
+class Creative {
+ /**
+ * The account that this creative belongs to.
+ * Can be used to filter the response of the
+ * creatives.list
+ * method.
+ */
+ core.String accountId;
+ /** The link to AdChoices destination page. */
+ core.String adChoicesDestinationUrl;
+ /** The name of the company being advertised in the creative. */
+ core.String advertiserName;
+ /** The agency ID for this creative. */
+ core.String agencyId;
+ /** @OutputOnly The last update timestamp of the creative via API. */
+ core.String apiUpdateTime;
+ /**
+ * All attributes for the ads that may be shown from this creative.
+ * Can be used to filter the response of the
+ * creatives.list
+ * method.
+ */
+ core.List<core.String> attributes;
+ /** The set of destination URLs for the creative. */
+ core.List<core.String> clickThroughUrls;
+ /** @OutputOnly Shows any corrections that were applied to this creative. */
+ core.List<Correction> corrections;
+ /**
+ * The buyer-defined creative ID of this creative.
+ * Can be used to filter the response of the
+ * creatives.list
+ * method.
+ */
+ core.String creativeId;
+ /**
+ * @OutputOnly The top-level deals status of this creative.
+ * If disapproved, an entry for 'auctionType=DIRECT_DEALS' (or 'ALL') in
+ * serving_restrictions will also exist. Note
+ * that this may be nuanced with other contextual restrictions, in which case,
+ * it may be preferable to read from serving_restrictions directly.
+ * Can be used to filter the response of the
+ * creatives.list
+ * method.
+ * Possible string values are:
+ * - "STATUS_UNSPECIFIED" : The status is unknown.
+ * - "NOT_CHECKED" : The creative has not been checked.
+ * - "CONDITIONALLY_APPROVED" : The creative has been conditionally approved.
+ * See serving_restrictions for details.
+ * - "APPROVED" : The creative has been approved.
+ * - "DISAPPROVED" : The creative has been disapproved.
+ */
+ core.String dealsStatus;
+ /** @OutputOnly Detected advertiser IDs, if any. */
+ core.List<core.String> detectedAdvertiserIds;
+ /**
+ * @OutputOnly
+ * The detected domains for this creative.
+ */
+ core.List<core.String> detectedDomains;
+ /**
+ * @OutputOnly
+ * The detected languages for this creative. The order is arbitrary. The codes
+ * are 2 or 5 characters and are documented at
+ * https://developers.google.com/adwords/api/docs/appendix/languagecodes.
+ */
+ core.List<core.String> detectedLanguages;
+ /**
+ * @OutputOnly Detected product categories, if any.
+ * See the ad-product-categories.txt file in the technical documentation
+ * for a list of IDs.
+ */
+ core.List<core.int> detectedProductCategories;
+ /**
+ * @OutputOnly Detected sensitive categories, if any.
+ * See the ad-sensitive-categories.txt file in the technical documentation for
+ * a list of IDs. You should use these IDs along with the
+ * excluded-sensitive-category field in the bid request to filter your bids.
+ */
+ core.List<core.int> detectedSensitiveCategories;
+ /** @OutputOnly The filtering stats for this creative. */
+ FilteringStats filteringStats;
+ /** An HTML creative. */
+ HtmlContent html;
+ /** The set of URLs to be called to record an impression. */
+ core.List<core.String> impressionTrackingUrls;
+ /** A native creative. */
+ NativeContent native;
+ /**
+ * @OutputOnly The top-level open auction status of this creative.
+ * If disapproved, an entry for 'auctionType = OPEN_AUCTION' (or 'ALL') in
+ * serving_restrictions will also exist. Note
+ * that this may be nuanced with other contextual restrictions, in which case,
+ * it may be preferable to read from serving_restrictions directly.
+ * Can be used to filter the response of the
+ * creatives.list
+ * method.
+ * Possible string values are:
+ * - "STATUS_UNSPECIFIED" : The status is unknown.
+ * - "NOT_CHECKED" : The creative has not been checked.
+ * - "CONDITIONALLY_APPROVED" : The creative has been conditionally approved.
+ * See serving_restrictions for details.
+ * - "APPROVED" : The creative has been approved.
+ * - "DISAPPROVED" : The creative has been disapproved.
+ */
+ core.String openAuctionStatus;
+ /**
+ * All restricted categories for the ads that may be shown from this creative.
+ */
+ core.List<core.String> restrictedCategories;
+ /**
+ * @OutputOnly The granular status of this ad in specific contexts.
+ * A context here relates to where something ultimately serves (for example,
+ * a physical location, a platform, an HTTPS vs HTTP request, or the type
+ * of auction).
+ */
+ core.List<ServingRestriction> servingRestrictions;
+ /**
+ * All vendor IDs for the ads that may be shown from this creative.
+ * See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt
+ * for possible values.
+ */
+ core.List<core.int> vendorIds;
+ /** @OutputOnly The version of this creative. */
+ core.int version;
+ /** A video creative. */
+ VideoContent video;
+
+ Creative();
+
+ Creative.fromJson(core.Map _json) {
+ if (_json.containsKey("accountId")) {
+ accountId = _json["accountId"];
+ }
+ if (_json.containsKey("adChoicesDestinationUrl")) {
+ adChoicesDestinationUrl = _json["adChoicesDestinationUrl"];
+ }
+ if (_json.containsKey("advertiserName")) {
+ advertiserName = _json["advertiserName"];
+ }
+ if (_json.containsKey("agencyId")) {
+ agencyId = _json["agencyId"];
+ }
+ if (_json.containsKey("apiUpdateTime")) {
+ apiUpdateTime = _json["apiUpdateTime"];
+ }
+ if (_json.containsKey("attributes")) {
+ attributes = _json["attributes"];
+ }
+ if (_json.containsKey("clickThroughUrls")) {
+ clickThroughUrls = _json["clickThroughUrls"];
+ }
+ if (_json.containsKey("corrections")) {
+ corrections = _json["corrections"].map((value) => new Correction.fromJson(value)).toList();
+ }
+ if (_json.containsKey("creativeId")) {
+ creativeId = _json["creativeId"];
+ }
+ if (_json.containsKey("dealsStatus")) {
+ dealsStatus = _json["dealsStatus"];
+ }
+ if (_json.containsKey("detectedAdvertiserIds")) {
+ detectedAdvertiserIds = _json["detectedAdvertiserIds"];
+ }
+ if (_json.containsKey("detectedDomains")) {
+ detectedDomains = _json["detectedDomains"];
+ }
+ if (_json.containsKey("detectedLanguages")) {
+ detectedLanguages = _json["detectedLanguages"];
+ }
+ if (_json.containsKey("detectedProductCategories")) {
+ detectedProductCategories = _json["detectedProductCategories"];
+ }
+ if (_json.containsKey("detectedSensitiveCategories")) {
+ detectedSensitiveCategories = _json["detectedSensitiveCategories"];
+ }
+ if (_json.containsKey("filteringStats")) {
+ filteringStats = new FilteringStats.fromJson(_json["filteringStats"]);
+ }
+ if (_json.containsKey("html")) {
+ html = new HtmlContent.fromJson(_json["html"]);
+ }
+ if (_json.containsKey("impressionTrackingUrls")) {
+ impressionTrackingUrls = _json["impressionTrackingUrls"];
+ }
+ if (_json.containsKey("native")) {
+ native = new NativeContent.fromJson(_json["native"]);
+ }
+ if (_json.containsKey("openAuctionStatus")) {
+ openAuctionStatus = _json["openAuctionStatus"];
+ }
+ if (_json.containsKey("restrictedCategories")) {
+ restrictedCategories = _json["restrictedCategories"];
+ }
+ if (_json.containsKey("servingRestrictions")) {
+ servingRestrictions = _json["servingRestrictions"].map((value) => new ServingRestriction.fromJson(value)).toList();
+ }
+ if (_json.containsKey("vendorIds")) {
+ vendorIds = _json["vendorIds"];
+ }
+ if (_json.containsKey("version")) {
+ version = _json["version"];
+ }
+ if (_json.containsKey("video")) {
+ video = new VideoContent.fromJson(_json["video"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (accountId != null) {
+ _json["accountId"] = accountId;
+ }
+ if (adChoicesDestinationUrl != null) {
+ _json["adChoicesDestinationUrl"] = adChoicesDestinationUrl;
+ }
+ if (advertiserName != null) {
+ _json["advertiserName"] = advertiserName;
+ }
+ if (agencyId != null) {
+ _json["agencyId"] = agencyId;
+ }
+ if (apiUpdateTime != null) {
+ _json["apiUpdateTime"] = apiUpdateTime;
+ }
+ if (attributes != null) {
+ _json["attributes"] = attributes;
+ }
+ if (clickThroughUrls != null) {
+ _json["clickThroughUrls"] = clickThroughUrls;
+ }
+ if (corrections != null) {
+ _json["corrections"] = corrections.map((value) => (value).toJson()).toList();
+ }
+ if (creativeId != null) {
+ _json["creativeId"] = creativeId;
+ }
+ if (dealsStatus != null) {
+ _json["dealsStatus"] = dealsStatus;
+ }
+ if (detectedAdvertiserIds != null) {
+ _json["detectedAdvertiserIds"] = detectedAdvertiserIds;
+ }
+ if (detectedDomains != null) {
+ _json["detectedDomains"] = detectedDomains;
+ }
+ if (detectedLanguages != null) {
+ _json["detectedLanguages"] = detectedLanguages;
+ }
+ if (detectedProductCategories != null) {
+ _json["detectedProductCategories"] = detectedProductCategories;
+ }
+ if (detectedSensitiveCategories != null) {
+ _json["detectedSensitiveCategories"] = detectedSensitiveCategories;
+ }
+ if (filteringStats != null) {
+ _json["filteringStats"] = (filteringStats).toJson();
+ }
+ if (html != null) {
+ _json["html"] = (html).toJson();
+ }
+ if (impressionTrackingUrls != null) {
+ _json["impressionTrackingUrls"] = impressionTrackingUrls;
+ }
+ if (native != null) {
+ _json["native"] = (native).toJson();
+ }
+ if (openAuctionStatus != null) {
+ _json["openAuctionStatus"] = openAuctionStatus;
+ }
+ if (restrictedCategories != null) {
+ _json["restrictedCategories"] = restrictedCategories;
+ }
+ if (servingRestrictions != null) {
+ _json["servingRestrictions"] = servingRestrictions.map((value) => (value).toJson()).toList();
+ }
+ if (vendorIds != null) {
+ _json["vendorIds"] = vendorIds;
+ }
+ if (version != null) {
+ _json["version"] = version;
+ }
+ if (video != null) {
+ _json["video"] = (video).toJson();
+ }
+ return _json;
+ }
+}
+
+/** The association between a creative and a deal. */
+class CreativeDealAssociation {
+ /** The account the creative belongs to. */
+ core.String accountId;
+ /** The ID of the creative associated with the deal. */
+ core.String creativeId;
+ /** The externalDealId for the deal associated with the creative. */
+ core.String dealsId;
+
+ CreativeDealAssociation();
+
+ CreativeDealAssociation.fromJson(core.Map _json) {
+ if (_json.containsKey("accountId")) {
+ accountId = _json["accountId"];
+ }
+ if (_json.containsKey("creativeId")) {
+ creativeId = _json["creativeId"];
+ }
+ if (_json.containsKey("dealsId")) {
+ dealsId = _json["dealsId"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (accountId != null) {
+ _json["accountId"] = accountId;
+ }
+ if (creativeId != null) {
+ _json["creativeId"] = creativeId;
+ }
+ if (dealsId != null) {
+ _json["dealsId"] = dealsId;
+ }
+ return _json;
+ }
+}
+
+/**
+ * The number of bids with the specified dimension values that did not win the
+ * auction (either were filtered pre-auction or lost the auction), as described
+ * by the specified creative status.
+ */
+class CreativeStatusRow {
+ /** The number of bids with the specified status. */
+ MetricValue bidCount;
+ /**
+ * The ID of the creative status.
+ * See
+ * [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+ */
+ core.int creativeStatusId;
+ /**
+ * The values of all dimensions associated with metric values in this row.
+ */
+ RowDimensions rowDimensions;
+
+ CreativeStatusRow();
+
+ CreativeStatusRow.fromJson(core.Map _json) {
+ if (_json.containsKey("bidCount")) {
+ bidCount = new MetricValue.fromJson(_json["bidCount"]);
+ }
+ if (_json.containsKey("creativeStatusId")) {
+ creativeStatusId = _json["creativeStatusId"];
+ }
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bidCount != null) {
+ _json["bidCount"] = (bidCount).toJson();
+ }
+ if (creativeStatusId != null) {
+ _json["creativeStatusId"] = creativeStatusId;
+ }
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
+ }
+ return _json;
+ }
+}
+
+/**
+ * Represents a whole calendar date, e.g. date of birth. The time of day and
+ * time zone are either specified elsewhere or are not significant. The date
+ * is relative to the Proleptic Gregorian Calendar. The day may be 0 to
+ * represent a year and month where the day is not significant, e.g. credit card
+ * expiration date. The year may be 0 to represent a month and day independent
+ * of year, e.g. anniversary date. Related types are google.type.TimeOfDay
+ * and `google.protobuf.Timestamp`.
+ */
+class Date {
+ /**
+ * Day of month. Must be from 1 to 31 and valid for the year and month, or 0
+ * if specifying a year/month where the day is not significant.
+ */
+ core.int day;
+ /** Month of year. Must be from 1 to 12. */
+ core.int month;
+ /**
+ * Year of date. Must be from 1 to 9999, or 0 if specifying a date without
+ * a year.
+ */
+ core.int year;
+
+ Date();
+
+ Date.fromJson(core.Map _json) {
+ if (_json.containsKey("day")) {
+ day = _json["day"];
+ }
+ if (_json.containsKey("month")) {
+ month = _json["month"];
+ }
+ if (_json.containsKey("year")) {
+ year = _json["year"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (day != null) {
+ _json["day"] = day;
+ }
+ if (month != null) {
+ _json["month"] = month;
+ }
+ if (year != null) {
+ _json["year"] = year;
+ }
+ return _json;
+ }
+}
+
+/** @OutputOnly The reason and details for a disapproval. */
+class Disapproval {
+ /** Additional details about the reason for disapproval. */
+ core.List<core.String> details;
+ /**
+ * The categorized reason for disapproval.
+ * Possible string values are:
+ * - "LENGTH_OF_IMAGE_ANIMATION" : The length of the image animation is longer
+ * than allowed.
+ * - "BROKEN_URL" : The click through URL doesn't work properly.
+ * - "MEDIA_NOT_FUNCTIONAL" : Something is wrong with the creative itself.
+ * - "INVALID_FOURTH_PARTY_CALL" : The ad makes a fourth party call to an
+ * unapproved vendor.
+ * - "INCORRECT_REMARKETING_DECLARATION" : The ad targets consumers using
+ * remarketing lists and/or collects
+ * data for subsequent use in retargeting, but does not correctly declare
+ * that use.
+ * - "LANDING_PAGE_ERROR" : Clicking on the ad leads to an error page.
+ * - "AD_SIZE_DOES_NOT_MATCH_AD_SLOT" : The ad size when rendered does not
+ * match the declaration.
+ * - "NO_BORDER" : Ads with a white background require a border, which was
+ * missing.
+ * - "FOURTH_PARTY_BROWSER_COOKIES" : The creative attempts to set cookies
+ * from a fourth party that is not
+ * certified.
+ * - "LSO_OBJECTS" : The creative sets an LSO object.
+ * - "BLANK_CREATIVE" : The ad serves a blank.
+ * - "DESTINATION_URLS_UNDECLARED" : The ad uses rotation, but not all
+ * destination URLs were declared.
+ * - "PROBLEM_WITH_CLICK_MACRO" : There is a problem with the way the click
+ * macro is used.
+ * - "INCORRECT_AD_TECHNOLOGY_DECLARATION" : The ad technology declaration is
+ * not accurate.
+ * - "INCORRECT_DESTINATION_URL_DECLARATION" : The actual destination URL does
+ * not match the declared destination URL.
+ * - "EXPANDABLE_INCORRECT_DIRECTION" : The declared expanding direction does
+ * not match the actual direction.
+ * - "EXPANDABLE_DIRECTION_NOT_SUPPORTED" : The ad does not expand in a
+ * supported direction.
+ * - "EXPANDABLE_INVALID_VENDOR" : The ad uses an expandable vendor that is
+ * not supported.
+ * - "EXPANDABLE_FUNCTIONALITY" : There was an issue with the expandable ad.
+ * - "VIDEO_INVALID_VENDOR" : The ad uses a video vendor that is not
+ * supported.
+ * - "VIDEO_UNSUPPORTED_LENGTH" : The length of the video ad is not supported.
+ * - "VIDEO_UNSUPPORTED_FORMAT" : The format of the video ad is not supported.
+ * - "VIDEO_FUNCTIONALITY" : There was an issue with the video ad.
+ * - "LANDING_PAGE_DISABLED" : The landing page does not conform to Ad
+ * Exchange policy.
+ * - "MALWARE_SUSPECTED" : The ad or the landing page may contain malware.
+ * - "ADULT_IMAGE_OR_VIDEO" : The ad contains adult images or video content.
+ * - "INACCURATE_AD_TEXT" : The ad contains text that is unclear or
+ * inaccurate.
+ * - "COUNTERFEIT_DESIGNER_GOODS" : The ad promotes counterfeit designer
+ * goods.
+ * - "POP_UP" : The ad causes a popup window to appear.
+ * - "INVALID_RTB_PROTOCOL_USAGE" : The creative does not follow policies set
+ * for the RTB protocol.
+ * - "RAW_IP_ADDRESS_IN_SNIPPET" : The ad contains a URL that uses a numeric
+ * IP address for the domain.
+ * - "UNACCEPTABLE_CONTENT_SOFTWARE" : The ad or landing page contains
+ * unacceptable content because it initiated
+ * a software or executable download.
+ * - "UNAUTHORIZED_COOKIE_ON_GOOGLE_DOMAIN" : The ad set an unauthorized
+ * cookie on a Google domain.
+ * - "UNDECLARED_FLASH_OBJECTS" : Flash content found when no flash was
+ * declared.
+ * - "INVALID_SSL_DECLARATION" : SSL support declared but not working
+ * correctly.
+ * - "DIRECT_DOWNLOAD_IN_AD" : Rich Media - Direct Download in Ad (ex. PDF
+ * download).
+ * - "MAXIMUM_DOWNLOAD_SIZE_EXCEEDED" : Maximum download size exceeded.
+ * - "DESTINATION_URL_SITE_NOT_CRAWLABLE" : Bad Destination URL: Site Not
+ * Crawlable.
+ * - "BAD_URL_LEGAL_DISAPPROVAL" : Bad URL: Legal disapproval.
+ * - "PHARMA_GAMBLING_ALCOHOL_NOT_ALLOWED" : Pharmaceuticals, Gambling,
+ * Alcohol not allowed and at least one was
+ * detected.
+ * - "DYNAMIC_DNS_AT_DESTINATION_URL" : Dynamic DNS at Destination URL.
+ * - "POOR_IMAGE_OR_VIDEO_QUALITY" : Poor Image / Video Quality.
+ * - "UNACCEPTABLE_IMAGE_CONTENT" : For example, Image Trick to Click.
+ * - "INCORRECT_IMAGE_LAYOUT" : Incorrect Image Layout.
+ * - "IRRELEVANT_IMAGE_OR_VIDEO" : Irrelevant Image / Video.
+ * - "DESTINATION_SITE_DOES_NOT_ALLOW_GOING_BACK" : Broken back button.
+ * - "MISLEADING_CLAIMS_IN_AD" : Misleading/Inaccurate claims in ads.
+ * - "RESTRICTED_PRODUCTS" : Restricted Products.
+ * - "UNACCEPTABLE_CONTENT" : Unacceptable content. For example, malware.
+ * - "AUTOMATED_AD_CLICKING" : The ad automatically redirects to the
+ * destination site without a click,
+ * or reports a click when none were made.
+ * - "INVALID_URL_PROTOCOL" : The ad uses URL protocols that do not exist or
+ * are not allowed on AdX.
+ * - "UNDECLARED_RESTRICTED_CONTENT" : Restricted content (for example,
+ * alcohol) was found in the ad but not
+ * declared.
+ * - "INVALID_REMARKETING_LIST_USAGE" : Violation of the remarketing list
+ * policy.
+ * - "DESTINATION_SITE_NOT_CRAWLABLE_ROBOTS_TXT" : The destination site's
+ * robot.txt file prevents it from being crawled.
+ * - "CLICK_TO_DOWNLOAD_NOT_AN_APP" : Click to download must link to an app.
+ * - "INACCURATE_REVIEW_EXTENSION" : A review extension must be an accurate
+ * review.
+ * - "SEXUALLY_EXPLICIT_CONTENT" : Sexually explicit content.
+ * - "GAINING_AN_UNFAIR_ADVANTAGE" : The ad tries to gain an unfair traffic
+ * advantage.
+ * - "GAMING_THE_GOOGLE_NETWORK" : The ad tries to circumvent Google's
+ * advertising systems.
+ * - "DANGEROUS_PRODUCTS_KNIVES" : The ad promotes dangerous knives.
+ * - "DANGEROUS_PRODUCTS_EXPLOSIVES" : The ad promotes explosives.
+ * - "DANGEROUS_PRODUCTS_GUNS" : The ad promotes guns & parts.
+ * - "DANGEROUS_PRODUCTS_DRUGS" : The ad promotes recreational drugs/services
+ * & related equipment.
+ * - "DANGEROUS_PRODUCTS_TOBACCO" : The ad promotes tobacco products/services
+ * & related equipment.
+ * - "DANGEROUS_PRODUCTS_WEAPONS" : The ad promotes weapons.
+ * - "UNCLEAR_OR_IRRELEVANT_AD" : The ad is unclear or irrelevant to the
+ * destination site.
+ * - "PROFESSIONAL_STANDARDS" : The ad does not meet professional standards.
+ * - "DYSFUNCTIONAL_PROMOTION" : The promotion is unnecessarily difficult to
+ * navigate.
+ * - "INVALID_INTEREST_BASED_AD" : Violation of Google's policy for
+ * interest-based ads.
+ * - "MISUSE_OF_PERSONAL_INFORMATION" : Misuse of personal information.
+ * - "OMISSION_OF_RELEVANT_INFORMATION" : Omission of relevant information.
+ * - "UNAVAILABLE_PROMOTIONS" : Unavailable promotions.
+ * - "MISLEADING_PROMOTIONS" : Misleading or unrealistic promotions.
+ * - "INAPPROPRIATE_CONTENT" : Offensive or inappropriate content.
+ * - "SENSITIVE_EVENTS" : Capitalizing on sensitive events.
+ * - "SHOCKING_CONTENT" : Shocking content.
+ * - "ENABLING_DISHONEST_BEHAVIOR" : Products & Services that enable dishonest
+ * behavior.
+ * - "TECHNICAL_REQUIREMENTS" : The ad does not meet technical requirements.
+ * - "RESTRICTED_POLITICAL_CONTENT" : Restricted political content.
+ * - "UNSUPPORTED_CONTENT" : Unsupported content.
+ * - "INVALID_BIDDING_METHOD" : Invalid bidding method.
+ * - "VIDEO_TOO_LONG" : Video length exceeds limits.
+ * - "VIOLATES_JAPANESE_PHARMACY_LAW" : Unacceptable content: Japanese
+ * healthcare.
+ * - "UNACCREDITED_PET_PHARMACY" : Online pharmacy ID required.
+ * - "ABORTION" : Unacceptable content: Abortion.
+ * - "CONTRACEPTIVES" : Unacceptable content: Birth control.
+ * - "NEED_CERTIFICATES_TO_ADVERTISE_IN_CHINA" : Restricted in China.
+ * - "KCDSP_REGISTRATION" : Unacceptable content: Korean healthcare.
+ * - "NOT_FAMILY_SAFE" : Non-family safe or adult content.
+ * - "CLINICAL_TRIAL_RECRUITMENT" : Clinical trial recruitment.
+ * - "MAXIMUM_NUMBER_OF_HTTP_CALLS_EXCEEDED" : Maximum number of HTTP calls
+ * exceeded.
+ * - "MAXIMUM_NUMBER_OF_COOKIES_EXCEEDED" : Maximum number of cookies
+ * exceeded.
+ * - "PERSONAL_LOANS" : Financial service ad does not adhere to
+ * specifications.
+ * - "UNSUPPORTED_FLASH_CONTENT" : Flash content was found in an unsupported
+ * context.
+ */
+ core.String reason;
+
+ Disapproval();
+
+ Disapproval.fromJson(core.Map _json) {
+ if (_json.containsKey("details")) {
+ details = _json["details"];
+ }
+ if (_json.containsKey("reason")) {
+ reason = _json["reason"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (details != null) {
+ _json["details"] = details;
+ }
+ if (reason != null) {
+ _json["reason"] = reason;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A generic empty message that you can re-use to avoid defining duplicated
+ * empty messages in your APIs. A typical example is to use it as the request
+ * or the response type of an API method. For instance:
+ *
+ * service Foo {
+ * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+ * }
+ *
+ * The JSON representation for `Empty` is empty JSON object `{}`.
+ */
+class Empty {
+
+ Empty();
+
+ Empty.fromJson(core.Map _json) {
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ return _json;
+ }
+}
+
+/**
+ * A set of filters that is applied to a request for data.
+ * Within a filter set, an AND operation is performed across the filters
+ * represented by each field. An OR operation is performed across the filters
+ * represented by the multiple values of a repeated field. E.g.
+ * "format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR
+ * seller_network_id=56)"
+ */
+class FilterSet {
/**
- * The role which is assigned to the client buyer. Each role implies a set of
- * permissions granted to the client. Must be one of `CLIENT_DEAL_VIEWER`,
- * `CLIENT_DEAL_NEGOTIATOR` or `CLIENT_DEAL_APPROVER`.
+ * An absolute date range, defined by a start date and an end date.
+ * Interpreted relative to Pacific time zone.
+ */
+ AbsoluteDateRange absoluteDateRange;
+ /** The ID of the buyer account on which to filter; optional. */
+ core.String buyerAccountId;
+ /** The ID of the creative on which to filter; optional. */
+ core.String creativeId;
+ /** The ID of the deal on which to filter; optional. */
+ core.String dealId;
+ /**
+ * The environment on which to filter; optional.
* Possible string values are:
- * - "CLIENT_ROLE_UNSPECIFIED" : A placeholder for an undefined client role.
- * - "CLIENT_DEAL_VIEWER" : Users associated with this client can see
- * publisher deal offers
- * in the Marketplace.
- * They can neither negotiate proposals nor approve deals.
- * If this client is visible to publishers, they can send deal proposals
- * to this client.
- * - "CLIENT_DEAL_NEGOTIATOR" : Users associated with this client can respond
- * to deal proposals
- * sent to them by publishers. They can also initiate deal proposals
- * of their own.
- * - "CLIENT_DEAL_APPROVER" : Users associated with this client can approve
- * eligible deals
- * on your behalf. Some deals may still explicitly require publisher
- * finalization. If this role is not selected, the sponsor buyer
- * will need to manually approve each of their deals.
+ * - "ENVIRONMENT_UNSPECIFIED" : A placeholder for an undefined environment;
+ * indicates that no environment
+ * filter will be applied.
+ * - "WEB" : The ad impression appears on the web.
+ * - "APP" : The ad impression appears in an app.
+ */
+ core.String environment;
+ /**
+ * The ID of the filter set; unique within the account of the filter set
+ * owner.
+ * The value of this field is ignored in create operations.
+ */
+ core.String filterSetId;
+ /**
+ * The format on which to filter; optional.
+ * Possible string values are:
+ * - "FORMAT_UNSPECIFIED" : A placeholder for an undefined format; indicates
+ * that no format filter
+ * will be applied.
+ * - "DISPLAY" : The ad impression is display format (i.e. an image).
+ * - "VIDEO" : The ad impression is video format.
+ */
+ core.String format;
+ /**
+ * The account ID of the buyer who owns this filter set.
+ * The value of this field is ignored in create operations.
+ */
+ core.String ownerAccountId;
+ /**
+ * The list of platforms on which to filter; may be empty. The filters
+ * represented by multiple platforms are ORed together (i.e. if non-empty,
+ * results must match any one of the platforms).
*/
- core.String role;
+ core.List<core.String> platforms;
/**
- * The status of the client buyer.
+ * An open-ended realtime time range, defined by the aggregation start
+ * timestamp.
+ */
+ RealtimeTimeRange realtimeTimeRange;
+ /**
+ * A relative date range, defined by an offset from today and a duration.
+ * Interpreted relative to Pacific time zone.
+ */
+ RelativeDateRange relativeDateRange;
+ /**
+ * The list of IDs of the seller (publisher) networks on which to filter;
+ * may be empty. The filters represented by multiple seller network IDs are
+ * ORed together (i.e. if non-empty, results must match any one of the
+ * publisher networks).
+ * See
+ * [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)
+ * file for the set of existing seller network IDs.
+ */
+ core.List<core.int> sellerNetworkIds;
+ /**
+ * The granularity of time intervals if a time series breakdown is desired;
+ * optional.
* Possible string values are:
- * - "CLIENT_STATUS_UNSPECIFIED" : A placeholder for an undefined client
- * status.
- * - "DISABLED" : A client that is currently disabled.
- * - "ACTIVE" : A client that is currently active.
+ * - "INTERVAL_UNSPECIFIED" : A placeholder for an unspecified interval; no
+ * time series is applied.
+ * All rows in response will contain data for the entire requested time range.
+ * - "HOURLY" : Indicates that data will be broken down by the hour.
+ * - "DAILY" : Indicates that data will be broken down by the day.
*/
- core.String status;
- /** Whether the client buyer will be visible to sellers. */
- core.bool visibleToSeller;
+ core.String timeSeriesGranularity;
- Client();
+ FilterSet();
- Client.fromJson(core.Map _json) {
- if (_json.containsKey("clientAccountId")) {
- clientAccountId = _json["clientAccountId"];
+ FilterSet.fromJson(core.Map _json) {
+ if (_json.containsKey("absoluteDateRange")) {
+ absoluteDateRange = new AbsoluteDateRange.fromJson(_json["absoluteDateRange"]);
}
- if (_json.containsKey("clientName")) {
- clientName = _json["clientName"];
+ if (_json.containsKey("buyerAccountId")) {
+ buyerAccountId = _json["buyerAccountId"];
}
- if (_json.containsKey("entityId")) {
- entityId = _json["entityId"];
+ if (_json.containsKey("creativeId")) {
+ creativeId = _json["creativeId"];
}
- if (_json.containsKey("entityName")) {
- entityName = _json["entityName"];
+ if (_json.containsKey("dealId")) {
+ dealId = _json["dealId"];
}
- if (_json.containsKey("entityType")) {
- entityType = _json["entityType"];
+ if (_json.containsKey("environment")) {
+ environment = _json["environment"];
}
- if (_json.containsKey("role")) {
- role = _json["role"];
+ if (_json.containsKey("filterSetId")) {
+ filterSetId = _json["filterSetId"];
}
- if (_json.containsKey("status")) {
- status = _json["status"];
+ if (_json.containsKey("format")) {
+ format = _json["format"];
}
- if (_json.containsKey("visibleToSeller")) {
- visibleToSeller = _json["visibleToSeller"];
+ if (_json.containsKey("ownerAccountId")) {
+ ownerAccountId = _json["ownerAccountId"];
+ }
+ if (_json.containsKey("platforms")) {
+ platforms = _json["platforms"];
+ }
+ if (_json.containsKey("realtimeTimeRange")) {
+ realtimeTimeRange = new RealtimeTimeRange.fromJson(_json["realtimeTimeRange"]);
+ }
+ if (_json.containsKey("relativeDateRange")) {
+ relativeDateRange = new RelativeDateRange.fromJson(_json["relativeDateRange"]);
+ }
+ if (_json.containsKey("sellerNetworkIds")) {
+ sellerNetworkIds = _json["sellerNetworkIds"];
+ }
+ if (_json.containsKey("timeSeriesGranularity")) {
+ timeSeriesGranularity = _json["timeSeriesGranularity"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (clientAccountId != null) {
- _json["clientAccountId"] = clientAccountId;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (absoluteDateRange != null) {
+ _json["absoluteDateRange"] = (absoluteDateRange).toJson();
}
- if (clientName != null) {
- _json["clientName"] = clientName;
+ if (buyerAccountId != null) {
+ _json["buyerAccountId"] = buyerAccountId;
}
- if (entityId != null) {
- _json["entityId"] = entityId;
+ if (creativeId != null) {
+ _json["creativeId"] = creativeId;
}
- if (entityName != null) {
- _json["entityName"] = entityName;
+ if (dealId != null) {
+ _json["dealId"] = dealId;
}
- if (entityType != null) {
- _json["entityType"] = entityType;
+ if (environment != null) {
+ _json["environment"] = environment;
}
- if (role != null) {
- _json["role"] = role;
+ if (filterSetId != null) {
+ _json["filterSetId"] = filterSetId;
}
- if (status != null) {
- _json["status"] = status;
+ if (format != null) {
+ _json["format"] = format;
}
- if (visibleToSeller != null) {
- _json["visibleToSeller"] = visibleToSeller;
+ if (ownerAccountId != null) {
+ _json["ownerAccountId"] = ownerAccountId;
+ }
+ if (platforms != null) {
+ _json["platforms"] = platforms;
+ }
+ if (realtimeTimeRange != null) {
+ _json["realtimeTimeRange"] = (realtimeTimeRange).toJson();
+ }
+ if (relativeDateRange != null) {
+ _json["relativeDateRange"] = (relativeDateRange).toJson();
+ }
+ if (sellerNetworkIds != null) {
+ _json["sellerNetworkIds"] = sellerNetworkIds;
+ }
+ if (timeSeriesGranularity != null) {
+ _json["timeSeriesGranularity"] = timeSeriesGranularity;
}
return _json;
}
}
/**
- * A client user is created under a client buyer and has restricted access to
- * the Ad Exchange Marketplace and certain other sections
- * of the Ad Exchange Buyer UI based on the role
- * granted to the associated client buyer.
- *
- * The only way a new client user can be created is via accepting an
- * email invitation
- * (see the
- * accounts.clients.invitations.create
- * method).
- *
- * All fields are required unless otherwise specified.
+ * The number of filtered bids with the specified dimension values that have the
+ * specified creative.
*/
-class ClientUser {
- /**
- * Numerical account ID of the client buyer
- * with which the user is associated; the
- * buyer must be a client of the current sponsor buyer.
- * The value of this field is ignored in an update operation.
- */
- core.String clientAccountId;
- /**
- * User's email address. The value of this field
- * is ignored in an update operation.
- */
- core.String email;
- /**
- * The status of the client user.
- * Possible string values are:
- * - "USER_STATUS_UNSPECIFIED" : A placeholder for an undefined user status.
- * - "PENDING" : A user who was already created but hasn't accepted the
- * invitation yet.
- * - "ACTIVE" : A user that is currently active.
- * - "DISABLED" : A user that is currently disabled.
- */
- core.String status;
+class FilteredBidCreativeRow {
+ /** The number of bids with the specified creative. */
+ MetricValue bidCount;
+ /** The ID of the creative. */
+ core.String creativeId;
/**
- * The unique numerical ID of the client user
- * that has accepted an invitation.
- * The value of this field is ignored in an update operation.
+ * The values of all dimensions associated with metric values in this row.
*/
- core.String userId;
+ RowDimensions rowDimensions;
- ClientUser();
+ FilteredBidCreativeRow();
- ClientUser.fromJson(core.Map _json) {
- if (_json.containsKey("clientAccountId")) {
- clientAccountId = _json["clientAccountId"];
+ FilteredBidCreativeRow.fromJson(core.Map _json) {
+ if (_json.containsKey("bidCount")) {
+ bidCount = new MetricValue.fromJson(_json["bidCount"]);
}
- if (_json.containsKey("email")) {
- email = _json["email"];
- }
- if (_json.containsKey("status")) {
- status = _json["status"];
+ if (_json.containsKey("creativeId")) {
+ creativeId = _json["creativeId"];
}
- if (_json.containsKey("userId")) {
- userId = _json["userId"];
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (clientAccountId != null) {
- _json["clientAccountId"] = clientAccountId;
- }
- if (email != null) {
- _json["email"] = email;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bidCount != null) {
+ _json["bidCount"] = (bidCount).toJson();
}
- if (status != null) {
- _json["status"] = status;
+ if (creativeId != null) {
+ _json["creativeId"] = creativeId;
}
- if (userId != null) {
- _json["userId"] = userId;
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
}
return _json;
}
}
/**
- * An invitation for a new client user to get access to the Ad Exchange
- * Buyer UI.
- * All fields are required unless otherwise specified.
+ * The number of filtered bids with the specified dimension values, among those
+ * filtered due to the requested filtering reason (i.e. creative status), that
+ * have the specified detail.
*/
-class ClientUserInvitation {
+class FilteredBidDetailRow {
+ /** The number of bids with the specified detail. */
+ MetricValue bidCount;
/**
- * Numerical account ID of the client buyer
- * that the invited user is associated with.
- * The value of this field is ignored in create operations.
- */
- core.String clientAccountId;
- /**
- * The email address to which the invitation is sent. Email
- * addresses should be unique among all client users under each sponsor
- * buyer.
+ * The ID of the detail. The associated value can be looked up in the
+ * dictionary file corresponding to the DetailType in the response message.
*/
- core.String email;
+ core.int detailId;
/**
- * The unique numerical ID of the invitation that is sent to the user.
- * The value of this field is ignored in create operations.
+ * The values of all dimensions associated with metric values in this row.
*/
- core.String invitationId;
+ RowDimensions rowDimensions;
- ClientUserInvitation();
+ FilteredBidDetailRow();
- ClientUserInvitation.fromJson(core.Map _json) {
- if (_json.containsKey("clientAccountId")) {
- clientAccountId = _json["clientAccountId"];
+ FilteredBidDetailRow.fromJson(core.Map _json) {
+ if (_json.containsKey("bidCount")) {
+ bidCount = new MetricValue.fromJson(_json["bidCount"]);
}
- if (_json.containsKey("email")) {
- email = _json["email"];
+ if (_json.containsKey("detailId")) {
+ detailId = _json["detailId"];
}
- if (_json.containsKey("invitationId")) {
- invitationId = _json["invitationId"];
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (clientAccountId != null) {
- _json["clientAccountId"] = clientAccountId;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bidCount != null) {
+ _json["bidCount"] = (bidCount).toJson();
}
- if (email != null) {
- _json["email"] = email;
+ if (detailId != null) {
+ _json["detailId"] = detailId;
}
- if (invitationId != null) {
- _json["invitationId"] = invitationId;
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
}
return _json;
}
}
-/** @OutputOnly Shows any corrections that were applied to this creative. */
-class Correction {
- /** The contexts for the correction. */
- core.List<ServingContext> contexts;
- /** Additional details about what was corrected. */
- core.List<core.String> details;
+/**
+ * @OutputOnly Filtering reasons for this creative during a period of a single
+ * day (from midnight to midnight Pacific).
+ */
+class FilteringStats {
/**
- * The type of correction that was applied to the creative.
- * Possible string values are:
- * - "CORRECTION_TYPE_UNSPECIFIED" : The correction type is unknown. Refer to
- * the details for more information.
- * - "VENDOR_IDS_ADDED" : The ad's declared vendors did not match the vendors
- * that were detected.
- * The detected vendors were added.
- * - "SSL_ATTRIBUTE_REMOVED" : The ad had the SSL attribute declared but was
- * not SSL-compliant.
- * The SSL attribute was removed.
- * - "FLASH_FREE_ATTRIBUTE_REMOVED" : The ad was declared as Flash-free but
- * contained Flash, so the Flash-free
- * attribute was removed.
- * - "FLASH_FREE_ATTRIBUTE_ADDED" : The ad was not declared as Flash-free but
- * it did not reference any flash
- * content, so the Flash-free attribute was added.
- * - "REQUIRED_ATTRIBUTE_ADDED" : The ad did not declare a required creative
- * attribute.
- * The attribute was added.
- * - "REQUIRED_VENDOR_ADDED" : The ad did not declare a required technology
- * vendor.
- * The technology vendor was added.
- * - "SSL_ATTRIBUTE_ADDED" : The ad did not declare the SSL attribute but was
- * SSL-compliant, so the
- * SSL attribute was added.
- * - "IN_BANNER_VIDEO_ATTRIBUTE_ADDED" : Properties consistent with In-banner
- * video were found, so an
- * In-Banner Video attribute was added.
- * - "MRAID_ATTRIBUTE_ADDED" : The ad makes calls to the MRAID API so the
- * MRAID attribute was added.
- * - "FLASH_ATTRIBUTE_REMOVED" : The ad unnecessarily declared the Flash
- * attribute, so the Flash attribute
- * was removed.
- * - "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" : The ad contains video content.
+ * The day during which the data was collected.
+ * The data is collected from 00:00:00 to 23:59:59 PT.
+ * During switches from PST to PDT and back, the day may
+ * contain 23 or 25 hours of data instead of the usual 24.
*/
- core.String type;
+ Date date;
+ /** The set of filtering reasons for this date. */
+ core.List<Reason> reasons;
+
+ FilteringStats();
+
+ FilteringStats.fromJson(core.Map _json) {
+ if (_json.containsKey("date")) {
+ date = new Date.fromJson(_json["date"]);
+ }
+ if (_json.containsKey("reasons")) {
+ reasons = _json["reasons"].map((value) => new Reason.fromJson(value)).toList();
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (date != null) {
+ _json["date"] = (date).toJson();
+ }
+ if (reasons != null) {
+ _json["reasons"] = reasons.map((value) => (value).toJson()).toList();
+ }
+ return _json;
+ }
+}
+
+/** HTML content for a creative. */
+class HtmlContent {
+ /** The height of the HTML snippet in pixels. */
+ core.int height;
+ /** The HTML snippet that displays the ad when inserted in the web page. */
+ core.String snippet;
+ /** The width of the HTML snippet in pixels. */
+ core.int width;
+
+ HtmlContent();
+
+ HtmlContent.fromJson(core.Map _json) {
+ if (_json.containsKey("height")) {
+ height = _json["height"];
+ }
+ if (_json.containsKey("snippet")) {
+ snippet = _json["snippet"];
+ }
+ if (_json.containsKey("width")) {
+ width = _json["width"];
+ }
+ }
- Correction();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (height != null) {
+ _json["height"] = height;
+ }
+ if (snippet != null) {
+ _json["snippet"] = snippet;
+ }
+ if (width != null) {
+ _json["width"] = width;
+ }
+ return _json;
+ }
+}
- Correction.fromJson(core.Map _json) {
- if (_json.containsKey("contexts")) {
- contexts = _json["contexts"].map((value) => new ServingContext.fromJson(value)).toList();
+/**
+ * An image resource. You may provide a larger image than was requested,
+ * so long as the aspect ratio is preserved.
+ */
+class Image {
+ /** Image height in pixels. */
+ core.int height;
+ /** The URL of the image. */
+ core.String url;
+ /** Image width in pixels. */
+ core.int width;
+
+ Image();
+
+ Image.fromJson(core.Map _json) {
+ if (_json.containsKey("height")) {
+ height = _json["height"];
}
- if (_json.containsKey("details")) {
- details = _json["details"];
+ if (_json.containsKey("url")) {
+ url = _json["url"];
}
- if (_json.containsKey("type")) {
- type = _json["type"];
+ if (_json.containsKey("width")) {
+ width = _json["width"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (contexts != null) {
- _json["contexts"] = contexts.map((value) => (value).toJson()).toList();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (height != null) {
+ _json["height"] = height;
}
- if (details != null) {
- _json["details"] = details;
+ if (url != null) {
+ _json["url"] = url;
}
- if (type != null) {
- _json["type"] = type;
+ if (width != null) {
+ _json["width"] = width;
}
return _json;
}
}
-/** A creative and its classification data. */
-class Creative {
- /**
- * The account that this creative belongs to.
- * Can be used to filter the response of the
- * creatives.list
- * method.
- */
- core.String accountId;
- /** The link to AdChoices destination page. */
- core.String adChoicesDestinationUrl;
- /** The name of the company being advertised in the creative. */
- core.String advertiserName;
- /** The agency ID for this creative. */
- core.String agencyId;
- /** @OutputOnly The last update timestamp of the creative via API. */
- core.String apiUpdateTime;
- /**
- * All attributes for the ads that may be shown from this creative.
- * Can be used to filter the response of the
- * creatives.list
- * method.
- */
- core.List<core.String> attributes;
- /** The set of destination URLs for the creative. */
- core.List<core.String> clickThroughUrls;
- /** @OutputOnly Shows any corrections that were applied to this creative. */
- core.List<Correction> corrections;
- /**
- * The buyer-defined creative ID of this creative.
- * Can be used to filter the response of the
- * creatives.list
- * method.
- */
- core.String creativeId;
- /**
- * @OutputOnly The top-level deals status of this creative.
- * If disapproved, an entry for 'auctionType=DIRECT_DEALS' (or 'ALL') in
- * serving_restrictions will also exist. Note
- * that this may be nuanced with other contextual restrictions, in which case,
- * it may be preferable to read from serving_restrictions directly.
- * Can be used to filter the response of the
- * creatives.list
- * method.
- * Possible string values are:
- * - "STATUS_UNSPECIFIED" : The status is unknown.
- * - "NOT_CHECKED" : The creative has not been checked.
- * - "CONDITIONALLY_APPROVED" : The creative has been conditionally approved.
- * See serving_restrictions for details.
- * - "APPROVED" : The creative has been approved.
- * - "DISAPPROVED" : The creative has been disapproved.
- */
- core.String dealsStatus;
- /** @OutputOnly Detected advertiser IDs, if any. */
- core.List<core.String> detectedAdvertiserIds;
- /**
- * @OutputOnly
- * The detected domains for this creative.
- */
- core.List<core.String> detectedDomains;
- /**
- * @OutputOnly
- * The detected languages for this creative. The order is arbitrary. The codes
- * are 2 or 5 characters and are documented at
- * https://developers.google.com/adwords/api/docs/appendix/languagecodes.
- */
- core.List<core.String> detectedLanguages;
+/**
+ * The set of metrics that are measured in numbers of impressions, representing
+ * how many impressions with the specified dimension values were considered
+ * eligible at each stage of the bidding funnel.
+ */
+class ImpressionMetricsRow {
/**
- * @OutputOnly Detected product categories, if any.
- * See the ad-product-categories.txt file in the technical documentation
- * for a list of IDs.
+ * The number of impressions available to the buyer on Ad Exchange.
+ * In some cases this value may be unavailable.
*/
- core.List<core.int> detectedProductCategories;
+ MetricValue availableImpressions;
/**
- * @OutputOnly Detected sensitive categories, if any.
- * See the ad-sensitive-categories.txt file in the technical documentation for
- * a list of IDs. You should use these IDs along with the
- * excluded-sensitive-category field in the bid request to filter your bids.
+ * The number of impressions for which Ad Exchange sent the buyer a bid
+ * request.
*/
- core.List<core.int> detectedSensitiveCategories;
- /** @OutputOnly The filtering stats for this creative. */
- FilteringStats filteringStats;
- /** An HTML creative. */
- HtmlContent html;
- /** The set of URLs to be called to record an impression. */
- core.List<core.String> impressionTrackingUrls;
- /** A native creative. */
- NativeContent native;
+ MetricValue bidRequests;
/**
- * @OutputOnly The top-level open auction status of this creative.
- * If disapproved, an entry for 'auctionType = OPEN_AUCTION' (or 'ALL') in
- * serving_restrictions will also exist. Note
- * that this may be nuanced with other contextual restrictions, in which case,
- * it may be preferable to read from serving_restrictions directly.
- * Can be used to filter the response of the
- * creatives.list
- * method.
- * Possible string values are:
- * - "STATUS_UNSPECIFIED" : The status is unknown.
- * - "NOT_CHECKED" : The creative has not been checked.
- * - "CONDITIONALLY_APPROVED" : The creative has been conditionally approved.
- * See serving_restrictions for details.
- * - "APPROVED" : The creative has been approved.
- * - "DISAPPROVED" : The creative has been disapproved.
+ * The number of impressions that match the buyer's inventory pretargeting.
*/
- core.String openAuctionStatus;
+ MetricValue inventoryMatches;
/**
- * All restricted categories for the ads that may be shown from this creative.
+ * The number of impressions for which Ad Exchange received a response from
+ * the buyer that contained at least one applicable bid.
*/
- core.List<core.String> restrictedCategories;
+ MetricValue responsesWithBids;
/**
- * @OutputOnly The granular status of this ad in specific contexts.
- * A context here relates to where something ultimately serves (for example,
- * a physical location, a platform, an HTTPS vs HTTP request, or the type
- * of auction).
+ * The values of all dimensions associated with metric values in this row.
*/
- core.List<ServingRestriction> servingRestrictions;
+ RowDimensions rowDimensions;
/**
- * All vendor IDs for the ads that may be shown from this creative.
- * See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt
- * for possible values.
+ * The number of impressions for which the buyer successfully sent a response
+ * to Ad Exchange.
*/
- core.List<core.int> vendorIds;
- /** @OutputOnly The version of this creative. */
- core.int version;
- /** A video creative. */
- VideoContent video;
+ MetricValue successfulResponses;
- Creative();
+ ImpressionMetricsRow();
- Creative.fromJson(core.Map _json) {
- if (_json.containsKey("accountId")) {
- accountId = _json["accountId"];
- }
- if (_json.containsKey("adChoicesDestinationUrl")) {
- adChoicesDestinationUrl = _json["adChoicesDestinationUrl"];
- }
- if (_json.containsKey("advertiserName")) {
- advertiserName = _json["advertiserName"];
- }
- if (_json.containsKey("agencyId")) {
- agencyId = _json["agencyId"];
- }
- if (_json.containsKey("apiUpdateTime")) {
- apiUpdateTime = _json["apiUpdateTime"];
- }
- if (_json.containsKey("attributes")) {
- attributes = _json["attributes"];
- }
- if (_json.containsKey("clickThroughUrls")) {
- clickThroughUrls = _json["clickThroughUrls"];
- }
- if (_json.containsKey("corrections")) {
- corrections = _json["corrections"].map((value) => new Correction.fromJson(value)).toList();
- }
- if (_json.containsKey("creativeId")) {
- creativeId = _json["creativeId"];
- }
- if (_json.containsKey("dealsStatus")) {
- dealsStatus = _json["dealsStatus"];
- }
- if (_json.containsKey("detectedAdvertiserIds")) {
- detectedAdvertiserIds = _json["detectedAdvertiserIds"];
+ ImpressionMetricsRow.fromJson(core.Map _json) {
+ if (_json.containsKey("availableImpressions")) {
+ availableImpressions = new MetricValue.fromJson(_json["availableImpressions"]);
}
- if (_json.containsKey("detectedDomains")) {
- detectedDomains = _json["detectedDomains"];
+ if (_json.containsKey("bidRequests")) {
+ bidRequests = new MetricValue.fromJson(_json["bidRequests"]);
}
- if (_json.containsKey("detectedLanguages")) {
- detectedLanguages = _json["detectedLanguages"];
+ if (_json.containsKey("inventoryMatches")) {
+ inventoryMatches = new MetricValue.fromJson(_json["inventoryMatches"]);
}
- if (_json.containsKey("detectedProductCategories")) {
- detectedProductCategories = _json["detectedProductCategories"];
+ if (_json.containsKey("responsesWithBids")) {
+ responsesWithBids = new MetricValue.fromJson(_json["responsesWithBids"]);
}
- if (_json.containsKey("detectedSensitiveCategories")) {
- detectedSensitiveCategories = _json["detectedSensitiveCategories"];
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
}
- if (_json.containsKey("filteringStats")) {
- filteringStats = new FilteringStats.fromJson(_json["filteringStats"]);
+ if (_json.containsKey("successfulResponses")) {
+ successfulResponses = new MetricValue.fromJson(_json["successfulResponses"]);
}
- if (_json.containsKey("html")) {
- html = new HtmlContent.fromJson(_json["html"]);
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (availableImpressions != null) {
+ _json["availableImpressions"] = (availableImpressions).toJson();
}
- if (_json.containsKey("impressionTrackingUrls")) {
- impressionTrackingUrls = _json["impressionTrackingUrls"];
+ if (bidRequests != null) {
+ _json["bidRequests"] = (bidRequests).toJson();
}
- if (_json.containsKey("native")) {
- native = new NativeContent.fromJson(_json["native"]);
+ if (inventoryMatches != null) {
+ _json["inventoryMatches"] = (inventoryMatches).toJson();
}
- if (_json.containsKey("openAuctionStatus")) {
- openAuctionStatus = _json["openAuctionStatus"];
+ if (responsesWithBids != null) {
+ _json["responsesWithBids"] = (responsesWithBids).toJson();
}
- if (_json.containsKey("restrictedCategories")) {
- restrictedCategories = _json["restrictedCategories"];
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
}
- if (_json.containsKey("servingRestrictions")) {
- servingRestrictions = _json["servingRestrictions"].map((value) => new ServingRestriction.fromJson(value)).toList();
+ if (successfulResponses != null) {
+ _json["successfulResponses"] = (successfulResponses).toJson();
}
- if (_json.containsKey("vendorIds")) {
- vendorIds = _json["vendorIds"];
+ return _json;
+ }
+}
+
+/**
+ * The number of impressions with the specified dimension values that were
+ * filtered due to the specified filtering status.
+ */
+class ImpressionStatusRow {
+ /**
+ * The number of impressions that were filtered with the specified status.
+ */
+ MetricValue impressionCount;
+ /**
+ * The values of all dimensions associated with metric values in this row.
+ */
+ RowDimensions rowDimensions;
+ /**
+ * The status for which impressions were filtered.
+ * Possible string values are:
+ * - "STATUS_UNSPECIFIED" : A placeholder for an undefined status.
+ * This value will never be returned in responses.
+ * - "PRETARGETING_CONFIGURATIONS" : The impression was filtered because it
+ * did not match the buyer's
+ * pretargeting configurations.
+ */
+ core.String status;
+
+ ImpressionStatusRow();
+
+ ImpressionStatusRow.fromJson(core.Map _json) {
+ if (_json.containsKey("impressionCount")) {
+ impressionCount = new MetricValue.fromJson(_json["impressionCount"]);
}
- if (_json.containsKey("version")) {
- version = _json["version"];
+ if (_json.containsKey("rowDimensions")) {
+ rowDimensions = new RowDimensions.fromJson(_json["rowDimensions"]);
}
- if (_json.containsKey("video")) {
- video = new VideoContent.fromJson(_json["video"]);
+ if (_json.containsKey("status")) {
+ status = _json["status"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (accountId != null) {
- _json["accountId"] = accountId;
- }
- if (adChoicesDestinationUrl != null) {
- _json["adChoicesDestinationUrl"] = adChoicesDestinationUrl;
- }
- if (advertiserName != null) {
- _json["advertiserName"] = advertiserName;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (impressionCount != null) {
+ _json["impressionCount"] = (impressionCount).toJson();
}
- if (agencyId != null) {
- _json["agencyId"] = agencyId;
+ if (rowDimensions != null) {
+ _json["rowDimensions"] = (rowDimensions).toJson();
}
- if (apiUpdateTime != null) {
- _json["apiUpdateTime"] = apiUpdateTime;
+ if (status != null) {
+ _json["status"] = status;
}
- if (attributes != null) {
- _json["attributes"] = attributes;
+ return _json;
+ }
+}
+
+/**
+ * Response message for listing the metrics that are measured in number of bids.
+ */
+class ListBidMetricsResponse {
+ /** List of rows, each containing a set of bid metrics. */
+ core.List<BidMetricsRow> bidMetricsRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListBidMetricsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.bidMetrics.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
+
+ ListBidMetricsResponse();
+
+ ListBidMetricsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("bidMetricsRows")) {
+ bidMetricsRows = _json["bidMetricsRows"].map((value) => new BidMetricsRow.fromJson(value)).toList();
}
- if (clickThroughUrls != null) {
- _json["clickThroughUrls"] = clickThroughUrls;
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
- if (corrections != null) {
- _json["corrections"] = corrections.map((value) => (value).toJson()).toList();
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bidMetricsRows != null) {
+ _json["bidMetricsRows"] = bidMetricsRows.map((value) => (value).toJson()).toList();
}
- if (creativeId != null) {
- _json["creativeId"] = creativeId;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
- if (dealsStatus != null) {
- _json["dealsStatus"] = dealsStatus;
+ return _json;
+ }
+}
+
+/**
+ * Response message for listing all reasons that bid responses resulted in an
+ * error.
+ */
+class ListBidResponseErrorsResponse {
+ /**
+ * List of rows, with counts of bid responses aggregated by callout status.
+ */
+ core.List<CalloutStatusRow> calloutStatusRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListBidResponseErrorsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.bidResponseErrors.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
+
+ ListBidResponseErrorsResponse();
+
+ ListBidResponseErrorsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("calloutStatusRows")) {
+ calloutStatusRows = _json["calloutStatusRows"].map((value) => new CalloutStatusRow.fromJson(value)).toList();
}
- if (detectedAdvertiserIds != null) {
- _json["detectedAdvertiserIds"] = detectedAdvertiserIds;
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
- if (detectedDomains != null) {
- _json["detectedDomains"] = detectedDomains;
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (calloutStatusRows != null) {
+ _json["calloutStatusRows"] = calloutStatusRows.map((value) => (value).toJson()).toList();
}
- if (detectedLanguages != null) {
- _json["detectedLanguages"] = detectedLanguages;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
- if (detectedProductCategories != null) {
- _json["detectedProductCategories"] = detectedProductCategories;
+ return _json;
+ }
+}
+
+/**
+ * Response message for listing all reasons that bid responses were considered
+ * to have no applicable bids.
+ */
+class ListBidResponsesWithoutBidsResponse {
+ /**
+ * List of rows, with counts of bid responses without bids aggregated by
+ * status.
+ */
+ core.List<BidResponseWithoutBidsStatusRow> bidResponseWithoutBidsStatusRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListBidResponsesWithoutBidsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.bidResponsesWithoutBids.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
+
+ ListBidResponsesWithoutBidsResponse();
+
+ ListBidResponsesWithoutBidsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("bidResponseWithoutBidsStatusRows")) {
+ bidResponseWithoutBidsStatusRows = _json["bidResponseWithoutBidsStatusRows"].map((value) => new BidResponseWithoutBidsStatusRow.fromJson(value)).toList();
}
- if (detectedSensitiveCategories != null) {
- _json["detectedSensitiveCategories"] = detectedSensitiveCategories;
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
- if (filteringStats != null) {
- _json["filteringStats"] = (filteringStats).toJson();
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (bidResponseWithoutBidsStatusRows != null) {
+ _json["bidResponseWithoutBidsStatusRows"] = bidResponseWithoutBidsStatusRows.map((value) => (value).toJson()).toList();
}
- if (html != null) {
- _json["html"] = (html).toJson();
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
- if (impressionTrackingUrls != null) {
- _json["impressionTrackingUrls"] = impressionTrackingUrls;
+ return _json;
+ }
+}
+
+class ListClientUserInvitationsResponse {
+ /** The returned list of client users. */
+ core.List<ClientUserInvitation> invitations;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListClientUserInvitationsRequest.pageToken
+ * field in the subsequent call to the
+ * clients.invitations.list
+ * method to retrieve the next
+ * page of results.
+ */
+ core.String nextPageToken;
+
+ ListClientUserInvitationsResponse();
+
+ ListClientUserInvitationsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("invitations")) {
+ invitations = _json["invitations"].map((value) => new ClientUserInvitation.fromJson(value)).toList();
}
- if (native != null) {
- _json["native"] = (native).toJson();
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
- if (openAuctionStatus != null) {
- _json["openAuctionStatus"] = openAuctionStatus;
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (invitations != null) {
+ _json["invitations"] = invitations.map((value) => (value).toJson()).toList();
}
- if (restrictedCategories != null) {
- _json["restrictedCategories"] = restrictedCategories;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
- if (servingRestrictions != null) {
- _json["servingRestrictions"] = servingRestrictions.map((value) => (value).toJson()).toList();
+ return _json;
+ }
+}
+
+class ListClientUsersResponse {
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListClientUsersRequest.pageToken
+ * field in the subsequent call to the
+ * clients.invitations.list
+ * method to retrieve the next
+ * page of results.
+ */
+ core.String nextPageToken;
+ /** The returned list of client users. */
+ core.List<ClientUser> users;
+
+ ListClientUsersResponse();
+
+ ListClientUsersResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
- if (vendorIds != null) {
- _json["vendorIds"] = vendorIds;
+ if (_json.containsKey("users")) {
+ users = _json["users"].map((value) => new ClientUser.fromJson(value)).toList();
}
- if (version != null) {
- _json["version"] = version;
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
- if (video != null) {
- _json["video"] = (video).toJson();
+ if (users != null) {
+ _json["users"] = users.map((value) => (value).toJson()).toList();
}
return _json;
}
}
-/** The association between a creative and a deal. */
-class CreativeDealAssociation {
- /** The account the creative belongs to. */
- core.String accountId;
- /** The ID of the creative associated with the deal. */
- core.String creativeId;
- /** The externalDealId for the deal associated with the creative. */
- core.String dealsId;
+class ListClientsResponse {
+ /** The returned list of clients. */
+ core.List<Client> clients;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListClientsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.clients.list method
+ * to retrieve the next page of results.
+ */
+ core.String nextPageToken;
- CreativeDealAssociation();
+ ListClientsResponse();
- CreativeDealAssociation.fromJson(core.Map _json) {
- if (_json.containsKey("accountId")) {
- accountId = _json["accountId"];
- }
- if (_json.containsKey("creativeId")) {
- creativeId = _json["creativeId"];
+ ListClientsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("clients")) {
+ clients = _json["clients"].map((value) => new Client.fromJson(value)).toList();
}
- if (_json.containsKey("dealsId")) {
- dealsId = _json["dealsId"];
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (accountId != null) {
- _json["accountId"] = accountId;
- }
- if (creativeId != null) {
- _json["creativeId"] = creativeId;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (clients != null) {
+ _json["clients"] = clients.map((value) => (value).toJson()).toList();
}
- if (dealsId != null) {
- _json["dealsId"] = dealsId;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
/**
- * Represents a whole calendar date, e.g. date of birth. The time of day and
- * time zone are either specified elsewhere or are not significant. The date
- * is relative to the Proleptic Gregorian Calendar. The day may be 0 to
- * represent a year and month where the day is not significant, e.g. credit card
- * expiration date. The year may be 0 to represent a month and day independent
- * of year, e.g. anniversary date. Related types are google.type.TimeOfDay
- * and `google.protobuf.Timestamp`.
+ * Response message for listing all details associated with a given filtered bid
+ * reason and a given creative.
*/
-class Date {
+class ListCreativeStatusAndCreativeBreakdownByDetailResponse {
/**
- * Day of month. Must be from 1 to 31 and valid for the year and month, or 0
- * if specifying a year/month where the day is not significant.
+ * The type of detail that the detail IDs represent.
+ * Possible string values are:
+ * - "TYPE_UNSPECIFIED" : A placeholder for an undefined status.
+ * This value will never be returned in responses.
+ * - "CREATIVE_ATTRIBUTE" : Indicates that the detail ID refers to a creative
+ * attribute; see
+ * [publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).
+ * - "VENDOR" : Indicates that the detail ID refers to a vendor; see
+ * [vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).
+ * - "SENSITIVE_CATEGORY" : Indicates that the detail ID refers to a sensitive
+ * category; see
+ * [ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).
+ * - "PRODUCT_CATEGORY" : Indicates that the detail ID refers to a product
+ * category; see
+ * [ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).
*/
- core.int day;
- /** Month of year. Must be from 1 to 12. */
- core.int month;
+ core.String detailType;
/**
- * Year of date. Must be from 1 to 9999, or 0 if specifying a date without
- * a year.
+ * List of rows, with counts of bids with a given creative status and
+ * creative, aggregated by detail.
*/
- core.int year;
-
- Date();
-
- Date.fromJson(core.Map _json) {
- if (_json.containsKey("day")) {
- day = _json["day"];
+ core.List<FilteredBidDetailRow> filteredBidDetailRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListCreativeStatusAndCreativeBreakdownByDetailRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.filteredBids.creatives.details.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
+
+ ListCreativeStatusAndCreativeBreakdownByDetailResponse();
+
+ ListCreativeStatusAndCreativeBreakdownByDetailResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("detailType")) {
+ detailType = _json["detailType"];
}
- if (_json.containsKey("month")) {
- month = _json["month"];
+ if (_json.containsKey("filteredBidDetailRows")) {
+ filteredBidDetailRows = _json["filteredBidDetailRows"].map((value) => new FilteredBidDetailRow.fromJson(value)).toList();
}
- if (_json.containsKey("year")) {
- year = _json["year"];
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (day != null) {
- _json["day"] = day;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (detailType != null) {
+ _json["detailType"] = detailType;
}
- if (month != null) {
- _json["month"] = month;
+ if (filteredBidDetailRows != null) {
+ _json["filteredBidDetailRows"] = filteredBidDetailRows.map((value) => (value).toJson()).toList();
}
- if (year != null) {
- _json["year"] = year;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
-/** @OutputOnly The reason and details for a disapproval. */
-class Disapproval {
- /** Additional details about the reason for disapproval. */
- core.List<core.String> details;
+/**
+ * Response message for listing all creatives associated with a given filtered
+ * bid reason.
+ */
+class ListCreativeStatusBreakdownByCreativeResponse {
/**
- * The categorized reason for disapproval.
- * Possible string values are:
- * - "LENGTH_OF_IMAGE_ANIMATION" : The length of the image animation is longer
- * than allowed.
- * - "BROKEN_URL" : The click through URL doesn't work properly.
- * - "MEDIA_NOT_FUNCTIONAL" : Something is wrong with the creative itself.
- * - "INVALID_FOURTH_PARTY_CALL" : The ad makes a fourth party call to an
- * unapproved vendor.
- * - "INCORRECT_REMARKETING_DECLARATION" : The ad targets consumers using
- * remarketing lists and/or collects
- * data for subsequent use in retargeting, but does not correctly declare
- * that use.
- * - "LANDING_PAGE_ERROR" : Clicking on the ad leads to an error page.
- * - "AD_SIZE_DOES_NOT_MATCH_AD_SLOT" : The ad size when rendered does not
- * match the declaration.
- * - "NO_BORDER" : Ads with a white background require a border, which was
- * missing.
- * - "FOURTH_PARTY_BROWSER_COOKIES" : The creative attempts to set cookies
- * from a fourth party that is not
- * certified.
- * - "LSO_OBJECTS" : The creative sets an LSO object.
- * - "BLANK_CREATIVE" : The ad serves a blank.
- * - "DESTINATION_URLS_UNDECLARED" : The ad uses rotation, but not all
- * destination URLs were declared.
- * - "PROBLEM_WITH_CLICK_MACRO" : There is a problem with the way the click
- * macro is used.
- * - "INCORRECT_AD_TECHNOLOGY_DECLARATION" : The ad technology declaration is
- * not accurate.
- * - "INCORRECT_DESTINATION_URL_DECLARATION" : The actual destination URL does
- * not match the declared destination URL.
- * - "EXPANDABLE_INCORRECT_DIRECTION" : The declared expanding direction does
- * not match the actual direction.
- * - "EXPANDABLE_DIRECTION_NOT_SUPPORTED" : The ad does not expand in a
- * supported direction.
- * - "EXPANDABLE_INVALID_VENDOR" : The ad uses an expandable vendor that is
- * not supported.
- * - "EXPANDABLE_FUNCTIONALITY" : There was an issue with the expandable ad.
- * - "VIDEO_INVALID_VENDOR" : The ad uses a video vendor that is not
- * supported.
- * - "VIDEO_UNSUPPORTED_LENGTH" : The length of the video ad is not supported.
- * - "VIDEO_UNSUPPORTED_FORMAT" : The format of the video ad is not supported.
- * - "VIDEO_FUNCTIONALITY" : There was an issue with the video ad.
- * - "LANDING_PAGE_DISABLED" : The landing page does not conform to Ad
- * Exchange policy.
- * - "MALWARE_SUSPECTED" : The ad or the landing page may contain malware.
- * - "ADULT_IMAGE_OR_VIDEO" : The ad contains adult images or video content.
- * - "INACCURATE_AD_TEXT" : The ad contains text that is unclear or
- * inaccurate.
- * - "COUNTERFEIT_DESIGNER_GOODS" : The ad promotes counterfeit designer
- * goods.
- * - "POP_UP" : The ad causes a popup window to appear.
- * - "INVALID_RTB_PROTOCOL_USAGE" : The creative does not follow policies set
- * for the RTB protocol.
- * - "RAW_IP_ADDRESS_IN_SNIPPET" : The ad contains a URL that uses a numeric
- * IP address for the domain.
- * - "UNACCEPTABLE_CONTENT_SOFTWARE" : The ad or landing page contains
- * unacceptable content because it initiated
- * a software or executable download.
- * - "UNAUTHORIZED_COOKIE_ON_GOOGLE_DOMAIN" : The ad set an unauthorized
- * cookie on a Google domain.
- * - "UNDECLARED_FLASH_OBJECTS" : Flash content found when no flash was
- * declared.
- * - "INVALID_SSL_DECLARATION" : SSL support declared but not working
- * correctly.
- * - "DIRECT_DOWNLOAD_IN_AD" : Rich Media - Direct Download in Ad (ex. PDF
- * download).
- * - "MAXIMUM_DOWNLOAD_SIZE_EXCEEDED" : Maximum download size exceeded.
- * - "DESTINATION_URL_SITE_NOT_CRAWLABLE" : Bad Destination URL: Site Not
- * Crawlable.
- * - "BAD_URL_LEGAL_DISAPPROVAL" : Bad URL: Legal disapproval.
- * - "PHARMA_GAMBLING_ALCOHOL_NOT_ALLOWED" : Pharmaceuticals, Gambling,
- * Alcohol not allowed and at least one was
- * detected.
- * - "DYNAMIC_DNS_AT_DESTINATION_URL" : Dynamic DNS at Destination URL.
- * - "POOR_IMAGE_OR_VIDEO_QUALITY" : Poor Image / Video Quality.
- * - "UNACCEPTABLE_IMAGE_CONTENT" : For example, Image Trick to Click.
- * - "INCORRECT_IMAGE_LAYOUT" : Incorrect Image Layout.
- * - "IRRELEVANT_IMAGE_OR_VIDEO" : Irrelevant Image / Video.
- * - "DESTINATION_SITE_DOES_NOT_ALLOW_GOING_BACK" : Broken back button.
- * - "MISLEADING_CLAIMS_IN_AD" : Misleading/Inaccurate claims in ads.
- * - "RESTRICTED_PRODUCTS" : Restricted Products.
- * - "UNACCEPTABLE_CONTENT" : Unacceptable content. For example, malware.
- * - "AUTOMATED_AD_CLICKING" : The ad automatically redirects to the
- * destination site without a click,
- * or reports a click when none were made.
- * - "INVALID_URL_PROTOCOL" : The ad uses URL protocols that do not exist or
- * are not allowed on AdX.
- * - "UNDECLARED_RESTRICTED_CONTENT" : Restricted content (for example,
- * alcohol) was found in the ad but not
- * declared.
- * - "INVALID_REMARKETING_LIST_USAGE" : Violation of the remarketing list
- * policy.
- * - "DESTINATION_SITE_NOT_CRAWLABLE_ROBOTS_TXT" : The destination site's
- * robot.txt file prevents it from being crawled.
- * - "CLICK_TO_DOWNLOAD_NOT_AN_APP" : Click to download must link to an app.
- * - "INACCURATE_REVIEW_EXTENSION" : A review extension must be an accurate
- * review.
- * - "SEXUALLY_EXPLICIT_CONTENT" : Sexually explicit content.
- * - "GAINING_AN_UNFAIR_ADVANTAGE" : The ad tries to gain an unfair traffic
- * advantage.
- * - "GAMING_THE_GOOGLE_NETWORK" : The ad tries to circumvent Google's
- * advertising systems.
- * - "DANGEROUS_PRODUCTS_KNIVES" : The ad promotes dangerous knives.
- * - "DANGEROUS_PRODUCTS_EXPLOSIVES" : The ad promotes explosives.
- * - "DANGEROUS_PRODUCTS_GUNS" : The ad promotes guns & parts.
- * - "DANGEROUS_PRODUCTS_DRUGS" : The ad promotes recreational drugs/services
- * & related equipment.
- * - "DANGEROUS_PRODUCTS_TOBACCO" : The ad promotes tobacco products/services
- * & related equipment.
- * - "DANGEROUS_PRODUCTS_WEAPONS" : The ad promotes weapons.
- * - "UNCLEAR_OR_IRRELEVANT_AD" : The ad is unclear or irrelevant to the
- * destination site.
- * - "PROFESSIONAL_STANDARDS" : The ad does not meet professional standards.
- * - "DYSFUNCTIONAL_PROMOTION" : The promotion is unnecessarily difficult to
- * navigate.
- * - "INVALID_INTEREST_BASED_AD" : Violation of Google's policy for
- * interest-based ads.
- * - "MISUSE_OF_PERSONAL_INFORMATION" : Misuse of personal information.
- * - "OMISSION_OF_RELEVANT_INFORMATION" : Omission of relevant information.
- * - "UNAVAILABLE_PROMOTIONS" : Unavailable promotions.
- * - "MISLEADING_PROMOTIONS" : Misleading or unrealistic promotions.
- * - "INAPPROPRIATE_CONTENT" : Offensive or inappropriate content.
- * - "SENSITIVE_EVENTS" : Capitalizing on sensitive events.
- * - "SHOCKING_CONTENT" : Shocking content.
- * - "ENABLING_DISHONEST_BEHAVIOR" : Products & Services that enable dishonest
- * behavior.
- * - "TECHNICAL_REQUIREMENTS" : The ad does not meet technical requirements.
- * - "RESTRICTED_POLITICAL_CONTENT" : Restricted political content.
- * - "UNSUPPORTED_CONTENT" : Unsupported content.
- * - "INVALID_BIDDING_METHOD" : Invalid bidding method.
- * - "VIDEO_TOO_LONG" : Video length exceeds limits.
- * - "VIOLATES_JAPANESE_PHARMACY_LAW" : Unacceptable content: Japanese
- * healthcare.
- * - "UNACCREDITED_PET_PHARMACY" : Online pharmacy ID required.
- * - "ABORTION" : Unacceptable content: Abortion.
- * - "CONTRACEPTIVES" : Unacceptable content: Birth control.
- * - "NEED_CERTIFICATES_TO_ADVERTISE_IN_CHINA" : Restricted in China.
- * - "KCDSP_REGISTRATION" : Unacceptable content: Korean healthcare.
- * - "NOT_FAMILY_SAFE" : Non-family safe or adult content.
- * - "CLINICAL_TRIAL_RECRUITMENT" : Clinical trial recruitment.
- * - "MAXIMUM_NUMBER_OF_HTTP_CALLS_EXCEEDED" : Maximum number of HTTP calls
- * exceeded.
- * - "MAXIMUM_NUMBER_OF_COOKIES_EXCEEDED" : Maximum number of cookies
- * exceeded.
- * - "PERSONAL_LOANS" : Financial service ad does not adhere to
- * specifications.
- * - "UNSUPPORTED_FLASH_CONTENT" : Flash content was found in an unsupported
- * context.
+ * List of rows, with counts of bids with a given creative status aggregated
+ * by creative.
*/
- core.String reason;
+ core.List<FilteredBidCreativeRow> filteredBidCreativeRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListCreativeStatusBreakdownByCreativeRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.filteredBids.creatives.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
- Disapproval();
+ ListCreativeStatusBreakdownByCreativeResponse();
- Disapproval.fromJson(core.Map _json) {
- if (_json.containsKey("details")) {
- details = _json["details"];
+ ListCreativeStatusBreakdownByCreativeResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("filteredBidCreativeRows")) {
+ filteredBidCreativeRows = _json["filteredBidCreativeRows"].map((value) => new FilteredBidCreativeRow.fromJson(value)).toList();
}
- if (_json.containsKey("reason")) {
- reason = _json["reason"];
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (details != null) {
- _json["details"] = details;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (filteredBidCreativeRows != null) {
+ _json["filteredBidCreativeRows"] = filteredBidCreativeRows.map((value) => (value).toJson()).toList();
}
- if (reason != null) {
- _json["reason"] = reason;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
/**
- * A generic empty message that you can re-use to avoid defining duplicated
- * empty messages in your APIs. A typical example is to use it as the request
- * or the response type of an API method. For instance:
- *
- * service Foo {
- * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
- * }
- *
- * The JSON representation for `Empty` is empty JSON object `{}`.
+ * Response message for listing all details associated with a given filtered bid
+ * reason.
*/
-class Empty {
+class ListCreativeStatusBreakdownByDetailResponse {
+ /**
+ * The type of detail that the detail IDs represent.
+ * Possible string values are:
+ * - "TYPE_UNSPECIFIED" : A placeholder for an undefined status.
+ * This value will never be returned in responses.
+ * - "CREATIVE_ATTRIBUTE" : Indicates that the detail ID refers to a creative
+ * attribute; see
+ * [publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).
+ * - "VENDOR" : Indicates that the detail ID refers to a vendor; see
+ * [vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).
+ * - "SENSITIVE_CATEGORY" : Indicates that the detail ID refers to a sensitive
+ * category; see
+ * [ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).
+ * - "PRODUCT_CATEGORY" : Indicates that the detail ID refers to a product
+ * category; see
+ * [ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).
+ */
+ core.String detailType;
+ /**
+ * List of rows, with counts of bids with a given creative status aggregated
+ * by detail.
+ */
+ core.List<FilteredBidDetailRow> filteredBidDetailRows;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListCreativeStatusBreakdownByDetailRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.filteredBids.details.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
- Empty();
+ ListCreativeStatusBreakdownByDetailResponse();
- Empty.fromJson(core.Map _json) {
+ ListCreativeStatusBreakdownByDetailResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("detailType")) {
+ detailType = _json["detailType"];
+ }
+ if (_json.containsKey("filteredBidDetailRows")) {
+ filteredBidDetailRows = _json["filteredBidDetailRows"].map((value) => new FilteredBidDetailRow.fromJson(value)).toList();
+ }
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
+ }
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (detailType != null) {
+ _json["detailType"] = detailType;
+ }
+ if (filteredBidDetailRows != null) {
+ _json["filteredBidDetailRows"] = filteredBidDetailRows.map((value) => (value).toJson()).toList();
+ }
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
+ }
return _json;
}
}
-/**
- * @OutputOnly Filtering reasons for this creative during a period of a single
- * day (from midnight to midnight Pacific).
- */
-class FilteringStats {
+/** A response for listing creatives. */
+class ListCreativesResponse {
+ /** The list of creatives. */
+ core.List<Creative> creatives;
/**
- * The day during which the data was collected.
- * The data is collected from 00:00:00 to 23:59:59 PT.
- * During switches from PST to PDT and back, the day may
- * contain 23 or 25 hours of data instead of the usual 24.
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListCreativesRequest.page_token
+ * field in the subsequent call to `ListCreatives` method to retrieve the next
+ * page of results.
*/
- Date date;
- /** The set of filtering reasons for this date. */
- core.List<Reason> reasons;
+ core.String nextPageToken;
- FilteringStats();
+ ListCreativesResponse();
- FilteringStats.fromJson(core.Map _json) {
- if (_json.containsKey("date")) {
- date = new Date.fromJson(_json["date"]);
+ ListCreativesResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("creatives")) {
+ creatives = _json["creatives"].map((value) => new Creative.fromJson(value)).toList();
}
- if (_json.containsKey("reasons")) {
- reasons = _json["reasons"].map((value) => new Reason.fromJson(value)).toList();
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (date != null) {
- _json["date"] = (date).toJson();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (creatives != null) {
+ _json["creatives"] = creatives.map((value) => (value).toJson()).toList();
}
- if (reasons != null) {
- _json["reasons"] = reasons.map((value) => (value).toJson()).toList();
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
-/** HTML content for a creative. */
-class HtmlContent {
- /** The height of the HTML snippet in pixels. */
- core.int height;
- /** The HTML snippet that displays the ad when inserted in the web page. */
- core.String snippet;
- /** The width of the HTML snippet in pixels. */
- core.int width;
+/** A response for listing creative and deal associations */
+class ListDealAssociationsResponse {
+ /** The list of associations. */
+ core.List<CreativeDealAssociation> associations;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListDealAssociationsRequest.page_token
+ * field in the subsequent call to 'ListDealAssociation' method to retrieve
+ * the next page of results.
+ */
+ core.String nextPageToken;
- HtmlContent();
+ ListDealAssociationsResponse();
- HtmlContent.fromJson(core.Map _json) {
- if (_json.containsKey("height")) {
- height = _json["height"];
- }
- if (_json.containsKey("snippet")) {
- snippet = _json["snippet"];
+ ListDealAssociationsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("associations")) {
+ associations = _json["associations"].map((value) => new CreativeDealAssociation.fromJson(value)).toList();
}
- if (_json.containsKey("width")) {
- width = _json["width"];
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (height != null) {
- _json["height"] = height;
- }
- if (snippet != null) {
- _json["snippet"] = snippet;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (associations != null) {
+ _json["associations"] = associations.map((value) => (value).toJson()).toList();
}
- if (width != null) {
- _json["width"] = width;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
-/**
- * An image resource. You may provide a larger image than was requested,
- * so long as the aspect ratio is preserved.
- */
-class Image {
- /** Image height in pixels. */
- core.int height;
- /** The URL of the image. */
- core.String url;
- /** Image width in pixels. */
- core.int width;
+/** Response message for listing filter sets. */
+class ListFilterSetsResponse {
+ /** The filter sets belonging to the buyer. */
+ core.List<FilterSet> filterSets;
+ /**
+ * A token to retrieve the next page of results.
+ * Pass this value in the
+ * ListFilterSetsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.list
+ * method to retrieve the next page of results.
+ */
+ core.String nextPageToken;
- Image();
+ ListFilterSetsResponse();
- Image.fromJson(core.Map _json) {
- if (_json.containsKey("height")) {
- height = _json["height"];
- }
- if (_json.containsKey("url")) {
- url = _json["url"];
+ ListFilterSetsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("filterSets")) {
+ filterSets = _json["filterSets"].map((value) => new FilterSet.fromJson(value)).toList();
}
- if (_json.containsKey("width")) {
- width = _json["width"];
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (height != null) {
- _json["height"] = height;
- }
- if (url != null) {
- _json["url"] = url;
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (filterSets != null) {
+ _json["filterSets"] = filterSets.map((value) => (value).toJson()).toList();
}
- if (width != null) {
- _json["width"] = width;
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
-class ListClientUserInvitationsResponse {
- /** The returned list of client users. */
- core.List<ClientUserInvitation> invitations;
+/**
+ * Response message for listing all reasons that bid requests were filtered and
+ * not sent to the buyer.
+ */
+class ListFilteredBidRequestsResponse {
+ /**
+ * List of rows, with counts of filtered bid requests aggregated by callout
+ * status.
+ */
+ core.List<CalloutStatusRow> calloutStatusRows;
/**
* A token to retrieve the next page of results.
* Pass this value in the
- * ListClientUserInvitationsRequest.pageToken
+ * ListFilteredBidRequestsRequest.pageToken
* field in the subsequent call to the
- * clients.invitations.list
- * method to retrieve the next
- * page of results.
+ * accounts.filterSets.filteredBidRequests.list
+ * method to retrieve the next page of results.
*/
core.String nextPageToken;
- ListClientUserInvitationsResponse();
+ ListFilteredBidRequestsResponse();
- ListClientUserInvitationsResponse.fromJson(core.Map _json) {
- if (_json.containsKey("invitations")) {
- invitations = _json["invitations"].map((value) => new ClientUserInvitation.fromJson(value)).toList();
+ ListFilteredBidRequestsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("calloutStatusRows")) {
+ calloutStatusRows = _json["calloutStatusRows"].map((value) => new CalloutStatusRow.fromJson(value)).toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (invitations != null) {
- _json["invitations"] = invitations.map((value) => (value).toJson()).toList();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (calloutStatusRows != null) {
+ _json["calloutStatusRows"] = calloutStatusRows.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
@@ -2324,71 +4572,83 @@ class ListClientUserInvitationsResponse {
}
}
-class ListClientUsersResponse {
+/**
+ * Response message for listing all reasons that bids were filtered from the
+ * auction.
+ */
+class ListFilteredBidsResponse {
+ /**
+ * List of rows, with counts of filtered bids aggregated by filtering reason
+ * (i.e. creative status).
+ */
+ core.List<CreativeStatusRow> creativeStatusRows;
/**
* A token to retrieve the next page of results.
* Pass this value in the
- * ListClientUsersRequest.pageToken
+ * ListFilteredBidsRequest.pageToken
* field in the subsequent call to the
- * clients.invitations.list
- * method to retrieve the next
- * page of results.
+ * accounts.filterSets.filteredBids.list
+ * method to retrieve the next page of results.
*/
core.String nextPageToken;
- /** The returned list of client users. */
- core.List<ClientUser> users;
- ListClientUsersResponse();
+ ListFilteredBidsResponse();
- ListClientUsersResponse.fromJson(core.Map _json) {
+ ListFilteredBidsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("creativeStatusRows")) {
+ creativeStatusRows = _json["creativeStatusRows"].map((value) => new CreativeStatusRow.fromJson(value)).toList();
+ }
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
- if (_json.containsKey("users")) {
- users = _json["users"].map((value) => new ClientUser.fromJson(value)).toList();
- }
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (creativeStatusRows != null) {
+ _json["creativeStatusRows"] = creativeStatusRows.map((value) => (value).toJson()).toList();
+ }
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
- if (users != null) {
- _json["users"] = users.map((value) => (value).toJson()).toList();
- }
return _json;
}
}
-class ListClientsResponse {
- /** The returned list of clients. */
- core.List<Client> clients;
+/**
+ * Response message for listing all reasons that impressions were filtered (i.e.
+ * not considered as an inventory match) for the buyer.
+ */
+class ListFilteredImpressionsResponse {
+ /**
+ * List of rows, with counts of filtered impressions aggregated by status.
+ */
+ core.List<ImpressionStatusRow> impressionsStatusRows;
/**
* A token to retrieve the next page of results.
* Pass this value in the
- * ListClientsRequest.pageToken
+ * ListFilteredImpressionsRequest.pageToken
* field in the subsequent call to the
- * accounts.clients.list method
- * to retrieve the next page of results.
+ * accounts.filterSets.filteredImpressions.list
+ * method to retrieve the next page of results.
*/
core.String nextPageToken;
- ListClientsResponse();
+ ListFilteredImpressionsResponse();
- ListClientsResponse.fromJson(core.Map _json) {
- if (_json.containsKey("clients")) {
- clients = _json["clients"].map((value) => new Client.fromJson(value)).toList();
+ ListFilteredImpressionsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("impressionsStatusRows")) {
+ impressionsStatusRows = _json["impressionsStatusRows"].map((value) => new ImpressionStatusRow.fromJson(value)).toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (clients != null) {
- _json["clients"] = clients.map((value) => (value).toJson()).toList();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (impressionsStatusRows != null) {
+ _json["impressionsStatusRows"] = impressionsStatusRows.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
@@ -2397,34 +4657,38 @@ class ListClientsResponse {
}
}
-/** A response for listing creatives. */
-class ListCreativesResponse {
- /** The list of creatives. */
- core.List<Creative> creatives;
+/**
+ * Response message for listing the metrics that are measured in number of
+ * impressions.
+ */
+class ListImpressionMetricsResponse {
+ /** List of rows, each containing a set of impression metrics. */
+ core.List<ImpressionMetricsRow> impressionMetricsRows;
/**
* A token to retrieve the next page of results.
* Pass this value in the
- * ListCreativesRequest.page_token
- * field in the subsequent call to `ListCreatives` method to retrieve the next
- * page of results.
+ * ListImpressionMetricsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.impressionMetrics.list
+ * method to retrieve the next page of results.
*/
core.String nextPageToken;
- ListCreativesResponse();
+ ListImpressionMetricsResponse();
- ListCreativesResponse.fromJson(core.Map _json) {
- if (_json.containsKey("creatives")) {
- creatives = _json["creatives"].map((value) => new Creative.fromJson(value)).toList();
+ ListImpressionMetricsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("impressionMetricsRows")) {
+ impressionMetricsRows = _json["impressionMetricsRows"].map((value) => new ImpressionMetricsRow.fromJson(value)).toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (creatives != null) {
- _json["creatives"] = creatives.map((value) => (value).toJson()).toList();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (impressionMetricsRows != null) {
+ _json["impressionMetricsRows"] = impressionMetricsRows.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
@@ -2433,34 +4697,38 @@ class ListCreativesResponse {
}
}
-/** A response for listing creative and deal associations */
-class ListDealAssociationsResponse {
- /** The list of associations. */
- core.List<CreativeDealAssociation> associations;
+/** Response message for listing all reasons that bids lost in the auction. */
+class ListLosingBidsResponse {
+ /**
+ * List of rows, with counts of losing bids aggregated by loss reason (i.e.
+ * creative status).
+ */
+ core.List<CreativeStatusRow> creativeStatusRows;
/**
* A token to retrieve the next page of results.
* Pass this value in the
- * ListDealAssociationsRequest.page_token
- * field in the subsequent call to 'ListDealAssociation' method to retrieve
- * the next page of results.
+ * ListLosingBidsRequest.pageToken
+ * field in the subsequent call to the
+ * accounts.filterSets.losingBids.list
+ * method to retrieve the next page of results.
*/
core.String nextPageToken;
- ListDealAssociationsResponse();
+ ListLosingBidsResponse();
- ListDealAssociationsResponse.fromJson(core.Map _json) {
- if (_json.containsKey("associations")) {
- associations = _json["associations"].map((value) => new CreativeDealAssociation.fromJson(value)).toList();
+ ListLosingBidsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("creativeStatusRows")) {
+ creativeStatusRows = _json["creativeStatusRows"].map((value) => new CreativeStatusRow.fromJson(value)).toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
- core.Map toJson() {
- var _json = new core.Map();
- if (associations != null) {
- _json["associations"] = associations.map((value) => (value).toJson()).toList();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (creativeStatusRows != null) {
+ _json["creativeStatusRows"] = creativeStatusRows.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
@@ -2487,8 +4755,8 @@ class LocationContext {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (geoCriteriaIds != null) {
_json["geoCriteriaIds"] = geoCriteriaIds;
}
@@ -2496,6 +4764,48 @@ class LocationContext {
}
}
+/**
+ * A metric value, with an expected value and a variance; represents a count
+ * that may be either exact or estimated (i.e. when sampled).
+ */
+class MetricValue {
+ /** The expected value of the metric. */
+ core.String value;
+ /**
+ * The variance (i.e. square of the standard deviation) of the metric value.
+ * If value is exact, variance is 0.
+ * Can be used to calculate margin of error as a percentage of value, using
+ * the following formula, where Z is the standard constant that depends on the
+ * desired size of the confidence interval (e.g. for 90% confidence interval,
+ * use Z = 1.645):
+ *
+ * marginOfError = 100 * Z * sqrt(variance) / value
+ */
+ core.String variance;
+
+ MetricValue();
+
+ MetricValue.fromJson(core.Map _json) {
+ if (_json.containsKey("value")) {
+ value = _json["value"];
+ }
+ if (_json.containsKey("variance")) {
+ variance = _json["variance"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (value != null) {
+ _json["value"] = value;
+ }
+ if (variance != null) {
+ _json["variance"] = variance;
+ }
+ return _json;
+ }
+}
+
/** Native content for a creative. */
class NativeContent {
/**
@@ -2571,8 +4881,8 @@ class NativeContent {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (advertiserName != null) {
_json["advertiserName"] = advertiserName;
}
@@ -2629,8 +4939,8 @@ class PlatformContext {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (platforms != null) {
_json["platforms"] = platforms;
}
@@ -2638,6 +4948,32 @@ class PlatformContext {
}
}
+/**
+ * An open-ended realtime time range specified by the start timestamp.
+ * For filter sets that specify a realtime time range RTB metrics continue to
+ * be aggregated throughout the lifetime of the filter set.
+ */
+class RealtimeTimeRange {
+ /** The start timestamp of the real-time RTB metrics aggregation. */
+ core.String startTimestamp;
+
+ RealtimeTimeRange();
+
+ RealtimeTimeRange.fromJson(core.Map _json) {
+ if (_json.containsKey("startTimestamp")) {
+ startTimestamp = _json["startTimestamp"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (startTimestamp != null) {
+ _json["startTimestamp"] = startTimestamp;
+ }
+ return _json;
+ }
+}
+
/** A specific filtering status and how many times it occurred. */
class Reason {
/**
@@ -2663,8 +4999,8 @@ class Reason {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (count != null) {
_json["count"] = count;
}
@@ -2675,6 +5011,49 @@ class Reason {
}
}
+/**
+ * A relative date range, specified by an offset and a duration.
+ * The supported range of dates begins 30 days before today and ends today.
+ * I.e. the limits for these values are:
+ * offset_days >= 0
+ * duration_days >= 1
+ * offset_days + duration_days <= 30
+ */
+class RelativeDateRange {
+ /**
+ * The number of days in the requested date range. E.g. for a range spanning
+ * today, 1. For a range spanning the last 7 days, 7.
+ */
+ core.int durationDays;
+ /**
+ * The end date of the filter set, specified as the number of days before
+ * today. E.g. for a range where the last date is today, 0.
+ */
+ core.int offsetDays;
+
+ RelativeDateRange();
+
+ RelativeDateRange.fromJson(core.Map _json) {
+ if (_json.containsKey("durationDays")) {
+ durationDays = _json["durationDays"];
+ }
+ if (_json.containsKey("offsetDays")) {
+ offsetDays = _json["offsetDays"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (durationDays != null) {
+ _json["durationDays"] = durationDays;
+ }
+ if (offsetDays != null) {
+ _json["offsetDays"] = offsetDays;
+ }
+ return _json;
+ }
+}
+
/** A request for removing the association between a deal and a creative. */
class RemoveDealAssociationRequest {
/** The association between a creative and a deal that should be removed. */
@@ -2688,8 +5067,8 @@ class RemoveDealAssociationRequest {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (association != null) {
_json["association"] = (association).toJson();
}
@@ -2697,6 +5076,31 @@ class RemoveDealAssociationRequest {
}
}
+/**
+ * A response may include multiple rows, breaking down along various dimensions.
+ * Encapsulates the values of all dimensions for a given row.
+ */
+class RowDimensions {
+ /** The time interval that this row represents. */
+ TimeInterval timeInterval;
+
+ RowDimensions();
+
+ RowDimensions.fromJson(core.Map _json) {
+ if (_json.containsKey("timeInterval")) {
+ timeInterval = new TimeInterval.fromJson(_json["timeInterval"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (timeInterval != null) {
+ _json["timeInterval"] = (timeInterval).toJson();
+ }
+ return _json;
+ }
+}
+
/** @OutputOnly A security context. */
class SecurityContext {
/** The security types in this context. */
@@ -2710,8 +5114,8 @@ class SecurityContext {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (securities != null) {
_json["securities"] = securities;
}
@@ -2764,8 +5168,8 @@ class ServingContext {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (all != null) {
_json["all"] = all;
}
@@ -2829,8 +5233,8 @@ class ServingRestriction {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (contexts != null) {
_json["contexts"] = contexts.map((value) => (value).toJson()).toList();
}
@@ -2852,8 +5256,55 @@ class StopWatchingCreativeRequest {
StopWatchingCreativeRequest.fromJson(core.Map _json) {
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ return _json;
+ }
+}
+
+/**
+ * An interval of time, with an absolute start and end.
+ * This is included in the response, for several reasons:
+ * 1) The request may have specified start or end times relative to the time the
+ * request was sent; the response indicates the corresponding absolute time
+ * interval.
+ * 2) The request may have specified an end time past the latest time for which
+ * data was available (e.g. if requesting data for the today); the response
+ * indicates the latest time for which data was actually returned.
+ * 3) The response data for a single request may be broken down into multiple
+ * time intervals, if a time series was requested.
+ */
+class TimeInterval {
+ /**
+ * The timestamp marking the end of the range (exclusive) for which data is
+ * included.
+ */
+ core.String endTime;
+ /**
+ * The timestamp marking the start of the range (inclusive) for which data is
+ * included.
+ */
+ core.String startTime;
+
+ TimeInterval();
+
+ TimeInterval.fromJson(core.Map _json) {
+ if (_json.containsKey("endTime")) {
+ endTime = _json["endTime"];
+ }
+ if (_json.containsKey("startTime")) {
+ startTime = _json["startTime"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (endTime != null) {
+ _json["endTime"] = endTime;
+ }
+ if (startTime != null) {
+ _json["startTime"] = startTime;
+ }
return _json;
}
}
@@ -2871,8 +5322,8 @@ class VideoContent {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (videoUrl != null) {
_json["videoUrl"] = videoUrl;
}
@@ -2899,8 +5350,8 @@ class WatchCreativeRequest {
}
}
- core.Map toJson() {
- var _json = new core.Map();
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
if (topic != null) {
_json["topic"] = topic;
}
« no previous file with comments | « generated/googleapis_beta/CHANGELOG.md ('k') | generated/googleapis_beta/lib/appengine/v1beta.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698