Let the platform do the work

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] =>
                                                                        )

                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

)

Topics