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 adf1eb0566b3cb8b9eeb26c8957f57192747c5ed..a554c3cf85ec28adccc15e3955d42d7fc79b160b 100644 |
--- a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart |
+++ b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart |
@@ -37,6 +37,7 @@ class AccountsResourceApi { |
final commons.ApiRequester _requester; |
AccountsClientsResourceApi get clients => new AccountsClientsResourceApi(_requester); |
+ AccountsCreativesResourceApi get creatives => new AccountsCreativesResourceApi(_requester); |
AccountsResourceApi(commons.ApiRequester client) : |
_requester = client; |
@@ -152,10 +153,6 @@ class AccountsClientsResourceApi { |
* [accountId] - Unique numerical account ID of the sponsor buyer to list the |
* clients for. |
* |
- * [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 |
@@ -163,6 +160,10 @@ class AccountsClientsResourceApi { |
* returned from the previous call to the |
* accounts.clients.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 [ListClientsResponse]. |
* |
* Completes with a [commons.ApiRequestError] if the API endpoint returned an |
@@ -171,7 +172,7 @@ class AccountsClientsResourceApi { |
* If the used [http.Client] completes with an error when making a REST call, |
* this method will complete with the same error. |
*/ |
- async.Future<ListClientsResponse> list(core.String accountId, {core.int pageSize, core.String pageToken}) { |
+ async.Future<ListClientsResponse> list(core.String accountId, {core.String pageToken, core.int pageSize}) { |
var _url = null; |
var _queryParams = new core.Map(); |
var _uploadMedia = null; |
@@ -182,12 +183,12 @@ class AccountsClientsResourceApi { |
if (accountId == null) { |
throw new core.ArgumentError("Parameter accountId 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'; |
@@ -627,163 +628,766 @@ class AccountsClientsUsersResourceApi { |
} |
+class AccountsCreativesResourceApi { |
+ final commons.ApiRequester _requester; |
+ |
+ AccountsCreativesDealAssociationsResourceApi get dealAssociations => new AccountsCreativesDealAssociationsResourceApi(_requester); |
+ |
+ AccountsCreativesResourceApi(commons.ApiRequester client) : |
+ _requester = client; |
-/** |
- * A client resource represents a client buyer—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. |
+ * Creates a creative. |
* |
- * 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] - The metadata request object. |
* |
- * 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. |
+ * Request parameters: |
* |
- * 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; |
- /** |
- * 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. |
+ * [accountId] - The account that this creative belongs to. |
+ * Can be used to filter the response of the |
+ * creatives.list |
+ * method. |
+ * |
+ * [duplicateIdMode] - Indicates if multiple creatives can share an ID or not. |
+ * Default is |
+ * NO_DUPLICATES (one ID per creative). |
* 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. |
+ * - "NO_DUPLICATES" : A NO_DUPLICATES. |
+ * - "FORCE_ENABLE_DUPLICATE_IDS" : A FORCE_ENABLE_DUPLICATE_IDS. |
+ * |
+ * Completes with a [Creative]. |
+ * |
+ * 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. |
*/ |
- core.String status; |
- /** Whether the client buyer will be visible to sellers. */ |
- core.bool visibleToSeller; |
- |
- Client(); |
+ async.Future<Creative> create(Creative request, core.String accountId, {core.String duplicateIdMode}) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
- 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 (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
} |
- if (_json.containsKey("status")) { |
- status = _json["status"]; |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
} |
- if (_json.containsKey("visibleToSeller")) { |
- visibleToSeller = _json["visibleToSeller"]; |
+ if (duplicateIdMode != null) { |
+ _queryParams["duplicateIdMode"] = [duplicateIdMode]; |
} |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Creative.fromJson(data)); |
} |
- core.Map toJson() { |
- var _json = new core.Map(); |
- if (clientAccountId != null) { |
- _json["clientAccountId"] = clientAccountId; |
- } |
- if (clientName != null) { |
- _json["clientName"] = clientName; |
- } |
- if (entityId != null) { |
- _json["entityId"] = entityId; |
+ /** |
+ * Gets a creative. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account the creative belongs to. |
+ * |
+ * [creativeId] - The ID of the creative to retrieve. |
+ * |
+ * Completes with a [Creative]. |
+ * |
+ * 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<Creative> get(core.String accountId, core.String creativeId) { |
+ 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 (entityName != null) { |
- _json["entityName"] = entityName; |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
} |
- if (entityType != null) { |
- _json["entityType"] = entityType; |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId'); |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Creative.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Lists creatives. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account to list the creatives from. |
+ * Specify "-" to list all creatives the current user has access to. |
+ * |
+ * [pageToken] - A token identifying a page of results the server should |
+ * return. |
+ * Typically, this is the value of |
+ * ListCreativesResponse.next_page_token |
+ * returned from the previous call to 'ListCreatives' method. |
+ * |
+ * [pageSize] - Requested page size. The server may return fewer creatives |
+ * than requested |
+ * (due to timeout constraint) even if more are available via another call. |
+ * If unspecified, server will pick an appropriate default. |
+ * Acceptable values are 1 to 1000, inclusive. |
+ * |
+ * [query] - An optional query string to filter creatives. If no filter is |
+ * specified, |
+ * all active creatives will be returned. |
+ * Supported queries are: |
+ * <ul> |
+ * <li>accountId=<i>account_id_string</i> |
+ * <li>creativeId=<i>creative_id_string</i> |
+ * <li>dealsStatus: {approved, conditionally_approved, disapproved, |
+ * not_checked} |
+ * <li>openAuctionStatus: {approved, conditionally_approved, disapproved, |
+ * not_checked} |
+ * <li>attribute: {a numeric attribute from the list of attributes} |
+ * <li>disapprovalReason: {a reason from DisapprovalReason |
+ * </ul> |
+ * Example: 'accountId=12345 AND (dealsStatus:disapproved AND |
+ * disapprovalReason:unacceptable_content) OR attribute:47' |
+ * |
+ * Completes with a [ListCreativesResponse]. |
+ * |
+ * 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<ListCreativesResponse> list(core.String accountId, {core.String pageToken, core.int pageSize, core.String query}) { |
+ 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 (role != null) { |
- _json["role"] = role; |
+ if (pageToken != null) { |
+ _queryParams["pageToken"] = [pageToken]; |
} |
- if (status != null) { |
- _json["status"] = status; |
+ if (pageSize != null) { |
+ _queryParams["pageSize"] = ["${pageSize}"]; |
} |
- if (visibleToSeller != null) { |
- _json["visibleToSeller"] = visibleToSeller; |
+ if (query != null) { |
+ _queryParams["query"] = [query]; |
} |
- return _json; |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives'; |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new ListCreativesResponse.fromJson(data)); |
} |
-} |
-/** |
- * 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. |
+ /** |
+ * Stops watching a creative. Will stop push notifications being sent to the |
+ * topics when the creative changes status. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account of the creative to stop notifications for. |
+ * |
+ * [creativeId] - The creative ID of the creative to stop notifications for. |
+ * Specify "-" to specify stopping account level notifications. |
+ * |
+ * 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> stopWatching(StopWatchingCreativeRequest request, core.String accountId, core.String creativeId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
+ } |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + ':stopWatching'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Empty.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Updates a creative. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account that this creative belongs to. |
+ * Can be used to filter the response of the |
+ * creatives.list |
+ * method. |
+ * |
+ * [creativeId] - The buyer-defined creative ID of this creative. |
+ * Can be used to filter the response of the |
+ * creatives.list |
+ * method. |
+ * |
+ * Completes with a [Creative]. |
+ * |
+ * 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<Creative> update(Creative request, core.String accountId, core.String creativeId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
+ } |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId'); |
+ |
+ var _response = _requester.request(_url, |
+ "PUT", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Creative.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Watches a creative. Will result in push notifications being sent to the |
+ * topic when the creative changes status. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account of the creative to watch. |
+ * |
+ * [creativeId] - The creative ID to watch for status changes. |
+ * Specify "-" to watch all creatives under the above account. |
+ * If both creative-level and account-level notifications are |
+ * sent, only a single notification will be sent to the |
+ * creative-level notification topic. |
+ * |
+ * 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> watch(WatchCreativeRequest request, core.String accountId, core.String creativeId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
+ } |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + ':watch'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Empty.fromJson(data)); |
+ } |
+ |
+} |
+ |
+ |
+class AccountsCreativesDealAssociationsResourceApi { |
+ final commons.ApiRequester _requester; |
+ |
+ AccountsCreativesDealAssociationsResourceApi(commons.ApiRequester client) : |
+ _requester = client; |
+ |
+ /** |
+ * Associate an existing deal with a creative. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account the creative belongs to. |
+ * |
+ * [creativeId] - The ID of the creative associated with the deal. |
+ * |
+ * 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> add(AddDealAssociationRequest request, core.String accountId, core.String creativeId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
+ } |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + '/dealAssociations:add'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Empty.fromJson(data)); |
+ } |
+ |
+ /** |
+ * List all creative-deal associations. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account to list the associations from. |
+ * Specify "-" to list all creatives the current user has access to. |
+ * |
+ * [creativeId] - The creative ID to list the associations from. |
+ * Specify "-" to list all creatives under the above account. |
+ * |
+ * [pageToken] - A token identifying a page of results the server should |
+ * return. |
+ * Typically, this is the value of |
+ * ListDealAssociationsResponse.next_page_token |
+ * returned from the previous call to 'ListDealAssociations' method. |
+ * |
+ * [pageSize] - Requested page size. Server may return fewer associations than |
+ * requested. |
+ * If unspecified, server will pick an appropriate default. |
+ * |
+ * [query] - An optional query string to filter deal associations. If no |
+ * filter is |
+ * specified, all associations will be returned. |
+ * Supported queries are: |
+ * <ul> |
+ * <li>accountId=<i>account_id_string</i> |
+ * <li>creativeId=<i>creative_id_string</i> |
+ * <li>dealsId=<i>deals_id_string</i> |
+ * <li>dealsStatus:{approved, conditionally_approved, disapproved, |
+ * not_checked} |
+ * <li>openAuctionStatus:{approved, conditionally_approved, disapproved, |
+ * not_checked} |
+ * </ul> |
+ * Example: 'dealsId=12345 AND dealsStatus:disapproved' |
+ * |
+ * Completes with a [ListDealAssociationsResponse]. |
+ * |
+ * 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<ListDealAssociationsResponse> list(core.String accountId, core.String creativeId, {core.String pageToken, core.int pageSize, core.String query}) { |
+ 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 (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ if (pageToken != null) { |
+ _queryParams["pageToken"] = [pageToken]; |
+ } |
+ if (pageSize != null) { |
+ _queryParams["pageSize"] = ["${pageSize}"]; |
+ } |
+ if (query != null) { |
+ _queryParams["query"] = [query]; |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + '/dealAssociations'; |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new ListDealAssociationsResponse.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Remove the association between a deal and a creative. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [accountId] - The account the creative belongs to. |
+ * |
+ * [creativeId] - The ID of the creative associated with the deal. |
+ * |
+ * 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> remove(RemoveDealAssociationRequest request, core.String accountId, core.String creativeId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (accountId == null) { |
+ throw new core.ArgumentError("Parameter accountId is required."); |
+ } |
+ if (creativeId == null) { |
+ throw new core.ArgumentError("Parameter creativeId is required."); |
+ } |
+ |
+ _url = 'v2beta1/accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/creatives/' + commons.Escaper.ecapeVariable('$creativeId') + '/dealAssociations:remove'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Empty.fromJson(data)); |
+ } |
+ |
+} |
+ |
+ |
+ |
+/** 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ if (auctionTypes != null) { |
+ _json["auctionTypes"] = auctionTypes; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * A client resource represents a client buyer—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; |
+ /** |
+ * 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 |
@@ -882,30 +1486,802 @@ class ClientUserInvitation { |
*/ |
core.String invitationId; |
- ClientUserInvitation(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ if (accountId != null) { |
+ _json["accountId"] = accountId; |
+ } |
+ if (creativeId != null) { |
+ _json["creativeId"] = creativeId; |
+ } |
+ if (dealsId != null) { |
+ _json["dealsId"] = dealsId; |
+ } |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * @OutputOnly Filtering reasons for this creative during a period of a single |
+ * day (from midnight to midnight Pacific). |
+ */ |
+class FilteringStats { |
+ /** |
+ * 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. |
+ */ |
+ 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 toJson() { |
+ var _json = new core.Map(); |
+ 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"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (height != null) { |
+ _json["height"] = height; |
+ } |
+ if (snippet != null) { |
+ _json["snippet"] = snippet; |
+ } |
+ if (width != null) { |
+ _json["width"] = width; |
+ } |
+ 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; |
- ClientUserInvitation.fromJson(core.Map _json) { |
- if (_json.containsKey("clientAccountId")) { |
- clientAccountId = _json["clientAccountId"]; |
+ Image(); |
+ |
+ Image.fromJson(core.Map _json) { |
+ if (_json.containsKey("height")) { |
+ height = _json["height"]; |
} |
- if (_json.containsKey("email")) { |
- email = _json["email"]; |
+ if (_json.containsKey("url")) { |
+ url = _json["url"]; |
} |
- if (_json.containsKey("invitationId")) { |
- invitationId = _json["invitationId"]; |
+ if (_json.containsKey("width")) { |
+ width = _json["width"]; |
} |
} |
core.Map toJson() { |
var _json = new core.Map(); |
- if (clientAccountId != null) { |
- _json["clientAccountId"] = clientAccountId; |
+ if (height != null) { |
+ _json["height"] = height; |
} |
- if (email != null) { |
- _json["email"] = email; |
+ if (url != null) { |
+ _json["url"] = url; |
} |
- if (invitationId != null) { |
- _json["invitationId"] = invitationId; |
+ if (width != null) { |
+ _json["width"] = width; |
} |
return _json; |
} |
@@ -1020,3 +2396,514 @@ class ListClientsResponse { |
return _json; |
} |
} |
+ |
+/** A response for listing creatives. */ |
+class ListCreativesResponse { |
+ /** The list of creatives. */ |
+ core.List<Creative> creatives; |
+ /** |
+ * 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. |
+ */ |
+ core.String nextPageToken; |
+ |
+ ListCreativesResponse(); |
+ |
+ ListCreativesResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("creatives")) { |
+ creatives = _json["creatives"].map((value) => new Creative.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(); |
+ } |
+ if (nextPageToken != null) { |
+ _json["nextPageToken"] = nextPageToken; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** 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; |
+ |
+ ListDealAssociationsResponse(); |
+ |
+ ListDealAssociationsResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("associations")) { |
+ associations = _json["associations"].map((value) => new CreativeDealAssociation.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(); |
+ } |
+ if (nextPageToken != null) { |
+ _json["nextPageToken"] = nextPageToken; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** @OutputOnly The Geo criteria the restriction applies to. */ |
+class LocationContext { |
+ /** |
+ * IDs representing the geo location for this context. |
+ * Please refer to the |
+ * [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) |
+ * file for different geo criteria IDs. |
+ */ |
+ core.List<core.int> geoCriteriaIds; |
+ |
+ LocationContext(); |
+ |
+ LocationContext.fromJson(core.Map _json) { |
+ if (_json.containsKey("geoCriteriaIds")) { |
+ geoCriteriaIds = _json["geoCriteriaIds"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (geoCriteriaIds != null) { |
+ _json["geoCriteriaIds"] = geoCriteriaIds; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Native content for a creative. */ |
+class NativeContent { |
+ /** |
+ * The name of the advertiser or sponsor, to be displayed in the ad creative. |
+ */ |
+ core.String advertiserName; |
+ /** The app icon, for app download ads. */ |
+ Image appIcon; |
+ /** A long description of the ad. */ |
+ core.String body; |
+ /** A label for the button that the user is supposed to click. */ |
+ core.String callToAction; |
+ /** The URL that the browser/SDK will load when the user clicks the ad. */ |
+ core.String clickLinkUrl; |
+ /** The URL to use for click tracking. */ |
+ core.String clickTrackingUrl; |
+ /** A short title for the ad. */ |
+ core.String headline; |
+ /** A large image. */ |
+ Image image; |
+ /** A smaller image, for the advertiser's logo. */ |
+ Image logo; |
+ /** The price of the promoted app including currency info. */ |
+ core.String priceDisplayText; |
+ /** The app rating in the app store. Must be in the range [0-5]. */ |
+ core.double starRating; |
+ /** The URL to the app store to purchase/download the promoted app. */ |
+ core.String storeUrl; |
+ /** The URL to fetch a native video ad. */ |
+ core.String videoUrl; |
+ |
+ NativeContent(); |
+ |
+ NativeContent.fromJson(core.Map _json) { |
+ if (_json.containsKey("advertiserName")) { |
+ advertiserName = _json["advertiserName"]; |
+ } |
+ if (_json.containsKey("appIcon")) { |
+ appIcon = new Image.fromJson(_json["appIcon"]); |
+ } |
+ if (_json.containsKey("body")) { |
+ body = _json["body"]; |
+ } |
+ if (_json.containsKey("callToAction")) { |
+ callToAction = _json["callToAction"]; |
+ } |
+ if (_json.containsKey("clickLinkUrl")) { |
+ clickLinkUrl = _json["clickLinkUrl"]; |
+ } |
+ if (_json.containsKey("clickTrackingUrl")) { |
+ clickTrackingUrl = _json["clickTrackingUrl"]; |
+ } |
+ if (_json.containsKey("headline")) { |
+ headline = _json["headline"]; |
+ } |
+ if (_json.containsKey("image")) { |
+ image = new Image.fromJson(_json["image"]); |
+ } |
+ if (_json.containsKey("logo")) { |
+ logo = new Image.fromJson(_json["logo"]); |
+ } |
+ if (_json.containsKey("priceDisplayText")) { |
+ priceDisplayText = _json["priceDisplayText"]; |
+ } |
+ if (_json.containsKey("starRating")) { |
+ starRating = _json["starRating"]; |
+ } |
+ if (_json.containsKey("storeUrl")) { |
+ storeUrl = _json["storeUrl"]; |
+ } |
+ if (_json.containsKey("videoUrl")) { |
+ videoUrl = _json["videoUrl"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (advertiserName != null) { |
+ _json["advertiserName"] = advertiserName; |
+ } |
+ if (appIcon != null) { |
+ _json["appIcon"] = (appIcon).toJson(); |
+ } |
+ if (body != null) { |
+ _json["body"] = body; |
+ } |
+ if (callToAction != null) { |
+ _json["callToAction"] = callToAction; |
+ } |
+ if (clickLinkUrl != null) { |
+ _json["clickLinkUrl"] = clickLinkUrl; |
+ } |
+ if (clickTrackingUrl != null) { |
+ _json["clickTrackingUrl"] = clickTrackingUrl; |
+ } |
+ if (headline != null) { |
+ _json["headline"] = headline; |
+ } |
+ if (image != null) { |
+ _json["image"] = (image).toJson(); |
+ } |
+ if (logo != null) { |
+ _json["logo"] = (logo).toJson(); |
+ } |
+ if (priceDisplayText != null) { |
+ _json["priceDisplayText"] = priceDisplayText; |
+ } |
+ if (starRating != null) { |
+ _json["starRating"] = starRating; |
+ } |
+ if (storeUrl != null) { |
+ _json["storeUrl"] = storeUrl; |
+ } |
+ if (videoUrl != null) { |
+ _json["videoUrl"] = videoUrl; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** @OutputOnly The type of platform the restriction applies to. */ |
+class PlatformContext { |
+ /** The platforms this restriction applies to. */ |
+ core.List<core.String> platforms; |
+ |
+ PlatformContext(); |
+ |
+ PlatformContext.fromJson(core.Map _json) { |
+ if (_json.containsKey("platforms")) { |
+ platforms = _json["platforms"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (platforms != null) { |
+ _json["platforms"] = platforms; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** A specific filtering status and how many times it occurred. */ |
+class Reason { |
+ /** |
+ * The number of times the creative was filtered for the status. The |
+ * count is aggregated across all publishers on the exchange. |
+ */ |
+ core.String count; |
+ /** |
+ * The filtering status code. Please refer to the |
+ * [creative-status-codes.txt](https://storage.googleapis.com/adx-rtb-dictionaries/creative-status-codes.txt) |
+ * file for different statuses. |
+ */ |
+ core.int status; |
+ |
+ Reason(); |
+ |
+ Reason.fromJson(core.Map _json) { |
+ if (_json.containsKey("count")) { |
+ count = _json["count"]; |
+ } |
+ if (_json.containsKey("status")) { |
+ status = _json["status"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (count != null) { |
+ _json["count"] = count; |
+ } |
+ if (status != null) { |
+ _json["status"] = status; |
+ } |
+ 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. */ |
+ CreativeDealAssociation association; |
+ |
+ RemoveDealAssociationRequest(); |
+ |
+ RemoveDealAssociationRequest.fromJson(core.Map _json) { |
+ if (_json.containsKey("association")) { |
+ association = new CreativeDealAssociation.fromJson(_json["association"]); |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (association != null) { |
+ _json["association"] = (association).toJson(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** @OutputOnly A security context. */ |
+class SecurityContext { |
+ /** The security types in this context. */ |
+ core.List<core.String> securities; |
+ |
+ SecurityContext(); |
+ |
+ SecurityContext.fromJson(core.Map _json) { |
+ if (_json.containsKey("securities")) { |
+ securities = _json["securities"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (securities != null) { |
+ _json["securities"] = securities; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** The serving context for this restriction. */ |
+class ServingContext { |
+ /** |
+ * Matches all contexts. |
+ * Possible string values are: |
+ * - "SIMPLE_CONTEXT" : A simple context. |
+ */ |
+ core.String all; |
+ /** Matches impressions for a particular app type. */ |
+ AppContext appType; |
+ /** Matches impressions for a particular auction type. */ |
+ AuctionContext auctionType; |
+ /** |
+ * Matches impressions coming from users *or* publishers in a specific |
+ * location. |
+ */ |
+ LocationContext location; |
+ /** Matches impressions coming from a particular platform. */ |
+ PlatformContext platform; |
+ /** Matches impressions for a particular security type. */ |
+ SecurityContext securityType; |
+ |
+ ServingContext(); |
+ |
+ ServingContext.fromJson(core.Map _json) { |
+ if (_json.containsKey("all")) { |
+ all = _json["all"]; |
+ } |
+ if (_json.containsKey("appType")) { |
+ appType = new AppContext.fromJson(_json["appType"]); |
+ } |
+ if (_json.containsKey("auctionType")) { |
+ auctionType = new AuctionContext.fromJson(_json["auctionType"]); |
+ } |
+ if (_json.containsKey("location")) { |
+ location = new LocationContext.fromJson(_json["location"]); |
+ } |
+ if (_json.containsKey("platform")) { |
+ platform = new PlatformContext.fromJson(_json["platform"]); |
+ } |
+ if (_json.containsKey("securityType")) { |
+ securityType = new SecurityContext.fromJson(_json["securityType"]); |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (all != null) { |
+ _json["all"] = all; |
+ } |
+ if (appType != null) { |
+ _json["appType"] = (appType).toJson(); |
+ } |
+ if (auctionType != null) { |
+ _json["auctionType"] = (auctionType).toJson(); |
+ } |
+ if (location != null) { |
+ _json["location"] = (location).toJson(); |
+ } |
+ if (platform != null) { |
+ _json["platform"] = (platform).toJson(); |
+ } |
+ if (securityType != null) { |
+ _json["securityType"] = (securityType).toJson(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * @OutputOnly A representation of the status of an ad in a |
+ * specific context. A context here relates to where something ultimately serves |
+ * (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, |
+ * or the type of auction). |
+ */ |
+class ServingRestriction { |
+ /** The contexts for the restriction. */ |
+ core.List<ServingContext> contexts; |
+ /** |
+ * Any disapprovals bound to this restriction. |
+ * Only present if status=DISAPPROVED. |
+ * Can be used to filter the response of the |
+ * creatives.list |
+ * method. |
+ */ |
+ core.List<Disapproval> disapprovalReasons; |
+ /** |
+ * The status of the creative in this context (for example, it has been |
+ * explicitly disapproved or is pending review). |
+ * Possible string values are: |
+ * - "STATUS_UNSPECIFIED" : The status is not known. |
+ * - "DISAPPROVAL" : The ad was disapproved in this context. |
+ * - "PENDING_REVIEW" : The ad is pending review in this context. |
+ */ |
+ core.String status; |
+ |
+ ServingRestriction(); |
+ |
+ ServingRestriction.fromJson(core.Map _json) { |
+ if (_json.containsKey("contexts")) { |
+ contexts = _json["contexts"].map((value) => new ServingContext.fromJson(value)).toList(); |
+ } |
+ if (_json.containsKey("disapprovalReasons")) { |
+ disapprovalReasons = _json["disapprovalReasons"].map((value) => new Disapproval.fromJson(value)).toList(); |
+ } |
+ if (_json.containsKey("status")) { |
+ status = _json["status"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (contexts != null) { |
+ _json["contexts"] = contexts.map((value) => (value).toJson()).toList(); |
+ } |
+ if (disapprovalReasons != null) { |
+ _json["disapprovalReasons"] = disapprovalReasons.map((value) => (value).toJson()).toList(); |
+ } |
+ if (status != null) { |
+ _json["status"] = status; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** A request for stopping notifications for changes to creative Status. */ |
+class StopWatchingCreativeRequest { |
+ |
+ StopWatchingCreativeRequest(); |
+ |
+ StopWatchingCreativeRequest.fromJson(core.Map _json) { |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ return _json; |
+ } |
+} |
+ |
+/** Video content for a creative. */ |
+class VideoContent { |
+ /** The URL to fetch a video ad. */ |
+ core.String videoUrl; |
+ |
+ VideoContent(); |
+ |
+ VideoContent.fromJson(core.Map _json) { |
+ if (_json.containsKey("videoUrl")) { |
+ videoUrl = _json["videoUrl"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (videoUrl != null) { |
+ _json["videoUrl"] = videoUrl; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** A request for watching changes to creative Status. */ |
+class WatchCreativeRequest { |
+ /** |
+ * The Pub/Sub topic to publish notifications to. |
+ * This topic must already exist and must give permission to |
+ * ad-exchange-buyside-reports@google.com to write to the topic. |
+ * This should be the full resource name in |
+ * "projects/{project_id}/topics/{topic_id}" format. |
+ */ |
+ core.String topic; |
+ |
+ WatchCreativeRequest(); |
+ |
+ WatchCreativeRequest.fromJson(core.Map _json) { |
+ if (_json.containsKey("topic")) { |
+ topic = _json["topic"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (topic != null) { |
+ _json["topic"] = topic; |
+ } |
+ return _json; |
+ } |
+} |