Описание REST API
Авторизация, методы, примеры работы в API АльфаCRM
Данное описание предназначено для интеграции Альфа CRM с другими информационными сервисами. Мы дополняем этот документ описанием новых методов, моделей и параметров.
Всё взаимодействие через API должно осуществляться по протоколу REST. В качестве формата данных используется JSON. Прочие форматы и протоколы не поддерживаются.
Методы API реализуются в Контроллере (MVC) виде CRUD парадигмы вокруг каждой Модели (MVC). Модель — это отдельная сущность в CRM системе, например Ученик, или Урок, или Филиал под которую реализуется отдельный Контроллер.
Примеры запросов можно посмотреть в приложенных коллекциях Postman
Рекомендации по работе с нашим API:
- Создание отдельного пользователя в системе для работы именно с API (особенно актуально, если передаёте информацию с доступами сторонним разработчикам, так как такой доступ всегда можно отключить).
- Кеширование токена авторизации (также можно использовать обработку ошибок, чтобы, как только придет ошибка с кодом 401, снова делать запрос на получение токена).
- Обработка запросов последовательно:
- сделайте запрос по API;
- дождитесь ответа;
- разберите полученные данные;
- определитесь, нужно ли отправлять следующий запрос.
- Сохранение результатов запросов, чтобы не выгружать одни и те же данные.
Важно! Максимальное количество обращений запросов к API - 5 запросов в секунду для любых методов.
По вопросам работы с нашим API можно написать на почту dev@alfacrm.pro. Ответ может занять до 3-5 рабочих дней.
Авторизация
Данные для авторизации можно найти в настройках профиля.
Наведите курсор на правый верхний угол в системе, появится контекстное меню, выберите раздел «Мой профиль».

Скопируйте данные для авторизации из полей «E-mail» (эл. почта) и «Ключ API (v2api)».

