Bạn có thể sử dụng các phương pháp sau để xem thông tin đã hoàn tất giao dịch cho tài khoản của mình và bất kỳ khách hàng nào của bạn.
Xem từng ưu đãi
Bạn có thể sử dụng
buyers.finalizedDeals.get
để truy xuất một dữ liệu
FinalizedDeal
liên kết với tài khoản hoặc một trong các khách hàng của bạn.
Mẫu sau đây minh hoạ cách bạn có thể truy xuất một cá nhân
FinalizedDeal
bằng phương thức get
.
Kiến trúc chuyển trạng thái đại diện (REST)
Yêu cầu
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/finalizedDeals/1840860?alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
Phản hồi
{ "name": "buyers/12345678/finalizedDeals/1840860", "deal": { "name": "buyers/12345678/proposals/MP8642048/deals/1840860", "createTime": "2031-03-26T05:53:33.053Z", "updateTime": "2031-03-26T05:54:33.442Z", "displayName": "test-pg-deal-4", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP12345", "flightStartTime": "2032-03-31T16:00:00Z", "flightEndTime": "2032-03-31T18:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "200", "height": "200", "type": "PIXEL" }, { "width": "234", "height": "60", "type": "PIXEL" }, { "width": "240", "height": "400", "type": "PIXEL" }, { "width": "300", "height": "250", "type": "PIXEL" }, { "width": "300", "height": "600", "type": "PIXEL" }, { "width": "300", "height": "1050", "type": "PIXEL" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "EVENLY" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "USD", "nanos": 10000000 } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "ENDED", "dealPausingInfo": { "pausingConsented": true }, "rtbMetrics": {}, "readyToServe": false }
C#
/* Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.AuthorizedBuyersMarketplace.v1; using Google.Apis.AuthorizedBuyersMarketplace.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.AuthorizedBuyersMarketplace.Examples.v1.Buyers.FinalizedDeals { /// <summary> /// Gets a single finalized deal for the given buyer and deal IDs. /// /// Note that deal IDs for finalized deals are identical to those of /// non-finalized deals–when a deal becomes finalized, its deal ID will not /// change. /// </summary> public class GetFinalizedDeals : ExampleBase { private AuthorizedBuyersMarketplaceService mkService; /// <summary> /// Constructor. /// </summary> public GetFinalizedDeals() { mkService = Utilities.GetAuthorizedBuyersMarketplaceService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example gets a finalized deal for given buyer and deal IDs."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {"account_id", "deal_id"}; bool showHelp = false; string accountId = null; string dealId = null; OptionSet options = new OptionSet { "Get a finalized deal for the given buyer and deal IDs.", { "h|help", "Show help message and exit.", h => showHelp = h != null }, { "a|account_id=", ("[Required] The resource ID of the buyers resource under which the auction " + "package is being retrieved. This will be used to construct the name used " + "as a path parameter for the auctionPackages.get request."), a => accountId = a }, { "d|deal_id=", ("[Required] The resource ID of the buyers.finalizedDeals resource that " + "is being retrieved. This will be used to construct the name used as a " + "path parameter for the finalizedDeals.get request."), d => dealId = d }, }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if (showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set optional arguments. parsedArgs["account_id"] = accountId; parsedArgs["deal_id"] = dealId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// <summary> /// Run the example. /// </summary> /// <param name="parsedArgs">Parsed arguments for the example.</param> protected override void Run(Dictionary<string, object> parsedArgs) { string accountId = (string) parsedArgs["account_id"]; string dealId = (string) parsedArgs["deal_id"]; string name = $"buyers/{accountId}/finalizedDeals/{dealId}"; BuyersResource.FinalizedDealsResource.GetRequest request = mkService.Buyers.FinalizedDeals.Get(name); FinalizedDeal response = null; Console.WriteLine("Getting finalized deal with name: {0}", name); try { response = request.Execute(); } catch (Exception exception) { throw new ApplicationException( $"Marketplace API returned error response:\n{exception.Message}"); } Utilities.PrintFinalizedDeal(response); } } }
Java
/* * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.marketplace.v1.buyers.finalizedDeals; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1.model.FinalizedDeal; import com.google.api.services.samples.authorizedbuyers.marketplace.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * This sample illustrates how to get a finalized deal for the given buyer and deal IDs. * * <p>Note that deal IDs for finalized deals are identical to those of non-finalized deals–when a * deal becomes finalized, its deal ID will not change. */ public class GetFinalizedDeals { public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) { Long accountId = parsedArgs.getLong("account_id"); Long dealId = parsedArgs.getLong("deal_id"); String name = String.format("buyers/%d/finalizedDeals/%d", accountId, dealId); FinalizedDeal finalizedDeal = null; try { finalizedDeal = marketplaceClient.buyers().finalizedDeals().get(name).execute(); } catch (IOException ex) { System.out.printf("Marketplace API returned error response:%n%s", ex); System.exit(1); } System.out.printf( "Found finalized deal with ID \"%d\" for buyer account ID \"%d\":%n", dealId, accountId); Utils.printFinalizedDeal(finalizedDeal); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("GetFinalizedDeals") .build() .defaultHelp(true) .description(("Get a finalized deal for the given buyer account ID and deal ID.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the buyers resource under which the finalized deal exists. " + "This will be used to construct the parent used as a path parameter for the " + "finalizedDeals.get request.") .required(true) .type(Long.class); parser .addArgument("-d", "--deal_id") .help( "The resource ID of the buyers.finalizedDeals resource that is being retrieved. " + "This will be used to construct the name used as a path parameter for the " + "finalizedDeals.get request.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } execute(client, parsedArgs); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Gets a single finalized deal for the given account and deal IDs.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _FINALIZED_DEALS_NAME_TEMPLATE = 'buyers/%s/finalizedDeals/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BUYER_RESOURCE_ID_HERE' DEFAULT_FINALIZED_DEAL_RESOURCE_ID = 'ENTER_DEAL_RESOURCE_ID_HERE' def main(marketplace, args): finalized_deal_name = _FINALIZED_DEALS_NAME_TEMPLATE % ( args.account_id, args.deal_id) print(f'Get finalized deal with name "{finalized_deal_name}":') try: # Construct and execute the request. response = marketplace.buyers().finalizedDeals().get( name=finalized_deal_name).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.get_service(version='v1') except IOError as ex: print(f'Unable to create marketplace service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Get a finalized deal for the given buyer account ID and ' 'deal ID.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, help=('The resource ID of the buyers resource for which the finalized ' 'deal is being accessed. This will be used to construct the ' 'name used as a path parameter for the finalizedDeals.get ' 'request.')) parser.add_argument( '-d', '--deal_id', default=DEFAULT_FINALIZED_DEAL_RESOURCE_ID, help=('The resource ID of the buyers.finalizedDeals resource that is ' 'being accessed. Note that this will be identical to the ' 'resource ID of the corresponding buyers.proposals.deals ' 'resource. This will be used to construct the name used as a ' 'path parameter for the finalizedDeals.get request.')) main(service, parser.parse_args())
Liệt kê giao dịch với tư cách là bên đặt giá thầu
Bạn có thể sử dụng
bidders.finalizedDeals.list
thông qua tất cả các giao dịch đã hoàn tất do bất kỳ người mua hoặc
liên kết với tài khoản người đặt giá thầu của bạn.
Bạn có thể sử dụng phương thức này để tìm kiếm rộng trên nhiều tài khoản.
Mẫu sau đây minh hoạ cách bạn có thể liệt kê các giao dịch đã hoàn tất với
list
.
Kiến trúc chuyển trạng thái đại diện (REST)
Yêu cầu
GET https://authorizedbuyersmarketplace.googleapis.com/v1/bidders/12345678/finalizedDeals?filter=deal.dealType+%3D+PROGRAMMATIC_GUARANTEED&orderBy=deal.flightStartTime+desc&pageSize=3&alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
Phản hồi
{ "finalizedDeals": [ { "name": "buyers/12345678/finalizedDeals/2809704", "deal": { "name": "buyers/12345678/proposals/MP24462282/deals/2809704", "createTime": "2031-05-10T21:12:10.586Z", "updateTime": "2031-08-18T16:23:35.087Z", "displayName": "test-pg-deal-1", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP62461", "flightStartTime": "2031-12-14T16:00:00Z", "flightEndTime": "2031-03-07T15:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1", "height": "1", "type": "NATIVE" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "FRONT_LOADED" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1000", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "20" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "PAUSED_BY_SELLER", "dealPausingInfo": { "pausingConsented": true, "pauseRole": "SELLER" }, "rtbMetrics": {} }, { "name": "buyers/12345678/finalizedDeals/1537354", "deal": { "name": "buyers/39382167/proposals/MP14640061/deals/1537354", "createTime": "2031-06-11T15:03:25.412Z", "updateTime": "2031-06-11T15:18:34.209Z", "displayName": "test-pg-deal-2", "buyer": "buyers/39382167", "publisherProfile": "buyers/39382167/publisherProfiles/PP382992", "flightStartTime": "2032-12-13T16:00:00Z", "flightEndTime": "2034-03-06T15:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1", "height": "1", "type": "NATIVE" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "FRONT_LOADED" }, "billedBuyer": "buyers/39382167", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1000", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "20" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "ACTIVE", "dealPausingInfo": { "pausingConsented": true }, "rtbMetrics": {}, "readyToServe": true }, { "name": "buyers/6524914/finalizedDeals/3126325", "deal": { "name": "buyers/6524914/proposals/MP17820211/deals/1518325", "createTime": "2031-05-11T15:16:49.903Z", "updateTime": "2031-05-11T15:21:34.162Z", "displayName": "test-pg-deal-3", "client": "buyers/6524914/clients/19823764", "publisherProfile": "buyers/6524914/publisherProfiles/2109413", "flightStartTime": "2032-04-11T16:00:00Z", "flightEndTime": "2032-10-13T15:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1", "height": "1", "type": "NATIVE" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "FRONT_LOADED" }, "billedBuyer": "buyers/6524914", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1000", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "18" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "ACTIVE", "dealPausingInfo": {}, "rtbMetrics": {}, "readyToServe": true } ], "nextPageToken": "CAMQy_DV1qLx9gIYy_DV1qLx9gI=" }
C#
/* Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.AuthorizedBuyersMarketplace.v1; using Google.Apis.AuthorizedBuyersMarketplace.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.AuthorizedBuyersMarketplace.Examples.v1.Bidders.FinalizedDeals { /// <summary> /// Lists finalized deals for the given bidder, their buyers, and clients. /// </summary> public class ListFinalizedDeals : ExampleBase { private AuthorizedBuyersMarketplaceService mkService; /// <summary> /// Constructor. /// </summary> public ListFinalizedDeals() { mkService = Utilities.GetAuthorizedBuyersMarketplaceService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example lists finalized deals for a given bidder, their buyers, " + "and clients."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {"account_id"}; bool showHelp = false; string accountId = null; string filter = null; string orderBy = null; int? pageSize = null; string defaultFilter = "deal.dealType = PROGRAMMATIC_GUARANTEED"; string defaultOrderBy = "deal.flightStartTime desc"; OptionSet options = new OptionSet { "List finalized deals for the given bidder, their buyers, and clients.", { "h|help", "Show help message and exit.", h => showHelp = h != null }, { "a|account_id=", ("[Required] The resource ID of the bidders resource under which the " + "finalized deals are being retrieved. This will be used to construct the " + "parent used as a path parameter for the finalizedDeals.list request."), a => accountId = a }, { "f|filter=", ("Query string to filter finalized deals. By default, this example will " + "fitler by deal type to retrieve programmatic guaranteed deals to " + "demonstrate usage."), f => filter = f }, { "o|order_by=", ("Query string used to sort the response of the list method. By default, " + "this example will return deals in descending order of their flight start " + "time to demonstrate usage. To learn more about the syntax for this " + "parameter, see: " + "https://cloud.google.com/apis/design/design_patterns#sorting_order"), o => orderBy = o }, { "p|page_size=", ("The number of rows to return per page. The server may return fewer rows " + "than specified."), (int p) => pageSize = p }, }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if (showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs["account_id"] = accountId; parsedArgs["filter"] = filter ?? defaultFilter; parsedArgs["order_by"] = orderBy ?? defaultOrderBy; parsedArgs["pageSize"] = pageSize ?? Utilities.MAX_PAGE_SIZE; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// <summary> /// Run the example. /// </summary> /// <param name="parsedArgs">Parsed arguments for the example.</param> protected override void Run(Dictionary<string, object> parsedArgs) { string accountId = (string) parsedArgs["account_id"]; string parent = $"bidders/{accountId}"; string pageToken = null; Console.WriteLine(@"Listing finalized deals for bidder account ""{0}""", parent); do { BiddersResource.FinalizedDealsResource.ListRequest request = mkService.Bidders.FinalizedDeals.List(parent); request.Filter = (string) parsedArgs["filter"]; request.OrderBy = (string) parsedArgs["order_by"]; request.PageSize = (int) parsedArgs["pageSize"]; request.PageToken = pageToken; ListFinalizedDealsResponse page = null; try { page = request.Execute(); } catch (Exception exception) { throw new ApplicationException( $"Marketplace API returned error response:\n{exception.Message}"); } var finalizedDeals = page.FinalizedDeals; pageToken = page.NextPageToken; if (finalizedDeals == null) { Console.WriteLine("No finalized deals found for bidder account."); } else { foreach (FinalizedDeal finalizedDeal in finalizedDeals) { Utilities.PrintFinalizedDeal(finalizedDeal); } } } while(pageToken != null); } } }
Java
/* * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.marketplace.v1.bidders.finalizedDeals; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1.model.FinalizedDeal; import com.google.api.services.authorizedbuyersmarketplace.v1.model.ListFinalizedDealsResponse; import com.google.api.services.samples.authorizedbuyers.marketplace.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * This sample illustrates how to list finalized deals for a given bidder, their buyers, and * clients. */ public class ListFinalizedDeals { public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) { Long accountId = parsedArgs.getLong("account_id"); Integer pageSize = parsedArgs.getInt("page_size"); String parentBidderName = String.format("bidders/%d", accountId); String pageToken = null; System.out.printf("Found finalized deals for bidder account ID '%d':%n", accountId); do { List<FinalizedDeal> finalizedDeals = null; try { ListFinalizedDealsResponse response = marketplaceClient .bidders() .finalizedDeals() .list(parentBidderName) .setFilter(parsedArgs.getString("filter")) .setOrderBy(parsedArgs.getString("order_by")) .setPageSize(pageSize) .setPageToken(pageToken) .execute(); finalizedDeals = response.getFinalizedDeals(); pageToken = response.getNextPageToken(); } catch (IOException ex) { System.out.printf("Marketplace API returned error response:%n%s", ex); System.exit(1); } if (finalizedDeals == null) { System.out.println("No finalized deals found."); } else { for (FinalizedDeal finalizedDeal : finalizedDeals) { Utils.printFinalizedDeal(finalizedDeal); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListFinalizedDeals") .build() .defaultHelp(true) .description(("Lists finalized deals associated with the given bidder account.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the finalized deals are being" + " retrieved. This will be used to construct the parent used as a path parameter" + " for the finalizedDeals.list request.") .required(true) .type(Long.class); parser .addArgument("-f", "--filter") .help( "Query string to filter finalized deals. By default, this example will filter by " + "deal type to retrieve programmatic guaranteed deals to demonstrate usage.") .setDefault("deal.dealType = PROGRAMMATIC_GUARANTEED"); parser .addArgument("-o", "--order_by") .help( "Query string used to sort the response of the list method. By default, this " + "example will return deals in descending order of their flight start time to " + "demonstrate usage. To learn more about the syntax for this parameter, see: " + "https://cloud.google.com/apis/design/design_patterns#sorting_order") .setDefault("deal.flightStartTime desc"); parser .addArgument("-p", "--page_size") .help( "The number of rows to return per page. The server may return fewer rows than " + "specified.") .setDefault(Utils.getMaximumPageSize()) .type(Integer.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } execute(client, parsedArgs); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Lists finalized deals for the given bidder, their buyers, and clients.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _BIDDER_NAME_TEMPLATE = 'bidders/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' def main(marketplace, args): account_id = args.account_id list_filter = args.filter order_by = args.order_by page_size = args.page_size page_token = None more_pages = True print(f'Listing finalized deals for bidder account: "{account_id}".') while more_pages: try: # Construct and execute the request. response = marketplace.bidders().finalizedDeals().list( parent=_BIDDER_NAME_TEMPLATE % account_id, pageToken=page_token, filter=list_filter, orderBy=order_by, pageSize=page_size).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) page_token = response.get('nextPageToken') more_pages = bool(page_token) if __name__ == '__main__': try: service = util.get_service(version='v1') except IOError as ex: print(f'Unable to create marketplace service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Lists finalized deals for the given bidder account, its ' 'buyers, and clients.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource for which the finalized ' 'deals are being retrieved. This will be used to construct the ' 'parent used as a path parameter for the finalizedDeals.list ' 'request.')) # Optional fields. parser.add_argument( '-f', '--filter', default='deal.dealType = PROGRAMMATIC_GUARANTEED', help=('Query string to filter clients. By default, this example will ' 'filter by deal type to retrieve programmatic guaranteed deals ' 'to demonstrate usage.')) parser.add_argument( '-o', '--order_by', default='deal.flightStartTime desc', help=('Query string used to sort the response of the list method. By ' 'default, this will return deals in descending order of their ' 'flight start time to demonstrate usage. To learn more about ' 'the syntax for this parameter, see: ' 'https://cloud.google.com/apis/design/design_patterns' '#sorting_order')) parser.add_argument( '-p', '--page_size', default=util.MAX_PAGE_SIZE, help=('The number of rows to return per page. The server may return ' 'fewer rows than specified.')) main(service, parser.parse_args())
Liệt kê giao dịch với tư cách người mua
Bạn có thể sử dụng
buyers.finalizedDeals.list
để xem trang thông qua tất cả các giao dịch đã hoàn tất được liên kết với tài khoản của bạn hoặc bất kỳ
khách hàng của mình.
Mẫu sau đây minh hoạ cách bạn có thể liệt kê các giao dịch đã hoàn tất với
list
.
Kiến trúc chuyển trạng thái đại diện (REST)
Yêu cầu
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/finalizedDeals?filter=deal.dealType+%3D+PROGRAMMATIC_GUARANTEED&orderBy=deal.flightStartTime+desc&pageSize=3&alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
Phản hồi
{ "finalizedDeals": [ { "name": "buyers/12345678/finalizedDeals/2809704", "deal": { "name": "buyers/12345678/proposals/MP24462282/deals/2809704", "createTime": "2032-05-10T21:12:10.586Z", "updateTime": "2032-08-18T16:23:35.087Z", "displayName": "test-pg-deal-1", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP62461", "flightStartTime": "2032-12-14T16:00:00Z", "flightEndTime": "2032-03-07T15:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1", "height": "1", "type": "NATIVE" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "FRONT_LOADED" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1000", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "20" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "PAUSED_BY_SELLER", "dealPausingInfo": { "pausingConsented": true, "pauseRole": "SELLER" }, "rtbMetrics": {} }, { "name": "buyers/12345678/finalizedDeals/3853354", "deal": { "name": "buyers/12345678/proposals/MP75020085/deals/3853354", "createTime": "2031-05-08T15:03:25.212Z", "updateTime": "2031-05-08T15:18:34.329Z", "displayName": "test-pg-deal-5", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP54321", "flightStartTime": "2032-12-13T16:00:00Z", "flightEndTime": "2033-03-06T15:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1", "height": "1", "type": "NATIVE" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "FRONT_LOADED" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1000", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "20" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "ACTIVE", "dealPausingInfo": { "pausingConsented": true }, "rtbMetrics": {}, "readyToServe": true }, { "name": "buyers/12345678/finalizedDeals/1840860", "deal": { "name": "buyers/12345678/proposals/MP8642048/deals/1840860", "createTime": "2031-03-26T05:53:33.053Z", "updateTime": "2031-03-26T05:54:33.442Z", "displayName": "test-pg-deal-4", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP12345", "flightStartTime": "2032-03-31T16:00:00Z", "flightEndTime": "2032-03-31T18:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "200", "height": "200", "type": "PIXEL" }, { "width": "234", "height": "60", "type": "PIXEL" }, { "width": "240", "height": "400", "type": "PIXEL" }, { "width": "300", "height": "250", "type": "PIXEL" }, { "width": "300", "height": "600", "type": "PIXEL" }, { "width": "300", "height": "1050", "type": "PIXEL" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "EVENLY" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "1", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "USD", "nanos": 10000000 } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }, "dealServingStatus": "ENDED", "dealPausingInfo": { "pausingConsented": true }, "rtbMetrics": {}, "readyToServe": false } ], "nextPageToken": "CAMQqbLfqKHx9gIYqbLfqKHx9gI=" }
C#
/* Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.AuthorizedBuyersMarketplace.v1; using Google.Apis.AuthorizedBuyersMarketplace.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.AuthorizedBuyersMarketplace.Examples.v1.Buyers.FinalizedDeals { /// <summary> /// Lists finalized deals for a given buyer and their clients. /// </summary> public class ListFinalizedDeals : ExampleBase { private AuthorizedBuyersMarketplaceService mkService; /// <summary> /// Constructor. /// </summary> public ListFinalizedDeals() { mkService = Utilities.GetAuthorizedBuyersMarketplaceService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example lists finalized deals for a given buyer and their clients."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {"account_id"}; bool showHelp = false; string accountId = null; string filter = null; string orderBy = null; int? pageSize = null; string defaultFilter = "deal.dealType = PROGRAMMATIC_GUARANTEED"; string defaultOrderBy = "deal.flightStartTime desc"; OptionSet options = new OptionSet { "List finalized deals for the given buyer account and their clients.", { "h|help", "Show help message and exit.", h => showHelp = h != null }, { "a|account_id=", ("[Required] The resource ID of the buyers resource under which the " + "finalized deals are being retrieved. This will be used to construct the " + "parent used as a path parameter for the finalizedDeals.list request."), a => accountId = a }, { "f|filter=", ("Query string to filter finalized deals. By default, this example will " + "fitler by deal type to retrieve programmatic guaranteed deals to " + "demonstrate usage."), f => filter = f }, { "o|order_by=", ("Query string used to sort the response of the list method. By default, " + "this example will return deals in descending order of their flight start " + "time to demonstrate usage. To learn more about the syntax for this " + "parameter, see: " + "https://cloud.google.com/apis/design/design_patterns#sorting_order"), o => orderBy = o }, { "p|page_size=", ("The number of rows to return per page. The server may return fewer rows " + "than specified."), (int p) => pageSize = p }, }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if (showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs["account_id"] = accountId; parsedArgs["filter"] = filter ?? defaultFilter; parsedArgs["order_by"] = orderBy ?? defaultOrderBy; parsedArgs["pageSize"] = pageSize ?? Utilities.MAX_PAGE_SIZE; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// <summary> /// Run the example. /// </summary> /// <param name="parsedArgs">Parsed arguments for the example.</param> protected override void Run(Dictionary<string, object> parsedArgs) { string accountId = (string) parsedArgs["account_id"]; string parent = $"buyers/{accountId}"; string pageToken = null; Console.WriteLine(@"Listing finalized deals for buyer account ""{0}""", parent); do { BuyersResource.FinalizedDealsResource.ListRequest request = mkService.Buyers.FinalizedDeals.List(parent); request.Filter = (string) parsedArgs["filter"]; request.OrderBy = (string) parsedArgs["order_by"]; request.PageSize = (int) parsedArgs["pageSize"]; request.PageToken = pageToken; ListFinalizedDealsResponse page = null; try { page = request.Execute(); } catch (Exception exception) { throw new ApplicationException( $"Marketplace API returned error response:\n{exception.Message}"); } var finalizedDeals = page.FinalizedDeals; pageToken = page.NextPageToken; if (finalizedDeals == null) { Console.WriteLine("No finalized deals found for buyer account."); } else { foreach (FinalizedDeal finalizedDeal in finalizedDeals) { Utilities.PrintFinalizedDeal(finalizedDeal); } } } while(pageToken != null); } } }
Java
/* * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.marketplace.v1.buyers.finalizedDeals; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1.model.FinalizedDeal; import com.google.api.services.authorizedbuyersmarketplace.v1.model.ListFinalizedDealsResponse; import com.google.api.services.samples.authorizedbuyers.marketplace.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** This sample illustrates how to list finalized deals for a given buyer and their clients. */ public class ListFinalizedDeals { public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) { Long accountId = parsedArgs.getLong("account_id"); Integer pageSize = parsedArgs.getInt("page_size"); String parentBuyerName = String.format("buyers/%d", accountId); String pageToken = null; System.out.printf("Found finalized deals for buyer account ID '%d':%n", accountId); do { List<FinalizedDeal> finalizedDeals = null; try { ListFinalizedDealsResponse response = marketplaceClient .buyers() .finalizedDeals() .list(parentBuyerName) .setFilter(parsedArgs.getString("filter")) .setOrderBy(parsedArgs.getString("order_by")) .setPageSize(pageSize) .setPageToken(pageToken) .execute(); finalizedDeals = response.getFinalizedDeals(); pageToken = response.getNextPageToken(); } catch (IOException ex) { System.out.printf("Marketplace API returned error response:%n%s", ex); System.exit(1); } if (finalizedDeals == null) { System.out.println("No finalized deals found."); } else { for (FinalizedDeal finalizedDeal : finalizedDeals) { Utils.printFinalizedDeal(finalizedDeal); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListFinalizedDeals") .build() .defaultHelp(true) .description(("Lists finalized deals associated with the given buyer account.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the buyers resource under which the finalized deals are being" + " retrieved. This will be used to construct the parent used as a path parameter" + " for the finalizedDeals.list request.") .required(true) .type(Long.class); parser .addArgument("-f", "--filter") .help( "Query string to filter finalized deals. By default, this example will filter by " + "deal type to retrieve programmatic guaranteed deals to demonstrate usage.") .setDefault("deal.dealType = PROGRAMMATIC_GUARANTEED"); parser .addArgument("-o", "--order_by") .help( "Query string used to sort the response of the list method. By default, this " + "example will return deals in descending order of their flight start time to " + "demonstrate usage. To learn more about the syntax for this parameter, see: " + "https://cloud.google.com/apis/design/design_patterns#sorting_order") .setDefault("deal.flightStartTime desc"); parser .addArgument("-p", "--page_size") .help( "The number of rows to return per page. The server may return fewer rows than " + "specified.") .setDefault(Utils.getMaximumPageSize()) .type(Integer.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } execute(client, parsedArgs); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Lists finalized deals for the given buyers and their clients.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _BUYER_NAME_TEMPLATE = 'buyers/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BUYER_RESOURCE_ID_HERE' def main(marketplace, args): account_id = args.account_id list_filter = args.filter order_by = args.order_by page_size = args.page_size page_token = None more_pages = True print(f'Listing finalized deals for buyer account: "{account_id}".') while more_pages: try: # Construct and execute the request. response = marketplace.buyers().finalizedDeals().list( parent=_BUYER_NAME_TEMPLATE % account_id, pageToken=page_token, filter=list_filter, orderBy=order_by, pageSize=page_size).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) page_token = response.get('nextPageToken') more_pages = bool(page_token) if __name__ == '__main__': try: service = util.get_service(version='v1') except IOError as ex: print(f'Unable to create marketplace service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Lists finalized deals for the given buyer account and ' 'its clients.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, help=('The resource ID of the buyers resource for which the finalized ' 'deals are being retrieved. This will be used to construct the ' 'parent used as a path parameter for the finalizedDeals.list ' 'request.')) # Optional fields. parser.add_argument( '-f', '--filter', default='deal.dealType = PROGRAMMATIC_GUARANTEED', help=('Query string to filter clients. By default, this example will ' 'filter by deal type to retrieve programmatic guaranteed deals ' 'to demonstrate usage.')) parser.add_argument( '-o', '--order_by', default='deal.flightStartTime desc', help=('Query string used to sort the response of the list method. By ' 'default, this will return deals in descending order of their ' 'flight start time to demonstrate usage. To learn more about ' 'the syntax for this parameter, see: ' 'https://cloud.google.com/apis/design/design_patterns' '#sorting_order')) parser.add_argument( '-p', '--page_size', default=util.MAX_PAGE_SIZE, help=('The number of rows to return per page. The server may return ' 'fewer rows than specified.')) main(service, parser.parse_args())