4. Команды API с клиентской или пользовательской сессией

Команды получения данных, для выполнения которых Требуется клиентская или пользовательская сессия.

Работа с сессией
Работа с клиентом/пользователем
Работа с квитанциями
Работа с фотографиями по заказу
Работа с выездами по клиенту
Работа со статистикой

ValidSessionID

Проверка валидности сессии.

Команда: ValidSessionID

Проверка валидности SessionID.

Метод отправки: GET

Формат запроса:

ValidSessionID&SessionID=

Строка запроса:

GET .../api/?ValidSessionID&SessionID=...

где
SessionID – GUID проверяемой сессии.

Ответ json:

{
  "error": 0, 
  "contr_id": "123"
}

где
contr_id – ID клиента, которому принадлежит сессия.


Logout

Команда: Logout

Выход из ЛК, завершение работы сессии пользователем.
После выполнения сессия становится не действительной.

Метод отправки: GET

Формат запроса:

Logout&SessionID=

Строка запроса:

GET .../api/?Logout&SessionID=...

где
SessionID - ID сессии, обязательный параметр. Возвращает команда авторизации ModernLogin.

Ответ json:

{"error": 0}

где
error - код выполнения, 0 - успешно, 1 - ошибка; Msg - текст сообщения в случае ошибки.


ContrInfo

Команда: ContrInfo

Информация по авторизированному клиенту или авторизированному пользьователю.

Метод отправки: GET

Формат запроса:

ContrInfo&SessionID=

Строка запроса:

GET .../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 – дата рождения.


ReceiptOnline

Команда: ReceiptOnline

Получение квитанции по заказу.
Можно выполнять в любой момент заказа, после создания заказа.

Метод отправки: GET

Заголовок запроса (Header): не требуется.

Формат запроса:

ReceiptOnline={"dor_id":"12345", "typeExport": "png"}&SessionID=

Строка запроса:

GET .../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.
sign – если указан, то при наличии квитанции с подписью, вернется квитанция в формате svg (работает только в паре с параметром typeExport=svg).

В ответ возвращаются двоичные данные


SingReceipt

Команда: SignReceipt

Получение подписанной квитанции по заказу

Метод отправки: GET

Формат запроса:

SignReceipt={"id":"12345"}&SessionID=

Строка запроса:

GET .../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.

Для получения самой фотографии, используется команда PhotoOnline.

Метод отправки: GET

Формат запроса:

OrderImagesModern={"dor_id":"12345"}&SessionID=

Строка запроса:

GET .../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=

Строка запроса:

GET .../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


Trips

Команда: Trips

Получение списка выездов.

Метод отправки: GET

Заголовок запроса (Header): не требуется.

Формат запроса:

Trips={"date":"01.01.2020"}&SessionID=

Строка запроса:

GET .../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=

Строка запроса:

GET .../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=

Строка запроса:

GET .../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 фирмы.


LastChangeOrder

Команда: LastChangeOrder

Получение списка изменившихся ID заказов.

Метод отправки: GET

Заголовок запроса (Header): не требуется.

Формат запроса:

LastChangeOrder&SessionID=

Строка запроса:

GET .../api/?LastChangeOrder&SessionID=...

Ответ json:

{
  "error": 0, 
  "last_orders": 
    [
      {
        "cur_id": "123",
        "dttm": "15.01.2019 12:23",
        "dor_id": "123456", 
        "status_id": "1", 
        "contr_id": "123456789"
        "cur_sclad_id": "12334",
        "sclad_to": "12333",
        "sclad_kredit_id": "12345"
      },
      {
        "cur_id": "124",
        "dttm": "15.01.2019 12:24",
        "dor_id": "258963",
        "status_id": "3",
        "contr_id": "1234567",
        "cur_sclad_id": "12334",
        "sclad_to": "12333",
        "sclad_kredit_id": "12345"
      },
      ...
    ]
}

где
last_orders – массив изменившихся заказов:
cur_id - порядковый номер изменения;
dttm - дата и время изменения;
dor_id – ID заказа;
contr_id – ID клиента;
status_id – статус заказа (1 – новый, 3 – в исполнении, 4 – исполненный, 5 - выданный);
cur_sclad_id – текущий ID склад заказа на момент изменения в заказе;
sclad_to - ID склада выдачи;
sclad_kredit_id - ID склада приема;


Устаревшие команды

В данном разделе находятся уже устаревшие команды, но еще работающие.

Через несколько лет они будут удалены.

Для избежания поломки уже интегрированных устаревших команд, рекомендуется сделать переход на соответствующую актуальную команду.


Receipt

Устаревшая команда, больше не поддерживается

Команда: Receipt

Получение квитанции по заказу. Устаревший вариант, больше не поддерживается.

Метод отправки: GET

Заголовок запроса (Header): не требуется.

Формат запроса:

Receipt={"dor_id":"12345", "typeExport": "png"}&SessionID=

Строка запроса:

GET .../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