This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft Edge More info about Internet Explorer and Microsoft Edge

In this article

The following scripts will help you interface with the member-data-sharing service. These scripts will help you:

This sample code serves as a guideline for partners and is not actively serviced by Xandr.

Scripts for viewing records

List existing sharing records

This script will print the list of buyer_member_ids that you are currently sharing data with and their respective record_ids .

$PROD_URL = "https://api.adnxs.com"; // for impression bus API logins //$PROD_URL = "https://api.appnexus.com"; // for API logins $api_url = $PROD_URL; $api_username = ""; // your API login $api_password = ""; // your API password $member_id = -9999; // your member ID // login and authentication $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_URL, $api_url."/auth?username=".$api_username."&password=".$api_password); $result = curl_exec($ch); // Call function to grab sharing ids get_sharing_ids($ch, $api_url, $member_id); //================================================================================================================ // Function: get_sharing_ids = // Inputs: $ch - curl handler, $api_url - API URL endpoint, $member_id - your member id = // Purpose: Purpose of this function is to parse the response from a GET to the = // member data sharing service and print the buyer members and their respective sharing record ids. = //================================================================================================================ function get_sharing_ids($ch, $api_url, $member_id) { echo "\nHitting API Service: ".$api_url."/member-data-sharing?data_member_id=".$member_id."\n\n"; curl_setopt($ch, CURLOPT_URL, $api_url."/member-data-sharing?data_member_id=".$member_id); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $response = curl_exec($ch); $response_obj = json_decode($response); for($i = 0; $i < count($response_obj->response->member_data_sharings); $i++) { print "Member ID: ".$response_obj->response->member_data_sharings[$i]->buyer_member_id."\t\tSharing Record ID: ".$response_obj->response->member_data_sharings[$i]->id."\n";

View segments shared in existing sharing record

The following script takes in a record ID and prints the segments shared in that sharing record.

if ($argc < 2) { die("Please provide a record id!\n"); } else { $record_id = $argv[1]; $PROD_URL = "https://api.adnxs.com"; // for impression bus API logins //$PROD_URL = "https://api.appnexus.com // for API logins $api_url = $PROD_URL; $api_username = ""; // your API login $api_password = ""; // your API password $member_id = -9999; // your member ID // login and authentication $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_URL, $api_url."/auth?username=".$api_username."&password=".$api_password); $result = curl_exec($ch); // retrieve sharing record curl_setopt($ch, CURLOPT_URL, $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $response = curl_exec($ch); $response_obj = json_decode($response); // Print shared segments if ($response_obj->response->member_data_sharing->segment_exposure == 'all') { print "Sharing all segments in record ".$record_id."\n\n"; else { for($i = 0; $i < count($response_obj->response->member_data_sharing->segments); $i++) { print "segment_id: ".$response_obj->response->member_data_sharing->segments[$i]->id."\tName: ".$response_obj->response->member_data_sharing->segments[$i]->name."\n";

Scripts for adding to existing records

Add single segment to an existing sharing record

The following script takes in a specific record ID and segment ID and adds the segment ID to that record.

if ($argc < 3) { die("Please provide a record id and a segment id!\n"); } else { $record_id = $argv[1]; $segment->id = $argv[2]; $PROD_URL = "https://api.adnxs.com"; // for impression bus API logins //$PROD_URL = "https://api.appnexus.com // for API logins $api_url = $PROD_URL; $api_username = ""; // your API login $api_password = ""; // your API password $member_id = -9999; // your member ID // login and authentication $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_URL, $api_url."/auth?username=".$api_username."&password=".$api_password); $result = curl_exec($ch); // Retrieve existing sharing record curl_setopt($ch, CURLOPT_URL, $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $response = curl_exec($ch); $response_obj = json_decode($response); // Append the new segment_id to existing segment_id array $segment_array = array(); $segment_array = $response_obj->response->member_data_sharing->segments; array_push($segment_array, clone($segment)); // PUT updated segment array through the API $put_obj->member_data_sharing->segments = $segment_array; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_obj)); $response = curl_exec($ch); print "\n".$response."\n"; print $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id."\n";

Add list of segments to existing sharing record

This script adds a list of segments to an existing sharing record. The script takes in as input the record_id as well as the file_name where the list of segment_ids is saved. The script expects that the file be formatted as list of comma separated values.

if ($argc < 3) { die("Please provide a record id and a segment id!\n"); } else { $record_id = $argv[1]; $segment_file = $argv[2]; $PROD_URL = "https://api.adnxs.com"; // for impression bus API logins //$PROD_URL = "https://api.appnexus.com // for API logins $api_url = $PROD_URL; $api_username = ""; // your API login $api_password = ""; // your API password $member_id = -9999; // your member ID // login and authentication $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_URL, $api_url."/auth?username=".$api_username."&password=".$api_password); $result = curl_exec($ch); // Retrieve existing sharing record curl_setopt($ch, CURLOPT_URL, $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $response = curl_exec($ch); $response_obj = json_decode($response); // Open segment file and create array of segments to append $fh = fopen($segment_file, 'r'); $segment_data = fread($fh, filesize($segment_file)); fclose($fh); $seg_array = explode(",", $segment_data); // Append to existing segment array $segment_array = array(); $segment_array = $response_obj->response->member_data_sharing->segments; for($i = 0; $i < count($seg_array); $i++) { $segment->id = $seg_array[$i]; array_push($segment_array, clone($segment)); // PUT updated segment array through the API $put_obj->member_data_sharing->segments = $segment_array; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_obj)); $response = curl_exec($ch); print "\n".$response."\n"; print $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id."\n";

Scripts for deleting records

Delete a single segment from a sharing record

This script takes in as inputs the record_id and the segment_id and deletes the segment_id from that record_id . You can use this script in conjunction with a bash script to delete that specific segment from multiple records at once.

if ($argc < 3) { die("Please provide a record id and a segment id!\n"); } else { $record_id = $argv[1]; $segment->id = $argv[2]; $PROD_URL = "https://api.adnxs.com"; // for impression bus API logins //$PROD_URL = "https://api.appnexus.com // for API logins $api_url = $PROD_URL; $api_username = ""; // your API login $api_password = ""; // your API password $member_id = -9999; // your member ID // login and authentication $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_URL, $api_url."/auth?username=".$api_username."&password=".$api_password); $result = curl_exec($ch); // Retrieve existing sharing record curl_setopt($ch, CURLOPT_URL, $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $response = curl_exec($ch); $response_obj = json_decode($response); // Extract segments array $segment_array = array(); $segment_array = $response_obj->response->member_data_sharing->segments; // Find the index of the delete segment $delete_index = binary_search($segment_array, 0, count($segment_array), $segment, "compare"); // Create new array without the delete segment unset($segment_array[$delete_index]); $segment_array = array_values($segment_array); // PUT updated segment array through the API $put_obj->member_data_sharing->segments = $segment_array; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_obj)); $response = curl_exec($ch); print "\n".$response."\n"; print $api_url."/member-data-sharing?data_member_id=".$member_id."&id=".$record_id."\n"; // Implement binary_search for finding segment to delete function binary_search($segment_array, $first, $last, $search_segment, $compare) { $lo = $first; $hi = $last - 1; while($lo <= $hi) { $mid = (int)(($hi - $lo)/2) + $lo; $cmp = call_user_func($compare, $segment_array[$mid]->id, $search_segment->id); if ($cmp < 0) { $lo = $mid + 1; elseif ($cmp > 0) { $hi = $mid - 1; else { return $mid; return -($lo + 1); function compare($a, $b) { if ($a == $b) { return 0; return ($a < $b) ? -1 : 1;