You can use the following methods to view in-progress deals for your buyer account and any of your clients .
View individual deal
You can use the buyers.proposals.deals.get
method to retrieve a specific Deal
associated with a proposal for your buyer
account or one of your clients.
The following sample demonstrates how you can retrieve an individual Deal
with
the get
method.
REST
Request
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals/MP21673270/deals/52404?alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
Response
{ "name": "buyers/12345678/proposals/MP21673270/deals/52404", "createTime": "2036-12-27T04:02:39.731Z", "updateTime": "2036-12-27T04:03:51.097Z", "proposalRevision": "4", "displayName": "test_deal_7435251", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP54321", "flightStartTime": "2036-12-28T00:00:00Z", "flightEndTime": "2036-12-30T23:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1024", "height": "768", "type": "PIXEL" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "EVENLY" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "100", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "10" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } }
C#
/* 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.Clients.Users { /// <summary> /// Deletes client user for the given buyer, client, and user IDs. /// </summary> public class DeleteClientUsers : ExampleBase { private AuthorizedBuyersMarketplaceService mkService ; /// <summary> /// Constructor. /// </summary> public DeleteClientUsers () { mkService = Utilities . GetAuthorizedBuyersMarketplaceService (); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get = > "This code example deletes a specific client user for a given client." ; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string , object > ParseArguments ( List<string> exampleArgs ) { string [] requiredOptions = new string [] { "account_id" , "client_id" , "user_id" }; bool showHelp = false ; string accountId = null ; string clientId = null ; string userId = null ; OptionSet options = new OptionSet { "Delete a client user with the given buyer, client, and user 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 parent " + "client was created. This will be used to construct the name used as a path " + "parameter for the users.delete request." ), a = > accountId = a }, { "c|client_id=" , ( "[Required] The resource ID of the buyers.clients resource for which the " + "client user was created. This will be used to construct the name used as " + "a path parameter for the users.delete request." ), c = > clientId = c }, { "u|user_id=" , ( "[Required] The resource ID of the buyers.clients.users resource for which " + "the client user was created. This will be used to construct the name used " + "as a path parameter for the users.delete request." ), u = > userId = u }, }; 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 [ "client_id" ] = clientId ; parsedArgs [ "user_id" ] = userId ; // 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 clientId = ( string ) parsedArgs [ "client_id" ]; string userId = ( string ) parsedArgs [ "user_id" ]; string name = $"buyers/{accountId}/clients/{clientId}/users/{userId}" ; BuyersResource . ClientsResource . UsersResource . DeleteRequest request = mkService . Buyers . Clients . Users . Delete ( name ); Console . WriteLine ( "Deleting client user with name: {0}" , name ); try { request . Execute (); } catch ( Exception exception ) { throw new ApplicationException ( $"Marketplace API returned error response:\n{exception.Message}" ); } } } }
Java
/* * 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.clients.users ; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace ; 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 delete a client user for the given buyer, client, and user IDs. */ public class DeleteClientUsers { public static void execute ( AuthorizedBuyersMarketplace marketplaceClient , Namespace parsedArgs ) { Long accountId = parsedArgs . getLong ( "account_id" ); Long clientId = parsedArgs . getLong ( "client_id" ); Long clientUserId = parsedArgs . getLong ( "client_user_id" ); String name = String . format ( "buyers/%d/clients/%d/users/%d" , accountId , clientId , clientUserId ); try { marketplaceClient . buyers (). clients (). users (). delete ( name ). execute (); } catch ( IOException ex ) { System . out . printf ( "Marketplace API returned error response:%n%s" , ex ); System . exit ( 1 ); } System . out . printf ( "Deleted client user with name \"%s\":%n" , name ); } public static void main ( String [] args ) { ArgumentParser parser = ArgumentParsers . newFor ( "DeactivateClientUsers" ) . build () . defaultHelp ( true ) . description (( "Delete a client user with the given buyer, client, and user ID." )); parser . addArgument ( "-a" , "--account_id" ) . help ( "The resource ID of the buyers resource under which the parent client was created. " + "This will be used to construct the name used as a path parameter for the " + "users.delete request." ) . required ( true ) . type ( Long . class ); parser . addArgument ( "-c" , "--client_id" ) . help ( "The resource ID of the buyers.clients resource under which the client user was" + " created. This will be used to construct the name used as a path parameter for" + " the users.delete request." ) . required ( true ) . type ( Long . class ); parser . addArgument ( "-u" , "--client_user_id" ) . help ( "The resource ID of the buyers.clients.users resource that is being deleted. " + "This will be used to construct the name used as a path parameter for the " + "users.delete request." ) . required ( true ) . type ( Long . 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 ); } }
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. """Deletes a user with the given account, client, and user ID. Note that this is intended to completely disassociate a given client user from a client. As a result, the email associated with the client user will lose access to the Authorized Buyers UI once it is deleted. To restore access, create and activate a new client user using the same email address. """ import argparse import os import pprint import sys sys . path . insert ( 0 , os . path . abspath ( '../../../..' )) from googleapiclient.errors import HttpError import util _CLIENT_USERS_NAME_TEMPLATE = 'buyers/ %s /clients/ %s /users/ %s ' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BUYER_RESOURCE_ID_HERE' DEFAULT_CLIENT_RESOURCE_ID = 'ENTER_CLIENT_RESOURCE_ID_HERE' DEFAULT_CLIENT_USER_RESOURCE_ID = 'ENTER_CLIENT_USER_RESOURCE_ID_HERE' def main ( marketplace , args ): client_user_name = _CLIENT_USERS_NAME_TEMPLATE % ( args . account_id , args . client_id , args . client_user_id ) print ( f 'Deleting client user with name " { client_user_name } ".' ) try : # Construct and execute the request. response = marketplace . buyers () . clients () . users () . delete ( name = client_user_name ) . execute () except HttpError as e : print ( e ) sys . exit ( 1 ) 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 = ( 'Delete a client user for the given buyer account, client, ' 'and client user 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 ' 'user was created. This will be used to construct the name used as ' 'a path parameter for the users.delete request.' )) parser . add_argument ( '-c' , '--client_id' , default = DEFAULT_CLIENT_RESOURCE_ID , help = ( 'The resource ID of the buyers.clients resource under which the ' 'client user was created. This will be used to construct the name ' 'used as a path parameter for the users.delete request.' )) parser . add_argument ( '-u' , '--client_user_id' , default = DEFAULT_CLIENT_USER_RESOURCE_ID , help = ( 'The resource ID of the buyers.clients.users resource for which ' 'the client user was created. This will be used to construct the ' 'name used as a path parameter for the users.delete request.' )) main ( service , parser . parse_args ())
List multiple deals
You can use the buyers.proposals.deals.list
method to page through all deals associated with a proposal for your account or
one of your clients.
The following sample demonstrates how you can list deals with the list
method.
REST
Request
GET https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals/MP21673270/deals?pageSize=50&alt=json Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
Response
{ "deals": [ { "name": "buyers/12345678/proposals/MP21673270/deals/52404", "createTime": "2036-12-27T04:02:39.731Z", "updateTime": "2036-12-27T04:03:51.097Z", "proposalRevision": "4", "displayName": "test_deal_7435251", "buyer": "buyers/12345678", "publisherProfile": "buyers/12345678/publisherProfiles/PP54321", "flightStartTime": "2036-12-28T00:00:00Z", "flightEndTime": "2036-12-30T23:59:00Z", "targeting": { "inventorySizeTargeting": { "targetedInventorySizes": [ { "width": "1024", "height": "768", "type": "PIXEL" } ] } }, "creativeRequirements": { "creativePreApprovalPolicy": "SELLER_PRE_APPROVAL_NOT_REQUIRED", "creativeSafeFrameCompatibility": "COMPATIBLE", "programmaticCreativeSource": "ADVERTISER", "creativeFormat": "DISPLAY" }, "deliveryControl": { "deliveryRateType": "EVENLY" }, "billedBuyer": "buyers/12345678", "dealType": "PROGRAMMATIC_GUARANTEED", "programmaticGuaranteedTerms": { "guaranteedLooks": "100", "fixedPrice": { "type": "CPM", "amount": { "currencyCode": "CNY", "units": "10" } }, "reservationType": "STANDARD" }, "sellerTimeZone": { "id": "Asia/Shanghai" } } ] }
C#
/* 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.Deals { /// <summary> /// Lists deals for the given buyer's proposal. /// </summary> public class ListDeals : ExampleBase { private AuthorizedBuyersMarketplaceService mkService ; /// <summary> /// Constructor. /// </summary> public ListDeals () { mkService = Utilities . GetAuthorizedBuyersMarketplaceService (); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get = > "This code example lists deals for the given buyer's proposal." ; } /// <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 ; int? pageSize = null ; OptionSet options = new OptionSet { "List deals for a given buyer's proposal." , { "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 " + "deals are being retrieved. This will be used to construct the parent used " + "as a path parameter for the deals.list request." ), a = > accountId = a }, { "proposal_id=" , ( "[Required] The resource ID of the buyers.proposals resource under which " + "the deals are being retrieved. This will be used to construct the parent " + "used as a path parameter for the deals.list request." ), p = > proposalId = p }, { "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 [ "proposal_id" ] = proposalId ; 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 proposalId = ( string ) parsedArgs [ "proposal_id" ]; string parent = $"buyers/{accountId}/proposals/{proposalId}" ; string pageToken = null ; Console . WriteLine ( @"Listing deals for proposal with name ""{0}""" , parent ); do { BuyersResource . ProposalsResource . DealsResource . ListRequest request = mkService . Buyers . Proposals . Deals . List ( parent ); request . PageSize = ( int ) parsedArgs [ "pageSize" ]; request . PageToken = pageToken ; ListDealsResponse page = null ; try { page = request . Execute (); } catch ( Exception exception ) { throw new ApplicationException ( $"Marketplace API returned error response:\n{exception.Message}" ); } var deals = page . Deals ; pageToken = page . NextPageToken ; if ( deals == null ) { Console . WriteLine ( "No deals found for specified proposal." ); } else { foreach ( Deal deal in deals ) { Utilities . PrintDeal ( deal ); } } } while ( pageToken != null ); } } }
Java
/* * 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.deals ; import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace ; import com.google.api.services.authorizedbuyersmarketplace.v1.model.Deal ; import com.google.api.services.authorizedbuyersmarketplace.v1.model.ListDealsResponse ; 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 deals for the given buyer's proposal. */ public class ListDeals { public static void execute ( AuthorizedBuyersMarketplace marketplaceClient , Namespace parsedArgs ) { Long accountId = parsedArgs . getLong ( "account_id" ); String proposalId = parsedArgs . getString ( "proposal_id" ); Integer pageSize = parsedArgs . getInt ( "page_size" ); String parent = String . format ( "buyers/%d/proposals/%s" , accountId , proposalId ); String pageToken = null ; System . out . printf ( "Found deals for proposal with name \"%s\":%n" , parent ); do { List<Deal> deals = null ; try { ListDealsResponse response = marketplaceClient . buyers () . proposals () . deals () . list ( parent ) . setPageSize ( pageSize ) . setPageToken ( pageToken ) . execute (); deals = response . getDeals (); pageToken = response . getNextPageToken (); } catch ( IOException ex ) { System . out . printf ( "Marketplace API returned error response:%n%s" , ex ); System . exit ( 1 ); } if ( deals == null ) { System . out . println ( "No proposals found." ); } else { for ( Deal deal : deals ) { Utils . printDeal ( deal ); } } } while ( pageToken != null ); } public static void main ( String [] args ) { ArgumentParser parser = ArgumentParsers . newFor ( "ListDeals" ) . build () . defaultHelp ( true ) . description (( "Lists deals for the given buyer's proposal." )); parser . addArgument ( "-a" , "--account_id" ) . help ( "The resource ID of the buyers resource under which the deals are being retrieved. This" + " will be used to construct the parent used as a path parameter for the" + " deals.list request." ) . required ( true ) . type ( Long . class ); parser . addArgument ( "--proposal_id" ) . help ( "The resource ID of the buyers.proposals resource under which the deals are being" + " retrieved. This will be used to construct the parent used as a path parameter" + " for the deals.list request." ) . required ( true ); 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 ); } }
Python
#!/usr/bin/python # # Copyright 2021 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example lists deals for the specified buyer's proposal.""" import argparse import os import pprint import sys sys . path . insert ( 0 , os . path . abspath ( '../../../..' )) from googleapiclient.errors import HttpError import util _PROPOSAL_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 ): proposal_name = _PROPOSAL_NAME_TEMPLATE % ( args . account_id , args . proposal_id ) page_size = args . page_size page_token = None more_pages = True print ( f 'Listing deals for proposal " { proposal_name } ":' ) while more_pages : try : # Construct and execute the request. response = marketplace . buyers () . proposals () . deals () . list ( parent = proposal_name , 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 . 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 deals for the given buyer \' s proposal.' ) # Required fields. parser . add_argument ( '-a' , '--account_id' , default = DEFAULT_BUYER_RESOURCE_ID , help = ( 'The resource ID of the buyers resource under which the deals ' 'were created. This will be used to construct the parent used as ' 'a path parameter for the deals.list request.' )) parser . add_argument ( '-p' , '--proposal_id' , default = DEFAULT_PROPOSAL_RESOURCE_ID , help = ( 'The resource ID of the buyers.proposals resource under which ' 'the deals were created. This will be used to construct the name ' 'used as a path parameter for the deals.list request.' )) # Optional fields. parser . add_argument ( '--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 ())