以下の方法を使用して、既存の 提案を 購入者のアカウントと クライアント。
個別の提案を取得
こちらの
buyers.proposals.get
メソッドを使用して、自分またはユーザーのいずれか clients
に送信された特定の Proposal
を取得します。
次のサンプルは、個々の Proposal
を取得する方法を示しています。
get
メソッドに置き換えます。
リクエストする
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals/MP21673270?alt=json
Authorization: BearerACCESS_TOKEN
Content-Type: application/json
レスポンス
{
"name": "buyers/12345678/proposals/MP21673270",
"updateTime": "2021-09-14T18:12:28.216Z",
"proposalRevision": "10",
"dealType": "PROGRAMMATIC_GUARANTEED",
"displayName": "Test PG Proposal 1",
"state": "SELLER_REVIEW_REQUESTED",
"isRenegotiating": true,
"originatorRole": "SELLER",
"publisherProfile": "buyers/12345678/publisherProfiles/PP12345",
"buyer": "buyers/12345678",
"billedBuyer": "buyers/12345678",
"lastUpdaterOrCommentorRole": "BUYER"
}
/* 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.Proposals
{
/// <summary>
/// Gets a single proposal for the given buyer and proposal IDs.
/// </summary>
public class GetProposals : ExampleBase
{
private AuthorizedBuyersMarketplaceService mkService;
/// <summary>
/// Constructor.
/// </summary>
public GetProposals()
{
mkService = Utilities.GetAuthorizedBuyersMarketplaceService();
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description
{
get => "This code example gets a proposal for given buyer and proposal IDs.";
}
/// <summary>
/// Parse specified arguments.
/// </summary>
protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) {
string[] requiredOptions = new string[] {"account_id", "proposal_id"};
bool showHelp = false;
string accountId = null;
string proposalId = null;
OptionSet options = new OptionSet {
"Get a proposal for the given buyer and proposal 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 " +
"proposal is being retrieved. This will be used to construct the name used " +
"as a path parameter for the proposals.get request."),
a => accountId = a
},
{
"p|proposal_id=",
("[Required] The resource ID of the buyers.proposals resource that is being " +
"retrieved. This will be used to construct the name used as a path " +
"parameter for the proposals.get request."),
p => proposalId = 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 optional arguments.
parsedArgs["account_id"] = accountId;
parsedArgs["proposal_id"] = proposalId;
// 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 proposalId = (string) parsedArgs["proposal_id"];
string name = $"buyers/{accountId}/proposals/{proposalId}";
BuyersResource.ProposalsResource.GetRequest request =
mkService.Buyers.Proposals.Get(name);
Proposal response = null;
Console.WriteLine("Getting proposal with name: {0}", name);
try
{
response = request.Execute();
}
catch (Exception exception)
{
throw new ApplicationException(
$"Marketplace API returned error response:\n{exception.Message}");
}
Utilities.PrintProposal(response);
}
}
}
/*
* 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.proposals;
import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.Proposal;
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 proposal for the given buyer and proposal IDs. */
public class GetProposals {
public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) {
Long accountId = parsedArgs.getLong("account_id");
String proposalId = parsedArgs.getString("proposal_id");
String name = String.format("buyers/%d/proposals/%s", accountId, proposalId);
Proposal proposal = null;
try {
proposal = marketplaceClient.buyers().proposals().get(name).execute();
} catch (IOException ex) {
System.out.printf("Marketplace API returned error response:%n%s", ex);
System.exit(1);
}
System.out.printf(
"Found proposal with ID \"%s\" for buyer account ID \"%d\":%n", proposalId, accountId);
Utils.printProposal(proposal);
}
public static void main(String[] args) {
ArgumentParser parser =
ArgumentParsers.newFor("GetProposals")
.build()
.defaultHelp(true)
.description(("Get a proposal for the given buyer account ID and proposal ID."));
parser
.addArgument("-a", "--account_id")
.help(
"The resource ID of the buyers resource under which the proposal is being retrieved."
+ " This will be used to construct the parent used as a path parameter for the"
+ " proposals.get request.")
.required(true)
.type(Long.class);
parser
.addArgument("-p", "--proposal_id")
.help(
"The resource ID of the buyers.proposals resource that is being retrieved. This will be"
+ " used to construct the name used as a path parameter for the proposals.get "
+ "request.")
.required(true);
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);
}
}
#!/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 proposal for the given account and proposal IDs."""
import argparse
import os
import pprint
import sys
sys.path.insert(0, os.path.abspath('../../..'))
from googleapiclient.errors import HttpError
import util
_PROPOSALS_NAME_TEMPLATE = 'buyers/%s/proposals/%s'
DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BUYER_RESOURCE_ID_HERE'
DEFAULT_PROPOSAL_RESOURCE_ID = 'ENTER_PROPOSAL_RESOURCE_ID_HERE'
def main(marketplace, args):
account_id = args.account_id
proposal_id = args.proposal_id
print(f'Get proposal "{proposal_id}" for account "{account_id}":')
try:
# Construct and execute the request.
response = marketplace.buyers().proposals().get(
name=_PROPOSALS_NAME_TEMPLATE % (account_id, proposal_id)).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 proposal for the given buyer account ID and '
'proposal ID.'))
# Required fields.
parser.add_argument(
'-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID,
help=('The resource ID of the buyers resource under which the '
'proposal was created. This will be used to construct the '
'name used as a path parameter for the proposals.get request.'))
parser.add_argument(
'-p', '--proposal_id', default=DEFAULT_PROPOSAL_RESOURCE_ID,
help=('The resource ID of the buyers.proposals resource for which the '
'proposal was created. This will be used to construct the '
'name used as a path parameter for the proposals.get request.'))
main(service, parser.parse_args())
複数の提案を一覧表示する
こちらの
buyers.proposals.list
を使用して、アカウントに送信されたすべての提案、またはアカウント内の
できます。
次のサンプルは、list
を使用してプロポーザルを一覧表示する方法を示しています。
メソッドを呼び出します。
リクエストする
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals?filter=dealType+%3D+PROGRAMMATIC_GUARANTEED&pageSize=3&alt=json
Authorization: BearerACCESS_TOKEN
Content-Type: application/json
レスポンス
{
"proposals": [
{
"name": "buyers/12345678/proposals/MP21673270",
"updateTime": "2021-09-14T18:12:28.216Z",
"proposalRevision": "10",
"dealType": "PROGRAMMATIC_GUARANTEED",
"displayName": "Test PG Proposal 1",
"state": "SELLER_REVIEW_REQUESTED",
"isRenegotiating": true,
"originatorRole": "SELLER",
"publisherProfile": "buyers/12345678/publisherProfiles/PP12345",
"buyer": "buyers/12345678",
"billedBuyer": "buyers/12345678",
"lastUpdaterOrCommentorRole": "BUYER"
},
{
"name": "buyers/12345678/proposals/MP31830610",
"updateTime": "2020-03-25T18:24:09.887Z",
"proposalRevision": "4",
"dealType": "PROGRAMMATIC_GUARANTEED",
"displayName": "Test PG Proposal 2",
"state": "SELLER_REVIEW_REQUESTED",
"originatorRole": "BUYER",
"publisherProfile": "buyers/12345678/publisherProfiles/PP54321",
"buyer": "buyers/12345678",
"billedBuyer": "buyers/12345678",
"sellerContacts": [
{
"email": "advertising@redplanet.mars",
"displayName": "Joe"
}
],
"buyerContacts": [
{
"email": "testemail2022@gmail.com"
}
],
"lastUpdaterOrCommentorRole": "BUYER"
},
{
"name": "buyers/12345678/proposals/MP14138120",
"updateTime": "2022-03-20T03:08:36.424Z",
"proposalRevision": "1",
"dealType": "PROGRAMMATIC_GUARANTEED",
"displayName": "Test PG Proposal 3",
"state": "SELLER_REVIEW_REQUESTED",
"originatorRole": "BUYER",
"publisherProfile": "buyers/12345678/publisherProfiles/PP892146",
"buyer": "buyers/12345678",
"billedBuyer": "buyers/12345678",
"sellerContacts": [
{
"email": "cindy@garb.com"
}
],
"buyerContacts": [
{
"email": "testemail2022@gmail.com"
}
],
"lastUpdaterOrCommentorRole": "BUYER",
"notes": [
{
"createTime": "2022-03-20T03:08:36.424Z",
"creatorRole": "BUYER",
"note": "Verified that ad sizes are supported."
}
]
}
],
"nextPageToken": "CAMQzey9vLbi9gIYzey9vLbi9gI="
}
/* 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.Proposals
{
/// <summary>
/// Lists proposals for a given buyer.
/// </summary>
public class ListProposals : ExampleBase
{
private AuthorizedBuyersMarketplaceService mkService;
/// <summary>
/// Constructor.
/// </summary>
public ListProposals()
{
mkService = Utilities.GetAuthorizedBuyersMarketplaceService();
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description
{
get => "This code example lists proposals for a given buyer.";
}
/// <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;
int? pageSize = null;
string defaultFilter = "dealType = PROGRAMMATIC_GUARANTEED";
OptionSet options = new OptionSet {
"List proposals for the given buyer account.",
{
"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 " +
"proposals are being retrieved. This will be used to construct the " +
"parent used as a path parameter for the proposals.list request."),
a => accountId = a
},
{
"f|filter=",
("Query string to filter proposals. By default, this example will filter by " +
"deal type to retrieve proposals including programmatic guaranteed deals " +
"to demonstrate usage."),
f => filter = f
},
{
"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["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 proposals for buyer account ""{0}""", parent);
do
{
BuyersResource.ProposalsResource.ListRequest request =
mkService.Buyers.Proposals.List(parent);
request.Filter = (string) parsedArgs["filter"];
request.PageSize = (int) parsedArgs["pageSize"];
request.PageToken = pageToken;
ListProposalsResponse page = null;
try
{
page = request.Execute();
}
catch (Exception exception)
{
throw new ApplicationException(
$"Marketplace API returned error response:\n{exception.Message}");
}
var proposals = page.Proposals;
pageToken = page.NextPageToken;
if (proposals == null)
{
Console.WriteLine("No finalized deals found for buyer account.");
}
else
{
foreach (Proposal proposal in proposals)
{
Utilities.PrintProposal(proposal);
}
}
}
while(pageToken != null);
}
}
}
/*
* 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.proposals;
import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.ListProposalsResponse;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.Proposal;
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 proposals for a given buyer. */
public class ListProposals {
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 proposals for buyer account ID '%d':%n", accountId);
do {
List<Proposal> proposals = null;
try {
ListProposalsResponse response =
marketplaceClient
.buyers()
.proposals()
.list(parentBuyerName)
.setFilter(parsedArgs.getString("filter"))
.setPageSize(pageSize)
.setPageToken(pageToken)
.execute();
proposals = response.getProposals();
pageToken = response.getNextPageToken();
} catch (IOException ex) {
System.out.printf("Marketplace API returned error response:%n%s", ex);
System.exit(1);
}
if (proposals == null) {
System.out.println("No proposals found.");
} else {
for (Proposal proposal : proposals) {
Utils.printProposal(proposal);
}
}
} while (pageToken != null);
}
public static void main(String[] args) {
ArgumentParser parser =
ArgumentParsers.newFor("ListProposals")
.build()
.defaultHelp(true)
.description(("Lists proposals associated with the given buyer account."));
parser
.addArgument("-a", "--account_id")
.help(
"The resource ID of the buyers resource under which the proposals are being retrieved."
+ " This will be used to construct the parent used as a path parameter for the"
+ " proposals.list request.")
.required(true)
.type(Long.class);
parser
.addArgument("-f", "--filter")
.help(
"Query string to filter proposals. By default, this example will filter by deal type to"
+ " retrieve proposals including programmatic guaranteed deals to demonstrate "
+ "usage.")
.setDefault("dealType = PROGRAMMATIC_GUARANTEED");
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);
}
}
#!/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 lists proposals for the specified buyer."""
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
page_size = args.page_size
page_token = None
more_pages = True
print(f'Listing proposals for buyer account: "{account_id}".')
while more_pages:
try:
# Construct and execute the request.
response = marketplace.buyers().proposals().list(
parent=_BUYER_NAME_TEMPLATE % account_id, pageToken=page_token,
filter=list_filter, 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 proposals for the given buyer account.')
# Required fields.
parser.add_argument(
'-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID,
help=('The resource ID of the buyers resource under which the '
'proposals were created. This will be used to construct the '
'parent used as a path parameter for the proposals.list '
'request.'))
# Optional fields.
parser.add_argument(
'-f', '--filter', default='dealType = PROGRAMMATIC_GUARANTEED',
help=('Query string to filter proposals. By default, this example will '
'filter by deal type to retrieve proposals including '
'programmatic guaranteed deals to demonstrate usage.'))
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())