Retrieving Records by Email Domain
Overview
A PHP example demonstrating how to retrieve email addresses based on an email domain with the search_by_module and get_entries methods using cURL and the v4_1 REST API.
When using the search_by_module method, the email address information is not returned in the result. Due to this behavior, we will gather the record ids and pass them back to the get_entries method to fetch our related email addresses.
Example
<?php
$url = "http://{site_url}/service/v4_1/rest.php";
$username = "admin";
$password = "password";
//function to make cURL request
function call($method, $parameters, $url)
{
ob_start();
$curl_request = curl_init();
curl_setopt($curl_request, CURLOPT_URL, $url);
curl_setopt($curl_request, CURLOPT_POST, 1);
curl_setopt($curl_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl_request, CURLOPT_HEADER, 1);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_request, CURLOPT_FOLLOWLOCATION, 0);
$jsonEncodedData = json_encode($parameters);
$post = array(
"method" => $method,
"input_type" => "JSON",
"response_type" => "JSON",
"rest_data" => $jsonEncodedData
);
curl_setopt($curl_request, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($curl_request);
curl_close($curl_request);
$result = explode("\r\n\r\n", $result, 2);
$response = json_decode($result[1]);
ob_end_flush();
return $response;
}
//login --------------------------------------------
$login_parameters = array(
"user_auth" => array(
"user_name" => $username,
"password" => md5($password),
"version" => "1"
),
"application_name" => "RestTest",
"name_value_list" => array(),
);
$login_result = call("login", $login_parameters, $url);
/*
echo "<pre>";
print_r($login_result);
echo "</pre>";
*/
//get session id
$session_id = $login_result->id;
//search_by_module -------------------------------------------------
$search_by_module_parameters = array(
"session" => $session_id,
'search_string' => '%@example.com',
'modules' => array(
'Accounts',
'Contacts',
'Leads',
),
'offset' => 0,
'max_results' => 1,
'assigned_user_id' => '',
'select_fields' => array('id'),
'unified_search_only' => false,
'favorites' => false
);
$search_by_module_results = call('search_by_module', $search_by_module_parameters, $url);
/*
echo '<pre>';
print_r($search_by_module_results);
echo '</pre>';
*/
$record_ids = array();
foreach ($search_by_module_results->entry_list as $results)
{
$module = $results->name;
foreach ($results->records as $records)
{
foreach($records as $record)
{
if ($record->name = 'id')
{
$record_ids[$module][] = $record->value;
//skip any additional fields
break;
}
}
}
}
$get_entries_results = array();
$modules = array_keys($record_ids);
foreach($modules as $module)
{
$get_entries_parameters = array(
//session id
'session' => $session_id,
//The name of the module from which to retrieve records
'module_name' => $module,
//An array of record IDs
'ids' => $record_ids[$module],
//The list of fields to be returned in the results
'select_fields' => array(
'name',
),
//A list of link names and the fields to be returned for each link name
'link_name_to_fields_array' => array(
array(
'name' => 'email_addresses',
'value' => array(
'email_address',
'opt_out',
'primary_address'
),
),
),
//Flag the record as a recently viewed item
'track_view' => false,
);
$get_entries_results[$module] = call('get_entries', $get_entries_parameters, $url);
}
echo '<pre>';
print_r($get_entries_results);
echo '</pre>';
Result
Array
(
[Accounts] => stdClass Object
(
[entry_list] => Array
(
[0] => stdClass Object
(
[id] => 1bb7ef28-64b9-cbd5-e7d6-5282a3b96953
[module_name] => Accounts
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => Underwater Mining Inc.
)
)
)
[1] => stdClass Object
(
[id] => efbc0c4e-cc72-f843-b6ed-5282a38dad7f
[module_name] => Accounts
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => 360 Vacations
)
)
)
)
[relationship_list] => Array
(
[0] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => beans.the.qa@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
[1] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => section.sales@example.edu
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
[1] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => section51@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
[1] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => kid.sugar.qa@example.co.uk
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
)
)
[Contacts] => stdClass Object
(
[entry_list] => Array
(
[0] => stdClass Object
(
[id] => 24330979-0e39-f9ec-2622-5282a372f39b
[module_name] => Contacts
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => Errol Goldberg
)
)
)
[1] => stdClass Object
(
[id] => 2542dad2-85f3-5529-3a30-5282a3104e31
[module_name] => Contacts
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => Luis Deegan
)
)
)
)
[relationship_list] => Array
(
[0] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => hr.phone@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
[1] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => the.info.phone@example.cn
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 1
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
[1] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => im.the.sales@example.name
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
[1] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => the36@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 1
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
)
)
[Leads] => stdClass Object
(
[entry_list] => Array
(
[0] => stdClass Object
(
[id] => 83abeeff-5e71-0f06-2e5f-5282a3f04f41
[module_name] => Leads
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => Caryn Wert
)
)
)
[1] => stdClass Object
(
[id] => 2a3b304b-5167-8432-d4e7-5282a300eabb
[module_name] => Leads
[name_value_list] => stdClass Object
(
[name] => stdClass Object
(
[name] => name
[value] => Marco Castonguay
)
)
)
)
[relationship_list] => Array
(
[0] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => hr60@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
[1] => stdClass Object
(
[link_list] => Array
(
[0] => stdClass Object
(
[name] => email_addresses
[records] => Array
(
[0] => stdClass Object
(
[link_value] => stdClass Object
(
[email_address] => stdClass Object
(
[name] => email_address
[value] => im.the@example.com
)
[opt_out] => stdClass Object
(
[name] => opt_out
[value] => 0
)
[primary_address] => stdClass Object
(
[name] => primary_address
[value] =>
)
)
)
)
)
)
)
)
)
)