Files
erv-clientright/API_REFERENCE.md
2026-03-13 10:42:01 +03:00

12 KiB
Raw Permalink Blame History

Справочник API

CRM WebService API

Базовый URL

https://crm.clientright.ru/webservice.php

Авторизация

1. Получение токена (getchallenge)

GET ?operation=getchallenge&username=api

Ответ:

{
  "success": true,
  "result": {
    "token": ременный_токен"
  }
}

2. Получение sessionId (login)

POST
operation=login
username=api
accessKey=md5(challengeToken + userAccessKey)

Где:

  • userAccessKey = '4r9ANex8PT2IuRV'
  • accessKey = md5(challengeToken + userAccessKey)

Ответ:

{
  "success": true,
  "result": {
    "sessionName": "session_id_для_дальнейшихапросов"
  }
}

Операции с клиентами

CreateContact - Создание/обновление клиента

Параметры:

operation = CreateContact
sessionName = полученный_sessionId
firstname = Имя (обязательно)
lastname = Фамилия (обязательно)
secondname = Отчество
mobile = Телефон (обязательно)
email = Email
tgid = Telegram ID (число)
birthday = Дата рождения в формате ГГГГ-ММ-ДД (обязательно)
birthplace = Место рождения
mailingstreet = Адрес проживания
inn = ИНН (обязательно)
requisites = Реквизиты для перечисления средств
code = СМС код

Пример запроса:

$params = array(
    'operation' => 'CreateContact',
    'sessionName' => $sessionId,
    'firstname' => 'Василий',
    'lastname' => 'Пупкинидзе',
    'secondname' => 'Алибабаевич',
    'mobile' => '+7(949) 123-45-11',
    'email' => 'rrrr@mail.ru',
    'birthday' => '1986-11-15',
    'mailingstreet' => 'г. Калининград',
    'inn' => '321654987654',
    'code' => '4568'
);

Ответ:

{
  "success": true,
  "result": "83859"
}

Где result - это ID созданного или обновленного клиента.

Операции с контрагентами

CreateAccount - Создание/обновление контрагента

Параметры:

operation = CreateAccount
sessionName = полученный_sessionId
accountname = Наименование юрлица (обязательно)
address = Юридический адрес
email = Email
website = Сайт
phone = Телефон
inn = ИНН (обязательно)
ogrn = ОГРН (обязательно)

Пример запроса:

$params = array(
    'operation' => 'CreateAccount',
    'sessionName' => $sessionId,
    'accountname' => 'ООО "Три бобра"',
    'address' => 'г. Москва, Кремль',
    'email' => 'qqqqq@ya.ru',
    'website' => 'https://pikabu.ru',
    'phone' => '+7 928 664-66-11',
    'inn' => '1234567899',
    'ogrn' => '32165498711'
);

Ответ:

{
  "success": true,
  "result": "83837"
}

Где result - это ID созданного или обновленного контрагента.

Операции с проектами

CreateProject - Создание проекта

Параметры:

operation = CreateProject
sessionName = полученный_sessionId
contactid = ID клиента (обязательно)
offenderid = ID контрагента-обидчика (обязательно)
agentid = ID контрагента-посредника (опционально)
sms = Код из СМС
ip = IP пользователя
source = Откуда пришли
region = Регион пользователя
formid = ID формы
category = Категория обращения
direction = Направление обращения
agrprice = Цена договора (число)
subject = Предмет договора
agrdate = Дата заключения договора (ГГГГ-ММ-ДД)
startdate = Срок начальный (ГГГГ-ММ-ДД)
finishdate = Срок конечный (ГГГГ-ММ-ДД)
loss = Убыток (число)
servicecost = Стоимость услуги (число)
progress = Прогресс в % (число)
country = Страна путешествия
hotel = Средство размещения
transport = Транспортные услуги ("да" или "нет")
insurance = Страховка ("да" или "нет")
other = Прочее
description = Описание
independently = Самостоятельно соблюден претензионный порядок ("да" или "нет")
claimdate = Дата направления претензии (ГГГГ-ММ-ДД)
returned = Вернули в претензионном порядке (число)

Пример запроса:

$params = array(
    'operation' => 'CreateProject',
    'sessionName' => $sessionId,
    'contactid' => 83834,
    'offenderid' => 84675,
    'sms' => '1234',
    'ip' => '192.168.0.1',
    'source' => 'с улицы',
    'region' => 'Владивосток',
    'formid' => 1376,
    'category' => 'Абидили!!',
    'direction' => 'Путину',
    'description' => 'какое-то описание'
);

Ответ:

{
  "success": true,
  "result": "83839"
}

Где result - это ID созданного проекта.

Получение списка файлов

GetFilesList - Получение списка файлов клиента

Параметры:

operation = GetFilesList
sessionName = полученный_sessionId
inn = ИНН клиента (обязательно)
sms = СМС-код (обязательно)

Пример запроса:

$params = array(
    'operation' => 'GetFilesList',
    'sessionName' => $sessionId,
    'inn' => '643922466250',
    'sms' => '795372'
);

Ответ при успехе:

