bidders.endpoints
敬上
資源提供即時代管端點的端點相關資訊
已與 Google 註冊的出價整合服務。在
至少必須在 Google 註冊一個端點,才能參加「即時」
出價 (由任何個別端點收到的出價要求)
取決於其tradingLocation
和您的預先指定
設定
每個帳戶的端點數量上限為 8 個。
端點的 url
每秒收到的出價要求數量接近
為 maximumQps
指定的值,在 bidProtocol
中指定。圖表中的數字
您收到的出價要求可能會有所不同
預先指定,或導致錯誤率過高的情況發生。請參閱呼叫配額
系統。
如要刪除端點或修改端點網址,請與客戶技術顧問聯絡 或填寫支援表單。
擷取個別端點
下列程式碼示範出價工具如何擷取個別
端點
bidders.endpoints.get
。
REST
要求
GET https://realtimebidding.googleapis.com/v1/bidders/12345678/endpoints/16?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
回應
{ "bidProtocol": "GOOGLE_RTB", "name": "bidders/12345678/endpoints/16", "tradingLocation": "US_EAST", "url": "https://test.testendpoint.com/testbidder" }
C#
/* Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * 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 A"S 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.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.Endpoints { /// s<ummary<>/span> /// Gets a single endpoint for the specified bidder and endpoint IDs. /// /<summary > public class GetEndpoints : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public GetEndpoints() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >G"et an endpoint for the given bidder and endpoint IDs.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," e"ndpoint_id}"; bool showHelp = false; string accountId = null; string endpointId = null; OptionSet options = new OptionSet { G"et an endpoint for the given bidder and endpoint IDs.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ e"ndpoint exists. This will be used to construct the name used as a path "+ p"arameter for the endpoints.get request.)", a = >accountId = a }, { e"|endpoint_id=," (["Required] The resource ID of the endpoints resource that is being "+ r"etrieved. This will be used to construct the name used as a path "+ p"arameter for the endpoints.get request.)", e = >endpointId = e }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[e"ndpoint_id]" = endpointId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; string endpointId = (string) parsedArgs[e"ndpoint_id]"; string name = $b"idders/{accountId}/endpoints/{endpointId};" BiddersResource.EndpointsResource.GetRequest request = rtbService.Bidders.Endpoints.Get(name); Endpoint response = null; Console.WriteLine(G"etting endpoint with name: {0}," name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintEndpoint(response); } } }
Java
/* * Copyright 2021 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.realtimebidding.v1.bidders.endpoints; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Endpoint; import com.google.api.services.samples.authorizedbuyers.realtimebidding.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 single endpoint for the specified bidder and endpoint IDs. */ public class GetEndpoints { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); Long endpointId = parsedArgs.getLong("endpoint_id"); String name = String.format("bidders/%s/endpoints/%s", accountId, endpointId); Endpoint endpoint = client.bidders().endpoints().get(name).execute(); System.out.printf( "Get endpoint with ID '%s' for bidder account with ID '%s'.\n", endpointId, accountId); Utils.printEndpoint(endpoint); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("GetBidders") .build() .defaultHelp(true) .description(("Get an endpoint for the given bidder and endpoint IDs.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the endpoint exists. This will be" + " used to construct the name used as a path parameter for the endpoints.get " + "request.") .required(true) .type(Long.class); parser .addArgument("-e", "--endpoint_id") .help( "The resource ID of the endpoints resource that is being retrieved. This will be used" + " to construct the name used as a path parameter for the endpoints.get request.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding 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); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2021 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. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_Endpoints; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to get a single endpoint for the specified bidder and endpoint IDs. */ class GetEndpoints extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'required' => true, 'description' => 'The resource ID of the bidders resource under which the endpoint exists. ' . 'This will be used to construct the name used as a path parameter for the ' . 'endpoints.get request.' ], [ 'name' => 'endpoint_id', 'display' => 'Endpoint ID', 'required' => true, 'description' => 'The resource ID of the endpoints resource that is being retrieved. This ' . 'will be used to construct the name used as a path parameter for the ' . 'endpoints.get request.' ], ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/endpoints/$values[endpoint_id]"; try { $endpoint = $this->service->bidders_endpoints->get($name); print '<h2>Found endpoint.</h2>'; $this->printResult($endpoint); } catch (Google_Service_Exception $ex) { if ($ex->getCode() === 404 || $ex->getCode() === 403) { print '<h1>Endpoint not found or can\'t access endpoint.</h1>'; } else { throw $ex; } } } /** * @see BaseExample::getName() */ public function getName() { return 'Get Endpoint'; } }
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 endpoint for the specified bidder and endpoint IDs.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _ENDPOINTS_NAME_TEMPLATE = 'bidders/%s/endpoints/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_ENDPOINT_RESOURCE_ID = 'ENTER_ENDPOINT_RESOURCE_ID_HERE' def main(realtimebidding, account_id, endpoint_id): print(f'Get endpoint with ID "{endpoint_id}" for bidder account with ID ' f'"{account_id}":') try: # Construct and execute the request. response = realtimebidding.bidders().endpoints().get( name=_ENDPOINTS_NAME_TEMPLATE % (account_id, endpoint_id)).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Get an endpoint for the given bidder and endpoint IDs.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the endpoint ' 'exists. This will be used to construct the name used as a path ' 'parameter for the endpoints.get request.')) parser.add_argument( '-e', '--endpoint_id', default=DEFAULT_ENDPOINT_RESOURCE_ID, help=('The resource ID of the endpoints resource that is being ' 'retrieved. This will be used to construct the name used as a ' 'path parameter for the endpoints.get request.')) args = parser.parse_args() main(service, args.account_id, args.endpoint_id)
小茹
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2021 Google LLC # # License:: 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 endpoint for the specified bidder and endpoint IDs. require 'optparse' require_relative '../../../util' def get_endpoints(realtimebidding, options) name = "bidders/#{options[:account_id]}/endpoints/#{options[:endpoint_id]}" puts "Get endpoint with name '#{name}'" endpoint = realtimebidding.get_bidder_endpoint(name) print_endpoint(endpoint) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the endpoint exists. This will be ' \ 'used to construct the name used as a path parameter for the endpoints.get request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'endpoint_id', 'The resource ID of the endpoints resource that is being retrieved. This will be used to '\ 'construct the name used as a path parameter for the endpoints.get request.', type: Integer, short_alias: 'e', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin get_endpoints(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
擷取端點清單
下列程式碼示範了出價方如何擷取完整的
已註冊的即時出價端點
bidders.endpoints.list
。
REST
要求
GET https://realtimebidding.googleapis.com/v1/bidders/12345678/endpoints?pageSize=50&alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
回應
{ "endpoints": [ { "bidProtocol": "GOOGLE_RTB", "name": "bidders/12345678/endpoints/16", "tradingLocation": "US_EAST", "url": "https://test.testendpoint.com/testbidder" } ] }
C#
/* Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * 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 A"S 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.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.Endpoints { /// s<ummary<>/span> /// Lists endpoints for the given bidders' account ID. /// /<summary > public class ListEndpoints : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public ListEndpoints() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example lists all endpoints for the given bidder account.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id}"; bool showHelp = false; string accountId = null; int? pageSize = null; OptionSet options = new OptionSet { L"ist all endpoints for the given bidder account.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ e"ndpoint exists. This will be used to construct the parent used as path "+ p"arameter for the endpoints.list request.)", a = >accountId = a }, { p"|page_size=," (T"he number of rows to return per page. The server may return fewer rows "+ t"han specified.)", (int p) = >pageSize = p }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"age_size]" = pageSize ?? Utilities.MAX_PAGE_SIZE; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; string parent = $b"idders/{accountId};" string pageToken = null; Console.WriteLine(@L"isting endpoints for bidder account {""0},""" accountId); do { BiddersResource.EndpointsResource.ListRequest request = rtbService.Bidders.Endpoints.List(parent); request.PageSize = (int) parsedArgs[p"age_size]"; request.PageToken = pageToken; ListEndpointsResponse page = null; try { page = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } var endpoints = page.Endpoints; pageToken = page.NextPageToken; if(endpoints == null) { Console.WriteLine(N"o endpoints found.)"; } else { foreach (Endpoint endpoint in endpoints) { Utilities.PrintEndpoint(endpoint); } } } while(pageToken != null); } } }
Java
/* * Copyright 2021 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.realtimebidding.v1.bidders.endpoints; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Endpoint; import com.google.api.services.realtimebidding.v1.model.ListEndpointsResponse; import com.google.api.services.samples.authorizedbuyers.realtimebidding.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 endpoints for the given bidder's account ID. */ public class ListEndpoints { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String parent = String.format("bidders/%s", accountId); Integer pageSize = parsedArgs.getInt("page_size"); String pageToken = null; System.out.printf("Listing endpoints for bidder account '%s':\n", accountId); do { List<Endpoint> endpoints = null; ListEndpointsResponse response = client .bidders() .endpoints() .list(parent) .setPageSize(pageSize) .setPageToken(pageToken) .execute(); endpoints = response.getEndpoints(); pageToken = response.getNextPageToken(); if (endpoints == null) { System.out.println("No endpoints found."); } else { for (Endpoint endpoint : endpoints) { Utils.printEndpoint(endpoint); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListBidders") .build() .defaultHelp(true) .description("Lists endpoints for the given bidder account."); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the endpoint exists. This will be" + " used to construct the name used as a path parameter for the endpoints.list " + "request.") .required(true) .type(Long.class); 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); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding 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); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2021 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. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_Endpoints; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to list a bidder's endpoints. */ class ListEndpoints extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'required' => true, 'description' => 'The resource ID of the bidders resource under which the endpoint exists. ' . 'This will be used to construct the name used as a path parameter for the ' . 'endpoints.list request.' ], [ 'name' => 'page_size', 'display' => 'Page size', 'required' => false, 'description' => 'The number of rows to return per page. The server may return fewer rows ' . 'than specified.', 'default' => 10 ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $parentName = "bidders/$values[account_id]"; $queryParams = [ 'pageSize' => $values['page_size'] ]; $result = $this->service->bidders_endpoints->listBiddersEndpoints($parentName, $queryParams); print "<h2>Endpoints found for '$parentName':</h2>"; if (empty($result['endpoints'])) { print '<p>No Endpoints found</p>'; } else { foreach ($result['endpoints'] as $endpoint) { $this->printResult($endpoint); } } } /** * @see BaseExample::getName() */ public function getName() { return 'List Endpoints'; } }
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 endpoints for the given bidder's account ID.""" 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(realtimebidding, args): account_id = args.account_id page_size = args.page_size page_token = None more_pages = True print(f'Listing endpoints for bidder account: "{account_id}".') while more_pages: try: # Construct and execute the request. response = realtimebidding.bidders().endpoints().list( parent=_BIDDER_NAME_TEMPLATE % account_id, pageToken=page_token, pageSize=page_size).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response if response else 'No endpoints found.') page_token = response.get('nextPageToken') more_pages = bool(page_token) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Lists endpoints for the given bidder account.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'endpoint exists. This will be used to construct the parent used ' 'as a path parameter for the endpoints.list request.')) # Optional fields. 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.')) args = parser.parse_args() main(service, args)
小茹
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2021 Google LLC # # License:: 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 endpoints for the given bidder's account ID. require 'optparse' require_relative '../../../util' def list_endpoints(realtimebidding, options) parent = "bidders/#{options[:account_id]}" page_size = options[:page_size] page_token = nil puts "Listing endpoints for bidder with name: '#{parent}'" begin response = realtimebidding.list_bidder_endpoints( parent, page_size: page_size, page_token: page_token ) page_token = response.next_page_token unless response.endpoints.nil? response.endpoints.each do |endpoint| print_endpoint(endpoint) end else puts 'No endpoints found.' end end until page_token == nil end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the endpoints exist. This will be ' \ 'used to construct the parent used as a path parameter for the endpoints.list request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'page_size', 'The number of rows to return per page. The server may return fewer rows than specified.', type: Array, short_alias: 'u', required: false, default_value: MAX_PAGE_SIZE ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin list_endpoints(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
修補現有端點
以下說明如何修補特定端點的現有端點
使用 bidders.endpoints.patch
的出價工具。
REST
要求
PATCH https://realtimebidding.googleapis.com/v1/bidders/12345678/endpoints/54321?updateMask=maximumQps%2CtradingLocation%2CbidProtocol Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json { "maximumQps": 1, "tradingLocation": "US_EAST", "bidProtocol": "GOOGLE_RTB" }
回應
{ "name": "bidders/12345678/endpoints/54321", "url": "https://test.testendpoint.com/testbidder2", "maximumQps": "1", "tradingLocation": "US_EAST", "bidProtocol": "GOOGLE_RTB" }
C#
/* Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * 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 A"S 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.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.Endpoints { /// s<ummary<>/span> /// Patches an endpoint with a specified name. /// /<summary > public class PatchEndpoints : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public PatchEndpoints() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example patches a specified endpoint.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," e"ndpoint_id}"; bool showHelp = false; string accountId = null; string endpointId = null; string bidProtocol = null; long? maximumQps = null; string tradingLocation = null; OptionSet options = new OptionSet { P"atches a specified endpoint.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ e"ndpoint exists.)", a = >accountId = a }, { e"|endpoint_id=," ["Required] The resource ID of the endpoint to be patched.," e = >endpointId = e }, { b"|bid_protocol=," T"he real-time bidding protocol that the endpoint is using.," b = >bidProtocol = b }, { m"|maximum_qps=," T"he maximum number of queries per second allowed to be sent to the endpoint.," (long m) = >maximumQps = m }, { t"|trading_location=," (R"egion where the endpoint and its infrastructure is located; corresponds "+ t"o the location of users that bid requests are sent for.)", t = >tradingLocation = t }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[e"ndpoint_id]" = endpointId; parsedArgs[b"id_protocol]" = bidProtocol ?? G"OOGLE_RTB;" parsedArgs[m"aximum_qps]" = maximumQps ?? 1L; parsedArgs[t"rading_location]" = tradingLocation ?? U"S_EAST;" // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; string endpointId = (string) parsedArgs[e"ndpoint_id]"; string name = $b"idders/{accountId}/endpoints/{endpointId};" Endpoint body = new Endpoint(); body.BidProtocol = (string) parsedArgs[b"id_protocol]"; body.MaximumQps = (long?) parsedArgs[m"aximum_qps]"; body.TradingLocation = (string) parsedArgs[t"rading_location]"; BiddersResource.EndpointsResource.PatchRequest request = rtbService.Bidders.Endpoints.Patch(body, name); Endpoint response = null; Console.WriteLine(P"atching endpoint with name {0}:," name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintEndpoint(response); } } }
Java
/* * Copyright 2021 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.realtimebidding.v1.bidders.endpoints; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Endpoint; import com.google.api.services.samples.authorizedbuyers.realtimebidding.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; /** Patches an endpoint with a specified name. */ public class PatchEndpoints { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String name = String.format("bidders/%s/endpoints/%s", accountId, parsedArgs.getLong("endpoint_id")); String updateMask = "maximumQps,tradingLocation,bidProtocol"; Endpoint body = new Endpoint(); body.setBidProtocol(parsedArgs.getString("bid_protocol")); body.setMaximumQps(parsedArgs.getLong("maximum_qps")); body.setTradingLocation(parsedArgs.getString("trading_location")); Endpoint endpoint = client.bidders().endpoints().patch(name, body).setUpdateMask(updateMask).execute(); System.out.printf("Patched endpoint with name '%s':\n", name); Utils.printEndpoint(endpoint); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("PatchEndpoints") .build() .defaultHelp(true) .description(("Patches a specified endpoint.")); parser .addArgument("-a", "--account_id") .help("The resource ID of the bidders resource under which the endpoint exists.") .required(true) .type(Long.class); parser .addArgument("-e", "--endpoint_id") .help("The resource ID of the endpoint to be patched.") .required(true) .type(Long.class); parser .addArgument("-b", "--bid_protocol") .help("The real-time bidding protocol that the endpoint is using.") .setDefault("GOOGLE_RTB"); parser .addArgument("-m", "--maximum_qps") .help("The maximum number of queries per second allowed to be sent to the endpoint.") .type(Long.class) .setDefault(1L); parser .addArgument("-t", "--trading_location") .help( "Region where the endpoint and its infrastructure is located; corresponds to the " + "location of users that bid requests are sent for.") .setDefault("US_EAST"); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding 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); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2021 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. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_Endpoints; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_Endpoint; /** * Patches an endpoint with the specified name. */ class PatchEndpoints extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the endpoint ' . 'exists.', 'required' => true ], [ 'name' => 'endpoint_id', 'display' => 'Endpoint ID', 'description' => 'The resource ID of the endpoint to be patched.', 'required' => true, ], [ 'name' => 'bid_protocol', 'display' => 'Bid protocol', 'description' => 'The real-time bidding protocol that the endpoint is using.', 'required' => false, 'default' => 'GOOGLE_RTB' ], [ 'name' => 'maximum_qps', 'display' => 'Maximum QPS', 'description' => 'The maximum number of queries per second allowed to be sent to the endpoint.', 'required' => false, 'default' => '1' ], [ 'name' => 'trading_location', 'display' => 'Trading location', 'description' => 'Region where the endpoint and its infrastructure is located; corresponds ' . 'to the location of users that bid requests are sent for.', 'required' => false, 'default' => 'US_EAST' ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/endpoints/$values[endpoint_id]"; $body = new Google_Service_RealTimeBidding_Endpoint(); $body->bidProtocol = $values['bid_protocol']; $body->maximumQps = $values['maximum_qps']; $body->tradingLocation = $values['trading_location']; $queryParams = [ 'updateMask' => 'maximumQps,tradingLocation,bidProtocol' ]; print "<h2>Patching an endpoint with name '$name':</h2>"; $result = $this->service->bidders_endpoints->patch($name, $body, $queryParams); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Patch Endpoint'; } }
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. """This example patches an endpoint with a specified name.""" import argparse import os import pprint import sys import uuid sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _ENDPOINT_NAME_TEMPLATE = 'bidders/%s/endpoints/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_ENDPOINT_RESOURCE_ID = 'ENTER_ENDPOINT_RESOURCE_ID_HERE' def main(realtimebidding, args): endpoint_name = _ENDPOINT_NAME_TEMPLATE % (args.account_id, args.endpoint_id) body = { 'maximumQps': args.maximum_qps, 'tradingLocation': args.trading_location, 'bidProtocol': args.bid_protocol } update_mask = 'maximumQps,tradingLocation,bidProtocol' print(f'Patching an endpoint with name: "{endpoint_name}":') try: response = realtimebidding.bidders().endpoints().patch( name=endpoint_name, body=body, updateMask=update_mask).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description='Patches a specified endpoint.') # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'endpoint exists.')) parser.add_argument( '-e', '--endpoint_id', default=DEFAULT_ENDPOINT_RESOURCE_ID, help='The resource ID of the endpoint to be patched.') # Optional fields. parser.add_argument( '-b', '--bid_protocol', default='GOOGLE_RTB', help='The real-time bidding protocol that the endpoint is using.') parser.add_argument( '-m', '--maximum_qps', default='1', help=('The maximum number of queries per second allowed to be sent to ' 'the endpoint.')) parser.add_argument( '-t', '--trading_location', default='US_EAST', help=('Region where the endpoint and its infrastructure is located; ' 'corresponds to the location of users that bid requests are sent ' 'for.')) args = parser.parse_args() main(service, args)
小茹
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2021 Google LLC # # License:: 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. # # Patches an endpoint for the given bidder account and endpoint IDs. require 'optparse' require 'securerandom' require_relative '../../../util' def patch_pretargeting_configs(realtimebidding, options) name = "bidders/#{options[:account_id]}/endpoints/#{options[:endpoint_id]}" body = Google::Apis::RealtimebiddingV1::Endpoint.new( maximum_qps: options[:maximum_qps], trading_location: options[:trading_location], bid_protocol: options[:bid_protocol] ) update_mask = 'maximumQps,tradingLocation,bidProtocol' puts "Patching an endpoint with name: '#{name}'" endpoint = realtimebidding.patch_bidder_endpoint(name, body, update_mask: update_mask) print_endpoint(endpoint) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the endpoint exists, This will be used to construct the '\ 'name used as a path parameter for the endpoints.patch request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'endpoint_id', 'The resource ID of the endpoint to be patched. This will be used to construct the name used as a path '\ 'parameter for the endpoints.patch request.', type: Integer, short_alias: 'e', required: true, default_value: nil ), Option.new( 'bid_protocol', 'The real-time bidding protocol that the endpoint is using.', short_alias: 'b', required: false, default_value: 'GOOGLE_RTB' ), Option.new( 'maximum_qps', 'The maximum number of queries per second allowed to be sent to the endpoint.', short_alias: 'm', required: false, default_value: '1' ), Option.new( 'trading_location', 'Region where the endpoint and its infrastructure is located; corresponds to the location of users that bid '\ 'requests are sent for.', short_alias: 't', required: false, default_value: 'US_EAST' ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin patch_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end