Create a client
You can use the buyers.clients.create
method to create a Client
that represents one of your clients.
Here are some things you can do with a Client
resource:
- Reference the client in negotiations with publishers.
- Subscribe the client to auction packages.
- Manage the client's access to the Authorized Buyers Marketplace UI.
The following sample demonstrates how you can create a new Client
with the create
method.
REST
Request
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 }
Response
{ "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 ())
Patch a client
You can use the buyers.clients.patch
method to update an existing Client
. For example, you can use patch
to
update the displayName
. The following sample demonstrates how you can update
a Client
with the patch
method.
REST
Request
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" }
Response
{ "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 ())