Вы можете использовать ресурс bidders
и его подресурсы для управления интеграцией назначения ставок в реальном времени или действовать с одним или несколькими ресурсами для связанных покупателей.
Как участник торгов вы также можете выступать в роли покупателя , если делаете ставку от своего имени. В API это представлено ресурсами bidders
и buyers
с одинаковым идентификатором ресурса.
Получить отдельного участника торгов
Следующий код демонстрирует, как авторизованный пользователь может получить информацию об отдельном участнике торгов с помощью bidders.get
.
Запрос
GET https://realtimebidding.googleapis.com/v1/bidders/12345678?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
Ответ
{ "cookieMatchingNetworkId": "devrel_test_account", "cookieMatchingUrl": "https://google.com/cm", "dealsBillingId": "10293847", "name": "bidders/12345678" }
/* 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
*
* 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.RealTimeBidding.v1;
using Google.Apis.RealTimeBidding.v1.Data;
using Mono.Options;
using System;
using System.Collections.Generic;
namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders
{
/// <summary>
/// Gets a single bidder for the specified bidder name.
///
/// The bidder specified must be associated with the authorized service account specified in
/// Utilities.cs.
/// </summary>
public class GetBidders : ExampleBase
{
private RealTimeBiddingService rtbService;
/// <summary>
/// Constructor.
/// </summary>
public GetBidders()
{
rtbService = Utilities.GetRealTimeBiddingService();
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description
{
get => "Get a bidder for the given account ID.";
}
/// <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;
OptionSet options = new OptionSet {
"Get a bidder for the given bidder account ID.",
{
"h|help",
"Show help message and exit.",
h => showHelp = h != null
},
{
"a|account_id=",
("[Required] The resource ID of the bidders resource that is being " +
"retrieved. This will be used to construct the name used as a path " +
"parameter for the bidders.get request."),
a => accountId = a
},
};
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;
// 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 name = $"bidders/{accountId}";
BiddersResource.GetRequest request = rtbService.Bidders.Get(name);
Bidder response = null;
Console.WriteLine("Getting bidder with name: {0}", name);
try
{
response = request.Execute();
}
catch (System.Exception exception)
{
throw new ApplicationException(
$"Real-time Bidding API returned error response:\n{exception.Message}");
}
Utilities.PrintBidder(response);
}
}
}
/* * 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; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Bidder; 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 bidder for the specified bidder name. * * <p>The bidder specified must be associated with the authorized service account specified in * Utils.java. */ public class GetBidders { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String name = String.format("bidders/%s", accountId); Bidder bidder = client.bidders().get(name).execute(); System.out.printf("Get bidder with ID '%s'.\n", accountId); Utils.printBidder(bidder); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("GetBidders") .build() .defaultHelp(true) .description(("Get a bidder for the given account ID.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource that is being retrieved. This will be used to" + " construct the name used as a path parameter for the bidders.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 /** * 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; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to get a single bidder for the specified bidder name. * * The bidder specified must be associated with the authorized service account. */ class GetBidders 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 that is being retrieved. This will ' . 'be used to construct the name used as a path parameter for the bidders.get ' . 'request.' ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]"; try { $bidder = $this->service->bidders->get($name); print '<h2>Found bidder.</h2>'; $this->printResult($bidder); } catch (Google_Service_Exception $ex) { if ($ex->getCode() === 404 || $ex->getCode() === 403) { print '<h1>Bidder not found or can\'t access bidder account.</h1>'; } else { throw $ex; } } } /** * @see BaseExample::getName() */ public function getName() { return 'Get Bidder'; } }
#!/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 bidder for the specified bidder name. The bidder specified must be associated with the authorized service account. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../..')) from googleapiclient.errors import HttpError import util _BIDDERS_NAME_TEMPLATE = 'bidders/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' def main(realtimebidding, account_id): print(f'Get Bidder with ID "{account_id}":') try: # Construct and execute the request. response = realtimebidding.bidders().get( name=_BIDDERS_NAME_TEMPLATE % account_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 a bidder for the given account ID.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource that is being retrieved. ' 'This will be used to construct the name used as a path parameter ' 'for the bidders.get request.')) args = parser.parse_args() main(service, args.account_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 bidder for the specified bidder name. # # The bidder specified must be associated with the service account specified in util.rb. require 'optparse' require_relative '../../util' def get_bidders(realtimebidding, options) name = "bidders/#{options[:account_id]}" puts "Get bidder with name '#{name}'" bidder = realtimebidding.get_bidder(name) print_bidder(bidder) 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 that is being retrieved. This will be used to '\ 'construct the name used as a path parameter for the bidders.get request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin get_bidders(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
Получить список участников торгов
Следующий код демонстрирует, как авторизованный пользователь может получить список всех участников торгов, связанных с его учетной записью Google или службы, с помощью bidders.list
.
Запрос
GET https://realtimebidding.googleapis.com/v1/bidders?pageSize=50&alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
Ответ
{ "bidders": [ { "cookieMatchingNetworkId": "devrel_test_account", "cookieMatchingUrl": "https://google.com/cm", "dealsBillingId": "10293847", "name": "bidders/12345678" } ] }
/* 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
*
* 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.RealTimeBidding.v1;
using Google.Apis.RealTimeBidding.v1.Data;
using Mono.Options;
using System;
using System.Collections.Generic;
namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders
{
/// <summary>
/// Lists bidders associated with the authorized service account.
/// </summary>
public class ListBidders : ExampleBase
{
private RealTimeBiddingService rtbService;
/// <summary>
/// Constructor.
/// </summary>
public ListBidders()
{
rtbService = Utilities.GetRealTimeBiddingService();
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description
{
get => "This code example lists all bidders associated with the service account " +
"specified for the OAuth 2.0 flow in Utilities.cs.";
}
/// <summary>
/// Parse specified arguments.
/// </summary>
protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) {
string[] requiredOptions = new string[] {};
bool showHelp = false;
int? pageSize = null;
OptionSet options = new OptionSet {
"List bidders associated with the authorized service account.",
{
"h|help",
"Show help message and exit.",
h => showHelp = h != null
},
{
"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["page_size"] = 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 pageToken = null;
Console.WriteLine("Listing bidders for the authorized service account:");
do
{
BiddersResource.ListRequest request = rtbService.Bidders.List();
request.PageSize = (int) parsedArgs["page_size"];
request.PageToken = pageToken;
ListBiddersResponse page = null;
try
{
page = request.Execute();
}
catch (System.Exception exception)
{
throw new ApplicationException(
$"Real-time Bidding API returned error response:\n{exception.Message}");
}
var bidders = page.Bidders;
pageToken = page.NextPageToken;
if(bidders == null)
{
Console.WriteLine("No bidders found.");
}
else
{
foreach (Bidder bidder in bidders)
{
Utilities.PrintBidder(bidder);
}
}
}
while(pageToken != null);
}
}
}
/* * 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; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Bidder; import com.google.api.services.realtimebidding.v1.model.ListBiddersResponse; 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 bidders associated with the authorized service account. */ public class ListBidders { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Integer pageSize = parsedArgs.getInt("page_size"); String pageToken = null; System.out.println("Listing bidders associated with OAuth 2.0 credentials."); do { List<Bidder> bidders = null; ListBiddersResponse response = client.bidders().list().setPageSize(pageSize).setPageToken(pageToken).execute(); bidders = response.getBidders(); pageToken = response.getNextPageToken(); if (bidders == null) { System.out.println("No bidders found."); } else { for (Bidder bidder : bidders) { Utils.printBidder(bidder); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListBidders") .build() .defaultHelp(true) .description( "Lists bidders associated with the service account specified for the " + "OAuth 2.0 flow in Utils.java"); 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 /** * 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; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to list bidders associated with the authorized service account. */ class ListBidders extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ '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; $queryParams = [ 'pageSize' => $values['page_size'] ]; $result = $this->service->bidders->listBidders($queryParams); print "<h2>Listing bidders associated with OAuth 2.0 credentials:</h2>"; if (empty($result['bidders'])) { print '<p>No Bidders found</p>'; } else { foreach ($result['bidders'] as $bidder) { $this->printResult($bidder); } } } /** * @see BaseExample::getName() */ public function getName() { return 'List Bidders'; } }
#!/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 bidders associated with the authorized service account.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../..')) from googleapiclient.errors import HttpError import util def main(realtimebidding, args): page_size = args.page_size page_token = None more_pages = True print(f'Listing bidders associated with OAuth 2.0 credentials.') while more_pages: try: # Construct and execute the request. response = realtimebidding.bidders().list( pageToken=page_token, 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.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 bidders associated with the service account ' 'specified for the OAuth 2.0 flow in util.py.')) # 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 bidders associated with the service account specified in util.rb. require 'optparse' require_relative '../../util' def list_bidders(realtimebidding, options) page_size = options[:page_size] page_token = nil puts "Listing bidders associated with OAuth 2.0 credentials." begin response = realtimebidding.list_bidders( page_size: page_size, page_token: page_token ) page_token = response.next_page_token unless response.bidders.nil? response.bidders.each do |bidder| print_bidder(bidder) end else puts 'No bidders 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( '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_bidders(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