A rules-based algorithm is defined by a AlgorithmRules
JSON
object. Upload the rules to Display & Video 360 through a JSON file.
If using a script-based algorithm, go to the Upload script page.
Build a rules object
Rules-based custom bidding algorithms employ rules to evaluate the worth of a response signal.
An AlgorithmRules
object consists of one or more rulesets
. Each ruleset
evaluates a different type
of response signal, such as an impression. Each ruleset
has a
list of rules
. Each rule evaluates a signal against set conditions
and returns a value. A signal is evaluated by all rules
in a set.
The values returned by each rule are then combined. This results in an
evaluation value for the signal.
Save your AlgorithmRules
object locally as a JSON file.
Generate a rules reference object
A reference object
is used to associate an uploaded file with a rules
resource. Generate a reference object under your algorithm
using an uploadRules
request.
Here's how to generate a rules reference object:
Java
// Provide the ID of the advertiser that owns the algorithm. long advertiserId = advertiser - id ; // Provide the ID of the algorithm. long customBiddingAlgorithmId = algorithm - id ; // Generate an AlgorithmRules reference object under the algorithm. CustomBiddingAlgorithmRulesRef response = service . customBiddingAlgorithms () . uploadRules ( customBiddingAlgorithmId ) . setAdvertiserId ( advertiserId ) . execute (); // Display the generated resource path. System . out . printf ( "The generated AlgorithmRules reference object provided the following resource path: %s." , response . getResourceName ());
Python
# Provide the ID of the advertiser that owns the algorithm. advertiser_id = advertiser - id # Provide the ID of the algorithm. algorithm_id = algorithm - id # Generate an AlgorithmRules reference object under the algorithm. custom_bidding_algorithm_rules_ref = ( service . customBiddingAlgorithms () . uploadRules ( customBiddingAlgorithmId = algorithm_id , advertiserId = advertiser_id ) . execute () ) # Print the resource path provided in the generated rules reference object. print ( "The generated rules reference object provided the following resource" f ' path: { custom_bidding_algorithm_rules_ref [ "resourceName" ] } .' )
PHP
// Provide the ID of the advertiser that owns the algorithm. $advertiserId = advertiser-id ; // Provide the ID of the algorithm. $algorithmId = algorithm-id ; $uploadRulesOptParams = array( 'advertiserId' => $advertiserId ); try { // Generate an AlgorithmRules reference object under the algorithm. $rulesRefResponse = $this->service->customBiddingAlgorithms->uploadRules( $customBiddingAlgorithmId, $uploadRulesOptParams ); } catch (\Exception $e) { $this->renderError($e); return; } // Print the retrieved resource path. printf( '<p>The generated AlgorithmRules reference object provided the ' . 'following resource path: %s</p>', $rulesRefResponse->getResourceName() );
Upload an AlgorithmRules
file
Use a media upload
request to upload your rules file to the
resource path in the reference object. Use a simple
upload
with a query parameter uploadType=media
.
Here's how to upload a rules file:
Java
// Provide the local path to the AlgorithmRules file to upload. String rulesPath = rules - path ; // Provide the resource path to upload the AlgorithmRules file to. String resourcePath = resource - path ; // Create media object. GoogleBytestreamMedia media = new GoogleBytestreamMedia (); media . setResourceName ( resourcePath ); // Create input stream for the Algorithm file. InputStreamContent rulesFileStream = new InputStreamContent ( null , new FileInputStream ( rulesPath )); // Create media.upload request. Media . Upload uploadRequest = service . media (). upload ( resourcePath , media , rulesFileStream ); // Retrieve uploader from the request and set it to us a simple upload // request. MediaHttpUploader uploader = uploadRequest . getMediaHttpUploader (); uploader . setDirectUploadEnabled ( true ); // Execute the upload using an Upload URL with the destination resource // name. uploader . upload ( new GenericUrl ( "https://displayvideo.googleapis.com/upload/media/" + resourcePath ));
Python
# Import HTTP objects used for file upload. from apiclient.http import HttpRequest from apiclient.http import MediaFileUpload # Provide the local path to the AlgorithmRules file to upload. rules_path = rules - path # Provide the resource path to upload the AlgorithmRules file to. resource_path = resource - path # Create a media upload object. media = MediaFileUpload ( rules_path ) # Create upload request. upload_request = service . media () . upload ( resourceName = resource_path , media_body = media ) # Override response handler to expect null response. upload_request . postproc = HttpRequest . null_postproc # Upload AlgorithmRules to given resource path. upload_request . execute ()
PHP
// Provide the local path to the AlgorithmRules file to upload. $rulesPath = rules-path ; // Provide the resource path to upload the AlgorithmRules file to. $resourcePath = resource-path ; // Create the media body. $mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia(); $mediaBody->setResourceName($resourceName); // Build params array for the upload request. $mediaUploadOptParams = array( 'data' => file_get_contents($rulesPath), 'uploadType' => 'media', 'resourceName' => $resourceName ); try { // Call the API, uploading the rules file to Display & Video 360. $this->service->media->upload( $resourceName, $mediaBody, $mediaUploadOptParams ); } catch (\Exception $e) { $this->renderError($e); }
Create a rules object
Use a create
request to create a rules
object
under your algorithm
.
Here's how to create a rules object:
Java
// Provide the ID of the advertiser that owns the parent algorithm. long advertiserId = advertiser - id ; // Provide the ID of the parent algorithm. long algorithmId = algorithm - id ; // Provide the resource path the AlgorithmRules file was uploaded to. String resourcePath = resource - path ; // Create the custom bidding algorithm rules structure. CustomBiddingAlgorithmRules customBiddingAlgorithmRules = new CustomBiddingAlgorithmRules () . setRules ( new CustomBiddingAlgorithmRulesRef (). setResourceName ( resourcePath )); // Create the custom bidding algorithm rules. CustomBiddingAlgorithmRules response = service . customBiddingAlgorithms () . rules () . create ( algorithmId , customBiddingAlgorithmRules ) . setAdvertiserId ( advertiserId ) . execute (); // Print ID of new custom bidding algorithm rules. System . out . printf ( "Rules were created with ID %s." , response . getCustomBiddingAlgorithmRulesId ());
Python
# Provide the ID of the advertiser that owns the parent algorithm. advertiser_id = advertiser - id # Provide the ID of the parent algorithm. algorithm_id = algorithm - id # Provide the resource path the AlgorithmRules file was uploaded to. resource_path = resource - path # Build algorithm rules object. rules_obj = { "rules" : { "resourceName" : resource_path }} # Build and execute request. rules_response = ( service . customBiddingAlgorithms () . rules () . create ( customBiddingAlgorithmId = algorithm_id , advertiserId = advertiser_id , body = rules_obj , ) . execute () ) # Print ID of new custom bidding algorithm rules. print ( f 'Rules were created with ID { rules_response [ "customBiddingAlgorithmRulesId" ] } .' )
PHP
// Provide the ID of the advertiser that owns the parent algorithm. $advertiserId = advertiser-id ; // Provide the ID of the parent algorithm. $algorithmId = algorithm-id ; // Provide the resource path the AlgorithmRules file was uploaded to. $resourcePath = resource-path ; // Build algorithm rules object. $customBiddingRules = new Google_Service_DisplayVideo_CustomBiddingAlgorithmRules(); $rulesRef = new Google_Service_DisplayVideo_CustomBiddingAlgorithmRulesRef(); $rulesRef->setResourceName($resourcePath); $customBiddingRules->setRules($rulesRef); $createRulesOptParams = array( 'advertiserId' => $advertiserId ); // Call the API, creating the custom bidding algorithm rules using the // rules file and under the custom bidding algorithm given. try { $result = $this->service->customBiddingAlgorithms_rules->create( $customBiddingAlgorithmId, $algorithmId, $createRulesOptParams ); } catch (\Exception $e) { $this->renderError($e); return; } // Print ID of new custom bidding algorithm rules. printf('<p>Rules was created with ID %s.</p>', $result['customBiddingAlgorithmRulesId']);