Прежде чем обращаться к методам CRUD необходимо авторизоваться и получить временный токен. Этим токеном должен подписываться каждый CRUD запрос заголовке X-ALFACRM-TOKEN. Время жизни токена — 3600 секунд. Для получения токена нужно обратиться методом POST к URI /v2api/auth/login, а в теле запроса передать JSON объект с ключами email и api_key.
Авторизующийся пользователь должен иметь роль с предоставленным доступом к модулю v2api. Иначе запросы к CRUD будут возвращать исключение Access Denied.
Пример из командной строки Linux (утилита curl):
$ curl -i -X 'POST' -d '{"email":"{email}","api_key":"{api_key}"}' 'https://{hostname}/v2api/auth/login'
//Пример кода на PHP
$ch = curl_init();
$data = ['email' => 'ivan@mail.ru', 'api_key' => '123456'];
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://demo.s20.online/v2api/auth/login');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
$token = $result['token'];
Варианты ответа сервера:
- ОК, код ответа 200, в теле — JSON вида
{"token":"GENERATED-TOKEN"} - исключение, код ответа 4XX, 5XX, в теле — JSON вида
{"name":"Forbidden","message":"Not Authorized","code":0,"status":403}
Значение некоторых параметров
{hostname}— клиентский идентификатор, являющийся Hostname в URL для доступа в систему. Например, для https://demo.s20.online это demo.s20.online;{branch}— ID филиала, в который происходит обращение;{email}— e-mail пользователя для авторизации в системе;{api_key}— ключ API для авторизации в системе;{token}— токен, полученный при авторизации (см. блок Авторизация);
Примеры возвращаемых значений в
CRUD
- Метод Index — возвращает JSON вида
{"total":2,"count":2,"page":0,"items":[]}, гдеtotal— количество записей всего,count— количество записей в текущей коллекцииitems,page— текущая страница результатов выдачи. Вitemsсодержится вся коллекция записей в виде объектов различных моделей. - Методы Create и Update — возвращает JSON вида
{"success":true,"errors":[],"model":{"id":1,...}}, где success — результат выполнения запроса (true / false), errors — коллекция ошибок если success == false, model — JSON объект Модели с публичными свойствами. - Метод Delete — возвращает JSON вида
{"success":true,"errors":[]}, гдеsuccess— результат выполнения запроса (true / false),errors— коллекция ошибок если success == false.
Branch — сущность филиала
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/branch/index в теле {"is_active":1,"page":0} is_active — поле для фильтрации, page — пейджинацияВажно! Если в системе отключен филиал с ID 1, то в запросе необходимо указывать ID филиала, который активен в момент отправки запроса. Например:
/v2api/2/branch/index $ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"is_active":1,"page":0}' 'https://{hostname}/v2api/branch/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/branch/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"is_active":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/branch/create в теле {"name":"Test Branch","is_active":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test Branch","is_active":1}' 'https://{hostname}/v2api/branch/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/branch/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"Test Branch","is_active":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/branch/update?id={id} в теле {"name":"Test Branch 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test Branch 2"}' 'https://{hostname}/v2api/branch/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/branch/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"Test Branch 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Branch
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | наименование |
is_active |
bool | флаг активности |
subject_ids |
int array | массив идентификаторов предметов (Subject) |
Location — сущность локации
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/location/index в теле {"id":1,"page":0} id — поле для фильтрации, page — пейджинация
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/location/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/location/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/location/create в теле {"name":"New location","is_active":1,"branch_id":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New location","is_active":1,"branch_id":1}' 'https://{hostname}/v2api/{branch}/location/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/location/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New location","is_active":1,"branch_id":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/location/update?id={id} в теле {"name":"New location 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New location 2"}' 'https://{hostname}/v2api/{branch}/location/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/location/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New location 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Location
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | филиал (Branch) |
is_active |
bool | флаг активности |
name |
string(50) | наименование |
Room— сущность аудиторий
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/room/index в теле {"is_enabled":1,"page":0} is_enabled — поле для фильтрации, page — пейджинация$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"is_enabled":1,"page":0}' 'https://{hostname}/v2api/branch/room/index'
▸ create создание новой модели
POST на /v2api/{branch}/room/create в теле {"branch_id":1,"name":"Testing room","weight":0,"color_id":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"branch_id":1,"name":"Testing room","weight":0,"color_id":1}' 'https://{hostname}/branch/v2api/room/create'
▸ update изменение свойств модели
POST на /v2api/{branch}/room/update?id={id} в теле {"name":"Test Room 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test Room 2"}' 'https://{hostname}/v2api/branch/room/update?id={id}'
▸ поля в модели Room
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | id филиала |
location_id |
int | id локации |
streaming_id |
int | id стрима |
color_id |
int | цвет аудитории в календаре |
name |
string(50) | наименование |
note |
string(50) | полное название аудитории |
is_enabled |
bool | флаг активности (1 аудитория активна / 0 аудитория отключена) |
weight |
int | сортировка) |
Customer — центральная сущность
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/customer/index в теле {"is_study":0,"lead_status_ids":[1],"page":0} lead_status_ids — поле для фильтрации,is_study — поле для фильтрации 0 - лид, 1 - клиент, 2 фильтрация по клиентам и лидам, page — пейджинация Важно! При использовании дополнительной фильтрации по статусу клиента или по этапу воронки продаж, фильтр будет работать как логическое "И", а не "ИЛИ" (например, если укажем в теле запроса {"is_study":2,"phone":79900000000,"lead_status_id":1}, в ответ получим только лидов с номером телефона 79900000000 и с соответствующим id этапа воронки продаж 1).
{
age_from // возраст клиента от
age_to // возраст клиента до
assigned_id // id ответственного менеджера
balance_bonus_from // баланс бонусов от
balance_bonus_to // баланс бонусов до
balance_contract_from // баланс договора от
balance_contract_to // баланс договора до
color // id цвета
comment // комментарий
company_id // id юр лица
created_at_from – дата создания от, string (формат "DD.MM.YYYY")
created_at_to – дата создания до, string (формат "DD.MM.YYYY")
customer_ reject_id // id причины отказа
date_from // дата добавления от, string
date_to // дата добавления до, string
dob_from // дата рождения от, string
dob_to // дата рождения до, string
employee_id // id ответственного педагога
first_payment_date_from // дата первой оплаты от, string
first_payment_date_to // дата последней оплаты до, string
gender // пол клиента
group_id // id группы клиента
id // id клиента
is_study // состояние клиента ( 0 - лид, 1 - клиент)
last_attend_date_from // дата последнего посещения от, string (формат "YYYY-MM-DD")
last_attend_date_to // дата последнего посещения до, string (формат "YYYY-MM-DD")
lead_source_id // id источника
legal_name // имя заказчика
legal_type // тип заказчика(1-физ лицо, 2-юр.лицо)
lesson_count_from // остаток уроков от
lesson_count_to // остаток уроков до
level_id // id уровня знаний
name // имя клиента
next_lesson_date_from // дата след.посещения от, string (формат "YYYY-MM-DD")
next_lesson_date_to // дата след.посещения до, string (формат "YYYY-MM-DD")
note // примечание
phone // контакты клиента
removed // флаг архивности (2 - только архивные, 1 - активные и архивные, 0 – только активные)
removed_from // дата отправки в архив от
removed_to // дата отправки в архив, до
study_status_id // id статуса обучения
subject_id // id предмета
tariff_id // id тарифа
tariff_till_from // дата действия абонемента от
tariff_till_to // дата действия абонемента до
updated_at_from – дата внесения последних измененийот, string (формат "DD.MM.YYYY")
updated_at_to – дата внесения последних изменений до, string (формат "DD.MM.YYYY")
withGroups:true //активные группы клиента
}
{
age_from // возраст клиента от
age_to // возраст клиента до
assigned_id // id ответственного менеджера
color // id цвета
comment // комментарий
company_id // id юр лица
date_from // дата добавления от, string
date_to // дата добавления до, string
dob_from // дата рождения от, string
dob_to // дата рождения до, string
gender // пол клиента
group_id // id группы лида
id // id клиента
is_study // состояние клиента ( 0 - лид, 1 - клиент)
lead_reject_id // id причины потери лида
lead_source_id // id источника
legal_name // имя заказчика
legal_type // тип заказчика(1-физ лицо, 2-юр.лицо)
level_id // id уровня знаний
name // имя клиента
next_lesson_date_from // дата след.посещения, от, string (формат "YYYY-MM-DD")
next_lesson_date_to // дата след.посещения до, string (формат "YYYY-MM-DD")
note // примечание
note // примечание, string
phone // контакты клиента
removed // флаг архивности (2 - только архивные, 1 - активные и архивные, 0 – только активные)
removed_from // дата отправки в архив от
removed_to // дата отправки в архив, до
subject_id // id предмета
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"is_study":0,"lead_status_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/customer/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"is_study":0,"lead_status_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/customer/create в теле {"name":"Test Customer","legal_type":1,"is_study":0}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test Customer","legal_type":1,"is_study":0}' 'https://{hostname}/v2api/{branch}/customer/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"Test Customer","legal_type":1,"is_study":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/customer/update?id={id} в теле {"name":"Test Customer 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test Customer 2"}' 'https://{hostname}/v2api/{branch}/customer/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"Test Customer 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Customer
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | полное имя |
branch_ids |
int array | массив идентификаторов филиалов (Branch) |
teacher_ids |
int array | массив идентификаторов педагогов (Teacher) |
is_study |
bool | флаг обучения (0 - лид, 1 - клиент) |
study_status_id |
int | статус обучения (StudyStatus) |
lead_status_ids |
int array | этап воронки продаж (LeadStatus) |
lead_source_id |
int | источник (LeadSource) |
assigned_id |
int | ответственный менеджер (User) |
legal_type |
int | тип клиента (1 - физ. лицо, 2 - юр. лицо) |
legal_name |
string(50) | имя заказчика (если физ. лицо) |
company_id |
int | компания (Company) |
dob |
date | дата рождения |
balance |
float | текущий остаток, деньги |
paid_lesson_count |
int | текущий остаток, занятия |
phone |
text array | строка с телефонами |
email |
text array | строка с e-mail |
web |
text array | строка с сайтами |
addr |
text array | строка с адресами |
note |
text | примечание |
updated_at |
string | дата обновления("DD.MM.YYYY") |
created_at |
string | дата добавления ("DD.MM.YYYY") |
custom_ |
... | доп. поля (custom_school, custom_range, etc) |
Customer-reject — сущность причин отказов клиентов
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/customer-reject/index в теле {"page":0} page — пейджинация$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/customer-reject/index'
▸ create создание новой модели
POST на /v2api/{branch}/customer-reject/create в теле {"name":"Customer-reject test","is_enabled":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Customer-reject test","is_enabled":1}' 'https://{hostname}/v2api/{branch}/customer-reject/create'
▸ update изменение свойств модели
POST на /v2api/{branch}/customer-reject/update?id={id} в теле {"name":"Customer-reject test 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Customer-reject test 2"}' 'https://{hostname}/v2api/{branch}/customer-reject/update?id={id}'
▸ поля в модели Customer-reject
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | наименование |
is_enabled |
bool | флаг активности (1 причина включена / 0 причина отключена) |
weight |
int | сортировка |
Lead-reject — сущность причин отказов лидов
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/lead-reject/index в теле {"page":0} page — пейджинация$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/lead-reject/index'
▸ create создание новой модели
POST на /v2api/{branch}/lead-reject/create в теле {"name":"Lead-reject test","is_enabled":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Lead-reject test","is_enabled":1}' 'https://{hostname}/v2api/{branch}/lead-reject/create'
▸ update изменение свойств модели
POST на /v2api/{branch}/lead-reject/update?id={id} в теле {"name":"Lead-reject test 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Lead-reject test 2"}' 'https://{hostname}/v2api/{branch}/lead-reject/update?id={id}'
▸ поля в модели Lead-reject
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | наименование |
is_enabled |
bool | флаг активности (1 причина включена / 0 причина отключена) |
weight |
int | сортировка |
Bonus— сущность бонусов
▸ balance-bonus чтение баланса бонусов на счету клиента
POST на /v2api/{branch}/bonus/balance-bonus?customer_id={id} $ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d 'https://{hostname}/v2api/{branch}/bonus/balance-bonus?customer_id={id}'
▸ bonus-add добавление бонусов
POST на /v2api/{branch}/bonus/bonus-add?customer_id={id} в теле {"amount":10} — количество бонусов
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"amount":10}' 'https://{hostname}/v2api/{branch}/bonus/bonus-add?customer_id={id}'
▸ bonus-spend списание бонусов
POST на /v2api/{branch}/bonus/bonus-spend?customer_id={id} в теле {"amount":10} — количество бонусов
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"amount":10}' 'https://{hostname}/v2api/{branch}/bonus/bonus-spend?customer_id={id}'
▸ поля в модели Bonus
| Поле | Тип данных | Обозначение |
|---|---|---|
branch_id |
int | id филиала |
customer_id |
int | id клиента |
amount |
int | количество бонусов |
date |
string | дата добавления/списания бонусов |
note |
string | примечание |
calc_balance_bonus |
float | полученный результат бонусов |
balance_bonus |
float | баланс бонусов |
type |
int | тип списания (1 - списание бонусов, 2 - выдача товара, 3 - компенсация на счет) |
commodity_id |
int | id товара, указывается при выдаче товара (тип списания 2 - выдача товара) |
Group — сущность групп
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/group/index в теле {"id":1,"page":0} page — пейджинация
{
"ids" // id групп, array[int]
"id" // id группы, int
"name" //название группы, string
"note" // примечание, string
"customer_name" // имя клиента, string
"removed" //активность группы(активна 0, все 1, архивна 2), int
"level_id" // id уровня группы, int
"status_id"// id статуса группы, int
"branch_id"// id филиала, int
"b_date_from"// дата начала действия группы от, date
"b_date_to" // дата начала действия группы до, date
"e_date_from" // дата окончания действия группы от, date
"e_date_to" // дата окончания действия группы до date
"teacher_id"// id ответственного педагога, int
"updated_at_from" // дата внесения последних изменений от, string (формат "DD.MM.YYYY")
"updated_at_to" // дата внесения последних изменений до, string (формат "DD.MM.YYYY")
"created_at_from" // дата создания от, string (формат "DD.MM.YYYY")
"created_at_to" // дата создания до, string (формат "DD.MM.YYYY")
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/group/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/group/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/group/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/group/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/group/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/group/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/group/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/group/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Group
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_ids |
array[int] | id филиалов (Branch) |
teacher_ids |
array[int] | id педагогов |
name |
string | название |
level_id |
int | id уровня группы |
status_id |
int | id статуса группы |
b_date |
string | дата начала действия |
e_date |
string | дата окончания действия |
updated_at |
string | дата обновления ("DD.MM.YYYY") группы |
created_at |
string | дата добавления ("DD.MM.YYYY") группы |
note |
string | комментарий |
Lesson — сущность урока
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/lesson/index в теле {"id":1,"page":0} page — пейджинация Важно! Если параметр status не передавать, по умолчанию status установлен как 3 - проведенный урок.
{
"id" // id урока, int
"status" // статус урока (1 - запланированный, 2 - отмененный, 3 - проведенный), int
"teacher_id" // id педагога, int
"customer_id" // id клиента, int
"is_customer_attend" // присутствие клиента, int
"group_id" // id группы, int
"subject_id" // id предмета, int
"location_ids // id локации, array[int],
"room_ids" // id аудитории, array[int],
"topic" // тема урока, string,
"lesson_type_id" //id типа урока, int
"date_from" // дата от, string, (формат "YYYY-MM-DD")
"date_to" //дата до,string, (формат "YYYY-MM-DD")
"homework" // домашнее задание, string,
"duration" // продолжительность, int
"updated_at_from" // дата внесения последних изменений от, string (формат "DD.MM.YYYY")
"updated_at_to" // дата внесения последних изменений до, string (формат "DD.MM.YYYY")
"created_at_from" // дата создания от, string (формат "DD.MM.YYYY")
"created_at_to" // дата создания до, string (формат "DD.MM.YYYY")
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/lesson/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lesson/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/lesson/create
Обязательные поля к заполнению:
{
"lesson_date" // дата урока, date (формат: "DD.MM.YYYY")
"time_from" // время начала урока, datetime (формат: "HH:MM")
"duration" // длительность урока в минутах, int
"lesson_type_id" // id типа урока, int
"subject_id" // id предмета, int
}
Необязательные поля к заполнению:
{
"teacher_ids" // id педагога, int array
"is_confirmed" // подтверждение урока (по умолчанию да (1)), int
"is_public" // возможна запись онлайн (по умолчанию нет (0)), int
"note" // комментарий, string
"topic" // тема, string
"room_id" // id аудитории, int
"group_ids" // id группы (для типов уроков с системным типом “Группа или несколько”), int array
"customer_ids" // id клиента (для типов уроков с системным типом “Лид, клиент или несколько”), int array
"custom_name" // дополнительные поля, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/lesson/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lesson/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/lesson/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/lesson/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lesson/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ teach проведение разовых уроков
POST на v2api/{branch}/lesson/teach?id={запланированного урока}
Обязательные поля к заполнению для сущности lesson:
{
" id" // id урока, int
"branch_id " // id филиала, int
"lesson_date" // дата урока, date (формат: " YYYY-MM-DD")
"time_from" // время начала урока, string (формат: "HH:MM:SS")
"time_to" // время окончания урока, string (формат: "HH:MM:SS")
"lesson_type_id" // id типа урока, int
"status" // id статуса урока (1 – запланирован; 2 – отменен – 3 проведен), int
"subject_id" // id предмета, int
"teacher_ids // id педагога, array
"customer_ids" // id ученика, array (для уроков с системным типом "Индивидуально" или "Лид, клиент или несколько")
"group_ids" // id группы, array (для уроков с системным типом "Группа или несколько")
}
Необязательные поля к заполнению для сущности lesson:
{
"room_id " // id аудитории, int
"note" // комментарий к уроку, string
"topic " // тема урока, string
"homework" // домашнее задание, string
"custom_" // дополнительные поля в иодели урока,
}
Обязательные поля к заполнению для поля details:
{
"id" // id деталей урока, int (должен совпадать с id детали урока, который передавался при запросе списка запланированных уроков)
"branch_id " // id филиала, int (должен совпадать с branch_id детали урока, который передавался при запросе списка запланированных уроков)
"customer_id" // id клиента, int (должен совпадать с customer_id детали урока, который передавался при запросе списка запланированных уроков)
"lesson_id" // id урока, int
"ctt_id" // id абонемента клиента, int (должен совпадать с ctt_id детали урока, который передавался при запросе списка запланированных уроков)
"is_attend " // присутствие клиента на уроке (1 – присутствовал; 0 – отсутствовал. Если не указывать данный параметр, то по умолчанию будет добавлено значение 0 – отсутствовал. Также при пропуске урока необходимо указать id причины пропуска урока), bool
"reason_id" // id причины пропуска урока, int
"commission " // комиссия за урок, float
}
Необязательные поля к заполнению для поля details:
{
"grade" // оценка за урок, float
"homework_grade_id " // id оценки за домашнее задание, int
"bonus " // тема урока, float
"note " // примечание к клиенту, string
}
▸ поля в модели Lesson
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | id филиала (Branch) |
teacher_ids |
array[int] | id педагогов |
customer_ids |
array[int] | id клиентов |
group_ids |
array[int] | id групп |
name |
string | название |
lesson_type_id |
int | id типа урока |
subject_id |
int | id предмета |
regular_id |
int | id регулярного расписания |
room_id |
int | id аудитории |
status |
int | id статуса |
topic |
string | тема |
date |
string | дата |
time_from |
string | время начала урока |
time_to |
string | время окончания урока |
note |
string | комментарий |
details |
array | детали проведенного урока |
updated_at |
string | дата обновления ("DD.MM.YYYY") |
created_at |
string | дата добавления ("DD.MM.YYYY") |
CGI — связь клиенты-группы
▸ index чтение списка клиентов группы с фильтрацией и пейджинацией
POST на /v2api/{branch}/cgi/index?group_id={id} group_id — поле для фильтрации, page — пейджинация
{
"e_date": "dd.mm.yyyy", // дата начала участия в группе
"b_date": "dd.mm.yyyy" // дата окончания участия в группе
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"group_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/cgi/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/cgi/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"group_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ customer чтение списка групп клиента с фильтрацией и пейджинацией
POST на /v2api/{branch}/cgi/customer?customer_id={id} в теле {"customer_id":1,"page":0} customer_id — поле для фильтрации, page — пейджинация
{
"e_date": "dd.mm.yyyy", // дата начала участия в группе
"b_date": "dd.mm.yyyy" // дата окончания участия в группе
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/cgi/customer'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/cgi/customer');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/cgi/create?group_id={id} в теле {"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}' 'https://{hostname}/v2api/{branch}/cgi/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/cgi/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/cgi/update?group_id={id}&id={id} в теле {"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}' 'https://{hostname}/v2api/{branch}/cgi/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/cgi/update?group_id={id}&id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"b_date":"dd.mm.yyyy","e_date":"dd.mm.yyyy","branch_id":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели CGI
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
customer_id |
int | клиент (Customer) |
group_id |
int | группа (Group) |
b_date |
string(50) | дата начала обучения |
e_date |
string(50) | дата окончания обучения |
Subject — предметы обучения
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/subject/index в теле {"id":1,"page":0} id — поле для фильтрации, page — пейджинация
{
"name" // название предмета, string
"active" // активность(true – только активные, false-все), bool
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/subject/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/subject/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/subject/create в теле {"name":"New subject"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New subject"}' 'https://{hostname}/v2api/{branch}/subject/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/subject/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New subject"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/subject/update?id={id} в теле {"name":"New subject 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New subject 2"}' 'https://{hostname}/v2api/{branch}/subject/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/subject/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New subject 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Subject
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | наименование |
StudyStatus — статусы обучения
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/study-status/index в теле {"id":1,"page":0} id — поле для фильтрации, page — пейджинация
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/study-status/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/study-status/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/study-status/create в теле {"name":"New status","is_enabled":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New status","is_enabled":1}' 'https://{hostname}/v2api/{branch}/study-status/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/study-status/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New status","is_enabled":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/study-status/update?id={id} в теле {"name":"New status 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New status 2"}' 'https://{hostname}/v2api/{branch}/study-status/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/study-status/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New status 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели StudyStatus
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string(50) | наименование |
is_enabled |
bool | флаг |
LeadStatus — этапы воронки продаж
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/lead-status/index в теле {"id":1,"page":0} id — поле для фильтрации, page — пейджинация
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/lead-status/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-status/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/lead-status/create в теле {"name":"New status","is_enabled":1}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New status","is_enabled":1}' 'https://{hostname}/v2api/{branch}/lead-status/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-status/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New status","is_enabled":1}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/lead-status/update?id={id} в теле {"name":"New status 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New status 2"}' 'https://{hostname}/v2api/{branch}/lead-status/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-status/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New status 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели LeadStatus
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name< |
string(50) | наименование |
is_enabled |
bool | флаг активности |
LeadSource — источники
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/lead-source/index в теле {"id":1,"page":0} id — поле для фильтрации, page — пейджинация
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/lead-source/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-source/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/lead-source/create в теле {"name":"New source","is_enabled":1,"code":"newcode"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New source","is_enabled":1,"code":"newcode"}' 'https://{hostname}/v2api/{branch}/lead-source/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-source/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New source","is_enabled":1,"code":"newcode"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/lead-source/update?id={id} в теле {"name":"New source 2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"New source 2"}' 'https://{hostname}/v2api/{branch}/lead-source/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/lead-source/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name":"New source 2"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели LeadSource
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
code |
string(50) | код (альяс) |
name |
string(50) | наименование |
is_enabled |
bool | флаг активности |
Pay — платежи
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/pay/index в теле {"id":1,"page":0} page — пейджинация
{
"id"// id платежа, int
"currency":"rub" // валюта платежа
"location_id" // локация платежа, int
"customer_id" // id клиента
"employee_id" // id педагога (тип платежа - Выдача ЗП)
"pay_item_category_id" // id категории статей
"pay_type_id" // тип операции, int
"pay_item_id" // id статьи, int
"pay_account_id" // id счета (кассы)
"commodity_id" // id товара (тип платежа – Продажа товара)
"payer_name" // имя плательщика, string
"note" // примечание, string
"date_from" // дата от yyyy.mm.dd
"date_to" // дата до yyyy.mm.dd
"sum_from" // сумма платежа от
"sum_to" // сумма платежа до
"bonus_from" // бонус от
"bonus_to" // бонус до
"is_confirmed" // подтвержден (1 - да, 0 - нет)
"group_ids":[], // id групп
"is_fiscal" // фискализован (1 - фискализован, 0 – нет)
"updated_at_from" // дата внесения последних изменений от, string (формат "DD.MM.YYYY")
"updated_at_to" // дата внесения последних изменений до, string (формат "DD.MM.YYYY")
"created_at_from" // дата создания от, string (формат "DD.MM.YYYY")
"created_at_to" // дата создания до, string (формат "DD.MM.YYYY")
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"id":1,"page":0}' 'https://{hostname}/v2api/{branch}/pay/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/pay/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/pay/create в теле {"branch_id":{branch_id},"customer_id":{customer_id},"pay_type_id":{pay_type_id},"pay_account_id":{pay_account_id},"document_date":"dd.mm.yyyy","income":{income},"payer_name":"{payer_name}","note":"{note}"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{{"branch_id":1,"customer_id":1,"pay_type_id":1,"pay_account_id":1,"document_date":"dd.mm.yyyy","income":10890.00,"payer_name":"Иванов Антон","note":"Комментарий"}}' 'https://{hostname}/v2api/{branch}/pay/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/pay/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"branch_id":1,"customer_id":1,"pay_type_id":1,"pay_account_id":1,"document_date":"dd.mm.yyyy","income":10890.00,"payer_name":"Иванов Антон","note":"Комментарий"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/pay/update?id={id} в теле {"income":"100500"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"income":"100500"}' 'https://{hostname}/v2api/{branch}/pay/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/pay/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"income":"100500"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ fiscal-sell передача данных для фискализации
POST на /v2api/{branch}/pay/fiscal-sell?id={id}&type={1 для электронных платежей|2 для наличных} в теле ничего не передавать
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' 'https://{hostname}/v2api/{branch}/pay/fiscal-sell?id={id}&type={1 для электронных платежей|2 для наличных}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/pay/fiscal-sell?id={id}&type={1 для электронных платежей|2 для наличных}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Pay
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | id филиала (Branch) |
location_id |
int | id локации (Location) |
customer_id |
int | id клиента (Customer) |
pay_type_id |
int | id типа платежа (PayType) |
pay_account_id |
int | id кассы (PayAccount) |
pay_item_id |
int | id статьи (PayItem) |
teacher_id |
int | id педагога (Teacher) |
commodity_id |
int | id товара (Commodity) |
document_date |
string | дата |
income |
int | сумма |
payer_name |
string | плательщик |
group_id |
int | id группы, к которой привязан платеж |
updated_at |
string | дата обновления ("DD.MM.YYYY") |
created_at |
string | дата добавления ("DD.MM.YYYY") |
note |
string | примечание |
Communication — коммуникации
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/communication/index?class=Customer&related_id={id} в теле {"page":0} page — пейджинация
{
"id" // id коммуникации, int
"type_id" // id типа коммуникации, int (1-комментарий)
"user_id" // id пользователя, добавившего коммуникацию, int
"comment" // текст коммуникации, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/communication/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/communication/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/communication/create?class=Customer&related_id={id}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/communication/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/communication/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/communication/update?id={id} в теле {"comment":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"comment":"text"}' 'https://{hostname}/v2api/{branch}/communication/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/communication/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"comment":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ sms-message чтение списка коммуникаций SMS сообщений с фильтрацией и пейджинацией
POST на /v2api/{branch}/sms-message в теле {"page":0} page — пейджинация
{
"id" // id, int
"user_id" // id пользователя отправителя SMS, int
"phone" // string номер телефона получателя, string
"is_fail" // bool отправка письма (0 - без ошибок, 1 - с ошибкой), bool
"is_sent" // bool отправка письма (0 - не отправлено, 1 - отправлено), bool
"is_archive" // bool письмо архивировано (0 - не архивировано, 1 - архивировано), bool
"added_from" // string дата добавления письма от, string
"added_to" // string дата добавления письма до, string
"date_from" // string дата отправки письма от, string
"date_to" // string дата отправки письма до, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/sms-message'
▸ mail-message чтение списка коммуникаций Mail сообщений с фильтрацией и пейджинацией
POST на /v2api/{branch}/mail-message в теле {"page":0} page — пейджинация
{
"id" // id, int
"user_id" // id пользователя отправителя email, int
"email" // string почта получателя, string
"name" // string имя получателя, string
"subject" // string тема письма, string
"is_fail" // bool отправка письма (0 - без ошибок, 1 - с ошибкой), bool
"is_sent" // bool отправка письма (0 - не отправлено, 1 - отправлено), bool
"is_archive" // bool письмо архивировано (0 - не архивировано, 1 - архивировано), bool
"added_from" // string дата добавления письма от, string
"added_to" // string дата добавления письма до, string
"date_from" // string дата отправки письма от, string
"date_to" // string дата отправки письма до, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/mail-message'
▸ phone-call чтение списка коммуникаций Звонков с фильтрацией и пейджинацией
POST на /v2api/{branch}/phone-call в теле {"page":0} page — пейджинация
{
"direction" // id направление звонка, может быть либо in (1) либо out (2), int
"is_success" // id успешность звонка (0 или 1),
"local_number" // string локальный номер звонящего / принявшего звонок, string
"remote_number" // string номер звонящего в случае входящего звонка, или исходящий номер, string
"record_url" // string ссылка на запись звонка, string
"date_from" // string дата звонка от, string
"date_to" // string дата звонка до, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/phone-call'
▸ поля в модели Communication
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
phone_normalized |
string | нормализация номера телефона |
text |
string | текст отправки |
html |
string | html запрос |
integration_id |
int | идентификатор интеграции |
branch_id |
int | id филиала |
type_id |
int | id типа коммуникации, int (1-комментарий) |
class |
int | класс связанной сущности |
related_id |
int | id связанной сущности |
user_id |
int | id пользователя, добавившего коммуникацию |
added |
string | дата |
comment |
string | текст |
CustomerTariff — получение списка абонементов клиента
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/customer-tariff/index?customer_id=[id] в теле {"page":0} customer_id — id клиента, page — пейджинация
{
"id" // id абонемента в карточке клиента, int
"tariff_id" // id тарифа(абонемента в разделе Абонементы), int
"is_burnable_out" //сгораемый, bool
"balance":int|array[from,to] // баланс абонемента
"dead": true // архивный абонемент,(false- все абонементы)
"tariff_type" //тип абонемента(1-поурочный, 2- помесячный, 3 – недельный) int
"is_separate_balance" // раздельный баланс, bool
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/customer-tariff/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer-tariff/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/customer-tariff/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/customer-tariff/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer-tariff/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/customer-tariff/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/customer-tariff/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/customer-tariff/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ delete окончательное удаление модели из карточки клиента
POST на /v2api/{branch}/customer-tariff/delete?id=[id]&customer_id=[id]id — id абонемента в карточке клиента, customer_id — id клиента$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' 'https://{hostname}/v2api/{branch}/customer-tariff/delete?id=40&customer_id=1'
▸ поля в модели CustomerTariff
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
tariff_id |
int | id абонемента (Tariff) |
subject_ids |
array[int] | id предметов |
lesson_type_ids |
array[int] | id типов уроков |
customer_id |
int | id клиента (Customer) |
is_separate_balance |
bool | раздельный счет |
balance |
int | баланс |
b_date |
string | дата начала действия |
e_date |
string | дата окончания действия |
note |
string | комментарий |
Discount — сущность скидок
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/discount/index в теле {"customer_id":1,"page":0} page — пейджинация
{
"name" // название скидки, string,
"type" // тип скидки int (1 – процентная, 2 – денежная)
"note" //примечание к скидке, string,
"customer_id" // id клиента, int
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"customer_id":1,"page":0}' 'https://{hostname}/v2api/{branch}/discount/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/discount/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/discount/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/discount/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/discount/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/discount/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/discount/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/discount/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Discount
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | id филиала (Branch) |
subject_ids |
array[int] | id предметов |
lesson_type_ids |
array[int] | id типов уроков |
customer_id |
int | id клиента (Customer), может быть null (для всех) |
type |
int | тип скидки int (1 – процентная, 2 – денежная) |
amount |
int | значение скидки |
begin |
string | дата начала действия |
end |
string | дата окончания действия |
note |
string | комментарий |
Log — получение списка истории изменений
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/log/index в теле {"page":0} page — пейджинация
{
"date_from" // дата от, string
"date_to" // дата до, string
"entity" // сущность, string
"entity_id" // id сущности,int
"user_id" // id автора, int
"event" // тип события, int(1 – добавление, 2 – восстановление, 3 - удаление)
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/log/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/log/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Log
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
entity |
string | сущность |
entity_id |
int | id сущности |
user_id |
int | id пользователя |
event |
string | тип события, int(1 – добавление, 2 – восстановление, 3 - удаление) |
fields_old |
array | поля "до" |
fields_new |
array | поля "после" |
fields_rel |
array | связанные поля |
date_time |
string | дата (формат DD.MM.YYYY) |
RegularLesson — сущность регулярных уроков
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/regular-lesson/index в теле {"page":0} page — пейджинация
{
"ids" // id регулярных уроков, array[int]
"id" // id регулярного урока, int
"subject_id" // id предмета, int
"teacher_id" // id педагога, int
"date_from" // дата действия от, string (применяется вместе с date_to),
"date_to" // дата действия до, string (применяется вместе с date_from),
"time_from" // время от, string "Y-m-d H:i:s" (применяется вместе с time_to),
"time_to" // время до, string "Y-m-d H:i:s" (применяется вместе с time_from),
"public" // доступны для записи, int(1- да, 0 – нет)
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/regular-lesson/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/regular-lesson/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/regular-lesson/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/regular-lesson/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}<', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/regular-lesson/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/regular-lesson/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/regular-lesson/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}</strong>/v2api/{branch}/regular-lesson/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели RegularLesson
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_id |
int | id филиала (Branch) |
lesson_type_id |
int | id типа урока |
related_class |
string | Group|Customer |
related_id |
int | id связанной сущности |
subject_id |
int | id предмета |
teacher_ids |
array[int] | id преподавателей |
room_id |
int | id аудитории |
day |
string | день недели |
days |
string | дни |
time_from_v |
string | время начала занятия |
time_to_v |
string | время завершения занятия |
b_date |
string | дата начала действия |
e_date |
string | дата завершения действия |
Tariff — сущность абонемента
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/tariff/index в теле {"page":0} page — пейджинация
{
"name" // название абонемента, string
"price" // стоимость абонемента, float
"price_from" // стоимость абонемента от, float
"price_to": // стоимость абонемента до, float
"type": // тип тарифа (1 – поурочный, 2 – помесячный, 3 – недельный),int
"calculation_type" // тип расчета(1-базовый, 2- раздельный), int
"is_archive": bool // (true – архивные, false – все)
"lessons_count" // количество уроков, int
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/tariff/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/tariff/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/tariff/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/tariff/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/tariff/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/tariff/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/tariff/update?id={id}>'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/tariff/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Tariff
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
type |
int | тип тарифа (1 – поурочный, 2 – помесячный, 3 – недельный) |
name |
string | название |
price |
int | полная стоимость |
lessons_count |
int | кол-во занятий |
duration |
int | длительность одного занятия |
branch_ids |
array[int] | id филиалов (Branch) |
Task — сущность задач
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/task/index в теле {"page":0} page — пейджинация
{
"id" // id задачи, int
"user_id" // id автора задачи, int
"assigned_id" // id исполнителя, int
"text" // текст задачи, string
"priority" // id приоритета, int(1-низкий, 2 – нормальный, 3 –высокий)
"due_date_from" // дата Исполнить от, string
"due_date_to" // дата Исполнить до, string
"due_date_is_null" // бессрочные задачи, bool(true-только бессрочные)
"done_date_from" // дата исполнения от, string
"done_date_to"// дата исполнения до, string
"is_done" //(true – только выполненные, false – все), bool
"is_archive" // (true – только архивные, false –все), bool
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/task/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/task/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/task/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/task/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/task/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/task/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"note":"text"}' 'https://{hostname}/v2api/{branch}/task/update?id={id}'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/task/update?id={id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Task
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
company_id |
int | id связанной компании |
user_id |
int | id пользователя, создавшего задачу |
assigned_ids |
array[int] | id участников задачи |
group_ids |
array[int] | id прикрепленных групп |
customer_ids |
array[int] | id прикрепленных клиентов |
title |
string | заголовок задачи |
text |
string | текст задачи |
is_archive |
bool | флаг архивности |
is_done |
bool | флаг завершенности |
is_private |
bool | флаг приватности |
created_at |
string | дата создания |
due_date |
string | дата дедлайна |
done_date |
string | дата завершения |
priority |
int | приоритет (1-низкий, 2 – нормальный, 3 –высокий) |
User — сущность пользователей
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/user/index в теле {"page":0}page — пейджинация{
"name" // и, string
"email" // почта пользователя, string
"role_ids" // роль, [array] int
"branch_ids"// филиал пользователя, [array] int
"pay_account_ids"// доступ в кассы, [array] int
"status"// статус пользователя, если в фильтре не задано, то выводятся активных и заблокированных пользователей (0 - заблокирован, 10 - активен), int.
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"email":"ts@gmail.com", "page":0}' 'https://{hostname}/v2api/{branch}/user/index'
▸ create создание новой модели
POST на /v2api/{branch}/user/create в теле {"name":"Test","email":"test@mail.ru","role_ids":[2],"branch_ids":[1]}
Важно! При создании пользователя с ролью кабинет педагога обязательно должно быть указано значение для поля teacher_id, должен быть указан id активного педагога из указанных в запросе филиалов.
{
"name" // ФИО пользователя, string
"email" // почта пользователя, string,
"role_ids" // роль, [array] int
"branch_ids"// филиал пользователя, [array] int
}
{
"phone" // номер телефона пользователя, string
"gender" // пол (1 - жен, 0 - муж, по умолчанию 1), bool,
"sip_number" // номер SIP, int
"pay_account_ids"// доступ в кассы, [array] int
"inn"// ИНН кассира, int
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Test","email":"test@mail.ru", "role_ids":[2],"branch_ids":[1]}' 'https://{hostname}/v2api/{branch}/user/create'
▸ update изменение свойств модели
POST на /v2api/{branch}/user/update?id={id} в теле {"name":"Rename2"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"name":"Rename2"}' 'https://{hostname}/v2api/{branch}/user/update?id={id}'
▸ поля в модели User
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
name |
string | ФИО |
email |
string | почта (email) |
phone |
string | телефон |
gender |
bool | пол (1 - жен, 0 - муж) |
role_ids |
array [int] | роль |
priority |
int | ранг |
branch_ids |
array [int] | id филиалов |
sip_number |
int | номер SIP |
avatar_url |
string | ссылка на фотографию пользователя |
teacher_id |
int | id педагога |
pay_account_ids |
array [int] | доступ в кассы |
customer_id |
int | id клиента |
status |
int | статус (0 - заблокирован, 10 - активен) |
inn |
int | ИНН кассира |
last_login |
string ("DD.MM.YYYY") | дата последнего входа |
Teacher — сущность педагога
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/teacher/index в теле {"page":0} page — пейджинация
{
"name" // имя педагога, string
"phone" // контакты педагога, string,
"removed" // флаг архивности(2-только архивные,1 –активные и архивные, 0 –активные), int
"age_from"// возраст от, int
"age_to"// возраст до, int
"subject_id"// id предмета, int
"skill_id"// id квалификации int,
"branch_id"// id филиала, int,
"e_date" // дата архивации педагога, string
}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '{"page":0}' 'https://{hostname}/v2api/{branch}/teacher/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/teacher/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ index чтение списка с фильтрацией и пейджинацией зарплатные ставки педагогов
POST на /v2api/{branch}/teacher/teacher-rate в теле {"page":0} page — пейджинация
{
"id" // id ставки, int,
"teacher_id // id педагога, в карточке которого добавлена ставка, int,
"type" // тип ставки (1 - ставка в валюте, 2 – процентная ставка), int,
"b_date_from" // начало периода действия ставки ОТ (формат "YYYY-MM-DD"), string,
"b_date_to" // начало периода действия ставки ДО (формат "YYYY-MM-DD"), string,
"e_date_from" // конец периода действия ставки ОТ (формат "YYYY-MM-DD"), string,
"e_dаate_to " // конец периода действия ставки ДО (формат "YYYY-MM-DD"), string,
"lesson_type_ids"// id типов уроков в ставке, array,
"subject_ids" // id предметов в ставке, array
}
▸ index чтение списка с фильтрацией и пейджинацией график работы педагогов
POST на /v2api/{branch}/teacher/working-hour в теле {"page":0} page — пейджинация
{
"id" // id графика работы педагога, int,
"location_id" // id локации, в которой работает педагог, int,
"weekday" // день недели графика работы, int,
"time_from" // время начала работы (формат "HH:MM"), string,
"time_to" // время окончания работы (формат "HH:MM"), string,
"teacher_id" // id педагога, int
}
▸ create создание новой модели
POST на /v2api/{branch}/teacher/create в теле
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: {token}' -d '' 'https://{hostname}/v2api/{branch}/teacher/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: {token}', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/teacher/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/teacher/update?id={id} в теле {"note":"text"}
$ curl -i -X 'POST' -H 'X-ALFACRM-TOKEN: <strong>{token}</strong>' -d '{"note":"text"}' 'https://<strong>{hostname}</strong>/v2api/<strong>{branch}</strong>/task/teacher?id=<strong>{id}</strong>'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ALFACRM-TOKEN: <strong>{token}</strong>', 'Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://<strong>{hostname}</strong>/v2api/<strong>{branch}</strong>/task/teacher?id=<strong>{id}</strong>');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"note":"text"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели Teacher
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
branch_ids |
array[int] | id филиалов (Branch) |
name |
string | имя педагога |
dob |
string | день рождения |
gender |
int | пол |
e_date |
string | дата архивации педагога |
subject_id |
int | id предмета квалификации |
subject_name |
string | название предмета квалификации |
skill_id |
int | id квалификации |
skill_name |
string | название квалификации |
note |
string | примечание |
Поля в модели working-hour
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
location_id |
int | id локации графика работы (если локация НЕ задана, то стоит параметр null) |
weekday |
int | день недели графика работы (где 1 - это воскресенье, а 7 - это суббота) |
time_from |
string | время начала графика работы (формат "HH:MM:SS") |
time_to |
string | время окончания графика работы (формат "HH:MM:SS") |
teacher_id |
int | id педагога, которому принадлежит график работы |
Поля в модели teacher-rate
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | идентификатор |
rate |
float | значение ставки |
type |
int | тип ставки (1 - ставка в валюте, 2 – процентная ставка) |
teacher_id |
int | id педагога, в карточке которого добавлена ставка |
b_date |
string | начало периода действия ставки (формат "YYYY-MM-DD”) |
e_dat |
string | конец периода действия ставки (формат "YYYY-MM-DD”) |
s_multirate |
bool | стоит ли галка напротив пункта “Умножить значение на кол-во посетивших” (0 - нет, 1 – да) |
is_proportional |
bool | стоит ли галка напротив пункта “Увеличить значение пропорционально длительности” (0 - нет, 1 – да) |
condition_attend |
int | тип расчета ставки (1 - если выбрано “За посетивших”; 2 - если выбрано “За пропустивших по причине”; 3 - если выбрано “За посетивших или пропустивших по при)а |
reason_ids |
array | id причин пропуска (если причины пропуска НЕ заданы, то стоит параметр null) |
count_from |
int | кол-во клиентов “от” в ставке (если поле НЕ заполнено, то стоит параметр null) |
count_to |
int | кол-во клиентов “до” в ставке (если поле НЕ заполнено, то стоит параметр null) |
duration |
int | длительность урока в ставке (если поле НЕ заполнено, то стоит параметр null) |
lesson_type_ids |
array | id типов уроков в ставке |
subject_ids |
array | id предметов в ставке |
is_gt_zero |
bool | стоит ли галка напротив пункта “Начислять, если списание за урок у клиента более 0” (0 - нет, 1 – да) |
TestResult — сущность результатов тестирования
▸ index чтение списка с фильтрацией и пейджинацией
POST на /v2api/{branch}/l/test-result/index в теле {"customer_id":401,"subject_id":1,"page":0}{
id // внутренний идентификатор записи, int
customer_id // уникальный идентификатор клиента, int
subject_id // идентификатор предмета из словаря subject, int
date // дата теста, string (формат "DD.MM.YYYY")
grade // оценка за тестирование, text (поддержка частичного совпадения)
comment // комментарий, text (поддержка частичного совпадения)
page // номер страницы пейджинации, int (по умолчанию 0)
limit // количество записей на странице, int (опционально)
}
$$ curl -i -X 'POST' \
-H 'X-ALFACRM-TOKEN: {token}' \
-d '{"customer_id":401,"subject_id":1,"page":0}' \
'https://{hostname}/v2api/{branch}/test-result/index'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-ALFACRM-TOKEN: {token}',
'Accept: application/json',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/test-result/index');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":401,"subject_id":1,"page":0}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ create создание новой модели
POST на /v2api/{branch}/test-result/create в теле {"customer_id":401,"subject_id":1,"date":"06.11.2025","grade":"70"}
$ curl -i -X 'POST' \
-H 'X-ALFACRM-TOKEN: {token}' \
-d '{"customer_id":401,"subject_id":1,"date":"06.11.2025","grade":"70","comment":"Тест"}' \
'https://{hostname}/v2api/{branch}/test-result/create'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-ALFACRM-TOKEN: {token}',
'Accept: application/json',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/test-result/create');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer_id":401,"subject_id":1,"date":"06.11.2025","grade":"70","comment":"Тест"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ update изменение свойств модели
POST на /v2api/{branch}/test-result/update?id={id} в теле {"grade":"85","comment":"Обновлённый комментарий"}
$ curl -i -X 'POST' \
-H 'X-ALFACRM-TOKEN: {token}' \
-d '{"grade":"85","comment":"Обновлённый комментарий"}' \
'https://{hostname}/v2api/{branch}/test-result/update?id=123'
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-ALFACRM-TOKEN: {token}',
'Accept: application/json',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_URL, 'https://{hostname}/v2api/{branch}/test-result/update?id=123');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"grade":"85","comment":"Обновлённый комментарий"}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
throw new \Exception($result['name'] . ' - ' . $result['message']);
var_dump($result);
▸ поля в модели TestResult
| Поле | Тип данных | Обозначение |
|---|---|---|
id |
int | Внутренний уникальный идентификатор записи |
customer_id |
int | Идентификатор связанного клиента (Customer) |
subject_id |
int | Идентификатор предмета из словаря (Subject) |
date |
string | Дата создания записи (формат "DD.MM.YYYY") |
grade |
text | Текстовая оценка за тестирование |
comment |
text | Системное поле для комментариев (аналог note) |
Материал был полезен?
Введите вашу должность в компании
Менеджер свяжется с вами по этому номеру
Дополнительный канал связи