====== Документация по Api ====== ===== Api Личного кабинета версии 1.4 ===== ---- ===== Оглавление ===== [[#Описание API|Описание API]]\\ [[#Формат команд|Формат команд]]\\ [[#Примеры интеграции]]\\ [[#Коды ошибок API|Коды ошибок API]]\\ [[#Авторизация|Авторизация]]\\ [[#Пример работы с обсуждениями|Пример работы с обсуждениями]]\\ [[#Работа с выездами|Работа с выездами]]\\ [[#Работа со статистикой ЛК|Работа со статистикой ЛК]]\\ [[#Устаревшие команды|Устаревшие команды]]\\ ---- [[#Версия API. api_version|Версия API. api_version]]\\ [[#Авторизация. ModernLogin|Авторизация. ModernLogin]]\\ [[#Проверка валидности сессии. ValidSessionID|Проверка валидности сессии. ValidSessionID]]\\ [[#Регистрация. ModernRegistration|Регистрация. ModernRegistration]]\\ [[#Восстановление пароля. ModernRememberPwd|Восстановление пароля. ModernRememberPwd]]\\ [[#Выход из Личного кабинета. Logout|Выход из Личного кабинета. Logout]]\\ [[#Информация по клиенту. ContrInfo|Информация по клиенту. ContrInfo]]\\ [[#Сохранение информации по клиенту. SaveInfo|Сохранение информации по клиенту. SaveInfo]]\\ [[#Сохранение пароля. SavePass|Сохранение пароля. SavePass]]\\ [[#Подтверждение номера телефона. ConfirmCellPhone|Подтверждение номера телефона. ConfirmCellPhone]]\\ [[#Остаток бонусов клиента. Bonus|Остаток бонусов клиента. Bonus]]\\ [[#Остаток депозита клиента. Deposit|Остаток депозита клиента. Deposit]]\\ [[#Список заказов клиента. Orders|Список заказов клиента. Orders]]\\ [[#История заказов клиента. OrdersHistory|История заказов клиента. OrdersHistory]]\\ [[#Полная информация по заказу. FullOrderInfo|Полная информация по заказу. FullOrderInfo]]\\ [[#Краткая информация по услугам заказа. Services|Краткая информация по услугам заказа. Services]]\\ [[#Полная информация по услугам заказа. FullService|Полная информация по услугам заказа. FullService]]\\ [[#Квитанция. ReceiptOnline|Квитанция. ReceiptOnline]]\\ [[#Квитанция. Receipt|Квитанция. Receipt]]\\ [[#Подписанная квитанция. SingReceipt|Подписанная квитанция. SingReceipt]]\\ [[#Список фотографий по заказу. OrderImagesModern|Список фотографий по заказу. OrderImagesModern]]\\ [[#Фотографии по заказу. PhotoOnline|Фотографии по заказу. PhotoOnline]]\\ [[#Оплата депозитом. DepositPay|Оплата депозитом. DepositPay]]\\ [[#Оплата бонусом. BonusPay|Оплата бонусом. BonusPay]]\\ [[#Статистика входа в ЛК. Entry|Статистика входа в ЛК. Entry]]\\ [[#Статистика заходов в ЛК. EntranceSite|Статистика заходов в ЛК. EntranceSite]]\\ [[#Статистика открытия заказа в ЛК. OpenOrders|Статистика открытия заказа в ЛК. OpenOrders]]\\ [[#Статистика открытия истории в ЛК. OpenHistory|Статистика открытия истории в ЛК. OpenHistory]]\\ [[#Дополнительные реквизиты. AddonTypes|Дополнительные реквизиты. AddonTypes]]\\ [[#Комплекты доп. реквизитов. AddonPacks|Комплекты доп. реквизитов. AddonPacks]]\\ [[#Прайс-лист. PriceList|Прайс-лист. PriceList]]\\ [[#Группы прайс-листа. PriceTree|Группы прайс-листа. PriceTree]]\\ [[#Склады. ReceptionCenters|Склады. ReceptionCenters]]\\ [[#Регионы (районы). Regions|Регионы (районы). Regions]]\\ [[#Список выездов. Trips|Список выездов. Trips]]\\ [[#Информация по выезду. Trip|Информация по выезду. Trip]]\\ [[#Свободное время начала выезда на дату. TripsHr|Свободное время начала выезда на дату. TripsHr]]\\ [[#Свободное время окончания выезда на дату. TripsHrTo|Свободное время окончания выезда на дату. TripsHrTo]]\\ [[#Список выездных машин. Cars|Список выездных машин. Cars]]\\ [[#Создание выезда. TripOrder|Создание выезда. TripOrder]]\\ [[#Промо-код. PromoCode|Промо-код. PromoCode]]\\ [[#Используемый промо-код. PromoCodeUse|Используемый промо-код. PromoCodeUse]]\\ [[#Активация промо-кода. PromoCodeActivate|Активация промо-кода. PromoCodeActivate]]\\ [[#Список изменившихся ID заказов. LastChangeOrder|Список изменившихся ID заказов. LastChangeOrder]]\\ [[#Подтверждение заказа. OrderConfirm|Подтверждение заказа. OrderConfirm]]\\ [[#Подтверждение заказа. OrderAppConfirm|Подтверждение заказа. OrderAppConfirm]]\\ [[#Отмена подтверждения заказа. CancelOrderApp|Отмена подтверждения заказа. CancelOrderApp]]\\ [[#Статус заказа. GetStatusOrder|Статус заказа. GetStatusOrder]]\\ [[#Отмена заказа. CancelOrder|Отмена заказа. CancelOrder]]\\ [[#Темы обсуждений клиента. TitleMessages|Темы обсуждений клиента. TitleMessages]]\\ [[#Список сообщений темы. MessageList|Список сообщений темы. MessageList]]\\ [[#Количество новых сообщений в теме. CountNewMessages|Количество новых сообщений в теме. CountNewMessages]]\\ [[#Отправка сообщения темы. SendMessage|Отправка сообщения темы. SendMessage]]\\ [[#Список акций. GetActionList|Список акций. GetActionList]]\\ [[#Список сертификатов. Certificate|Список сертификатов. Certificate]]\\ [[#Список строк сертификатов. CertificateLines|Список строк сертификатов. CertificateLines]]\\ [[#Список активных сертификатов. ActiveCertificates|Список активных сертификатов. ActiveCertificates]]\\ [[#Создание оплаты сертификата. CreatePayCertificate|Создание оплаты сертификата. CreatePayCertificate]]\\ [[#Рекламные объявления. Advertisment|Рекламные объявления. Advertisment]]\\ [[#Картинки рекламных объявлений. AdvertismentImg|Картинки рекламных объявлений. AdvertismentImg]]\\ [[#Список команд|Список команд]]\\ ---- ==== Устаревшие команды ==== [[#Фотографии заказа. OrderImages|Фотографии заказа. OrderImages]]\\ ---- ===== Описание API ===== Api позволяет реализовать Личный кабинет клиента, используя клиентскую сессию(авторизованного пользователя) (SessionID), получая информацию только по этому клиенту.\\ На основе полученной сессии, команды возвращают информацию **Только по одному текущем клиенту**.\\ **Время "жизни" клиентской сессии неограниченно.**\\ Api личного кабинета **Не позволяет реализовать синхронизацию всех заказов/клиентов и др. со сторонними сервисами**. Т.к. это может привести к избыточной нагрузке и большому количеству запросов. Для реализации таких целей, правильно использовать **[[commercial_api]]**.\\ В нем есть поддержка загрузки Изменившихся заказов за период (с выводом подробной информации по заказу), изменившихся клиентов, создание и изменение заказов. ---- ==== Схема работы API ==== {{:работа_api.drawio.png?direct&600 |}}\\ ===== Формат команд ===== Все команды выполняются методом **GET**. Ответ на запрос приходит в **json** формате. Все значения параметров команд должны быть преобразованы, **через js encodeURIComponent или подобные функции**. **Пример:** //www.himinfo.ru/cl/{Path}/api/?command={"key":"value"}&SessionID=...&callback=... где:\\ * //{Path}// - имя для Химчистки. Полный путь предоставляется отдельно, после настройки API; * //command// - название выполняемой команды; * //{"key": "value"}// - параметры команды (значение=ключ). Представляет собой текстовую аналогию записи объекта на JS; * //SessionID// - в зависимости от команды обязательный параметр. Указывает ID сессии для выполнения команды. Выдается при выполнении команды авторизации; * //callback// - необязательный параметр. Указывает на имя процедуры для jsonP, которое вернется в ответе с json строкой. //**В ответе на запрос могут присутствовать поля, не описанные в настоящей документации. Приложению следует их игнорировать.**// ---- ===== Примеры интеграции ===== **Пример запросов на php:** $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "//himinfo.ru/cl/{Path}/api/?command=".urlencode('{"param1": "{$param1}", "param2": "{$param2}", "param3": "{$param3}"}'), CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_POSTFIELDS => "", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) echo "cURL Error #:" . $err; else echo $response; **Пример запросов на JavaScript:** const data = null; const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) console.log(this.responseText); }); xhr.open("GET", '//himinfo.ru/cl/{Path}/api/?command=' + encodeURIComponent('{"param1": "' + param1.val() + '", "param2": "' + param2.val() + '", "param3": "' + param3.val()+ '"}'); xhr.send(data); **Пример запросов на jQuery:** Функция __encodeURIComponent__ выполняется для всех значений параметров команды: '//himinfo.ru/cl/{Path}/api/?command=' + encodeURIComponent('{"param1": "' + param1.val() + '", "param2": "' + param2.val() + '", "param3": "' + param3.val()+ '"}'), 1) в данном случае метод $.ajax сам выполнит encodeURL: $.ajax({ 'url': '//himinfo.ru/cl/{Path}/api/', 'data': {'command': '{"param1": "' + param1.val() + '", "param2": "' + param2.val() + '", "param3": "' + param3.val() + '"}'}, 'dataType': 'jsonp', 'success': function(response, ioArgs){}, 'error': function(XMLHttpRequest, textStatus, errorThrown){}, 'josnpCallback': 'callback', 'timeout': 30000 }); 2) $.ajax({ 'url': '//himinfo.ru/cl/{Path}/api/?command=' + encodeURIComponent('{"param1": "' + param1.val() + '", "param2": "' + email.val() + '", "param1": "' + name.val()+ '"}'), 'dataType': 'jsonp', 'success': function(response, ioArgs){}, 'error': function(XMLHttpRequest, textStatus, errorThrown){}, 'josnpCallback': 'callback', 'timeout': 30000 }); ---- ===== Коды ошибок API ===== |**Код ошибки**|**Текст ошибки** |**Описание** | |100 |Ошибка подключения к БД1 | | |101 |Ошибка выполнения запроса1| | |102 |Слишком частые запросы | | |103 |Отсутствуют команды на выполнение. |Не правильно была сформирована API команда или такой не существует.| |104 |Отсутствуют параметры команды |Не правильно указаны параметры в команде API. | |105 |Некорректные данные |Не правильный формат данных в параметрах команды API. | |106 |Недействительный SessionID | | 1 - обратиться к разработчикам Агбис. ---- ===== Авторизация ===== Для регистрации используется команда **ModernRegistration**. Для авторизации используется команда **ModernLogin**. Для восстановления пароля команда **ModernRememberPwd**. ---- ===== Пример работы с обсуждениями ===== 1) //TitleMessages// - получить список обсуждений происходит по сессии, т.е. только конкретно для  авторизованного клиента. вернет: //www.himinfo.ru/cl/{Path}/api/?TitleMessages&SessionID= Ответ **json**: { "error": 0, "Messages": [ { "id": "10045", "doc_num": "", "dttm": "16.03.2015 5:48:19", "comment": "test", "user": "1", "star": "0", "message_type": "5", "new_mes_count": "0", "status_message": "0" } ] } 2) //MessageList// - вернет сообщения для конкретной темы (если в теме нет сообщений от пользователей или самого клиента то запрос будет пустой) по ее ID полученной с помощью команды //TitleMessages//. //www.himinfo.ru/cl/{Path}/api/?MessageList={"id": "10045"}&SessionID= Ответ **json**: { "error": 0, "childNode_comments": [ { "dttm": "16.03.2015+21:09:31", "comment": "test", "user": "0", "status_message": 1 } ] } 3) //SendMessage// - добавит сообщение в существующую тему по ее ID полученной с помощью команды //TitleMessages//, либо без ID  создаст новую тему.\\ Отправка сообщения в существующее обсуждение: //www.himinfo.ru/cl/{Path}/api/?SendMessage={"id": "10045", "dttm": "25.03.2015 12:52", "mes_type": "3", "comment": "%D1%82%D0%B5%D1%81%D1%82"}&SessionID= Создание нового обсуждения на примере отзыва о заказе //www.himinfo.ru/cl/{Path}/api/?SendMessage={"dor_id": "102577", "dttm": "25.03.2015 12:52", "mes_type": "1", "star": "5", "comment": "%D1%82%D0%B5%D1%81%D1%82"}&SessionID=3213A4C7-6FD5-4ABC-8CAD-24FFA77726E9 4) //CountNewMessages// - кол-во новых сообщения в теме по ее ID полученной с помощью команды //TitleMessages// либо без ID  создаст новую тему. //www.himinfo.ru/cl/{Path}/api/?CountNewMessages={"id": "10045"}&SessionID= Ответ **json**: { "error": 0, "count_new": "3" } ---- ===== Работа с выездами ===== Получение списка журнала выездов используется команда Trips. Для резервирование или редактирования времени выезда используется команда TripOrder. При резервировании выезда, для указания корректного времени начала и окончания выезда, выполняется команда TripsHr (возвращает список свободного времени начала выезда, на которое можно зарезервировать время), далее выполнятся команда TripsHrTo с указанием предполагаемой даты окончания выезда (вернет список времени окончания, на которое можно завершить выезд). После резервирования выезда, команда Trips вернет обновленный список выездов. ---- ===== Работа со статистикой ЛК ===== Для работы отчета "Отчёт обращений в "Личный кабинет" клиентами. Используемые команды:\\ //Entry// - статистика входа в ЛК (0 - зарегестрировался, 1 - авторизовался);\\ //EntranceSite// - статистика заходов в ЛК;\\ //OpenOrders// - статистика открытия заказа в ЛК;\\ //OpenHistory// - статистика открытия истории в ЛК. ---- ===== Команды API ===== ===== Версия API. api_version ===== **Команда:** %%api_version%% Вернет версию api. Параметры команды отсутствуют. Метод отправки: **GET** Формат запроса: %%api_version%% Строка запроса: .../api/?api_version Ответ **json**: {"api_version": "1.4"} ---- ===== Авторизация. ModernLogin ===== **Команда:** %%ModernLogin%% Авторизация по номеру телефона. Используется вместе с командой регистрации //ModernRegistration//.\\ Метод отправки: **GET** Формат запроса: %%ModernLogin={"phone": "+79123456789", "pwd": "7110eda4d09e062aa5e4a390b0a572ac0d2c0220"}%% Строка запроса: .../api/?ModernLogin=%7B%22phone%22%3A%20%22%2B79123456789%22%2C%20%22pwd%22%3A%20%227110eda4d09e062aa5e4a390b0a572ac0d2c0220%22%7D где\\ //phone// - номер телефона клиента, **обязательный параметр**;\\ //pwd// – пароль, преобразованный с помощью SHA1, **обязательный параметр**. Ответ **json**: { "error":0, "Session_id":"F3967266-DDAE-4524-A8AB-7BCDF79A97F1", "contr_id":"10013", "promo_code_friend":"" } где\\ //error// - код выполнения, 0 - успешно, 1 - ошибка;\\ //Msg// - текст сообщения в случае ошибки.\\ //Session_id// - ID сессии авторизованного клиента;\\ //contr_id// - ID клиента;\\ //promo_code_friend// - промо-код. ---- ===== Проверка валидности сессии. ValidSessionID ===== **Команда:** %%ValidSessionID%% Проверка валидности SessionID. Метод отправки: **GET** Формат запроса: %%ValidSessionID&SessionID=%% Строка запроса: .../api/?ValidSessionID&SessionID=... где\\ //SessionID// – GUID проверяемой сессии. Ответ **json**: { "error": 0, "contr_id": "123" } где\\ //contr_id// – ID клиента, которому принадлежит сессия. ---- ===== Регистрация. ModernRegistration ===== **Команда:** %%ModernRegistration%% Регистрация клиента в личном кабинете химчистке. Метод отправки: **GET** Формат запроса: %%ModernRegistration={"fio": "Тест Тестовый", "phone": "+79123456789", "email": "test@test.com"}%% Строка запроса: .../api/?ModernRegistration=%7B%22phone%22%3A%22%2B79123456789%22%2C%22fio%22%3A%22%D0%A2%D0%B5%D1%81%D1%82%20%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%22%7D где\\ //phone// - логин, телефон клиента, **обязательный параметр**;\\ //fio// - ФИО клиента, **обязательный параметр**;\\ //email// - Email клиента, **не обязательный параметр**. Ответ **json**: // При успешной регистрации { "error": 0, "Msg": "СМС сообщение с кодом отправлено" } // При нахождении телефона на другом клиенте { "error": 1, "Msg": "Данный номер телефона уже зарегистрирован. Попробуйте восстановить пароль" "contr_id": "1234", "exists": "1" } где\\ //error// - код выполнения, 0 - успешно, 1 - ошибка;\\ //Msg// - текст сообщения;\\ Если текст сообщения __"Вы зарегистрированы"__, значит для Вас не настроен шаблоны СМС для ЛК, обратитесь в клиентский сервис. \\ //contr_id// - ID клиента;\\ //exists// - признак что телефон уже занят другим клиентом. ---- ===== Восстановление пароля. ModernRememberPwd ===== **Команда:** %%ModernRememberPwd%% Восстановление пароля зарегистрированного клиента. Метод отправки: **GET** Формат запроса: %%ModernRememberPwd={"phone":"+79123456789"}%% Строка запроса: .../api/?ModernRememberPwd=%7B%22phone%22%3A%20%22%2B79123456789%22%7D где\\ //phone// - телефон клиента, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "СМС сообщение с кодом отправлено" } где\\ //error// - код выполнения, 0 - успешно, 1 - ошибка;\\ //Msg// - текст сообщения. Если текст сообщения __"Вы зарегистрированы"__, значит для Вас не настроен шаблоны СМС для ЛК, обратитесь в клиентский сервис. \\ ---- ===== Выход из Личного кабинета. Logout ===== **Команда:** %%Logout%% Выход из Личного кабинета, завершение работы сессии Метод отправки: **GET** Формат запроса: %%Logout&SessionID=%% Строка запроса: .../api/?Logout&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Возвращает команда авторизации //ModernLogin//. Ответ **json**: {"error": 0} где\\ //error// - код выполнения, 0 - успешно, 1 - ошибка; //Msg// - текст сообщения в случае ошибки. ---- ===== Информация по клиенту. ContrInfo ===== **Команда:** %%ContrInfo%% Информация по авторизированному клиенту. Метод отправки: **GET** Формат запроса: %%ContrInfo&SessionID=%% Строка запроса: .../api/?ContrInfo&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "contr_id": "12345", "name": "%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%20%D0%98%D0%B2%D0%B0%D0%BD%20%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87", "short_name": "%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%20%D0%98.%D0%98.", "fone": "111-11-11", "fone_cell": "%2B79990009900", "email": "example@example.com", "agree_to_receive_sms": "0", "agree_to_receive_adv_sms": "0", "address": "%D0%94%D1%80%D1%83%D0%B6%D0%B1%D1%8B%201-1", "barcode": "123456789000", "discount": "5", "last_order_discount":"0", "last_discount": "15", "discount_scheme_name": "", "gender": "0", "sp": "2", "source": "", "region_id": "", "full_orders_cost": "1648370,24", "is_active": "1", "loyalty": "0", "order_not_pay": "266", "order_count": "457", "deposit": "50", "bonus": "5371", "dolg": "1273565,62", "promo_code": "P2HZ3", "birth_day": "01.01.1900" } где\\ //error// - успешность выполнения команды;\\ //contr_id// – ID клиента;\\ //name// - ФИО клиента;\\ //short_name// - краткое ФИО клиента;\\ //fone// - обычный телефон;\\ //fone_cell// - сотовый телефон;\\ //email// - электронная почта;\\ //agree_to_receive_sms// - согласен получать СМС о готовности заказов;\\ //agree_to_receive_adv_sms// - согласен получать рекламные и поздравительные СМС;\\ //address// - адрес клиента;\\ //barcode// - номер карточки клиента;\\ //discount// - процент скидки клиента;\\ //last_order_discount// - скидка из последнего заказа;\\ //last_discount// - Последняя скидка по ДС;\\ //discount_scheme_name// - название ДС клинта;\\ //gender// – пол клиента (0-мужской, 1-женский);\\ //sp// – тип клиента (1- организация, 2- физическое лицо);\\ //source// - любой текст;\\ //region_id// – район;\\ //full_orders_cost// – сумма заказов клиента;\\ //is_active// – активность карточки клиента (0 - не активен, 1 - активен);\\ //loyalty// – лояльность клиента (0 - нейтральный, 1 - положительный/лояльный, 2 - отрицательный/конфликтный, 3 - VIP);\\ //order_not_pay// – количество не оплаченных заказов;\\ //order_count// – количество заказов;\\ //deposit// – остаток депозита клиента;\\ //bonus// – остаток бонуса клиента;\\ //dolg// – сумма долга клиента;\\ //promo_code// – используемый промо-код;\\ //birth_day// – дата рождения. ---- ===== Сохранение информации по клиенту. SaveInfo ===== **Команда:** %%SaveInfo%% Сохранение информации по клиенту. Метод отправки: **GET** Формат запроса: %%SaveInfo={"Name": "Агбис Тест Тестович", "birth_day": "01.10.1974", "Teleph_cell": "+79990009900", "Email": "", "Address": "Новокузнецк, 123- 4", "gender": "0", "agree_to_receive_sms": "1", "agree_to_receive_adv_sms": "0"}&SessionID=%% Строка запроса: .../api/?SaveInfo=%7B%22Name%22%3A%20%22%D0%90%D0%B3%D0%B1%D0%B8%D1%81%20%D0%A2%D0%B5%D1%81%D1%82%20%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8%D1%87%22%2C%20%22birth_day%22%3A%20%2201.10.1974%22%2C%20%22Teleph_cell%22%3A%20%22%2B79990009900%22%2C%20%22Email%22%3A%20%22%22%2C%20%22Address%22%3A%20%22%D0%9D%D0%BE%D0%B2%D0%BE%D0%BA%D1%83%D0%B7%D0%BD%D0%B5%D1%86%D0%BA%2C%20123-%204%22%2C%20%22gender%22%3A%20%220%22%2C%20%22agree_to_receive_sms%22%3A%20%221%22%2C%20%22agree_to_receive_adv_sms%22%3A%20%220%22%7D&SessionID=D5DEC8D0-707C-4757-90C3-C3DC4240010D&SessionID=... где\\ //Name// – ФИО клиента, **не обязательный параметр**;\\ //Teleph_cell// – сотовый телефон, **не обязательный параметр**;\\ //Fone// – обычный телефон, **не обязательный параметр**;\\ //birth_day// – день рождения (пример: 01.04.1954), **не обязательный параметр**;\\ //Email// – E-mail адрес, **не обязательный параметр**;\\ //Address// – адрес клиента, **не обязательный параметр**;\\ //gender// – пол клиента (0 – м, 1 - ж), **не обязательный параметр**;\\ //agree_to_receive_sms// - согласие на смс о готовности заказа, **не обязательный параметр**;\\ //agree_to_receive_adv_sms// - согласие на рекламную смс, **не обязательный параметр**;\\ //source// - любой текст, **не обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D1%8B", "contr_id": "10013" } где\\ //error// - успешность выполнения команды;\\ //Msg// - сообщение;\\ //contr_id// - ID клиента;\\ //need_confirm_phone// - признак что, измененный телефон нужно подтвердить.\\ **Клиенту на новый телефон уходит смс с кодом подтверждения**. Для подтверждения телефона используется команда **ConfirmCellPhone**. ---- ===== Сохранение пароля. SavePass ===== **Команда:** %%SavePass%% Сохранение нового пароля клиента. Метод отправки: **GET** Формат запроса: %%SavePass={"old":"40bd001563085fc35165329ea1ff5c5ecbdbbeef","new":"7110eda4d09e062aa5e4a390b0a572ac0d2c0220","IsDigitPass":"1"}&SessionID=%% Строка запроса: .../api/?SavePass=%7B%22old%22%3A%2240bd001563085fc35165329ea1ff5c5ecbdbbeef%22%2C%22new%22%3A%227110eda4d09e062aa5e4a390b0a572ac0d2c0220%22%2C%22IsDigitPass%22%3A%221%22%7D&SessionID=... где\\ //old// - старый пароль, **обязательный параметр**;\\ //new// - новый пароль, **обязательный параметр**;\\ //IsDigitPass// - признак, если пароль содержит только цифры, **не обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**;\\ //old// и //new// должны быть преобразованы с помощью алгоритма SHA1. Ответ **json**: { "error": 0 } ---- ===== Подтверждение номера телефона. ConfirmCellPhone ===== **Команда:** %%ConfirmCellPhone%% Подтверждение номера телефона по клиенту.\\ При успешном подтверждении новый телефон будет применен в карточке клиента. Метод отправки: **GET** Формат запроса: %%ConfirmCellPhone={"contr_id": "10013", "code": "1234"}&SessionID=%% Строка запроса: .../api/?ConfirmCellPhone={"contr_id": "10013", "code": "1234"}&SessionID=... где\\ //contr_id// - ID клиента, **обязательный параметр**;\\ //code// - код подтверждения из смс, ** не обязательный параметр**. Если не указать будет повторная смс с кодом подтверждения, не чаще 1 раза в 5мин;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "code": "223", "phone": "+79990009900", "contr_id": "10013" } где\\ //error// - успешность выполнения команды;\\ //code// - новый код подтверждения из смс при повторной отправке;\\ //phone// - телефон на который ушла смс;\\ //contr_id// - ID клиента. ---- ===== Остаток бонусов клиента. Bonus ===== **Команда:** %%Bonus%% Метод отправки: **GET** Остаток бонусов авторизированного клиента. Обязательный параметр //SessionID//. Формат запроса: %%Bonus&SessionID=%% Строка запроса: .../api/?Bonus&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error":0, "bonus_rest":"1956" } где\\ //bonus_rest// - остаток бонуса клиента. ---- ===== Остаток депозита клиента. Deposit ===== **Команда:** %%Deposit%% Метод отправки: **GET** Остаток депозита авторизированного клиента. Обязательный параметр //SessionID//. Формат запроса: %%Deposit&SessionID=%% Строка запроса: .../api/?Deposit&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error":0, "deposit_rest":"206" } где\\ //deposit_rest// - остаток депозита клиента. ---- ===== Список заказов клиента. Orders ===== **Команд:** %%Orders%% Метод отправки: **GET** Список текущих заказов (кроме выданных) авторизированного клиента. Формат запроса: %%Orders={"sclad": 1, "need_serv": 1}&SessionID=%% Строка запроса: .../api/?Orders=%7B%22sclad%22%3A1%2C%22need_serv%22%3A1%7D&SessionID=... где\\ //sclad// - информация по складу, **необязательный параметр**. Указывает нужно ли в ответе указывать информацию по складу(принимает значение 0 и 1);\\ //need_serv// - детализация по услугам заказа, **необязательный параметр**. Указывает нужно ли в ответ записывать детализацию по услугам заказа, в противном случае блок «services» будет отсутствовать(принимает значение 0 и 1);\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "orders":[ { "dor_id": 150708, "doc_num": "001476", "kredit": "1056", "debet": "801,93", "doc_date": "15.07.2013", "date_out": "19.07.2013 15:14:22", "status": "1", "photo_exist": "0", "discount": "5", "sclad_name": "%D0%A7%D0%B8%D1%81%D1%82%D0%BA%D0%B0", "sclad_adr": "%D0%94%D1%80%D1%83%D0%B6%D0%B1%D1%8B%201-1", "sclad_hours": "8:00-20:00", "condition_id": "", "condition_name": "", "services":[ { "dos_id": "100230799", "tov_id": "100644", "service": "%D0%94%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%BA%D0%B0", "code": "060104", "status_id": "1", "status_name": "%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9", "barcode": "271800000786781001", "price": "1320", "qty": "1", "kfx": "1", "discount": "20", "nursery_id": "0", "nurseries_name": "%D0%9D%D0%B5+%D0%B4%D0%B5%D1%82%D1%81%D0%BA%D0%B0%D1%8F", "nurseries_discount": "0", "serv_weight": "1", "dirty_id": "0", "dirty_name": "%D0%9E%D0%B1%D1%89%D0%B5%D0%B5", "dirty_kfx": "1", "kredit": "1056", "ext_info": "", "shop_description": "", "group_tov": "%D0%90%D1%82%D0%B5%D0%BB%D1%8C%D0%B5", "addons":[ { "id": "3", "descr": "%D0%98%D0%B7%D0%BD%D0%BE%D1%81%20%D0%B2%20%25", "value_type": "1", "aos_id": "1009302", "aos_value": "%D0%98%D0%B7%D0%BD%D0%BE%D1%81%2050%25" } ] } ] } ] } где\\ **orders** - массив объектов заказов:\\ //dor_id// – ID заказа;\\ //doc_date// – дата заказа;\\ //doc_num// – номер заказа;\\ //date_out// – дата выдачи;\\ //kredit// – сумма заказа;\\ //debet// – сумма оплаты заказа;\\ //discount// – скидка по заказу;\\ //kind_id// – тип заказа (0 – Заказ для химчистки, 1 - Заказ для прачечной, 2 – Продажа товаров, 3 – Выездной заказ);\\ //photo_exist// – содержит фотографии;\\ //sclad_to// – ID склад приема;\\ //sclad_name// – название склада;\\ //sclad_adr// – адрес склада;\\ //sclad_hours// – время работы склада;\\ //current_sclad_id// – текущий склад;\\ //status// – статус заказа (1 - Новый, 2 - На хранении, 3 - В исполнении, 4 - Исполненный, 5 - Выданный, 6 - Закрытый, 7 - Отменённый);\\ //waiting_confirm// – признак подтверждения заказа от клиента (0 - не требует подтверждения, по умолчанию; 1- требует подтверждения от клиента; 2 – клиент согласился, подтвержден; 3 - клиент НЕ согласился, отменен);\\ //is_not_confirmed// - признак подтверждения сотрудником химчистки (0 - если сотрудник химчистки уже подтвердил заказ или мы не ждем подтверждения от него, по умолчанию; 1 - если сотрудник химчистки еще не подтвердил заказа, но мы ждем это);\\ //condition_id - ID состояния, с версии Агбис.Химчистки 4.4.0;\\ //condition_name - наименование состояния, с версии Агбис.Химчистки 4.4.0;\\ **services** - массив объектов услуг:\\ //dos_id// – ID услуги в заказе;\\ //tov_id// – ID номенклатурной услуги;\\ //service// - название услуги;\\ //code// - артикул;\\ //status_id// – ID статуса;\\ //status_name// - название статуса;\\ //barcode// - штрих-код услуги;\\ //price// - цена;\\ //qty// - количество;\\ //kfx// - коэффициент;\\ //discount// - скидка;\\ //nursery_id// - ID детской скидки;\\ //nurseries_name// - название детской скидки;\\ //nurseries_discount// - значение детской скидки;\\ //serv_weight// - вес;\\ //dirty_id// - ID наценки;\\ //dirty_name// - название наценки;\\ //dirty_kfx// - коэффициент наценки;\\ //kredit// - стоимость услуги;\\ //ext_info// - описание;\\ //shop_description// - описание цеха;\\ //group_tov// - группа номенклатуры.\\ **addons** - массив объектов доп реквизитов:\\ //id// – ID реквизита;\\ //descr// - название реквизита;\\ //value_type// - тип реквизита;\\ //aos_id// – ID значения реквизита;\\ //aos_value// - значение реквизита.\\ ---- ===== История заказов клиента. OrdersHistory ===== **Команда:** %%OrdersHistory%% Метод отправки: **GET** Список выполненных (выданных) заказов клиента. Формат запроса: %%OrdersHistory={"mon": 1, "need_serv": 1}&SessionID=%% Строка запроса: .../api/?OrdersHistory=%7B%22mon%22%3A1%2C%22need_serv%22%3A1%7D&SessionID=... где\\ //mon// - период отображения истории, **необязательный параметр**. Принимает значение 0 - за последний квартал, 1 – за последние полгода, 2 - за год;\\ //sclad// - информация по складу, **необязательный параметр**. Указывает нужно ли в ответе указывать информацию по складу(принимает значение 0 и 1);\\ //need_serv// - детализация по услугам заказа, **необязательный параметр**. Указывает нужно ли в ответ записывать детализацию по услугам заказа, в противном случае блок «services» будет отсутствовать(принимает значение 0 и 1);\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": "0", "orders_history": [ { "dor_id": "159214", "doc_num": "0000023", "kredit": "1056", "debet": "1056", "doc_date": "15.07.2013", "date_out": "19.07.2013 15:14:22", "status": "5", "discount": "0", "date_out_fast": "20.06.2016 10:08:23", "condition_id": "", "condition_name": "", "services": [ { "dos_id": "100230799", "tov_id": "100644", "service": "%D0%94%D1%83%D0%B1%D0%BB%D0%B5%D0%BD%D0%BA%D0%B0", "code": "060104", "status_id": "1", "status_name": "%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9", "barcode": "271800000786781001", "price": "1320", "qty": "1", "kfx": "1", "discount": "20", "nursery_id": "0", "nurseries_name": "%D0%9D%D0%B5+%D0%B4%D0%B5%D1%82%D1%81%D0%BA%D0%B0%D1%8F", "nurseries_discount": "0", "serv_weight": "1", "dirty_id": "0", "dirty_name": "%D0%9E%D0%B1%D1%89%D0%B5%D0%B5", "dirty_kfx": "1", "kredit": "1056", "ext_info": "", "shop_description": "", "group_tov": "%D0%90%D1%82%D0%B5%D0%BB%D1%8C%D0%B5", "addons": [ { "id": "3", "descr": "%D0%98%D0%B7%D0%BD%D0%BE%D1%81%20%D0%B2%20%25", "value_type": "1", "aos_id": "1009302", "aos_value": "%D0%98%D0%B7%D0%BD%D0%BE%D1%81%2050%25" } ] } ] } ] } где\\ **orders_history** - массив объектов заказов:\\ //dor_id// – ID заказа;\\ //doc_date// – дата заказа;\\ //doc_num// – номер заказа;\\ //date_out// – дата выдачи;\\ //date_out_fast// – дата выдачи фактическая;\\ //kredit// – сумма заказа;\\ //debet// – сумма оплаты заказа;\\ //discount// – скидка по заказу;\\ //status// – статус заказа.\\ //condition_id - ID состояния, с версии Агбис.Химчистки 4.4.0;\\ //condition_name - наименование состояния, с версии Агбис.Химчистки 4.4.0;\\ **services** - массив объектов услуг:\\ //dos_id// – ID услуги;\\ //tov_id// – ID номенклатуры;\\ //service// - название услуги;\\ //code// - артикул;\\ //status_id// – ID статуса;\\ //status_name// - название статуса;\\ //barcode// - штрих-код услуги;\\ //price// - цена;\\ //qty// - количество;\\ //kfx// - коэффициент;\\ //discount// - скидка;\\ //nursery_id// - ID детской скидки;\\ //nurseries_name// - название детской скидки;\\ //nurseries_discount// - значение детской скидки;\\ //serv_weight// - вес;\\ //dirty_id// - ID наценки;\\ //dirty_name// - название наценки;\\ //dirty_kfx// - коэффициент наценки;\\ //kredit// - стоимость услуги;\\ //ext_info// - описание;\\ //shop_description// - описание цеха;\\ //group_tov// - группа номенклатуры.\\ **addons** - массив объектов доп. реквизитов:\\ //id// – ID реквизита;\\ //descr// - название реквизита;\\ //value_type// - тип реквизита;\\ //aos_id// – ID значения реквизита;\\ //aos_value// - значение реквизита. ---- ===== Полная информация по заказу. FullOrderInfo ===== **Команда**: FullOrderInfo Получение полной информации по заказу. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%FullOrderInfo={"dor_id":"1"}&SessionID=...%% Строка запроса: .../api/?FullOrderInfo=%7B%22dor_id%22%3A%221001464%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "dor_id": "1001464", "order_dop_info": { "kind_id": "0", "doc_num": "000098", "kredit": "1", "debet": "0", "barcode": "280000000001001464", "firm_id": "11", "doc_date": "24.05.2021", "date_out": "25.05.2021%2017:00:00", "current_sclad_id": "1", "status_id": "1", "photo_exist": "0", "discount": "20", "sclad_to": "1", "fast_exec_id": "0", "sclad_name": "%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9", "sclad_adr": "%D0%BF%D1%80-%D1%82%20%D0%9C%D0%B5%D1%82%D0%B0%D0%BB%D0%BB%D1%83%D1%80%D0%B3%D0%BE%D0%B2%2043-23", "sclad_hours": "", "discount_extrnl_id": "", "sclad_kredit_id": "1", "is_not_confirmed": "0", "waiting_confirm": "0" }, "order_services": [ { "dos_id": "100231018", "parent_id": "", "qty_kredit": "1", "kredit": "1", "name": "%D0%91%D0%B5%D1%80%D0%BC%D1%83%D0%B4%D1%8B", "status_id": "1", "unitname": "%D1%88%D1%82.", "serv_num": "1", "barcode_read": "%5B0%5D%2098%20(1)", "photo_exist": "0" } ], "order_payments": [ { "doc_id": "100156", "doc_type": "91", "kassa_debet": "0", "bank_debet": "0", "card_debet": "0", "bonus_debet": "1940", "deposit_debet": "0" } ], "order_comments": [], "order_plans": [], "order_signs": [] } где\\ //dor_id// - ID заказа;\\ **order_dop_info** – Массив доп. информация по заказу:\\ //kind_id// - тип заказа (0 - Заказ для химчистки, 1 - Заказ для прачечной, 2 - Продажа товаров, 3 - Выездной заказ, 5 - Заказ для клининга);\\ //doc_num// - номер заказа;\\ //kredit// – сумма заказа;\\ //debet// – сумма оплаты заказа;\\ //barcode// – штрих-код заказа;\\ //firm_id// – ID фирмы;\\ //doc_date// – дата заказа;\\ //date_out// – дата выдачи;\\ //current_sclad_id// – ID текущего склада;\\ //status_id// – статус заказа (1 - Новый, 2 - На хранении, 3 - В исполнении, 4 - Исполненный, 5 - Выданный, 6 - Закрытый, 7 - Отменённый);\\ //photo_exist// – заказ содержит фотографии (0 - нет фотографий, 1 - содержит фотографии);\\ //discount// – скидка по заказу;\\ //sclad_to// – ID склада приема;\\ //fast_exec_id// - ID срочности;\\ //sclad_name// – название склада;\\ //sclad_adr// – адрес склада;\\ //sclad_hours// – время работы склада;\\ //discount_extrnl_id// - ID ВДС;\\ //sclad_kredit_id// - ID склада приема;\\ //waiting_confirm// – признак подтверждения заказа от клиента (0 - не требует подтверждения, по умолчанию; 1- требует подтверждения от клиента; 2 – клиент согласился, подтвержден; 3 - клиент НЕ согласился, отменен);\\ //is_not_confirmed// - признак подтверждения сотрудником химчистки (0 - если сотрудник химчистки уже подтвердил заказ или мы не ждем подтверждения от него, по умолчанию; 1 - если сотрудник химчистки еще не подтвердил заказа, но мы ждем это);\\ **order_services** – массив услуг в заказе(ID услуги, кол-во конкретной услуги, стоимость конкретной услуги, наименование услуги, статус услуги, ед. измерения услуги);\\ //dos_id// - ID услуги;\\ //parent_id// - ID родительской услуги;\\ //qty_kredit// - количество;\\ //kredit// - сумма услуги;\\ //name// - наименование услуги;\\ //status_id// - статус услуги;\\ //unitname// - наименование единицы измерения;\\ //serv_num// - номер услуги;\\ //barcode_read// - бирка услуги\\ //photo_exist// - услуга содержит фотографии (0 - нет фотографий, 1 - содержит фотографии);\\ **order_payments** - массив оплат:\\ //doc_id// - ID документа оплаты;\\ //doc_type// - тип документа оплаты (3 - Кассовый документ (без фискализации), 4 - Банковский документ, 9 - Оплата банковской картой, 31 - Кассовый чек оплата покупателем (с фискализацией), 32 - Кассовый чек возврат денег покупателю (с фискализацией), 91 - Бонус, 92 - Оплата депозитом);\\ //kassa_debet// - сумма оплаты кассового документа;\\ //bank_debet// - сумма оплаты банковского документа;\\ //card_debet// - сумма оплаты банковской картой;\\ //bonus_debet// - сумма оплаты бонусом;\\ //deposit_debet// - сумма оплаты депозитом;\\ **order_comments** – массив комментариев услуг в заказа:\\ //id// - ID комментария;\\ //descript// - комментарий;\\ **order_plans** – массив выездов по заказу; Только в статусах 0 - новый, 3 - Принял, 4 - В пути\\ //id// - ID выезда;\\ //tp// - тип выезда;\\ //dt// - дата выезда;\\ //hr// - час выезда;\\ //mn// - минуты выезда;\\ //to_hr// - час до которого длится выезд;\\ //to_mn// - минуты до которого длится выезда;\\ //address// - адрес выезда;\\ //comment// - комментарий;\\ //sclad_id// - ID склада выезда;\\ //mp_status_id// - ID статус выезда (0 - новый, 3 - Принял, 4 - В пути);\\ **order_signs** – массив подписанных квитанций по заказу(вн. номер подписанной квитанции, дата подписания, название квитанции):\\ //id// - ID подписанной квитанции;\\ //dttm// - дата подписанной квитанции;\\ //name// - наименование квитанции. ---- ===== Краткая информация по услугам заказа. Services ===== **Команда**: Services Запрос краткой информации по услугам заказа Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Services={"dor_id":"1"}&SessionID=...%% Строка запроса: .../api/?Services=%7B%22dor_id%22%3A%221001464%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //info// - дополнительная информация по услуге, **обязательный параметр**. Принимает значения 0 и 1;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "order_servises": [ { "dos_id": "100231286", "tov_id": "10018", "service": "%D0%91%D0%B5%D1%80%D0%BC%D1%83%D0%B4%D1%8B", "status_id": "1", "unit_name": "%D1%88%D1%82.", "serv_num": "1", "parent_id": "", "kredit": "880", "ext_info": "", "qty_kredit": "1" } ] } где\\ **order_servises** - массив услуг заказа:\\ //dos_id// – ID услуги;\\ //tov_id// – ID товара;\\ //service// – название услуги;\\ //status_id// - статус услуги;\\ //unit_name// - единица измерения;\\ //serv_num// – последовательный номер услуги;\\ //parent_id// – ID родительской услуги;\\ //kredit// – стоимость услуги;\\ //ext_info// – дополнительное описание;\\ //qty_kredit// – количество услуги. ---- ===== Полная информация по услугам заказа. FullService ===== **Команда**: FullService Получение полной информации по услугам заказа. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%FullService={"dor_id":"1"}&SessionID=...%% Строка запроса: .../api/?FullService=%7B%22dor_id%22%3A%221001464%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "order_services": [ { "dos_id": "100231286", "parent_id": "", "tov_id": "10018", "service": "%D0%91%D0%B5%D1%80%D0%BC%D1%83%D0%B4%D1%8B", "code": "01.18", "status_id": "1", "status_name": "%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9", "serv_num": "1", "barcode": "272100000002241001", "price": "880", "qty": "1", "kfx": "1", "discount": "12", "nursery_id": "0", "nurseries_name": "%D0%9D%D0%B5%20%D0%B4%D0%B5%D1%82%D1%81%D0%BA%D0%B0%D1%8F", "nurseries_discount": "0", "serv_weight": "1", "dirty_id": "0", "dirty_name": "%D0%9E%D0%B1%D1%89%D0%B5%D0%B5", "dirty_kfx": "1", "kredit": "880", "ext_info": "", "shop_description": "", "group_tov": "1.%20%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D1%82%D1%80%D0%B8%D0%BA%D0%BE%D1%82%D0%B0%D0%B6%D0%BD%D0%B0%D1%8F%20%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0", "discount_type": "10", "addons": [] } ] } где\\ **order_services** - массив услуг заказа:\\ //dos_id// – ID услуги;\\ //parent_id// – ID родительской услуги;\\ //tov_id// – ID услуги;\\ //service// – название услуги;\\ //code// – артикул;\\ //status_id// – ID статус;\\ //status_name// – название статуса;\\ //serv_num// – последовательный номер услуги;\\ //barcode// – штрих код;\\ //price// – цена из прайс листа;\\ //qty// – количество;\\ //kfx// – коэффициент;\\ //discount// – скидка;\\ //nursery_id// – ID детской наценки;\\ //nurseries_name// – наименование детской наценки;\\ //nurseries_discount// – скидка детской наценки;\\ //serv_weight// – ширина;\\ //dirty_id// – ID наценки за загрязнение;\\ //dirty_name// – название наценки за загрязнение;\\ //dirty_kfx// – коэффициент наценки за загрязнение;\\ //kredit// – сумма услуги;\\ //ext_info// - описание;\\ //shop_description// – описание склада;\\ **addons** – массива дополнительных реквизитов услуги;\\ //id// – ID дополнительного реквизита;\\ //descr// – наименование;\\ //value_type// – тип реквизита;\\ //aos_id// – ID значения реквизита;\\ //aos_value// – значение реквизита. ---- ===== Квитанция. ReceiptOnline ===== **Команда:** %%ReceiptOnline%% Получение квитанции по заказу. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%ReceiptOnline={"dor_id":"12345", "typeExport": "png"}&SessionID=%% Строка запроса: .../api/?ReceiptOnline=%7B%22dor_id%22:%2212345%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //typeExport// – тип формата файла, **pdf (по умолчанию)**, png, svg, **не обязательный параметр**;\\ //sign// – если указан, то при наличии квитанции с подписью, вернется квитанция в формате svg (работает только в паре с параметром typeExport=svg);\\ //SessionID// - ID сессии, обязательный параметр. В зависимости от typeExport будет содержать определенный документ с соответствующим Content-Type.\\ Для typeExport=pdf, Content-Type=application/pdf;\\ typeExport=png, Content-Type=image/png;\\ typeExport=svg, Content-Type=image/svg+xml. В ответ возвращаются двоичные данные ---- ===== Квитанция. Receipt ===== **Команда:** %%Receipt%% Получение квитанции по заказу. **Устаревший вариант, больше не поддерживается.** Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Receipt={"dor_id":"12345", "typeExport": "png"}%% Строка запроса: .../api/?Receipt=%7B%22dor_id%22:%2212345%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //typeExport// – тип формата файла, **pdf (по умолчанию)**, png, svg, **не обязательный параметр**;\\ //SessionID// - ID сессии, обязательный параметр. Ответ **json**: { "error": 0, "png": "EB831E9B-472E-4D30-9AAF-20296E6D0017", "dor_id": "12345" } Где\\ //png// – имя документа png. Стандартный путь открытия квитанции:\\ %%https://www.himinfo.ru/upload_files/EB831E9B-472E-4D30-9AAF-20296E6D0017.pdf%% ---- ===== Подписанная квитанция. SingReceipt ===== **Команда:** %%SignReceipt%% Получение подписанной квитанции по заказу Метод отправки: **GET** Формат запроса: %%SignReceipt={"id":"12345"}&SessionID=%% Строка запроса: .../api/?SignReceipt=%7B%22id%22:%2212345%22%7D&SessionID=... где\\ //id// – ID подписанной квитанции, **обязательный параметр**. Можно получить из команды **FullOrderInfo**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ будет содержать документ с соответствующим **Content-Type**: //**image/svg+xml**// ---- ===== Список фотографий по заказу. OrderImagesModern ===== **Команда:** %%OrderImagesModern%% Команда получения списка всех картинок по заказу, **использовать с параметром only_photo_id=1**. Для получения самой фотографии, используется команда [[api#фотографии_по_заказу_photoonline|PhotoOnline]]. Метод отправки: **GET** Формат запроса: %%OrderImagesModern={"dor_id":"12345"}&SessionID=%% Строка запроса: .../api/?OrderImagesModern=%7B%22dor_id%22:%2212345%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //only_photo_id// - в ответе будет список без картинок (0 - с фотографиями, 1 - без фотографий, **обязательный параметр**;\\ //SessionID// - ID клиентской или пользовательской сессии, **обязательный параметр**. Ответ **json**: { "error":0, "photos":[ { "dos_id": "100229859", "photo_id": "1004", "img": "R0lGODlhEgAMAOZaACtTezxtnyBEaI2t0lNzlVZ1lzZbgpSz1zJYgJOx1lJ+rS1VfT5ih0p4qIipz1Bwk1Fxkz9voYanzoKkyyxUfFRzlWOLt0BxokdpjTFYfy9WfpCv1GuSvXSZw0Jlik5ukUVojFV0lkRzpEFxonGXwUx6qVZ1lkNzo0l3p46t01qFsn6hyFmEsjhdhDZcgj9jiFSAro+u0zhqnSpSeoeozmKLtzNZgExtkD1unzhdg3GXwFN/rVZ0llN/rl+JtWSNuUlrjn+iykxtkS5WfZKx1jZcg5Kx1Xufx5Kw1TprnVaBr3mdxUh3pzxhhjlehUpsj2OMuFeCsD5iiDdcgylRejpfhSZPeDNmmZWz11d2l////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjQyQjc1OThCRUJEMTFFNUFDRkVGNDdBMzUyNUUwMjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjQyQjc1OTlCRUJEMTFFNUFDRkVGNDdBMzUyNUUwMjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NDJCNzU5NkJFQkQxMUU1QUNGRUY0N0EzNTI1RTAyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2NDJCNzU5N0JFQkQxMUU1QUNGRUY0N0EzNTI1RTAyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAXSAFoALAAAAAASAAwAAAd6gFZXg4SFhleCATpYjI2OjCQBgxIXUI+PPxcSg1gDKEpElwlRTANYnFhGMA0pjjElO0iMqIw1IzSMDic+B420WB09AStBOAodjqgHFhETR0kySxMRFr2nV1gbCg2mjwMNChvXDiIqCZeMCSwiDoMBHOiPHJKCh/aDVoEAIfkEBTwAWgAsAAAAABIADAAAB3eAAlaDhIWGVoIAIFmMjY6MIACDDwtSj48vCw+DWQQZOQWXBS0ZBFmcWSZTCBWOFTYuPIyojAyajBBDTY60WRhFADdCAAYYvFaNDBQfTzNUQB8UDI2cIQYIpo8ECAYhp1YQGlWhl1kFThoQgwAe5Y8ekoKH84MCgQA7" } ] } где\\ **photos** – массив объектов картинок:\\ //dos_id// - ID услуги;\\ //photo_id// - ID фотографии;\\ //img// – фотография услуги в строке Base64, **устаревший параметр**. ---- ===== Фотографии по заказу. PhotoOnline ===== **Команда:** %%PhotoOnline%% Команда получения фотографии по заказу Метод отправки: **GET** Формат запроса: %%PhotoOnline={"photo_id":"12345","dos_id":"1234567"}&SessionID=%% Строка запроса: .../api/?PhotoOnline=%7B%22photo_id%22:%2212345%22,%22dos_id%22:%221234567%22%7D&SessionID=... где\\ //photo_id// - ID фото из услуги, **обязательный параметр**;\\ //dos_id// - ID услуги из заказа, **обязательный параметр**;\\ //SessionID// - сессия, **обязательный параметр**. В ответ вернется картинка с типом заголовка: //Content-Type: image/png// ---- ===== Оплата депозитом. DepositPay ===== **Команда:** %%DepositPay%% Оплата заказа депозитом. Метод отправки: **GET** Формат запроса: %%DepositPay={"dor_id":"123","amount":"12"}&SessionID=%% Строка запроса: .../api/?DepositPay=%7B%22dor_id%22%3A%221001490%22,%22amount%22%3A%2212%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //amount// - сумма депозита, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%BE%D0%BF%D0%BB%D0%B0%D1%87%D0%B5%D0%BD" } ---- ===== Оплата бонусом. BonusPay ===== **Команда:** %%BonusPay%% Оплата заказа бонусом. Метод отправки: **GET** Формат запроса: %%BonusPay={"dor_id":"123","amount":"12"}&SessionID=%% Строка запроса: .../api/?BonusPay=%7B%22dor_id%22%3A%221001490%22,%22amount%22%3A%2212%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //amount// - сумма бонуса, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%BE%D0%BF%D0%BB%D0%B0%D1%87%D0%B5%D0%BD" } ---- ===== Статистика входа в ЛК. Entry ===== **Команда:** %%Entry%% Статистика входа в ЛК. Метод отправки: **GET** Формат запроса: %%Entry={"type":"1"}&SessionID=%% Строка запроса: .../api/?Orders=%7B%22type%22%3A%221%22%7D&SessionID=... где\\ //type// - тип входа в ЛК. 0 - при регистрации, 1 - при авторизации. **Обязательный параметр**\\ Ответ **json**: {"error":0} ---- ===== Статистика заходов в ЛК. EntranceSite ===== **Команда:** %%EntranceSite %% Статистика заходов в ЛК (Обновление страницы/вход по сохранной сессии, без авторизации). Метод отправки: **GET** Формат запроса: %%EntranceSite&SessionID=%% Строка запроса: .../api/?EntranceSite&SessionID=... Ответ **json**: {"error":0} ---- ===== Статистика открытия заказа в ЛК. OpenOrders ===== **Команда:** %%OpenOrders%% Статистика открытия заказа в ЛК (получение информации по заказу). Метод отправки: **GET** Формат запроса: %%OpenOrders=&SessionID=%% Строка запроса: .../api/?OpenOrders&SessionID=... Ответ **json**: {"error":0} ---- ===== Статистика открытия истории в ЛК. OpenHistory ===== **Команда:** %%OpenHistory%% Статистика открытия истории в ЛК (получение информации по заказу). Метод отправки: **GET** Формат запроса: %%OpenHistory&SessionID=%% Строка запроса: .../api/?OpenHistory&SessionID=... Ответ **json**: {"error":0} ---- ===== Дополнительные реквизиты. AddonTypes ===== **Команда:** %%AddonTypes%% Получение доп. реквизитов. Метод отправки: **GET** Формат запроса: %%AddonTypes%% Строка запроса: .../api/?AddonTypes Ответ **json**: { "error":0, "addon_types":[ { "id":"90", "group_id":"1", "table_name":"DOC_ORDER_SERVICES", "descr":"%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F%20(%D1%80%D1%83%D1%87%D0%BD%D0%B0%D1%8F)%20%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0", "value_type":"2", "default_int":"", "default_str":"", "default_bool":"0", "default_date":"", "default_flt":"", "is_default_need":"1", "if_null_message":"", "print_if_empty":"0", "change_price":"2", "num":"1,5", "is_combo":"0", "fullcol":"0", "multisel":"0", "font_color":"", "font_bold":"", "multipl":"", "hide_item_groups":"", "auto_item_groups":"", "auto_maximize":"", "not_manual_editing":"", "change_pr_serv":"", "dont_disc_value":"", "chang_value":"", "affect_user":"", "show_display":"", "show_difaddon":"", "specify_wp":"", "comments":"", "only_manager":"", "addon_str_values":[ ] }, ... ], ... } где\\ **addon_types** - Массив объектов доп. реквизитов:\\ //id// - ID доп. реквизита;\\ //group_id//- ID группы доп. реквизита (1 - Описание изделия, 2 - Дефекты изделия, 3 - Дефекты сырья, 4 - Предупреждения, 5 - Иные дефекты);\\ //descr// - наименование доп. реквизита;\\ //value_type// - тип доп. реквизита (0 - целое, 1 - строка, 2 - логическое, 3 - дата, 5 - вещественное, 6 - метка, 7 - строковые с ценой и количеством, 8 - Строковые с коэффициентом, 9 - Фигура);\\ //default_int// - числовое значение по умолчанию (при value_type = 0);\\ //default_str// - сроковое значение по умолчанию (при value_type = 1);\\ //default_bool// - логическое значение по умолчанию (при value_type = 2);\\ //default_date// - дата по умолчанию (при value_type = 3);\\ //default_flt// - вещественное значение по умолчанию (при value_type = 5);\\ //comments// - комментарий;\\ //font_color// - цвет текста;\\ //font_bold// - жирный шрифт;\\ //specify_wp// - реквизит для уточнения на рабочем месте;\\ **addon_str_values** - Массив для выбора строк у доп. реквизита:\\ //id// - ID строки;\\ //value_str// - строковое описание;\\ //value_flt// - числовое значение. ---- ===== Комплекты доп. реквизитов. AddonPacks ===== **Команда:** %%AddonPacks%% Получение комплектов доп. реквизитов. Метод отправки: **GET** Формат запроса: %%AddonPacks%% Строка запроса: .../api/?AddonPacks Ответ **json**: { "error":0, "addon_packs":[ { "id":"60", "name":"16.%20%D0%9C%D0%B5%D0%BB%D0%BA%D0%B8%D0%B9%20%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82%20%D1%88%D0%B2%D0%B5%D0%B9%D0%BD%D1%8B%D1%85%20%D0%B8%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D0%B9", "addon_types":[ 2, 109, 181, 225, 226, 227, 228 ] }, ... ], ... } где\\ **addon_packs** - массив объектов комплектов:\\ //id// - ID комплекта;\\ //name// - наименование комплекта;\\ **addon_types** - Массив ID доп. реквизитов, входящих в комплект, из команды **AddonTypes**. ---- ===== Прайс-лист. PriceList ===== **Команда:** %%PriceList%% Получение прайс-листа. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%PriceList={"price_id":"12"}%% Строка запроса: .../api/?PriceList=%7B%22price_id%22:%2212%22%7D где\\ //price_id// – ID прайс-листа, **необязательный параметр**. Если не указан, то по умолчанию выдается розничный прайс-лист;\\ //tovar_type// - тип отображаемой позиции, **необязательный параметр** (0 - все товары и услуги, 1 - только товары, 2 - только услуги). Ответ **json**: { "error": 0, "price_list":[ { "id": "1", "folder_id": "10026", "tovar_type": "2", "code": "0", "name": "%D0%91%D0%BB%D1%83%D0%B7%D0%BA%D0%B0", "unit": "1%20%D1%88%D1%82", "price": "132,69", "group_p": "%D0%A0%D1%83%D0%B1%D0%B0%D1%88%D0%BA%D0%B8", "top_parent":"%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%B8%D0%BB%D1%8C", "order_addon_pack_id": "5", "is_price_editable": "1", "is_not_for_discount": "0", "is_repair": "0", "is_percent_price": "0", "additional_text": "", "short_name": "", "index": "", "image_id": "0", "price_id": "0" } ] } где\\ **price_list** - содержит строки прайс-листа:\\ //id// – ID услуги/товара в прайс листе;\\ //folder_id// – ID группы услуги/товара;\\ //tovar_type// - тип позиции (1 - товары, 2 - услуги);\\ //code// – артикул;\\ //name// – наименование услуги;\\ //unit// – единица измерения;\\ //price// – цена;\\ //group_c// – группа, где лежит услуга;\\ //group_p// – родительская группа, группы услуги;\\ //top_parent// – верхняя группа;\\ //order_addon_pack_id// – номер комплекта доп. реквизитов;\\ //price_id// - ID прайс-листа;\\ //is_price_editable// - признак цена редактируемая в заказе;\\ //is_not_for_discount// - признак не распространять скидки;\\ //is_repair// - признак ремонт;\\ //is_percent_price// - рассчитывать цену как процент от другой услуги;\\ //additional_text// - дополнительная информация;\\ //short_name// - краткое наименование;\\ //image_id// - ID картинки услуги;\\ //index// - индекс. ---- ===== Группы прайс-листа. PriceTree ===== **Команда:** %%PriceTree%% Группы прайс-листа. Метод отправки: **GET.** Заголовок запроса (Header): не требуется. Формат запроса: %%PriceTree={"id":"12"}%% Строка запроса: .../api/?PriceTree=%7B%22id%22:%2212%22%7D где\\ //id// – ID прайс-листа, **обязательный параметр**. Ответ **json**: { "error": 0, "error":0, "price":[ { "folder_id":"10025", "parent":"10024", "name":"1.+%D0%9A%D0%BE%D0%B6%D0%B0+(%D0%BF%D0%BE%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0)", "comm":"", "sort_index":"" } ] } Где\\ **price** - содержит строки группы прайс листа:\\ //folder_id// – ID группы;\\ //parent// – ID родительской группы;\\ //name// – название группы;\\ //comm// – комментарий. ---- ===== Склады. ReceptionCenters ===== **Команда:** %%ReceptionCenters%% Получение списка складов (приёмные пункты). Метод отправки: **GET** Формат запроса: %%ReceptionCenters={"with_photo":"1","folders":"1,2,3","lang_id":"0"}%% Строка запроса: .../api/?ReceptionCenters=%7B%22with_photo%22%3A%221%22%2C%22folders%22%3A%221%2C2%2C3%22%2C%22lang_id%22%3A%220%22%7D где\\ //with_photo// - признак получать список приемных пунктов с фото (не обязательный); \\ //folders// - список групп приёмных пунктов (не обязательный);\\ //lang_id// - язык перевода (не обязательный);\\ Ответ **json**: { "error":0, "list":[ { "id":"1", "name":"%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9", "address":"%D0%BF%D1%80-%D1%82%20%D0%9C%D0%B5%D1%82%D0%B0%D0%BB%D0%BB%D1%83%D1%80%D0%B3%D0%BE%D0%B2%2043-23", "working_hours":"", "phone":"999-999-999-999", "group":"%D0%92%D0%BD%D0%B5%20%D0%B3%D1%80%D1%83%D0%BF%D0%BF", "location":"53.764419,87.117967", "cabinet": "0", "folder_id":"1" "name_for_clients": "%D0%A5%D0%B8%D0%BC%201", "use_himinfo": "1", "city": "%D0%9D%D0%BE%D0%B2%D0%BE%D0%BA%D1%83%D0%B7%D0%BD%D0%B5%D1%86%D0%BA", "comment": "", "metro": "", "district_id":"1002", "working_days": "1%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C2%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C3%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C4%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C5%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C6%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-%7C%7C%7C7%7C%7C1%7C%7C-%7C%7C-%7C%7C-%7C%7C-", "is_work_shop": "0", "sclad_is_mobil": "0", "sclad_not_automated": "0", "photo": "" }, ... ], ... } где\\ **list** - массив объектов складов:\\ //id// - ID склада;\\ //name// - наименование склада;\\ //address// - адрес склада;\\ //working_hours// - время работы;\\ //phone// - телефон склада;\\ //group// - группа склада;\\ //location// - геолокация, если вкл. определение геолокации;\\ //cabinet// - признак склад Чистомат;\\ //folder_id// - ID группы склада;\\ //name_for_clients// - название склада для ХимИнфо;\\ //use_himinfo// - признак отображения склада на Химинфо, значение 0 или 1;\\ //city// - город склада;\\ //comment// - комментарий по складу;\\ //metro// - ближайшее метро до склада;\\ //district_id// - номер района;\\ //working_days// - рабочие дни склада;\\ //is_work_shop// - признак склад является цехом;\\ //sclad_is_mobil// - признак мобильный приемный пункт;\\ //sclad_not_automated// - признак неавтоматизированный приемный пункт;\\ //photo// - фото склада в строке base64. ---- ===== Регионы (районы). Regions ===== **Команда:** %%Regions%% Получение списка регионов. Метод отправки: **GET.** Заголовок запроса (Header): не требуется. Формат запроса: %%Regions%% Строка запроса: .../api/?Regions Ответ **json**: { "error":0, "regions":[ { "id":"1002", "name":"test" }, ... ] } где\\ **regions** - массив объектов регионов:\\ //id// – ID региона;\\ //name// – наименование региона. ---- ===== Список выездов. Trips ===== **Команда:** %%Trips%% Получение списка выездов. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Trips={"date":"01.01.2020"}&SessionID=%% Строка запроса: .../api/?Trips=%7B%22date%22%3A%2201.01.2020%22%7D&SessionID=... где\\ //date// – дата, за которую отобразить данные, **обязательный параметр**;\\ //id// – ID региона, **необязательный параметр**;\\ //detail// - отображать выезды с детальной информацией, **необязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "trips": [ { "hour": "00", "engaged": "0" }, { "hour": "01", "engaged": "0" }, { "hour": "02", "engaged": "0" }, { "hour": "03", "engaged": "1" } ] } где\\ //hour// – час;\\ //engaged// – признак занятости часа(1 – занято, 0 – свободно). Получение детальных выездов на день: Формат запроса: %%Trips={"date":"01.01.2020","detail":"1"}&SessionID=%% Строка запроса: .../api/?Trips=%7B%22date%22%3A%2201.01.2020%22%2C%22detail%22%3A%221%22%7D&SessionID=... Ответ **json**: { "error": 0, "trips": [ { "id": "10090", "dt": "22.04.2021", "hr": "7", "mn": "0", "to_hr": "8", "to_mn": "0", "tp": "1", "contr_id": "100484065", "contr_name": "%D0%9A%D0%BE%D1%87%D0%B5%D1%82%D0%BE%D0%B2%20%D0%90%D0%BD%D0%B0%D1%82%D0%BE%D0%BB%D0%B8%D0%B9", "contr_tel": "%2B79505840311", "contr_adr": "", "dor_id": "1001448", "scl_name": "%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BA%D0%BB%D0%B0%D0%B4", "sclad_plan_name": "", "mp_status": "0", "car_scl_id": "10010", "comment": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%B8%D0%B7%20%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D1%83%D1%80%D1%8C%D0%B5%D1%80%D0%B0", "address": "", "region_id": "", "region_name": "", "doc_num": "000082", "dolg": "850", "dor_status_id": "1", "dor_status_name": "%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9", "kredit": "850", "debet": "0", "contr_fio_text": "", "contr_tel_text": "", "house": "", "room": "", "level": "", "stamp_num": "" }, ... ] } где\\ //id// - ID выезда;\\ //dt// - дата выезда;\\ //hr// и mn - час и минута начала выезда;\\ //to_hr// и //to_mn// - час и минута окончания выезда;\\ //tp// - тип выезда (0 - забрать, 1 - доставить);\\ //contr_id// – связанный ID клиента по бд;\\ //contr_tel// - связанный телефон клиента по бд;\\ //contr_adr// - связанный адрес клиента по бд;\\ //doc_num// - номер заказа, если выезд по заказу;\\ //dor_id// - ID заказа, если выезд по заказу;\\ //scl_name// - мобильный склад (узнать список можно через команду Cars);\\ //car_scl_id// – ID мобильного склада;\\ //sclad_plan_name// - склад для выезда, если выезд по складу;\\ //mp_status// - статус выезда (0 - новый, 1 – совершен, 2 - отменён);\\ //contr_fio_text// – имя клиента, указанное при заполнении выезда;\\ //contr_tel_text// – телефон клиента, указанный при заполнении выезда;\\ //region_name// – название региона;\\ //region_id// – ID региона (команда Regions).\\ //user_id// - ID экспедитора;\\ //user_name// - Название экспедитора;\\ ---- ===== Информация по выезду. Trip ===== **Команда:** %%Trip%% Получение информации по выезду. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Trip={"id":"1234"}&SessionID=%% Строка запроса: .../api/?Trip=%7B%22id%22%3A%221234%22%7D&SessionID=... где\\ //id// - ID выезда. Ответ **json**: { "error": 0, "id": "10090", "tp": "2", "dt": "22.04.2021", "hr": "7", "sclad_id": "10010", "address": "", "comment": "", "sclad_plan_to": "", "kind_id": "1", "contr_id": "", "control_user_id": "", "region_id": "", "mn": "", "to_hr": "8", "to_mn": "", "house": "", "room": "", "level_room": "", "geo_location": "", "entrance": "", "intercom": "", "contr_address_id": "", "messages": [ { "mess_id": "10085", "parent_id": "", "user_id": "", "message_type_id": "7", "barcode": "45893254", "dttm": "24.12.2019%2018:05:53", "comm": "", "contr_id": "10013", "sclad_id": "10010", "firm_id": "", "warn_group_id": "", "count_things": "", "sms_tel": "", "dor_id": "1001091" } ], "orders": [ { "dor_id": "1001448", "debet": "0", "kredit": "850", "date_out": "22.04.2021%2017:00:00", "kind_id": "3", "order_num": "", "status_id": "1", "sclad_kredit_id": "10010", "message_id": "", "doc_num": "000082", "contragent_id": "100484065", "firm_id": "11" } ] } где\\ //id// - ID выезда;\\ //tp// - тип выезда (0 - забрать, 1 - доставить);\\ //dt// - дата выезда;\\ //hr// и //mn// - час и минута начала выезда;\\ //to_hr// и //to_mn// - час и минута окончания выезда;\\ //sclad_id// – ID мобильного склада;\\ //address// - адрес выезда;\\ //comment// - комментарий к выезду;\\ //sclad_plan_to// – ID склада для выезда;\\ //kind_id// - тип выезда (1 - Выезд по заказу, 2 - выезд по клиенту, 3 - выезд по складу);\\ //contr_id// – ID клиента;\\ //control_user_id// - ID диспетчера;\\ //region_id// – ID региона (команда Regions);\\ //house// - дом;\\ //room// - квартира;\\ //level_room// - этаж;\\ //geo_location// - координаты;\\ //entrance// - подъезд;\\ //intercom// - домофон;\\ //contr_address_id// - ID адреса клиента;\\ **messages** - информация по мешкам у выезда, массив объектов:\\ //mess_id// - ID мешка;\\ //user_id// - ID пользователя;\\ //message_type_id// - тип сообщения (7 - мешок);\\ //barcode// - номер мешка;\\ //dttm// - дата принятия мешка;\\ //comm// - комментарий;\\ //contr_id// - ID клиента;\\ //sclad_id// - ID склада;\\ //firm_id// - ID фирмы;\\ //warn_group_id// - группа предупреждения;\\ //count_things// - количество вещей;\\ //sms_tel// - телефон клиента из заказа;\\ //dor_id// - ID заказа;\\ **orders** - список заказов, массив объектов:\\ //dor_id// - ID заказа;\\ //kredit// - сумма заказа;\\ //debet// - оплачено;\\ //date_out// - дата выдачи;\\ //kind_id// – тип заказа (0 – заказ химчистки, 1- прачечный заказ, 2 – продажа товаров, 4 – выездной заказ);\\ //order_num// - номер БСО;\\ //status_id// – ID статуса заказа (1 – новый, 3 – в исполнении, 4 – исполненный, 5 - выданный);\\ //sclad_kredit_id// - ID склад приема заказа;\\ //message_id// - ID сообщения, на основе которого создан заказ;\\ //doc_num// - номер заказа;\\ //contragent_id// - ID клиента;\\ //firm_id// - ID фирмы. ---- ===== Свободное время начала выезда на дату. TripsHr ===== **Команда:** %%TripsHr%% Свободное время начала выезда на дату. Для задания корректного времени параметра hr для команды TripOrder. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%TripsHr={"date": "01.01.2020", "car_id": "2", "id": "123"}%% Строка запроса: .../api/?TripsHr=%7B%22date%22%3A%2201.01.2020%22%2C%22car_id%22%3A%222%22%2C%22id%22%3A%22123%22%7D где\\ //date// – дата, на которую создается резерв (формат 21.12.2020), **обязательный параметр**;\\ //id// – ID выезда (команда Trips), **необязательный параметр**. Указывается при редактировании выезда;\\ //region_id// – ID региона, **необязательный параметр**. С учетом по региону;\\ //car_id// – мобильный склад, **необязательный параметр**. С учетом по мобильному складу. Ответ **json**: { "error": 0, "hr": [ "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00", "12:00", "13:00", "14:00", "15:00", "16:00", "18:00", "19:00", "22:00", "23:00" ] } где\\ **hr** - массив строк не занятым временем выезда. ---- ===== Свободное время окончания выезда на дату. TripsHrTo ===== **Команда:** %%TripsHrTo%% Свободное время окончания выезда на дату. Для задания корректного времени параметра hr_to для команды TripOrder. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%TripsHrTo={"date": "01.01.2020", "hr_to": "12:00", "car_id": "2", "id": "123"}%% Строка запроса: .../api/?TripsHrTo=%7B%22date%22%3A%2201.01.2020%22%2C%22hr_to%22%3A%2212%3A00%22%2C%22car_id%22%3A%222%22%2C%22id%22%3A%22123%22%7D где\\ //date// – дата, на которую создается резерв (формат 21.12.2020), **обязательный параметр**;\\ //hr_to// – предполагаемое время окончания (Формат – "10:00", "07:00"), **обязательный параметр**;\\ //id// – ID выезда (команда Trips), **необязательный параметр**. Указывается при редактировании выезда;\\ //region_id// – ID региона, **необязательный параметр**. С учетом по региону;\\ //car_id// – мобильный склад, **необязательный параметр**. С учетом по мобильному складу. Ответ **json**: { "error": 0, "hr_to": [ "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00", "23:59" ] } где\\ **hr_to** - массив строк не занятым временем окончания выезда. ---- ===== Список выездных машин. Cars ===== **Команда:** %%Cars%% Список выездных машин (выездные ПП) Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Cars%% Строка запроса: .../api/?Cars Ответ **json**: { "error": 0, "cars": [ { "id": "10010", "name": "%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BA%D0%BB%D0%B0%D0%B4", "address": "", "phone": "", "price_list_id": "" } ] } где\\ **cars** - массив складов/пп:\\ id – ID склада/пп;\\ name – название склада/пп;\\ address - адрес склада/пп;\\ phone - телефон склада/пп;\\ price_list_id - ID прайс листа склада/пп. ---- ===== Создание выезда. TripOrder ===== **Команда:** %%TripOrder%% Создание выезда в назначенное время.\\ Можно создать 5 выездов в день. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%TripOrder={"tp": "1", "date": "07.07.2020", "hr": "11:00", "hr_to": "12:00", "address": "тест", "region_id": "1", "car_id": "2", "comment": "тест", "fio": "Тест", "tel": "+79876543210", "mp_status": "1"}&SessionID=%% Строка запроса: .../api/?TripOrder=%7B%22tp%22%3A%20%221%22%2C%20%22date%22%3A%20%2207.07.2020%22%2C%20%22hr%22%3A%20%2211%3A00%22%2C%20%22hr_to%22%3A%20%2212%3A00%22%2C%20%22address%22%3A%20%22%D1%82%D0%B5%D1%81%D1%82%22%2C%20%22region_id%22%3A%20%221%22%2C%20%22car_id%22%3A%20%222%22%2C%20%22comment%22%3A%20%22%D1%82%D0%B5%D1%81%D1%82%22%2C%20%22fio%22%3A%20%22%D0%A2%D0%B5%D1%81%D1%82%22%2C%20%22tel%22%3A%20%22%2B79876543210%22%2C%20%22mp_status%22%3A%20%221%22%7D&SessionID=... где\\ //id// - ID выезда, **необязательный параметр**. Задается для редактирования выезда (команда Trips);\\ //tp// - тип выезда (1 - забрать, 2 - доставить по умолчанию), **необязательный параметр**;\\ //contr_id// - ID клиента, **необязательный параметр**;\\ //date// – дата, на которую создается резерв (формат 21.12.2020), **обязательный параметр**;\\ //hr// – время, на которое создается резерв (формат "11:30"), **обязательный параметр**;\\ //hr_to// – время окончания выезда (формат "11:30"), **обязательный параметр**;\\ //address// – адрес выезда, если выезд по клиенту, **обязательный параметр**;\\ //region_id// – ID региона (из команды Regions), **необязательный параметр**;\\ //car_id// - ID мобильного склада, **обязательный параметр**;\\ //comment// – комментарий, **необязательный параметр**;\\ //tel// - телефон клиента, **обязательный параметр**;\\ //fio// - фио клиента, **необязательный параметр**;\\ //mp_status// - статус выезда (0 - новый, 1 – совершен, 2 – завершен), **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error":0, "Msg": "%D0%97%D0%B0%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE" } ---- ===== Создание выездного заказа(курьера). SaveOrder ===== **Команда:** %%SaveOrder%% Создание выездного заказа(курьера).\\ Данный выезд можно найти в программе химчистке в меню **Документы – Маркетинг – Сообщения**, тип сообщения выездной заказ.\\ Такое сообщение предварительно //вручную// обрабатывается приемщиком и на основе него создается заказ. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%SaveOrder={"zakaz_address_out": "1", "zakaz_address_in": "1", "zakaz_take_away_date": "12.03.2019", "zakaz_take_away_time": "12:23", "zakaz_get_date": "", "zakaz_get_time": "", "services": "1|2|2|||2|3|4|||2|2|1"}&SessionID=%% Строка запроса: .../api/?SaveOrder=%7B%22zakaz_address_out%22%3A%221%22%2C%22zakaz_address_in%22%3A%221%22%2C%22zakaz_take_away_date%22%3A%2212.03.2019%22%2C%22zakaz_take_away_time%22%3A%2212%3A23%22%2C%20%22zakaz_get_date%22%3A%22%22%2C%22zakaz_get_time%22%3A%22%22%2C%22services%22%3A%20%221%7C2%7C2%7C%7C%7C2%7C3%7C4%7C%7C%7C2%7C2%7C1%22%7D&SessionID=... где\\ //zakaz_address_out// – ID адрес забора вещей, **обязательный параметр**. Из команды AddressContr;\\ //zakaz_address_id// - ID адрес доставки вещей, **обязательный параметр**. Из команды AddressContr;\\ //zakaz_take_away_date// - дата забора вещей, **обязательный параметр**. Формат "21.06.2019";\\ //zakaz_take_away_time// - время забора вещей, **обязательный параметр**. Формат "11:20";\\ //zakaz_get_date// – дата доставки вещей, **не обязательный параметр**. Формат "21.06.2019";\\ //zakaz_get_time// – время доставки вещей, **не обязательный параметр**. Формат "11:20";\\ //services// - список ID услуг, **обязательный параметр**. Передаются в виде 1|2|2|||2|3|4|||2|2|1, разделитель "|||" разделяет услуги. "|" - внутренний разделитель. 1 цифра - ID товара, 2 цифра - ID прайс листа, 3 цифра - количество;\\ //com// - текст сообщения или комментарий для выездного заказа, **не обязательный параметр**;\\ //source// - любой текст, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%BF%D1%80%D0%B8%D0%BD%D1%8F%D1%82" } ---- ===== Промо-код. PromoCode ===== **Команда:** %%PromoCode%% Проверка промо-кода. Вернет список рабочих адресов для существующего промо-кода, если они указаны. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%PromoCode={"promo":"123"}%% где\\ //promo// - проверяемый промо-код. Строка запроса: .../api/?PromoCode=%7B%22promo%22%3A%22123%22%7D Ответ **json**: { "error": 0, "promo_code_id": "10021", "working_address": [ { "id": 1004, "promo_code_id": 10021, "address": "%D0%90%D0%B4%D1%80%D0%B5%D1%81%201" }, { "id": 1005, "promo_code_id": 10021, "address": "%D0%90%D0%B4%D1%80%D0%B5%D1%81%202" } ] } где\\ //id// – ID адреса промо-кода;\\ //promo_code_id// – ID промо-кода;\\ //address// – адрес промо-кода. ---- ===== Используемый промо-код. PromoCodeUse ===== **Команда:** %%PromoCodeUse%% Вернет используемый текущим клиентом промо-код. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%PromoCodeUse&SessionID=...%% Строка запроса: .../api/?PromoCodeUse&SessionID=... Ответ **json**: { "error": 0, "promo_code": "123", "discount_extrnl": "%D0%B1%D0%BE%D0%BD%D1%83%D1%81%20400", "discount": "0", "address": "" } где\\ //promo_code// – промо-код клиента;\\ //discount_extrnl// - наименование привязанной ВДС (внешней дисконтной схемы) к промо-коду;\\ //discount// - скидка ВДС;\\ //address// – выбранный адрес используемого промо-кода. ---- ===== Активация промо-кода. PromoCodeActivate ===== **Команда:** %%PromoCodeActivate %% Активирует промо-код клиенту. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%PromoCodeActivate={"PromoCode":"123", "dor_id":"12345"}&SessionID=...%% где\\ //PromoCode// - активируемый промо-код, **обязательный параметр**;\\ //dor_id// – ID заказа (для проверки кол-ва заказов клиента), **необязательный параметр**.\\ Строка запроса: .../api/?PromoCodeActivate=%7B%22PromoCode%22%3A%22123%22%7D&%7B%22dor_id%22%3A%2212345%22%7D&SessionID=... Ответ **json**: { "error": 0, "Msg": "%D0%9F%D1%80%D0%BE%D0%BC%D0%BE-%D0%BA%D0%BE%D0%B4%20%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD" } ---- ===== Список изменившихся ID заказов. LastChangeOrder ===== **Команда:** %%LastChangeOrder%% Получение списка изменившихся ID заказов. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%LastChangeOrder=&SessionID=%% Строка запроса: .../api/?LastChangeOrder&SessionID=... Ответ **json**: { "error": 0, "last_orders": [ { "dor_id": "123456", "status_id": "1", "contr_id": "123456789" "cur_sclad_id": "12333" }, { "dor_id": "258963", "status_id": "3", "contr_id": "1234567" "cur_sclad_id": "12334" }, ... ] } где\\ **last_orders** – массив изменившихся заказов:\\ //dor_id// – ID заказа;\\ //contr_id// – ID клиента;\\ //status_id// – статус заказа (1 – новый, 3 – в исполнении, 4 – исполненный, 5 - выданный);\\ //cur_sclad_id// – текущий ID склад заказа на момент изменения в заказе. ---- ===== Подтверждение заказа. OrderConfirm===== **Команда:** %%OrderConfirm%% Подтверждение клиентом заказа. **Устаревший вариант, больше не поддерживается.**\\ Обновленная команда **OrderAppConfirm**. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%OrderConfirm={"dor_id":"12345"}&SessionID=%% Строка запроса: .../api/?OrderConfirm=%7B%22dor_id%22%3A%2212345%22%7D&SessionID=... где\\ //dor_id// - ID заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**;\\ Ответ **json**: { "error": 0, "Msg": "%D0%9E%D0%BA" } где\\ //Msg// - сообщение. ---- ===== Подтверждение заказа. OrderAppConfirm===== **Команда:** %%OrderAppConfirm%% Подтверждение клиентом заказа. **Обновленная команда**. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%OrderAppConfirm={"dor_id":"12345"}&SessionID=%% Строка запроса: .../api/?OrderAppConfirm=%7B%22dor_id%22%3A%2212345%22%7D&SessionID=... где\\ //dor_id// - ID заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**;\\ Ответ **json**: { "error": 0, "Msg": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD" } где\\ //Msg// - сообщение. ---- ===== Отмена подтверждения заказа. CancelOrderApp===== **Команда:** %%CancelOrderApp%% Отмена подтверждение клиентом заказа. **Обновленная команда**. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%CancelOrderApp={"dor_id":"12345"}&SessionID=%% Строка запроса: .../api/?CancelOrderApp=%7B%22dor_id%22%3A%2212345%22%7D&SessionID=... где\\ //dor_id// - ID заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**;\\ Ответ **json**: { "error": 0, "Msg": "%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%20%D0%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%91%D0%BD" } где\\ //Msg// - сообщение. ---- ===== Статус заказа. GetStatusOrder ===== **Команда:** %%GetStatusOrder%% Поиск статуса заказа по номеру заказа. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%GetStatusOrder={"doc_num":"12345"}&SessionID=%% Строка запроса: .../api/?GetStatusOrder=%7B%22doc_num%22%3A%2212345%22%7D&SessionID=... где\\ //doc_num// – номер заказа, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "Msg": "%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9", "sclad_to": "123", "status_id": "4" } где\\ //Msg// – статус;\\ //sclad_to// – склад приема;\\ //status_id// – ID статуса. ---- ===== Отмена заказа. CancelOrder ===== **Команда:** %%CancelOrder%% Перевод статуса заказа в отменённый. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%CancelOrder={"dor_id ":"12345"}&SessionID=%% Строка запроса: .../api/?CancelOrder=%7B%22dor_id %22%3A%2212345%22%7D&SessionID=... где\\ //dor_id// – ID заказа, **обязательный параметр**;\\ //comment// - комментарий, **необязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: {"error": 0} ---- ===== Темы обсуждений клиента. TitleMessages ===== **Команда:** %%TitleMessages%% Запрос списка тем обсуждений (переписки) по клиенту. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%TitleMessages&SessionID=%% Строка запроса: .../api/?TitleMessages&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "Messages": [ { "id": "1001", "dor_id": "", "doc_num": "", "dttm": "07.09.2017 11:03:50", "comment": "", "user": "1", "star": "0", "message_type": "7", "new_mes_count": "0", "status_message": "0" } ] } где\\ //id// – ID темы сообщения;\\ //dor_id// – номер заказ (если привязан по заказу);\\ //doc_num// – номер заказа;\\ //dttm// – дата/время создания;\\ //comment// – главное сообщение темы;\\ //user// – признак кому принадлежит сообщение, 1 – клиент, 0 – сотрудник химчистки;\\ //star// – оценка (от 1 до 5);\\ //message_type// – тип сообщения (1- отзыв, 2 – жалоба, 3 – пожелание, 4 – некорректные данные, 5 - вопрос);\\ //new_mes_count// – количество новых сообщений;\\ //status_message// – признак что сообщение новое. ---- ===== Список сообщений темы. MessageList ===== **Команда:** %%MessageList%% Список сообщений темы (переписки) клиента. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%MessageList={"id":"123"}&SessionID=%% Строка запроса: .../api/?MessageList=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID переписки;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "childNode_comments": [ { "id": 124, "dttm": "10.10.2021%2015:47:41", "comment": "%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B5%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5", "user": 1, "status_message": 0 } ] } где\\ **childNode_comments** - массив сообщений темы:\\ //id// – ID сообщения;\\ //dttm// – дата/время;\\ //comment// – текст сообщения;\\ //user// – признак кому принадлежит сообщение, 1 – клиент, 0 – сотрудник химчистки;\\ //status_message// – признак что сообщение новое. ---- ===== Количество новых сообщений в теме. CountNewMessages ===== **Команда:** %%CountNewMessages%% Количество новых сообщений в теме(переписке). Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%CountNewMessages={"id":"123"}&SessionID=%% Строка запроса: .../api/?CountNewMessages=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID обсуждения;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "count_new": "2" } где\\ //count_new// – количество новых сообщений оставленных сотрудниками химчистки. **Обнулиться после выполнения MessageList**. ---- ===== Отправка сообщения темы. SendMessage ===== **Команда:** %%SendMessage%% Отправка сообщения в тему (переписки) или создание новой темы (переписки).\\ __В модуле Агбис.Химчистка сообщение отображается в Сервис - Общение с Клиентами в "Журнал Оперативного общения с клиентами" или в "Сообщения из ЛК"__ Метод отправки: **GET** Заголовок запроса (Header): не требуется. **Новое сообщение в обсуждении:** Формат запроса: %%SendMessage={"id":"1001","dttm":"21.12.2021 12:00","mes_type":"3","comment":"Проверка"}&SessionID=%% Строка запроса: .../api/?SendMessage=%7B%22id%22%3A%221001%22,%22dttm%22%3A%2221.12.2021%2012%3A00%22,%22mes_type%22%3A%223%22,%22comment%22%3A%22%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%22%7D&SessionID=... **Новое обсуждение(отзыв с оценкой):** Формат запроса: %%SendMessage={"dttm":"21.12.2021 12:00","mes_type":"1","comment":"Проверка","star": "4"}&SessionID=%% Строка запроса: .../api/?SendMessage=%7B%22dttm%22%3A%2221.12.2021%2012%3A00%22,%22mes_type%22%3A%221%22,%22comment%22%3A%22%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%22,%22star%22%3A%20%224%22%7D&SessionID=... где\\ //dttm// – дата/время(формат записи "01.01.2015 12:00"), **обязательный параметр**;\\ //mes_type// – тип сообщения(1 – отзыв, 2 – Жалоба, 3 – Пожелание, 4 - Некорректные данные, 5 – Вопрос), **обязательный параметр**;\\ //comment// – текст, **обязательный параметр**;\\ //dor_id// – ID заказа для создания отзыва о заказе, **не обязательный параметр**;\\ //id// – ID переписки, если новое сообщение в обсуждении или без него, если новое обсуждение, **не обязательный параметр**;\\ //star// – оценка (1 – ужасно, 2 – плохо, 3 – средне, 4 – хорошо, 5 – отлично, по умолчанию 0), **не обязательный параметр**;\\ //call_back_me// – просит перезвонить (0 – нет, 1 – да, по умолчанию 0), **не обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "fl": 0, "id": "123" } где\\ //fl// – признак, что сообщение было создано как новая переписка (0), либо добавлено в существующую (1);\\ //id// – ID нового обсуждения, вернется если было создано новое осуждение. ---- ===== Список акций. GetActionList ===== **Команда:** %%GetActionList%% Получение списка акций. Метод отправки: **GET** Заголовок запроса (Header): не требуется. **Получение списка акций:** Формат запроса: %%GetActionList={"act":"1"}&SessionID=%% Строка запроса: .../api/?GetActionList=%7B%22act%22%3A%221%22%7D&SessionID=... где\\ Обязательный параметр //act// - тип акции (1 – список акций, 2 – картинка акции сертификата), **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "actions": [ { "action_id": "1003", "act_type_id": "1", "date_begin": "24.04.2018", "date_end": "11.05.2022", "name": "1234", "short_detail": "%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82", "full_detail": "%D0%9F%D0%BE%D1%81%D0%BB%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82", "sclads_id": "1,1009,10015" } ] } где\\ //action_id// – ID акции;\\ //act_type_id// – тип акции (1 – распродажи, 2 – сертификаты, 3 – пакеты, 4 – бонусные пакеты);\\ //date_begin// – дата начала действия акции;\\ //date_end// – дата окончания действия акции;\\ //name// – наименование акции;\\ //short_detail// – краткое описание;\\ //full_detail// – полное описание. **Получение картинки акции сертификата:** Формат запроса: %%GetActionList={"act":"2","action_id":"123"}&SessionID=%% Строка запроса: .../api/?GetActionList=%7B%22act%22%3A%222%22%2C%22action_id%22%3A%22123%22%7D&SessionID=... где\\ //act// - тип акции (1 – список акций, 2 – картинка акции сертификата), **обязательный параметр**;\\ //action_id// – ID акции для act = 2, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "actions": [ { "action_id": "1002", "act_type_id": "3", "photo": "" } ] } где\\ //action_id// – ID акции;\\ //act_type_id// – тип акции (1 – распродажи, 2 – сертификаты, 3 – пакеты, 4 – бонусные пакеты);\\ //photo// – картинка в Base64. ---- ===== Список сертификатов. Certificate ===== **Команда:** %%Certificate%% Получение списка сертификатов. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Certificate={"id":"123"}&SessionID=%% Строка запроса: .../api/?Certificate=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID сертификата, **обязательный параметр**. Если указан, то будет выбран конкретный сертификат;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "certificate": [ { "id": "1002", "name": "%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82", "dt_first": "03.05.2018", "dt_last": "03.05.2022", "comments": "", "price": "1800", "lines": [ { "id": "1003", "tov_name": "%D0%91%D0%B5%D1%80%D0%BC%D1%83%D0%B4%D1%8B", "discount": "76,6", "qty": "2", "price_before": "1000", "price_after": "234" } ] } ] } где\\ **certificate** - массив сертификатов:\\ //id// – ID сертификата;\\ //name// – названия сертификата;\\ //dt_first// – дата начала действия;\\ //dt_last// – дата окончания действия;\\ //comments// – комментарий;\\ //price// – стоимость (из активирующей услуги);\\ **lines** – массив строк сертификатов (5 первых строк попадают):\\ //id// – ID строки сертификата;\\ //tov_name// – название услуги;\\ //discount// – скидка;\\ //qty// – количество;\\ //price_before// – цена до применения сертификата;\\ //price_after// – цена после применения сертификата. ---- ===== Список строк сертификатов. CertificateLines ===== **Команда:** %%CertificateLines%% Получение списка строк сертификатов. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%CertificateLines ={"id":"123"}&SessionID=%% Строка запроса: .../api/?CertificateLines=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID сертификата, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "certificate_lines": [ { "id": "1003", "tov_name": "%D0%91%D0%B5%D1%80%D0%BC%D1%83%D0%B4%D1%8B", "discount": "76,6", "qty": "2", "price_before": "1000", "price_after": "234" } ] } где\\ //id// – ID строки сертификата;\\ //tov_name// – название услуги;\\ //discount// – скидка;\\ //qty// – количество;\\ //price_before// – цена до применения сертификата;\\ //price_after// – цена после применения сертификата. ---- ===== Список активных сертификатов. ActiveCertificates ===== **Команда:** %%ActiveCertificates%% Получение списка активных сертификатов клиента. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%ActiveCertificates&SessionID=%% Строка запроса: .../api/?ActiveCertificates&SessionID=... где\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "active_certificates": [ { "id": "1002", "certificate_id": "1002", "promo_code": "9990000999", "cer_name": "%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82" } ] } где\\ //id// – ID активного сертификата клиента;\\ //certificate_id// – ID сертификата;\\ //promo_code// – промо-код активного сертификата;\\ //cer_name// – название сертификата. ---- ===== Создание оплаты сертификата. CreatePayCertificate ===== **Команда:** %%CreatePayCertificate%% Создание оплаты сертификата на клиента.\\ При выполнении команды, выбирается активирующая услуга сертификата, создается заказ, в которой будет эта услуга. Увидеть заказ можно через команду Orders.\\ Оплачивается как обычный заказ на сумму сертификата.\\ **Требуется предварительная настройка сертификата в программе и глобальных опций** Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%CreatePayCertificate={"id":"123"}&SessionID=%% Строка запроса: .../api/?CreatePayCertificate=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID сертификата, **обязательный параметр**;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "dor_id": "10023", "doc_num": "00012-5" } где\\ //dor_id// – ID заказа, который нужно оплатить;\\ //doc_num// – номер заказа, который нужно оплатить. ---- ===== Рекламные объявления. Advertisment ===== **Команда:** %%Advertisment%% Получение списка рекламных объявлений (Акции, Новости, Поздравления, Специальное предложение). Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%Advertisment={"id":"123"}&SessionID=%% Строка запроса: .../api/?Advertisment=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID объявления (если указано, то вернется конкретное объявление), **не обязательный параметр**;\\ //type// – тип объявления (1 – Новости, 2 – Акция, 3 - Специальное предложение, 4 - Поздравление), **не обязательный параметр**;\\ //date_first// – начало периода, **не обязательный параметр**;\\ //date_last// – конец периода, **не обязательный параметр**;\\ //not_load_pic// – не выгружать картинки (для быстрой обработки команды можно использовать равным 1, и в ответ не будут добавляться картинки. По-умолчанию 0), **не обязательный параметр**;\\ **По умолчанию будут возвращены все объявления, которые действуют на сегодняшний день** Ответ **json**: { "error": 0, "advertisments": [ { "id": "10015", "type": "1", "description": "%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8C%201", "mes": "%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8C%201", "sub_mes": "%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8C%201", "barcode": "0", "img": [ { "adv_id": "10015", "path": "img1.gif", "img64": "" } ] } ] } где\\ **advertisments** – массив объявлений:\\ //id// – ID объявления;\\ //type// – тип;\\ //description// – описание;\\ //mes// – текст в формате HTML (кодированный encodeURIComponent);\\ //sub_mes// – дополнительный текст;\\ //barcode// – штрихкод;\\ **img** – массив картинок:\\ //adv_id// – ID объявления, которому принадлежит картинка;\\ //path// – название картинки (по этому параметру, можно найти к какому тегу «img» в HTML принадлежит эта картинка);\\ //img64// – картинка (картинка кодирована в строку Base64). ---- ===== Картинки рекламных объявлений. AdvertismentImg ===== **Команда:** %%AdvertismentImg%% Вернет все картинки, которые есть в объявлении. Метод отправки: **GET** Заголовок запроса (Header): не требуется. Формат запроса: %%AdvertismentImg={"id":"123"}&SessionID=%% Строка запроса: .../api/?AdvertismentImg=%7B%22id%22%3A%22123%22%7D&SessionID=... где\\ //id// – ID объявления (если указано, то вернется конкретное объявление), **обязательный параметр**;\\ Ответ **json**: { "error": 0, "advertisments_img": [ { "adv_id": "10015", "path": "img1.gif", "img64": "" } ] } где\\ //adv_id// – ID объявления, которому принадлежит картинка;\\ //path// – название картинки (по этому параметру, можно найти к какому тегу «img» в HTML принадлежит эта картинка);\\ //img64// – картинка (картинка кодирована в строку Base64). ---- ====== Устаревшие команды ====== В данном разделе находятся уже устаревшие команды, но еще работающие. Через несколько лет они будут удалены. Для избежания поломки уже интегрированных устаревших команд, рекомендуется сделать переход на соответствующую актуальную команду. ---- ===== Фотографии заказа. OrderImages ===== **Команда:** %%OrderImages%% Фотографии заказа. Метод отправки: **GET** Формат запроса: %%OrderImages={"dor_id":"12345"}&SessionID=%% Строка запроса: .../api/?OrderImages=%7B%22dor_id%22:%2212345%22%7D&SessionID=... где\\ //dor_id// – ID заказа;\\ //SessionID// - ID сессии, **обязательный параметр**. Ответ **json**: { "error": 0, "img": [ ] } где\\ //img// – массив строк картинок в Base64. ---- ====== Список команд ====== |**Команда** |**Описание**| |AddressContr |Получение списка адресов клиента. Параметры команды отсутствуют.\\ \\ Обязательный параметр "SessionID". Задаются в карточке клиента.\\ \\ //**Пример:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?////AddressContr&SessionID=//\\ \\ //Ответ в json формате://\\ \\ //{"error": 0, "address_contr": [{"id": "40", "city_id": "2", "street": "//%D1%82%D0%B5%D1%81%D1%82//", "house": "//%D1%82%D0%B5%D1%81%D1%82//", "housing": "//%D1%82%D0%B5%D1%81%D1%82//", "room": "//%D1%82%D0%B5%D1%81%D1%82//", "office": "//%D1%82%D0%B5%D1%81%D1%82//", "com": "//%D1%82%D0%B5%D1%81%D1%82//"}]}//\\ \\ //где //\\ \\ //id – ID адреса,//\\ \\ //city_id – город,//\\ \\ //street – удлица, //\\ \\ //house – дом, //\\ \\ //housing – корпус,//\\ \\ //room – квартира,//\\ \\ //office – офис,//\\ \\ //com – комментарий.// | |ActionOverAddressContr|Изменение адресов клиента. Обязательный параметр команды "type" - тип операции, принимает значения "add" - добавить новый адрес, "change" - изменить текущий адрес, "del" - удалить текущий адрес.\\ Обязательный параметр: "city_id" - город \\ \\ Необязательные параметры "id" - при удалении и изменении указывает, какой адрес используется, , "street" - улица, "house" - дом, "housing" - корпус, "room" - квартира, "office" - офис, "comment" - комментарий.\\ \\ Обязательный параметр "SessionID". "source" не обязательный параметр, любой текст.\\ \\ //**Пример:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?ActionOverAddressContr={"type": "add", "city_id": "", "street": "", "house": "", "housing": "", "room": "", "office": "", "comment": ""}&SessionID=// | |CityContr |Список городов. Устаревшая команда.\\ \\ //**Пример:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?CityContr//\\ \\ //Ответ в json формате://\\ \\ //{"error": 0, "city": [{"id": "1", "city": "Moscow"}]}// | |LastOrders |Список заказов за день. Обязательные параметры команды "SessionID".\\ \\ //**Пример:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?////LastOrders={"inc ": "5", "part": "day"}&SessionID=//\\ \\ //Ответ в json формате://\\ \\ //{"error": 0, "last_orders": [{"dor_id": "157105", "contr_id": "44381"},{"dor_id": "157106", "contr_id": "44381"}]}//\\ \\ где "dor_id" – ID заказа,\\ \\ "contr_id" – ID клиента. | |AddCallInPlan |Добавить звонок в журнал запланированных вызовов (Агбис Колцентр)\\ \\ //**Пример добавления запланированного звонка:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?AddCallInPlan={"contr_id":"1",”phone”:”1”,”comment”:”1”}//\\ \\ //Ответ в json формате://\\ \\ //{"error":0}//\\ \\ где\\ \\ contr_id – вн. номер контрагента;\\ \\ phone – номер телефона;\\ \\ comment – комментарий; | |AddFamily |Изменить головную организацию у клиента,\\ \\ //**Пример:**//\\ \\ //%%//%%www.himinfo.ru/cl/{Path}/api/?AddFamilia=// //{"only_reg":"1","only_one":"1","not_change":"1","not_parent":"1","phone":"12345”}&SessionID=1//\\ \\ //Ответ в json формате://\\ \\ //{"error":0,"Msg":””,"result_number":""}//\\ \\ где\\ \\ only_reg – если 1 то ищем клиента среди ранее зарегистрированных, если 0 – то по базе всех клиентов;\\ \\ only_one – если 1 то клиент который добавляет к себе в семью не должен быть головной организацией у других клиентов;\\ \\ not_change – если 1 то мы не изменяем головную организацию у клиента, которого нашли, если у него уже кто то есть в качестве головной организации (т.е. мы не меняем головную организацию у клиента);\\ \\ not_parent – если 1 то у клиента который добавляет к себе в семью не должно быть указана другой головной организации;\\ \\ result_number=1 – не прошли проверку only_one\\ \\ result_number=2 – не прошли проверку not_parent\\ \\ result_number=3 – не нашли клиента в базе вообще, в этом случае выполняется процедура в базе данных SP_NOTIFY_AFTER_ADDFAMILY у которой в качестве входных параметров: ID контрагента который хотел добавить члена семьи и номер телефона который он добавлял (процедуру можно использовать чтобы запомнить кто кого искал)\\ \\ result_number=4 – не прошли проверку not_change |