Получить из Битрикс24 коробки контактные данные сущностей компании и контакты

Получить данные можно через метод CCrmFieldMulti::GetList

Для получения добавил 2 метода в REST API: crm.company.contact и crm.contact.contact

В php_interface/init.php добавл следующий код:

<?php

// ...

AddEventHandler('rest', 'OnRestServiceBuildDescription', ['\CustomRest', 'OnRestServiceBuildDescription']);

class CustomRest
{
    public static function OnRestServiceBuildDescription()
    {
        return [
            'crm' => [
                'crm.company.contact' => [
                    'callback' => [__CLASS__, 'crmCompanyContact'],
                    'options' => [],
                ],
                'crm.contact.contact' => [
                    'callback' => [__CLASS__, 'crmContactContact'],
                    'options' => [],
                ],
            ],
        ];
    }

    public static function crmCompanyContact($query, $nav, \CRestServer $server)
    {
        if ($query['error']) {
            throw new \Bitrix\Rest\RestException(
                'Message',
                'ERROR_CODE',
                \CRestServer::STATUS_PAYMENT_REQUIRED
            );
        }

        return self::__crmContact($query, 'COMPANY');
    }

    public static function crmContactContact($query, $nav, \CRestServer $server)
    {
        if ($query['error']) {
            throw new \Bitrix\Rest\RestException(
                'Message',
                'ERROR_CODE',
                \CRestServer::STATUS_PAYMENT_REQUIRED
            );
        }

        return self::__crmContact($query, 'CONTACT');
    }

    protected static function __crmContact($query, $type)
    {
        if (!isset($query['id'])) {
            return [
                'error' => 'ERROR_METHOD_NOT_FOUND',
                'error_description' => 'Method not found! ' . __LINE__,
            ];
        }

        $result = [];
        $total = 0;

        Bitrix\Main\Loader::includeModule('crm');

        $dbResult = CCrmFieldMulti::GetList([
            'ID' => 'asc',
        ], [
            'ENTITY_ID' => $type,
            'ELEMENT_ID' => $query['id'],
        ]);

        while ($fields = $dbResult->Fetch()) {
            $result[] = $fields;
            $total++;
        }

        $result['total'] = $total;

        return $result;
    }

}

// ...

Для получение по ресту работает разрешение от CRM

Пример запроса контактных данных контакта:
https://example.com/rest/1/<КЛЮЧ_REST_API>/crm.contact.contact.json?id=<ИД_КОНТАКТА>

Пример запроса контактных данных компании:
https://example.com/rest/1/<КЛЮЧ_REST_API>/crm.company.contact.json?id=<ИД_КОНТАКТА>

Пример результата:

{
    "result": [
        {
            "ID": "12345",
            "ENTITY_ID": "COMPANY",
            "ELEMENT_ID": "1234",
            "TYPE_ID": "PHONE",
            "VALUE_TYPE": "WORK",
            "COMPLEX_ID": "PHONE_WORK",
            "VALUE": "+7(912)345-67-89"
        },
        {
            "ID": "12346",
            "ENTITY_ID": "COMPANY",
            "ELEMENT_ID": "1234",
            "TYPE_ID": "EMAIL",
            "VALUE_TYPE": "WORK",
            "COMPLEX_ID": "EMAIL_WORK",
            "VALUE": "mail@example.com"
        }
    ],
    "total": 2,
    "time": {
        "start": 1667217111.755219,
        "finish": 1667217111.808055,
        "duration": 0.052835941314697266,
        "processing": 0.003957033157348633,
        "date_start": "2022-10-31T14:51:51+03:00",
        "date_finish": "2022-10-31T14:51:51+03:00"
    }
}