建立用戶端
您可以使用 buyers.clients.create
方法建立代表其中一個用戶端的 Client
。
以下是您可以利用 Client
資源執行的幾項操作:
- 提及客戶正在與發布商協商。
- 為客戶訂閱競價套裝方案。
- 管理客戶對 Authorized Buyers Marketplace UI 的存取權。
以下範例說明如何使用 create
方法建立新的 Client
。
REST
要求
POST https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/clients?alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json { "displayName": "Demo Approver 2", "role": "CLIENT_DEAL_APPROVER", "sellerVisible": false }
回應
{ "name": "buyers/12345678/clients/873721984", "role": "CLIENT_DEAL_APPROVER", "state": "ACTIVE", "displayName": "Demo Approver 2" }
C#
/* 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.AuthorizedBuyersMarketplace.v1; using Google.Apis.AuthorizedBuyersMarketplace.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.AuthorizedBuyersMarketplace.Examples.v1.Buyers.Clients { /// <summary> /// Creates a client for the given buyer account ID. /// </summary> public class CreateClients : ExampleBase { private AuthorizedBuyersMarketplaceService mkService; /// <summary> /// Constructor. /// </summary> public CreateClients() { mkService = Utilities.GetAuthorizedBuyersMarketplaceService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example creates a client for the given buyer 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; string displayName = null; string partnerClientId = null; string role = null; string sellerVisible = null; OptionSet options = new OptionSet { "Creates a client for the given buyer account ID.", { "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 " + "client is to be created. This will be used to construct the name used as " + "a path parameter for the clients.create request."), a => accountId = a }, { "d|display_name=", ("The display name shown to publishers. Must be unique for clients without " + "partnerClientId specified. The maximum length allowed is 255 characters. " + "By default, this sample will specify a generated name."), d => displayName = d }, { "p|partner_client_id=", ("Arbitrary unique identifier provided by the buyer. This field can be used " + "to associate a client with an identifier in the namespace of the buyer. If " + "present, it must be unique across all the clients. By default, this sample " + "will not specify a partnerClientId."), p => partnerClientId = p }, { "r|role=", ("The role assigned to the client, which determines its permissions. By " + "default, this will be set to CLIENT_DEAL_VIEWER. For more details on how " + "to interpret the different roles, see:" + "https://developers.google.com/authorized-buyers/apis/marketplace/" + "reference/rest/v1/buyers.clients#ClientRole"), r => role = r }, { "s|seller_visible=", ("A boolean value indicating whether the client will be visible to " + "publishers. By default, this will be set to false."), s => sellerVisible = s }, }; 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["display_name"] = displayName ?? String.Format( "Test_Client_{0}", System.Guid.NewGuid()); parsedArgs["partner_client_id"] = partnerClientId; parsedArgs["role"] = role ?? "CLIENT_DEAL_VIEWER"; if (sellerVisible != null) { parsedArgs["seller_visible"] = Boolean.Parse(sellerVisible); } else { parsedArgs["seller_visible"] = false; } // 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}"; Client newClient = new Client() { DisplayName = (string) parsedArgs["display_name"], Role = (string) parsedArgs["role"], SellerVisible = (Boolean) parsedArgs["seller_visible"] }; string partnerClientId = (string) parsedArgs["partner_client_id"]; if (partnerClientId != null) { newClient.PartnerClientId = partnerClientId; } BuyersResource.ClientsResource.CreateRequest request = mkService.Buyers.Clients.Create(newClient, parent); Client response = null; Console.WriteLine("Creating client for buyer: {0}", parent); try { response = request.Execute(); } catch (Exception exception) { throw new ApplicationException( $"Real-time Bidding API returned error response:\n{exception.Message}"); } Utilities.PrintClient(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.marketplace.v1.buyers.clients; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1.model.Client; import com.google.api.services.samples.authorizedbuyers.marketplace.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.UUID; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Creates a client for the given buyer account ID. */ public class CreateClients { public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) { Long accountId = parsedArgs.getLong("account_id"); String parentBuyerName = String.format("buyers/%d", accountId); Client newClient = new Client(); newClient.setDisplayName(parsedArgs.getString("display_name")); newClient.setRole(parsedArgs.getString("role")); newClient.setSellerVisible(parsedArgs.getBoolean("seller_visible")); String partnerClientId = parsedArgs.getString("partner_client_id"); if (partnerClientId != null) { newClient.setPartnerClientId(partnerClientId); } Client client = null; try { client = marketplaceClient.buyers().clients().create(parentBuyerName, newClient).execute(); } catch (IOException ex) { System.out.printf("Marketplace API returned error response:%n%s", ex); System.exit(1); } System.out.printf("Created client for buyer Account ID '%d':%n", accountId); Utils.printClient(client); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("CreateClients") .build() .defaultHelp(true) .description(("Creates a client for the given buyer account ID.")); parser .addArgument("-a", "--account_id") .help("The resource ID of the buyers resource under which the client is to be created. ") .required(true) .type(Long.class); parser .addArgument("-d", "--display_name") .help( "Display name shown to publishers. Must be unique for clients without " + "partnerClientId specified. Maximum length of 255 characters is allowed. By " + "default, this sample will specify a generated name.") .type(String.class) .setDefault(String.format("TEST_CLIENT_%s", UUID.randomUUID())); parser .addArgument("-p", "--partner_client_id") .help( "Arbitrary unique identifier provided by the buyer. This field can be used to associate" + " a client with an identifier in the namespace of the buyer. If present, it must" + " be unique across all the clients. By default, this sample will not specify a" + "partnerClientId.") .type(String.class); parser .addArgument("-r", "--role") .help( "The role assigned to the client, which determines its permissions. By default, this" + " will be set to CLIENT_DEAL_VIEWER. For more details on how to interpret the" + " different roles, see: " + "https://developers.google.com/authorized-buyers/apis/marketplace/reference/rest/v1/buyers.clients#ClientRole") .type(String.class) .setDefault("CLIENT_DEAL_VIEWER"); parser .addArgument("-s", "--seller_visible") .help( "Whether the client will be visible to publishers. By default, this sample will " + "set this to false.") .type(Boolean.class) .setDefault(false); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } execute(client, parsedArgs); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Creates a client for the given buyer account ID.""" import argparse import os import pprint import sys import uuid 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 client = { 'displayName': args.display_name, 'role': args.role, 'sellerVisible': args.seller_visible } partner_client_id = args.partner_client_id if partner_client_id: client['partnerClientId'] = partner_client_id print(f'Creating client for buyer account ID "{account_id}":') try: # Construct and execute the request. response = (marketplace.buyers().clients().create( parent=_BUYER_NAME_TEMPLATE % account_id, body=client).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) def valid_role(value): valid_roles = ( 'CLIENT_DEAL_VIEWER', 'CLIENT_DEAL_VIEWER', 'CLIENT_DEAL_NEGOTIATOR', 'CLIENT_DEAL_APPROVER') upper_input = value.upper() if upper_input in valid_roles: return upper_input else: raise ValueError( f'Invalid role specified. Must be one of: {valid_roles}') def valid_bool(value): upper_input = value.upper() if upper_input == 'TRUE': return True elif upper_input == 'FALSE': return False else: raise ValueError( 'Invalid value specified. Must be a boolean input.') parser = argparse.ArgumentParser( description='Creates a client for the given buyer account 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 ' 'client is to be created.')) # Optional fields. parser.add_argument( '-n', '--display_name', default='Test Client #%s' % uuid.uuid4(), help=('The display name shown to publishers. Must be unique for ' 'clients without partnerClientId specified. The maximum length ' 'allowed is 255 characters. By default, this sample will ' 'specify a generated name.')) parser.add_argument( '-p', '--partner_client_id', default=None, help=('Arbitrary unique identifier provided by the buyer. This field ' 'can be used to associate a client with an identifier in the ' 'namespace of the buyer. If present, it must be unique across ' 'all the clients. Be default, this sample will not specify a ' 'partnerClientId.')) parser.add_argument( '-r', '--role', default='CLIENT_DEAL_VIEWER', type=valid_role, help=('The role assigned to the client, which determines its ' 'permissions. By default, this will be set to ' 'CLIENT_DEAL_VIEWER. For more details on how to interpret the ' 'different roles, see: https://developers.google.com/' 'authorized-buyers/apis/marketplace/reference/rest/v1/' 'buyers.clients#ClientRole')) parser.add_argument( '-s', '--seller_visible', default=False, type=valid_bool, help=('Whether the client will be visible to publishers. By default, ' 'this sample will set this to False.')) main(service, parser.parse_args())
修補用戶端
您可以使用 buyers.clients.patch
方法更新現有的 Client
。舉例來說,您可以使用 patch
更新 displayName
。以下範例說明如何更新
搭配 patch
方法的 Client
。
REST
要求
PATCH https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/clients/873721984?updateMask=displayName&alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json { "displayName": "Test Client #6a1849ca-f8ed-4ead-a3b9-75ef117b043f" }
回應
{ "name": "buyers/12345678/clients/873721984", "role": "CLIENT_DEAL_APPROVER", "state": "ACTIVE", "displayName": "Test Client #6a1849ca-f8ed-4ead-a3b9-75ef117b043f" }
C#
/* 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.AuthorizedBuyersMarketplace.v1; using Google.Apis.AuthorizedBuyersMarketplace.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.AuthorizedBuyersMarketplace.Examples.v1.Buyers.Clients { /// <summary> /// Patches a client with the specified name. /// </summary> public class PatchClients : ExampleBase { private AuthorizedBuyersMarketplaceService mkService; /// <summary> /// Constructor. /// </summary> public PatchClients() { mkService = Utilities.GetAuthorizedBuyersMarketplaceService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example patches a client having the specified name."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {"account_id", "client_id"}; bool showHelp = false; string accountId = null; string clientId = null; string displayName = null; OptionSet options = new OptionSet { "Patches the specified client.", { "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 " + "client was created. This will be used to construct the name used as a " + "path parameter for the clients.patch request."), a => accountId = a }, { "c|client_id=", ("[Required] The resource ID of the buyers.clients resource for which the " + "client was created. This will be used to construct the name used as a " + "path parameter for the clients.patch request."), c => clientId = c }, { "d|display_name=", ("The display name shown to publishers. Must be unique for clients without " + "partnerClientId specified. The maximum length allowed is 255 characters. " + "By default, this sample will specify a generated name that will be used " + "to patch the client's existing display name."), d => displayName = d } }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if (showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs["account_id"] = accountId; parsedArgs["client_id"] = clientId; parsedArgs["display_name"] = displayName ?? $"Test-Client-{System.Guid.NewGuid()}"; // 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) { var accountId = (string) parsedArgs["account_id"]; var clientId = (string) parsedArgs["client_id"]; var name = $"buyers/{accountId}/clients/{clientId}"; Client clientPatch = new Client() { DisplayName = (string) parsedArgs["display_name"] }; BuyersResource.ClientsResource.PatchRequest request = mkService.Buyers.Clients.Patch(clientPatch, name); // Configure the update mask such that only the displayName is updated. If not set, the // patch method would overwrite all other writable fields with a null value. request.UpdateMask = "displayName"; Client response = null; Console.WriteLine("Patching client with name: {0}", name); try { response = request.Execute(); } catch (Exception exception) { throw new ApplicationException( $"Real-time Bidding API returned error response:\n{exception.Message}"); } Utilities.PrintClient(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.marketplace.v1.buyers.clients; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1.model.Client; import com.google.api.services.samples.authorizedbuyers.marketplace.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.UUID; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Patches a client with the specified name. */ public class PatchClients { public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) { Long accountId = parsedArgs.getLong("account_id"); Long clientId = parsedArgs.getLong("client_id"); String name = String.format("buyers/%d/clients/%d", accountId, clientId); Client update = new Client(); update.setDisplayName(parsedArgs.getString("display_name")); String uMask = "displayName"; Client client = null; try { client = marketplaceClient.buyers().clients().patch(name, update).setUpdateMask(uMask).execute(); } catch (IOException ex) { System.out.printf("Marketplace API returned error response:%n%s", ex); System.exit(1); } System.out.printf("Patched client for buyer Account ID '%d':%n", accountId); Utils.printClient(client); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("PatchClients") .build() .defaultHelp(true) .description(("Patches a client for the given buyer account ID and client ID.")); parser .addArgument("-a", "--account_id") .help("The resource ID of the buyers resource under which the client was created.") .required(true) .type(Long.class); parser .addArgument("-c", "--client_id") .help("The resource ID of the buyers.clients resource under which the client was created.") .required(true) .type(Long.class); parser .addArgument("-d", "--display_name") .help( "Display name shown to publishers. Must be unique for clients without partnerClientId" + " specified. Maximum length of 255 characters is allowed. By default, this sample" + " will specify a generated name that will be used to patch the client's existing" + " display name.") .type(String.class) .setDefault(String.format("TEST_CLIENT_%s", UUID.randomUUID())); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } execute(client, parsedArgs); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Patches a client for the given account ID and client ID.""" import argparse import os import pprint import sys import uuid sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _CLIENT_NAME_TEMPLATE = 'buyers/%s/clients/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BUYER_RESOURCE_ID_HERE' def main(marketplace, args): account_id = args.account_id client_id = args.client_id client = { 'displayName': args.display_name } print(f'Patching client {client_id} for buyer account ID "{account_id}":') try: # Construct and execute the request. response = marketplace.buyers().clients().patch( name=_CLIENT_NAME_TEMPLATE % (account_id, client_id), body=client, updateMask='displayName').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=( 'Patches a client for the given buyer account ID and client 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 ' 'client was created.')) parser.add_argument( '-c', '--client_id', default=DEFAULT_BUYER_RESOURCE_ID, help=('The resource ID of the buyers.clients resource under which the ' 'client was created. This will be used to construct the name ' 'used as a path parameter for the buyers.clients.patch request.') ) # Optional fields. parser.add_argument( '-n', '--display_name', default='Test Client #%s' % uuid.uuid4(), help=('The display name shown to publishers. Must be unique for ' 'clients without partnerClientId specified. The maximum length ' 'allowed is 255 characters. By default, this sample will ' 'specify a generated name that will be used to patch the ' 'client\'s existing display name.')) main(service, parser.parse_args())