{
  "success": true,
  "result": {
    "status": "ok",
    "files": [
      {
        "title": "договор",
        "path": "storage/2023/December/week4/9e84c3f86209302799f46d0136e93ab6.pdf"
      },
      {
        "title": "подтверждение оплаты",
        "path": "storage/2023/December/week4/cf65c58a01e7db0b19c8e1fe119c0e32.pdf"
      }
    ]
  }
}

Ответ при ошибке:

{
  "success": true,
  "result": {
    "status": "failed",
    "message": "Клиент с указанным СМС-кодом и ИНН не найден"
  }
}

WebForms Capture API

Базовый URL

https://crm.clientright.ru/modules/Webforms/capture.php

Параметры формы

Обязательные системные параметры:

__vtrftk = 'sid:ec649134ad232e44c3ad71bbd321cee986f05545,1688385374'
publicid = '3ddc71c2d79ef101c09b0d4e9c6bd08b'
urlencodeenable = '1'
name = 'websiteticket'

Кастомные поля: Все поля с атрибутом data-crmname отправляются как отдельные параметры.

File Upload API

Базовый URL

https://form.clientright.ru/fileupload_v2.php

Параметры

POST multipart/form-data
lastname = Фамилия клиента
sub_dir = ID сессии
files_names[] = Массив имен полей для файлов
docs_names[] = Массив названий документов
field_name-0 = Файл 1
field_name-1 = Файл 2
...

Ответ:

{
  "success": "true",
  "empty_file": "путь_к_пустышке",
  "real_file": "путь_к_реальномуайлу",
  "message": "Файл успешно загружен"
}

DaData API

Базовый URL

https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party

Авторизация

Authorization: Token f5d6928d7490cd44124ccae11a08c7fa5625d48c
Content-Type: application/json

Запрос

POST
{
  "query": "название организации или ИНН"
}

Ответ

{
  "suggestions": [
    {
      "value": "ООО Рога и Копыта",
      "data": {
        "inn": "1234567890",
        "address": {
          "value": "г. Москва, ул. Ленина, д. 1"
        }
      }
    }
  ]
}

IP Geolocation API

Базовый URL

http://ip-api.com/json/{IP}?lang=ru

Пример запроса

GET http://ip-api.com/json/192.168.1.1?lang=ru

Ответ

{
  "status": "success",
  "country": "Россия",
  "regionName": "Москва",
  "city": "Москва",
  "lat": 55.7558,
  "lon": 37.6173
}

Обработка ошибок

Стандартный формат ошибки

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Описание ошибки"
  }
}

HTTP коды статуса

  • 200 - Успешный запрос
  • 400 - Неверные параметры
  • 401 - Ошибка авторизации
  • 404 - Ресурс не найден
  • 500 - Внутренняя ошибка сервера

Важные замечания

  1. SessionId имеет ограниченное время жизни (15 минут)
  2. Поле success в ответе означает только техническую успешность запроса
  3. Для проверки бизнес-логики используйте поле status внутри result
  4. Все даты должны быть в формате ГГГГ-ММ-ДД
  5. При работе с файлами используйте multipart/form-data

Примеры использования

Полный цикл создания обращения

// 1. Получение токена
$ch = curl_init();
$url = "https://crm.clientright.ru/webservice.php?operation=getchallenge&username=api";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
$jsonResponse = json_decode($response, true);
$challengeToken = $jsonResponse['result']['token'];

// 2. Получение sessionId
$userAccessKey = '4r9ANex8PT2IuRV';
$generatedKey = md5($challengeToken . $userAccessKey);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://crm.clientright.ru/webservice.php',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        'operation' => 'login',
        'username' => 'api',
        'accessKey' => $generatedKey
    )
));
$response = curl_exec($ch);
$jsonResponse = json_decode($response, true);
$sessionId = $jsonResponse['result']['sessionName'];

// 3. Создание клиента
$clientParams = array(
    'operation' => 'CreateContact',
    'sessionName' => $sessionId,
    'firstname' => 'Иван',
    'lastname' => 'Иванов',
    'mobile' => '+79991234567',
    'email' => 'ivan@example.com',
    'birthday' => '1990-01-01',
    'inn' => '123456789012',
    'code' => '123456'
);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_URL => 'https://crm.clientright.ru/webservice.php',
    CURLOPT_POSTFIELDS => $clientParams
));
$response = curl_exec($ch);
$jsonResponse = json_decode($response, true);
$contactId = $jsonResponse['result'];

// 4. Создание контрагента
$accountParams = array(
    'operation' => 'CreateAccount',
    'sessionName' => $sessionId,
    'accountname' => 'ООО "Пример"',
    'inn' => '9876543210',
    'ogrn' => '1234567890123'
);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_URL => 'https://crm.clientright.ru/webservice.php',
    CURLOPT_POSTFIELDS => $accountParams
));
$response = curl_exec($ch);
$jsonResponse = json_decode($response, true);
$accountId = $jsonResponse['result'];

// 5. Создание проекта
$projectParams = array(
    'operation' => 'CreateProject',
    'sessionName' => $sessionId,
    'contactid' => $contactId,
    'offenderid' => $accountId,
    'description' => 'Описание обращения'
);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_URL => 'https://crm.clientright.ru/webservice.php',
    CURLOPT_POSTFIELDS => $projectParams
));
$response = curl_exec($ch);
$jsonResponse = json_decode($response, true);
$projectId = $jsonResponse['result'];

curl_close($ch);