TM API — различия между версиями

Материал из TaxiMaster
Перейти к: навигация, поиск
(Запись пути к файлу разговора в базу данных)
(Ветка «Открытое API»)
 
(не показаны 453 промежуточные версии 3 участников)
Строка 5: Строка 5:
 
# Создать механизм приема заказов через интернет.   
 
# Создать механизм приема заказов через интернет.   
 
# Сделать ваш сайт более информативным: публиковать полезную для клиентов информацию прямо из системы - список ближайших [[Справочник «Экипажи»|экипажей]], предварительный расчет стоимости поездки, мониторинг движения автомобиля такси в процессе выполнения [[заказ]]а, [[Модуль «Интеграция с картами»|карты города]] и контактную информацию.   
 
# Сделать ваш сайт более информативным: публиковать полезную для клиентов информацию прямо из системы - список ближайших [[Справочник «Экипажи»|экипажей]], предварительный расчет стоимости поездки, мониторинг движения автомобиля такси в процессе выполнения [[заказ]]а, [[Модуль «Интеграция с картами»|карты города]] и контактную информацию.   
# Расширить возможности своей службы за счет популярного онлайн-сервиса Яндекс.Такси. 
 
  
{{Warning|Все перечисленные функции работают в Такси-Мастер не ниже [[История изменений в программе Такси-Мастер#Такси-Мастер. Версия 0.6 от 18.11.2014|версии 0.6 от 18.11.2014г]]. В более низких версиях программы часть функций может не поддерживаться.}}
+
{{Warning|Все перечисленные функции работают в Такси-Мастер не ниже [[История изменений в программе Такси-Мастер#Такси-Мастер. Версия 3.13.0 от 24.10.2022|3.13.0 от 24.10.2022г]]. В более ранних версиях программы часть функций может не поддерживаться.}}
  
 
== Параметры TM API ==
 
== Параметры TM API ==
 
Задать настройки для корректной работы TM API вы сможете в программе [[Такси-Мастер]] в меню {{tab|Настройки}} в одноименной ветке {{tab|TM API}}.
 
Задать настройки для корректной работы TM API вы сможете в программе [[Такси-Мастер]] в меню {{tab|Настройки}} в одноименной ветке {{tab|TM API}}.
Параметры организуют и контролируют работу [[Модуль «Интернет-заказы»|модуля «Интернет-заказы»]].
 
 
# Установите флажок {{checkbox|Использовать TM API}}, чтобы приступить к его использованию.  
 
# Установите флажок {{checkbox|Использовать TM API}}, чтобы приступить к его использованию.  
 
# В поле {{поле|Локальный порт}} введите номер порта подключения к интернету, на котором работает и будет ожидать запросы о новых заказах [[TMServer]]. Рекомендуется оставить номер порта по умолчанию.
 
# В поле {{поле|Локальный порт}} введите номер порта подключения к интернету, на котором работает и будет ожидать запросы о новых заказах [[TMServer]]. Рекомендуется оставить номер порта по умолчанию.
# Установите флажок {{checkbox|Можно использовать данное рабочее место TMServer для распознавания адресов}} для того, чтобы конкретно с данного рабочего места происходило распознавание адресов модулем "Интернет-заказы".
+
# При необходимости установите флажок {{checkbox|Использовать автопроброс порта с помощью UPnP}}, также укажите {{поле|Внешний порт}} и {{поле|Локальный IP}}.
# Перезапустите [[Такси-Мастер]] и [[TMServer]] для запуска работы модуля.
 
  
 
=== Ветка «Открытое API» ===
 
=== Ветка «Открытое API» ===
В данной ветке регулируется доступ к синхронизации Такси-Мастер со сторонним сервисом (сайтом), с помощью которого клиенты будут создавать интернет-заказы. С примером кода для работы вы можете ознакомиться в данной статье в разделе [[TM API#Общее описание протокола|Общее описание протокола]].
+
В данной ветке регулируется доступ к синхронизации Такси-Мастер со сторонним сервисом (сайтом), с помощью которого клиенты будут создавать заказы. С примером кода для работы вы можете ознакомиться в данной статье в разделе [[TM API#Общее описание протокола|Общее описание протокола]].
# Установите флажок {{checkbox|Использовать открытое API}} для того, чтобы запустить работу по обслуживанию модуля «Интернет-заказы». При установленном флажке сервер [[Модуль «Интернет-заказы»|модуля «Интернет-заказы»]] запускается и ожидает запросы о новых заказах.  
+
# Установите флажок {{checkbox|Использовать открытое API}} для того, чтобы запустить работу протокола TMCommonAPI.  
# В поле {{поле|Секретный ключ}} укажите произвольный номер. В дальнейшем этот номер следует использовать в API-запросах на сайте.  
+
# В поле {{поле|Секретный ключ}} укажите произвольный номер. В дальнейшем этот номер следует использовать в API-запросах на сайте.
# Перезапустите [[Такси-Мастер]] и [[TMServer]] для запуска работы модуля.
+
# В таблице "Пользователи CommonAPI" можно настроить доступ к CommonAPI. Для этого нужно создать пользователей, у которых будет отдельный секретный ключ, и отметить доступные запросы CommonAPI.
  
 
=== Ветка «API для телефонии» ===
 
=== Ветка «API для телефонии» ===
 
В данной ветке регулируются настройки API для телефонии, т.е. взаимодействие [[Такси-Мастер]] с call-центром через программный интерфейс. С его помощью [[Call-центр Oktell|call-центр]] может дать команду Такси-Мастер создать [[заказ]] или запросить информацию о [[Справочник «Состояния заказа»|статусе текущего заказа]].  
 
В данной ветке регулируются настройки API для телефонии, т.е. взаимодействие [[Такси-Мастер]] с call-центром через программный интерфейс. С его помощью [[Call-центр Oktell|call-центр]] может дать команду Такси-Мастер создать [[заказ]] или запросить информацию о [[Справочник «Состояния заказа»|статусе текущего заказа]].  
# Установите флажок {{checkbox|Использовать открытое API для телефонии}} для того, чтобы запустить работу по обслуживанию телефонии через API.
+
# Установите флажок {{checkbox|Использовать открытое API для телефонии}} для того, чтобы запустить работу протокола TMTAPI.
 
# В поле {{поле|Секретный ключ}} укажите номер секретного ключа для работы.
 
# В поле {{поле|Секретный ключ}} укажите номер секретного ключа для работы.
# Перезапустите [[Такси-Мастер]] и [[TMServer]] для запуска работы модуля.
+
 
 +
=== Ветка «TaxoPhone API» ===
 +
{{вам сюда|Настройка приложения TaxoPhone}}
  
 
=== Ветка «Платежные терминалы» ===
 
=== Ветка «Платежные терминалы» ===
Строка 33: Строка 32:
  
 
Параметры этой ветки отвечают за работу [[Модуль интеграции с платежными терминалами|модуля интеграции с платежными системами]].  
 
Параметры этой ветки отвечают за работу [[Модуль интеграции с платежными терминалами|модуля интеграции с платежными системами]].  
# Установите флажок {{checkbox|Включить прием терминальных платежей}}. Данная функция позволит отображать все платежные операции по приходу средств от водителей через терминалы в [[База данных Такси-Мастер 2|базе данных]] программы.  
+
# Установите флажок {{checkbox|Включить прием терминальных платежей}}. Данная функция позволит отображать все платежные операции по приходу средств от водителей через терминалы в базе данных программы.  
 
# В поле {{поле|Секретный ключ}} укажите номер секретного ключа для работы с платежными системами и сверки платежей, который будет выслан вам в письме от менеджера. Секретный ключ - это определенный набор символов, необходимый для формирования подписи при передаче информации о платеже.
 
# В поле {{поле|Секретный ключ}} укажите номер секретного ключа для работы с платежными системами и сверки платежей, который будет выслан вам в письме от менеджера. Секретный ключ - это определенный набор символов, необходимый для формирования подписи при передаче информации о платеже.
# В полях {{поле|Логин}} и {{поле|Пароль}} введите данные учетной записи на сайте http://term.bitmaster.ru.
 
 
# Кнопка {{кнопка|Задать всем водителям терминальный аккаунт по их ИД}} служит для соединения TM API с сервером Такси-Мастер. В результате соединения записи о терминальных аккаунтах генерируются, заносятся (для тех водителей, у которых они отсутствуют) и обновляются (для тех водителей, у которых уже существуют терминальные аккаунты) в Такси-Мастер.
 
# Кнопка {{кнопка|Задать всем водителям терминальный аккаунт по их ИД}} служит для соединения TM API с сервером Такси-Мастер. В результате соединения записи о терминальных аккаунтах генерируются, заносятся (для тех водителей, у которых они отсутствуют) и обновляются (для тех водителей, у которых уже существуют терминальные аккаунты) в Такси-Мастер.
# Перезапустите [[Такси-Мастер]] и [[TMServer]] для запуска работы модуля.
 
  
{{info|Обратите внимание, что для платежных систем также существует открытый и свободно распространяемый API, с помощью которого есть возможность связать [[Такси-Мастер]] и [[Модуль интеграции с платежными системами|платежные системы]]. Обратитесь в отдел дополнительных услуг, написав на {{ящик ОДУ}}, за получением кода для данного компонента системы.}}
+
[[Категория:Параметры ТМ]]
  
 
== Общее описание протокола ==
 
== Общее описание протокола ==
Строка 49: Строка 46:
  
 
<pre>
 
<pre>
GET https://ip:port/common_api/1.0/get_crew_groups_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_crew_groups_list  
 
</pre>
 
</pre>
  
Для получения данных из БД используются запросы типа GET. Для записи данных в [[База данных Такси-Мастер|базу данных]] используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI. Пример:
+
Для получения данных из БД используются запросы типа GET. Для записи данных в базу данных используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI. Пример:
 
<pre>
 
<pre>
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 HTTP/1.1
+
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10  
 
Signature: <...>
 
Signature: <...>
 
</pre>
 
</pre>
Строка 61: Строка 58:
  
 
<pre>
 
<pre>
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
+
POST https://ip:port/common_api/1.0/create_order  
 
Signature: <...>
 
Signature: <...>
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Строка 70: Строка 67:
 
</pre>
 
</pre>
  
В любом запросе обязательно должен быть заголовок Signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMWeb в ТМ2. Пример:
+
В любом запросе обязательно должен быть заголовок Signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в {{путь|Файл - Настройки - TM API - Открытое API}}. Пример:
  
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 HTTP/1.1
+
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10  
  
 
Секретный ключ:
 
Секретный ключ:
Строка 152: Строка 149:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/ping HTTP/1.1
+
GET https://ip:port/common_api/1.0/ping  
 
Ответ:
 
Ответ:
 
{
 
{
Строка 194: Строка 191:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_crew_groups_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_crew_groups_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 249: Строка 246:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/get_client_groups_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_client_groups_list  
 
Signature: <...>
 
Signature: <...>
 
Ответ:
 
Ответ:
Строка 305: Строка 302:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_uds_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_uds_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 367: Строка 364:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_tariffs_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_tariffs_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 393: Строка 390:
  
 
=== Запрос списка услуг ===
 
=== Запрос списка услуг ===
 +
'''Запрос устарел. Рекомендуется использовать [[#Запрос списка атрибутов|Запрос списка атрибутов]]'''
 +
 
Метод: GET
 
Метод: GET
  
Строка 434: Строка 433:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_services_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_services_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 461: Строка 460:
 
</pre>
 
</pre>
  
 
+
=== Запрос списка атрибутов ===
=== Запрос списка параметров заказа ===
 
 
Метод: GET
 
Метод: GET
  
Строка 480: Строка 478:
 
|order_params
 
|order_params
 
|Массив
 
|Массив
|Список переметров заказа
+
|Список параметров заказа
 
|-
 
|-
 
|&bull; id
 
|&bull; id
Строка 508: Строка 506:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_order_params_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_order_params_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 579: Строка 577:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_discounts_list HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_discounts_list  
 
Signature: <...>
 
Signature: <...>
  
Строка 621: Строка 619:
 
|-
 
|-
 
|phone
 
|phone
|Строка, <= 16 символов
+
|Строка, <= 30 символов
 
|Номер телефона
 
|Номер телефона
 
|-
 
|-
Строка 695: Строка 693:
 
|103
 
|103
 
|Служба ЕДС не найдена
 
|Служба ЕДС не найдена
 +
|-
 +
|110
 +
|Клиент заблокирован
 +
|-
 +
|111
 +
|Не найден клиент, который может использовать собственный счет для оплаты заказов
 +
|-
 +
|114
 +
|Недостаточно средств на безналичном счете клиента в ТМ
 +
|-
 +
|115
 +
|Отрицательный баланс на безналичном счете клиента в ТМ
 +
|-
 +
|116
 +
|Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)
 
|}
 
|}
  
Строка 713: Строка 726:
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
+
POST https://ip:port/common_api/1.0/create_order  
 
Signature: <...>
 
Signature: <...>
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Строка 738: Строка 751:
 
Название запроса: create_order2
 
Название запроса: create_order2
  
Параметры:
+
Параметры в формате JSON:
  
 
{|
 
{|
Строка 748: Строка 761:
 
|-
 
|-
 
|phone
 
|phone
|Строка, <= 16 символов
+
|Строка, <= 30 символов
 
|Номер телефонам (необязателен, если client_id присутствует).
 
|Номер телефонам (необязателен, если client_id присутствует).
 
|-
 
|-
Строка 770: Строка 783:
 
|Дробное
 
|Дробное
 
|Долгота адреса
 
|Долгота адреса
 +
|-
 +
|&bull; zone_id
 +
|Целое
 +
|ИД района
 +
|-
 +
|&bull; parking_id
 +
|Целое
 +
|ИД стоянки
 +
|-
 +
|server_time_offset
 +
|Целое
 +
|Смещения относительно серверного времени
 
|-
 
|-
 
|source_time
 
|source_time
Строка 780: Строка 805:
 
|Строка
 
|Строка
 
|Пассажир
 
|Пассажир
 +
|-
 +
|phone_to_dial
 +
|Строка, <= 30 символов
 +
|Телефон для отзвона
 
|-
 
|-
 
|customer
 
|customer
Строка 804: Строка 833:
 
|true или false
 
|true или false
 
|Предварительный заказ
 
|Предварительный заказ
 +
|-
 +
|check_duplicate
 +
|true или false
 +
|Проверка на дубликат
 
|-
 
|-
 
|services
 
|services
 
|Массив
 
|Массив
|Массив услуг. Устарело. Рекомендуется использовать параметр order_params.
+
|Массив услуг. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
 
|&bull;
 
|&bull;
Строка 815: Строка 848:
 
|crew_props
 
|crew_props
 
|Массив
 
|Массив
|Массив признаков экипажей. Устарело. Рекомендуется использовать параметр order_params.
+
|Массив признаков экипажей. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
 
|&bull;
 
|&bull;
Строка 823: Строка 856:
 
|order_params
 
|order_params
 
|Массив
 
|Массив
|Массив параметров заказа
+
|Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
 
|&bull;
 
|&bull;
Строка 848: Строка 881:
 
|Дробное
 
|Дробное
 
|Фиксированная сумма оплаты заказа с бонусного счета клиента (не используется, если use_bonus = true).
 
|Фиксированная сумма оплаты заказа с бонусного счета клиента (не используется, если use_bonus = true).
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника клиента (если задан client_id)
 +
|-
 +
|email
 +
|Строка
 +
|Email для отправки уведомлений
 +
|-
 +
|prior_to_current_before_minutes
 +
|Целое
 +
|Время перехода из предварительного в текущие заказы, мин
 +
|-
 +
|flight_number
 +
|Строка
 +
|Номер рейса
 +
|-
 +
|need_custom_validate
 +
|true или false
 +
|Использовать специальную проверку перед созданием заказа
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 869: Строка 946:
 
|104
 
|104
 
|Клиент не найден
 
|Клиент не найден
|}
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|order_id
+
|105
|Целое
+
|Район не найден
 +
|-
 +
|106
 +
|Стоянка не найдена
 +
|-
 +
|107
 +
|Сотрудник клиента не найден
 +
|-
 +
|108
 +
|Параметр заказа не найден
 +
|-
 +
|109
 +
|Атрибут не может быть привязан к заказу
 +
|-
 +
|110
 +
|Клиент заблокирован
 +
|-
 +
|111
 +
|Не найден клиент, который может использовать собственный счет для оплаты заказов
 +
|-
 +
|112
 +
|Сотрудник клиента заблокирован
 +
|-
 +
|113
 +
|Ошибка специальной проверки заказа перед созданием. В ответе будет возвращаться:
 +
  "data": {
 +
    "message":"Текст ошибки для пользователя."
 +
  }
 +
|-
 +
|114
 +
|Недостаточно средств на безналичном счете клиента в ТМ
 +
|-
 +
|115
 +
|Отрицательный баланс на безналичном счете клиента в ТМ
 +
|-
 +
|116
 +
|Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|order_id
 +
|Целое
 
|ИД созданного заказа
 
|ИД созданного заказа
 
|}
 
|}
Строка 885: Строка 1001:
  
 
<pre>
 
<pre>
Запрос:
 
 
POST https://ip:port/common_api/1.0/create_order2 HTTP/1.1
 
POST https://ip:port/common_api/1.0/create_order2 HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 
Content-Type: application/json
 
Content-Type: application/json
Content-Length: 395
+
Content-Length: <...>
 +
 
 
{
 
{
 +
  "server_time_offset":2,
 
   "source_time":"20140415172811",
 
   "source_time":"20140415172811",
 
   "is_prior":false,
 
   "is_prior":false,
 +
  "check_duplicate":true,
 
   "phone":"123456",
 
   "phone":"123456",
   "client_id":1,
+
  "phone_to_dial":"654321",
 +
   "client_id":1,
 +
  "client_employee_id":4, 
 
   "customer":"CUSTOMER",
 
   "customer":"CUSTOMER",
 
   "passenger":"PASSENGER",
 
   "passenger":"PASSENGER",
Строка 901: Строка 1021:
 
   "uds_id":1,
 
   "uds_id":1,
 
   "tariff_id":1,
 
   "tariff_id":1,
   "addresses":[
+
   "addresses": [
       {"address":"SOURCE","lat":56.896817,"lon":53.147830},
+
       {
       {"address":"STOP1","lat":56.845452,"lon":53.226775},
+
          "address": "SOURCE",
       {"address":"STOP2"},
+
          "lat": 56.896817,
       {"address":"DESTINATION","lat":56.861230,"lon":53.241870}
+
          "lon": 53.14783
   ],
+
          "zone_id": 1,
 +
          "parking_id": 1
 +
      },
 +
       {
 +
          "address": "STOP1",
 +
          "lat": 56.845452,
 +
          "lon": 53.226775
 +
          "zone_id": 2,
 +
          "parking_id": 2
 +
      },
 +
       {
 +
          "address": "STOP2"
 +
      },
 +
       {
 +
          "address": "DESTINATION",
 +
          "lat": 56.86123,
 +
          "lon": 53.24187
 +
      }
 +
   ]
 
   "services":[1,2],
 
   "services":[1,2],
 
   "crew_props":[1],
 
   "crew_props":[1],
 
   "order_params":[3,4],
 
   "order_params":[3,4],
 
   "total_cost":370,
 
   "total_cost":370,
 +
  "client_id":28,
 
   "use_cashless":false,
 
   "use_cashless":false,
 
   "use_bonus":false,
 
   "use_bonus":false,
 
   "cashless_sum":700,
 
   "cashless_sum":700,
   "bonus_sum":350
+
   "bonus_sum":350,
 +
  "email":"email@gmail.com",
 +
  "prior_to_current_before_minutes":30,
 +
  "flight_number":"130-qwe2",
 +
  "need_custom_validate":false,
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 
}
 
}
  
Строка 958: Строка 1119:
 
|Целое
 
|Целое
 
|ИД клиента
 
|ИД клиента
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника клиента
 
|-
 
|-
 
|discount_id
 
|discount_id
Строка 1014: Строка 1179:
 
|Строка
 
|Строка
 
|Список ИД услуг через точку с запятой, пример: «1;2;3»
 
|Список ИД услуг через точку с запятой, пример: «1;2;3»
 +
 +
Устарело. Рекомендуется использовать параметр order_params.
 
|-
 
|-
 
|order_params
 
|order_params
Строка 1049: Строка 1216:
 
|106
 
|106
 
|Дисконтная карта не найдена
 
|Дисконтная карта не найдена
 +
|-
 +
|107
 +
|Район остановки не найден
 +
|-
 +
|108
 +
|Группа экипажа не найдена
 +
|-
 +
|109
 +
|Служба ЕДС не найдена
 +
|-
 +
|110
 +
|Дисконтная карта не действительна
 +
|-
 +
|111
 +
|Не найден сотрудник клиента
 
|}
 
|}
  
Строка 1079: Строка 1261:
 
Запрос:  
 
Запрос:  
  
GET https://ip:port/common_api/1.0/calc_order_cost?
+
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&source_time=20120501100000&is_prior=false&client_id=1&client_employee_id=11&discount_id=1&disc_card_id=1&
tariff_id=1&source_time=20120501100000&is_prior=false&client_id=1&discount_id=1&disc_card_id=1&sour
+
source_zone_id=1&dest_zone_id=2&distance_city=10&distance_country=20&source_distance_country=5&is_country=true&waiting_minutes=10&is_hourly=false&hourly_minutes=60&
ce_zone_id=1&dest_zone_id=2&distance_city=10&distance_country=20&source_distance_country=5&is_count
+
is_prize=true&back_way=false&services=1;2;3&order_params=1;2;3 HTTP/1.1
ry=true&waiting_minutes=10&is_hourly=false&hourly_minutes=60&is_prize=true&back_way=false&services=
 
1;2;3&order_params=1;2;3 HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
  
Строка 1107: Строка 1287:
 
</pre>
 
</pre>
  
=== Изменение состояния заказа ===
+
=== Расчет суммы заказа 2 ===
  
 
Метод: POST
 
Метод: POST
  
Название запроса: change_order_state
+
Название запроса: calc_order_cost2
  
Параметры:
+
Параметры в формате JSON:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1119: Строка 1299:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|order_id
|-
 
|ORDER_ID
 
 
|Целое
 
|Целое
 
|ИД заказа
 
|ИД заказа
 
|-
 
|-
|NEW_STATE
+
|tariff_id
 
|Целое
 
|Целое
|Новое состояние заказа
+
|ИД тарифа
|}
+
|-
 
+
|source_time
Специальные возвращаемые коды:
+
|ГГГГММДДччммсс
{|
+
|Время подачи
!Код
+
|-
!Описание
+
|is_prior
 +
|true или false
 +
|Предварительный заказ
 
|-
 
|-
|100
+
|client_id
|Не найден заказ ИД=ORDER_ID
+
|Целое
 +
|ИД клиента
 
|-
 
|-
|101
+
|phone
|Не найдено состояние заказа ИД=NEW_STATE
+
|Строка
 +
|Телефон клиента
 
|-
 
|-
|102
+
|discount_id
|Изменение состояния не соответствует необходимым условиям.
+
|Целое
|}
+
|ИД скидки
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|ORDER_ID
+
|disc_card_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД дисконтной карты
 
|-
 
|-
|NEW_STATE
+
|source_zone_id
 
|Целое
 
|Целое
|Новое состояние заказа
+
|ИД района подачи
|}
+
|-
 
+
|source_lon
Пример:
+
|Дробное
<pre>
+
|Долгота адреса подачи
Запрос:
 
 
 
GET https://ip:port/common_api/1.0/calc_order_cost?order_id=6&new_state=4 HTTP/1.1
 
Signature: <...>
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
    "order_id":6,
 
    "new_state":4
 
  }
 
}
 
</pre>
 
 
 
=== Запрос информации об экипаже ===
 
Метод: GET
 
 
 
Название запроса: get_crew_info
 
 
 
Параметры:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|source_lat
 +
|Дробное
 +
|Широта адреса подачи
 
|-
 
|-
|crew_id
+
|dest_zone_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД района назначения
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|dest_lon
|Экипаж не найден
+
|Дробное
|}
+
|Долгота адреса назначения
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|crew_id
+
|dest_lat
|Целое
+
|Дробное
|ИД экипажа
+
|Широта адреса назначения
 +
|-
 +
|distance_city
 +
|Дробное
 +
|Километраж по городу
 
|-
 
|-
|code
+
|distance_country
|Строка
+
|Дробное
|Позывной экипажа
+
|Километраж за городом
 
|-
 
|-
|name
+
|source_distance_country
|Строка
+
|Дробное
|Наименование экипажа
+
|Километраж до подачи за городом
 
|-
 
|-
|driver_id
+
|is_country
|Целое
+
|true или false
|ИД водителя
+
|Загородный заказ
 
|-
 
|-
|car_id
+
|waiting_minutes
 
|Целое
 
|Целое
|ИД автомобиля
+
|Время ожидания посадки клиента в минутах
 
|-
 
|-
|crew_group_id
+
|is_hourly
|Целое
+
|true или false
|ИД группы экипажа
+
|Почасовой заказ
 
|-
 
|-
|crew_state_id
+
|hourly_minutes
 
|Целое
 
|Целое
|ИД состояния экипажа
+
|Длительность почасового заказа в минутах
 
|-
 
|-
|online
+
|is_prize
 
|true или false
 
|true или false
|Водитель подключен к серверу «Связи с водителями»
+
|Призовой заказ
 
|-
 
|-
|work_shift_sum
+
|back_way
|Дробное
+
|true или false
|Сумма, списываемая за смену
+
|Обратный путь за городом
 
|-
 
|-
|min_balance
+
|order_params
|Дробное
+
|Массив
|Минимальный баланс, при котором можно выйти на смену
+
|Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
|common_priority
+
|&bull;
 
|Целое
 
|Целое
|Общий приоритет
+
|ИД параметра заказа
 +
|-
 +
|cashless
 +
|true или false
 +
|Признак безналичного заказа
 +
|-
 +
|stops
 +
|Массив
 +
|Список остановок
 
|-
 
|-
|static_priority
+
|&bull; zone_id
 
|Целое
 
|Целое
|Статический приоритет
+
|ИД района остановки
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта адреса остановки
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота адреса остановки
 
|-
 
|-
|dynamic_priority
+
|crew_group_id
 
|Целое
 
|Целое
|Динамический приоритет
+
|ИД группы экипажа
 
|-
 
|-
|order_change_id
+
|uds_id
 
|Целое
 
|Целое
|Индивидуальная сдача с заказа
+
|ИД службы ЕДС
 
|-
 
|-
|has_light_house
+
|analyze_route
 
|true или false
 
|true или false
|Шашка
+
|Нужно ли выполнять анализ адресов и маршрута. Если данный флаг установлен (analyze_route=true), то значения параметров: distance_city, distance_country, source_distance_country, переданные в данном запросе будут игнорироваться. Они автоматически будут рассчитаны в ходе выполнения запроса в результате анализа адресов и маршрута. Также перед анализом адресов будут автоматически найдены районы (по справочнику "Районы") для тех адресов, у которых район не указан явно (zone_id=0). Также по результатам анализа адресов автоматически будут определены флаги "Загородный заказ" (is_country) и "Межгород".
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 
|-
 
|-
|has_label
+
|&bull; bool_value
 
|true или false
 
|true или false
|Наклейка
+
|Значение, если тип атрибута «Логический»
 
|-
 
|-
|order_params
+
|&bull; num_value
|Массив
+
|Дробное
|Массив параметров заказа экипажа
+
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 
|-
 
|-
|&bull;
+
|&bull; str_value
|Целое
+
|Строка
|ИД параметра заказа
+
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Пример:
+
Специальные возвращаемые коды:
 
+
{|
<pre>
+
!Код
Запрос:
+
!Описание
 
+
|-
GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1 HTTP/1.1
+
|100
Signature: <...>
+
|Тариф не найден
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
    "crew_id":1,
 
    "code":"123",
 
    "name":"CREW_NAME",
 
    "driver_id":1,
 
    "car_id":1,
 
    "crew_group_id":1,
 
    "crew_state_id":3,
 
    "online":true
 
    "work_shift_sum":0,
 
    "min_balance":10,
 
    "common_priority":0,
 
    "static_priority":0,
 
        "dynamic_priority":0,
 
    "order_change_id":218,
 
    "has_light_house":false,
 
    "has_label":false,
 
    "order_params":[
 
      1,
 
      2,
 
    ]
 
  }
 
}
 
</pre>
 
 
 
=== Запрос информации об экипажах на линии ===
 
Метод: GET
 
 
 
Название запроса: get_crews_info
 
 
 
Параметры: нет
 
 
 
Специальные возвращаемые коды: нет
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
! colspan="3" | Обязательные параметры
+
|101
 +
|Ошибка при расчете по тарифу
 
|-
 
|-
|crews_info
+
|102
|Массив
+
|Скидка не найдена
|Массив экипажей на линии
 
 
|-
 
|-
|&bull; crew_id
+
|103
|Целое
+
|Клиент не найден
|ИД экипажа
 
 
|-
 
|-
|&bull; code
+
|104
|Строка
+
|Район подачи не найден
|Позывной экипажа
 
 
|-
 
|-
|&bull; name
+
|105
|Строка
+
|Район назначения не найден
|Наименование экипажа
 
 
|-
 
|-
|&bull; driver_id
+
|106
|Целое
+
|Дисконтная карта не найдена
|ИД водителя
 
 
|-
 
|-
|&bull; car_id
+
|107
|Целое
+
|Район остановки не найден
|ИД автомобиля
 
 
|-
 
|-
|&bull; crew_group_id
+
|108
|Целое
+
|Группа экипажа не найдена
|ИД группы экипажа
 
 
|-
 
|-
|&bull; crew_state_id
+
|109
|Целое
+
|Служба ЕДС не найдена
|ИД состояния экипажа
 
 
|-
 
|-
|&bull; online
+
|110
|true или false
+
|Дисконтная карта не действительна
|Водитель подключен к серверу «Связи с водителями»
 
 
|-
 
|-
|&bull; work_shift_sum
+
|111
|Дробное
+
|Сотрудник клиента не найден
|Сумма, списываемая за смену
 
 
|-
 
|-
|&bull; min_balance
+
|112
|Дробное
+
|Атрибут не найден
|Минимальный баланс, при котором можно выйти на смену
 
 
|-
 
|-
|&bull; common_priority
+
|113
|Целое
+
|Атрибут не может быть привязан к заказу
|Общий приоритет
 
 
|-
 
|-
|&bull; static_priority
+
|114
|Целое
+
|Заказ не найден
|Статический приоритет
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|&bull; dynamic_priority
+
|sum
|Целое
+
|Дробное
|Динамический приоритет
+
|Рассчитанная общая сумма заказа
 
|-
 
|-
|&bull; order_change_id
+
|info
|Целое
+
|Массив
|Индивидуальная сдача с заказа
+
|Дополнительная информация по расчету суммы заказа
 
|-
 
|-
|&bull; has_light_house
+
|&bull; comment
|true или false
+
|Строка
|Шашка
+
|Описание позиции дополнительной информации по расчету суммы заказа
 
|-
 
|-
|&bull; has_label
+
|&bull; sum
|true или false
+
|Строка
|Наклейка
+
|Сумма позиции дополнительной информации по расчету суммы заказа
|-
 
|&bull; has_label
 
|true или false
 
|Наклейка
 
|-
 
|&bull; order_params
 
|Массив
 
|Массив параметров заказа экипажа
 
|-
 
|&bull; order_params
 
|Целое
 
|ИД параметра заказа
 
 
|}
 
|}
  
Строка 1423: Строка 1533:
  
 
<pre>
 
<pre>
Запрос:
+
Запрос:  
GET https://ip:port/common_api/1.0/get_crews_info HTTP/1.1
+
 
 +
POST https://ip:port/common_api/1.0/calc_order_cost2 HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 +
{
 +
  "tariff_id":1,
 +
  "source_time":"20140415172811",
 +
  "is_prior":false,
 +
  "client_id":1, 
 +
  "discount_id":1,
 +
  "disc_card_id":1,
 +
  "source_zone_id":1,,
 +
  "source_lat":11.111111,
 +
  "source_lon":22.222222,
 +
  "dest_zone_id":2,,
 +
  "dest_lat":33.333333,
 +
  "dest_lon":44.444444,
 +
  "distance_city":10,
 +
  "distance_country":20,
 +
  "source_distance_country":5,
 +
  "is_country":true,
 +
  "waiting_minutes":10,
 +
  "is_hourly":false,
 +
  "hourly_minutes":60,
 +
  "is_prize":true,
 +
  "back_way":false,
 +
  "order_params":[3,4],
 +
  "stops": [
 +
      {
 +
          "zone_id": 1,
 +
          "lat": 11.111111,
 +
          "lon": 22.222222
 +
      },
 +
      {
 +
          "zone_id": 2,
 +
          "lat": 33.333333,
 +
          "lon": 44.444444
 +
      }
 +
  ],
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
  
 
Ответ:
 
Ответ:
Строка 1432: Строка 1600:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "crews_info":[
+
     "sum":1000,
 +
    "info":[
 
       {
 
       {
         "crew_id":1,
+
         "comment":"SUM1",
        "code":"123",
+
         "sum":"100"
        "name":"CREW_NAME1",
 
        "driver_id":1,
 
        "car_id":1,
 
        "crew_group_id":1,
 
        "crew_state_id":3
 
        "online":true,
 
         "work_shift_sum":0,
 
        "min_balance":10,
 
        "common_priority":10,
 
        "static_priority":10,
 
        "dynamic_priority":0,
 
        "order_change_id":0,
 
        "has_light_house":false,
 
        "has_label":false,
 
        "order_params":[
 
          1,
 
          5,
 
        ]
 
 
       },
 
       },
 
       {
 
       {
         "crew_id":12,
+
         "comment":"SUM2",
        "code":"777",
+
         "sum":"200"
         "name":"CREW_NAME2",
 
        "driver_id":12,
 
        "car_id":12,
 
        "crew_group_id":2
 
        "crew_state_id":1,
 
        "online":false,
 
        "work_shift_sum":0,
 
        "min_balance":10,
 
        "common_priority":15,
 
        "static_priority":15,
 
        "dynamic_priority":0,
 
        "order_change_id":0,
 
        "has_light_house":false,
 
        "has_label":true,
 
        "order_params":[]
 
 
       }
 
       }
 
     ]
 
     ]
Строка 1479: Строка 1615:
 
</pre>
 
</pre>
  
=== Запрос информации о водителе ===
+
=== Изменение состояния заказа ===
Метод: GET
+
Метод: POST
  
Название запроса: get_driver_info
+
Название запроса: change_order_state
  
 
Параметры:
 
Параметры:
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 1492: Строка 1628:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|driver_id
+
|order_id
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|new_state
 
|Целое
 
|Целое
|ИД водителя
+
|Новое состояние заказа
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
 
|-
 
|-
|need_photo
+
|cancel_order_penalty_sum
|true или false
+
|Дробное
|Нужна ли фотография водителя
+
|Сумма штрафа клиента за отмену заказа. Если свойство new_state имеет тип "Прекращен" (выполняется отмена заказа) и при отмене заказа должен быть назначен штраф клиенту, то если данное значение штрафа указано (даже если указано значение 0), то оно имеет приоритет. Если данное значение не указано, то сумма штрафа будет определена автоматически по группе клиентов.
 
|}
 
|}
  
Строка 1509: Строка 1649:
 
|-
 
|-
 
|100
 
|100
|Водитель не найден
+
|Не найден заказ ИД=ORDER_ID
 +
|-
 +
|101
 +
|Не найдено состояние заказа ИД=NEW_STATE
 +
|-
 +
|102
 +
|Изменение состояния не соответствует необходимым условиям.
 
|}
 
|}
  
Возвращаемые параметры в случае успешного выполнения запроса:
+
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1518: Строка 1664:
 
!Описание
 
!Описание
 
|-
 
|-
|driver_id
+
|order_id
 
|Целое
 
|Целое
|ИД водителя
+
|ИД заказа
|-
 
|name
 
|Строка
 
|ФИО водителя
 
 
|-
 
|-
|birthday
+
|new_state
|ДД.ММ.ГГГГ
 
|День рождения водителя
 
|-
 
|car_id
 
 
|Целое
 
|Целое
|ИД основного автомобиля водителя
+
|Новое состояние заказа
|-
 
|license
 
|Строка
 
|Удостоверение водителя
 
|-
 
|home_phone
 
|Строка
 
|Домашний телефон водителя
 
|-
 
|mobile_phone
 
|Строка
 
|Мобильный телефон водителя
 
|-
 
|is_locked
 
|true или false
 
|Водитель заблокирован
 
|-
 
|is_dismissed
 
|true или false
 
|Водитель уволен
 
|-
 
|driver_photo
 
|Base64
 
|Фото водителя (только если need_photo = true)
 
 
|}
 
|}
  
 
Пример:
 
Пример:
 
 
<pre>
 
<pre>
Запрос:
+
Запрос:  
  
GET https://ip:port/common_api/1.0/get_driver_info?driver_id=1&need_photo=false HTTP/1.1
+
POST https://ip:port/common_api/1.0/change_order_state?order_id=6&new_state=4
 
Signature: <...>
 
Signature: <...>
  
Строка 1573: Строка 1686:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "driver_id":1,
+
     "order_id":6,
     "name":"DRIVER_NAME",
+
     "new_state":4
    "birthday":"01.01.1980",
 
    "car_id":1,
 
    "license":"1234567890",
 
    "home_phone":"123456",
 
    "mobile_phone":"+79123456789",
 
    "is_locked":false,
 
    "is_dismissed":false
 
 
   }
 
   }
}
+
}  
 
</pre>
 
</pre>
  
 
+
=== Запрос информации об экипаже ===
=== Запрос списка водителей ===
 
 
Метод: GET
 
Метод: GET
  
Название запроса: get_drivers_info
+
Название запроса: get_crew_info
  
 
Параметры:
 
Параметры:
Строка 1598: Строка 1703:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Небязательные параметры
+
!colspan="3"|Обязательные параметры
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД экипажа
 
|-
 
|-
|locked_drivers
+
!colspan="3"|Необязательные параметры
|true или false
 
|Включить в ответ запроса заблокированных водителей (по умолчанию false)
 
 
|-
 
|-
|dismissed_drivers
+
|fields
|true или false
+
|Строка
|Включить в ответ запроса уволенных водителей (по умолчанию false)
+
|Список возвращаемых полей через запятую
 
|}
 
|}
  
 
+
Специальные возвращаемые коды:
Специальные возвращаемые коды: нет
+
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Экипаж не найден
 +
|}
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1619: Строка 1731:
 
!Описание
 
!Описание
 
|-
 
|-
|drivers_info
+
|crew_id
|Массив
 
|Массив не удаленных водителей
 
|-
 
|&bull; driver_id
 
 
|Целое
 
|Целое
|ИД водителя
+
|ИД экипажа
 
|-
 
|-
|&bull; name
+
|code
 
|Строка
 
|Строка
|ФИО водителя
+
|Позывной экипажа
 
|-
 
|-
|&bull; balance
+
|name
|Дробное
+
|Строка
|Баланс водителя
+
|Наименование экипажа
 
|-
 
|-
|&bull; birthday
+
|driver_id
|ДД.ММ.ГГГГ
+
|Целое
|День рождения водителя
+
|ИД водителя
 
|-
 
|-
|&bull; car_id
+
|car_id
 
|Целое
 
|Целое
|ИД основного автомобиля водителя
+
|ИД автомобиля
 
|-
 
|-
|&bull; license
+
|crew_group_id
|Строка
+
|Целое
|Удостоверение водителя
+
|ИД группы экипажа
 
|-
 
|-
|&bull; home_phone
+
|crew_state_id
|Строка
+
|Целое
|Домашний телефон водителя
+
|ИД состояния экипажа
 
|-
 
|-
|&bull; mobile_phone
+
|online
|Строка
+
|true или false
|Мобильный телефон водителя
+
|Водитель подключен к серверу «Связи с водителями»
 
|-
 
|-
|&bull; is_locked
+
|work_shift_sum
|true или false
+
|Дробное
|Водитель заблокирован
+
|Сумма, списываемая за смену
 
|-
 
|-
|&bull; is_dismissed
+
|min_balance
|true или false
+
|Дробное
|Водитель уволен
+
|Минимальный баланс, при котором можно выйти на смену
 
|-
 
|-
|&bull; order_params
+
|common_priority
|Массив
+
|Целое
|Массив параметров заказа водителя
+
|Общий приоритет
 
|-
 
|-
|&bull;
+
|static_priority
 
|Целое
 
|Целое
|ИД параметра заказа
+
|Статический приоритет
|}
+
|-
 
+
|dynamic_priority
Пример:
+
|Целое
 
+
|Динамический приоритет
<pre>
+
|-
 +
|rating_priority
 +
|Целое
 +
|Приоритет по рейтингу
 +
|-
 +
|order_change_id
 +
|Целое
 +
|Индивидуальная сдача с заказа
 +
|-
 +
|has_light_house
 +
|true или false
 +
|Шашка
 +
|-
 +
|has_label
 +
|true или false
 +
|Наклейка
 +
|-
 +
|use_plan_shifts
 +
|true или false
 +
|Запрет работы вне запланированных смен
 +
|-
 +
|fuel_level
 +
|Дробное
 +
|Уровень топлива в автомобиле
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров экипажа
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра заказа
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
  
Запрос:
+
Пример:
 +
 
 +
<pre>
 +
Запрос:  
  
GET https://ip:port/common_api/1.0/get_drivers_info HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1  
 
Signature: <...>
 
Signature: <...>
locked_drivers=true&dismissed_drivers=true
 
 
  
 
Ответ:
 
Ответ:
Строка 1689: Строка 1854:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "drivers_info":[
+
     "crew_id":1,
      {
+
    "code":"123",
        "driver_id":1,
+
    "name":"CREW_NAME",
        "name":"DRIVER_NAME1",
+
    "driver_id":1,
        "balance":100.00,
+
    "car_id":1,
        "birthday":"01.01.1980",
+
    "crew_group_id":1,
        "car_id":1,
+
    "crew_state_id":3,
        "license":"1234567890",
+
    "online":true
        "home_phone":"123456",
+
    "work_shift_sum":0,
        "mobile_phone":"+79123456788",
+
    "min_balance":10,
        "is_locked":false,
+
    "common_priority":0,
        "is_dismissed":false,
+
    "static_priority":0,
        "order_params":[3,4]
+
    "dynamic_priority":0,
       },
+
    "rating_priority":0,
      {
+
    "order_change_id":218,
        "driver_id":2,
+
    "has_light_house":false,
         "name":"DRIVER_NAME2",
+
    "has_label":false,
        "balance":-50.00,
+
    "order_params":[
         "birthday":"01.01.1980",
+
      1,
         "car_id":2,
+
       2,
        "license":"1234567899",
+
    ],
         "home_phone":"123457",
+
    "attribute_values": [
        "mobile_phone":"+79123456789",
+
         {
         "is_locked":true,
+
              "id": 1,
        "is_dismissed":true,
+
              "bool_value": true
        "order_params":[5,6]
+
         },
      }
+
         {
 +
              "id": 2,
 +
              "num_value": 1
 +
        },
 +
         {
 +
              "id": 3,
 +
              "num_value": 10
 +
        },
 +
         {
 +
              "id": 4,
 +
              "str_value": "строка"
 +
        }
 
     ]
 
     ]
 
   }
 
   }
 
}
 
}
 
 
</pre>
 
</pre>
  
=== Запрос информации об автомобиле ===
+
=== Запрос информации об экипажах ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_car_info
+
Название запроса: get_crews_info
  
Параметры:
+
Параметры:  
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
! colspan="3" | Необязательные параметры
 
|-
 
|-
|car_id
+
|not_working_crews
|Целое
+
|true или false
|ИД автомобиля
+
|Нужно ли возвращать экипажи не на линии. По умолчанию возвращаются только экипажи на линии
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|fields
|-
+
|Строка
|need_photo
+
|Список возвращаемых полей через запятую
|true или false
 
|Нужна ли фотография автомобиля
 
 
|}
 
|}
  
Специальные возвращаемые коды:
+
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
{|
!Код
+
!Параметр
 +
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|100
+
|crews_info
|Автомобиль не найден
+
|Массив
|}
+
|Массив экипажей
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|car_id
+
|&bull; crew_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД экипажа
 
|-
 
|-
|code
+
|&bull; code
 
|Строка
 
|Строка
|Позывной автомобиля
+
|Позывной экипажа
 
|-
 
|-
|name
+
|&bull; name
 
|Строка
 
|Строка
|Наименование автомобиля
+
|Наименование экипажа
 
|-
 
|-
|gos_number 
+
|&bull; driver_id
|Строка
+
|Целое
|Государственный номер автомобиля
+
|ИД водителя
 
|-
 
|-
|color
+
|&bull; car_id
|Строка
+
|Целое
|Цвет автомобиля
+
|ИД автомобиля
 
|-
 
|-
|mark
+
|&bull; crew_group_id
|Строка
+
|Целое
|Марка автомобиля
+
|ИД группы экипажа
 
|-
 
|-
|model
+
|&bull; crew_state_id
|Строка
+
|Целое
|Модель автомобиля
+
|ИД состояния экипажа
 
|-
 
|-
|short_name
+
|&bull; online
|Строка
+
|true или false
|Краткое название автомобиля
+
|Водитель подключен к серверу «Связи с водителями»
 
|-
 
|-
|production_year
+
|&bull; work_shift_sum
 +
|Дробное
 +
|Сумма, списываемая за смену
 +
|-
 +
|&bull; min_balance
 +
|Дробное
 +
|Минимальный баланс, при котором можно выйти на смену
 +
|-
 +
|&bull; common_priority
 +
|Целое
 +
|Общий приоритет
 +
|-
 +
|&bull; static_priority
 +
|Целое
 +
|Статический приоритет
 +
|-
 +
|&bull; dynamic_priority
 +
|Целое
 +
|Динамический приоритет
 +
|-
 +
|&bull; rating_priority
 +
|Целое
 +
|Приоритет по рейтингу
 +
|-
 +
|&bull; order_change_id
 
|Целое
 
|Целое
|Год выпуска автомобиля
+
|Индивидуальная сдача с заказа
 +
|-
 +
|&bull; has_light_house
 +
|true или false
 +
|Шашка
 
|-
 
|-
|is_locked
+
|&bull; has_label
 
|true или false
 
|true или false
|Автомобиль заблокирован
+
|Наклейка
 +
|-
 +
|&bull; use_plan_shifts
 +
|true или false
 +
|Запрет работы вне запланированных смен
 +
|-
 +
|&bull; fuel_level
 +
|Дробное
 +
|Уровень топлива в автомобиле
 
|-
 
|-
|order_params
+
|&bull; order_params
 
|Массив
 
|Массив
|Массив параметров заказа автомобиля
+
|Массив параметров заказа экипажа
 
|-
 
|-
|&bull;
+
|&bull; &bull;
 
|Целое
 
|Целое
 
|ИД параметра заказа
 
|ИД параметра заказа
 
|-
 
|-
|car_photo
+
|&bull; attribute_values
|Base64
+
|Массив
|Фото автомобиля (только если need_photo = true)
+
|Массив значений атрибутов
 +
|-
 +
|&bull; &bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; &bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; &bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; &bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 1818: Строка 2044:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
 
+
GET https://ip:port/common_api/1.0/get_crews_info
GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "car_id":1,
+
     "crews_info":[
    "code":"123",
+
      {
    "name":"CAR_NAME",
+
        "crew_id":1,
    "gos_number":"a123bc",
+
        "code":"123",
    "color":"COLOR",
+
        "name":"CREW_NAME1",
    "mark":"MARK",
+
        "driver_id":1,
    "model":"MODEL",
+
        "car_id":1,
    "short_name":"SHORT_NAME",
+
        "crew_group_id":1,
    "production_year":2000,
+
        "crew_state_id":3
    "is_locked":false,
+
        "online":true,
    "order_params":[1,2]
+
        "work_shift_sum":0,
 +
        "min_balance":10,
 +
        "common_priority":10,
 +
        "static_priority":10,
 +
        "dynamic_priority":0,
 +
        "rating_priority":0,
 +
        "order_change_id":0,
 +
        "has_light_house":false,
 +
        "has_label":false,
 +
        "use_plan_shifts":false,
 +
        "fuel_level":8.15,
 +
        "order_params":[
 +
          1,
 +
          5,
 +
        ]
 +
      },
 +
      {
 +
        "crew_id":12,
 +
        "code":"777",
 +
        "name":"CREW_NAME2",
 +
        "driver_id":12,
 +
        "car_id":12,
 +
        "crew_group_id":2
 +
        "crew_state_id":1,
 +
        "online":false,
 +
        "work_shift_sum":0,
 +
        "min_balance":10,
 +
        "common_priority":15,
 +
        "static_priority":15,
 +
        "dynamic_priority":0,
 +
        "rating_priority":0,
 +
        "order_change_id":0,
 +
        "has_light_house":false,
 +
        "has_label":true,
 +
        "use_plan_shifts":true,
 +
        "fuel_level":null,
 +
        "order_params":[]
 +
      }
 +
    ]
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
 +
=== Создание экипажа ===
 +
Метод: POST
  
=== Запрос списка автомобилей ===
+
Название запроса: create_crew
  
Метод: GET
+
Параметры в формате JSON:
 
 
Название запроса: get_cars_info
 
  
Параметры:
 
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
! colspan="3" | Обязательные параметры
 
|-
 
|-
|locked_cars
+
|car_id
|true или false
+
|Целое
|Включить в ответ заблокированных автомобилей (по умолчанию false)
+
|ИД автомобиля
|}
 
 
 
 
 
Специальные возвращаемые коды: нет
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
Параметры:
 
{|
 
!Параметры
 
!Тип
 
!Описание
 
 
|-
 
|-
|cars_info
+
|driver_id
|Массив
+
|Целое
|Массив автомобилей
+
|ИД водителя
 
|-
 
|-
|&bull; car_id
+
|crew_group_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД группы экипажа
 +
|-
 +
! colspan="3" | Необязательные параметры
 
|-
 
|-
|&bull; code
+
|code
 
|Строка
 
|Строка
|Позывной автомобиля
+
|Позывной экипажа
 
|-
 
|-
|&bull; name
+
|work_shift_sum
|Строка
+
|Дробное
|Наименование автомобиля
+
|Сумма, списываемая за смену
 
|-
 
|-
|&bull; gos_number
+
|min_balance
|Строка
+
|Дробное
|Гос. номер автомобиля
+
|Минимальный баланс, при котором можно выйти на смену
 
|-
 
|-
|&bull; color
+
|work_time
 
|Строка
 
|Строка
|Цвет автомобиля
+
|Время работы, формат: “6.00-10.30, 23:00-00:48”
 
|-
 
|-
|&bull; mark
+
|has_light_house
|Строка
+
|true или false
|Марка автомобиля
+
|Шашка
 +
|-
 +
|has_label
 +
|true или false
 +
|Наклейка
 +
|-
 +
|use_plan_shifts
 +
|true или false
 +
|Запрет работы вне запланированных смен
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров экипажа. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
|&bull; model
+
|&bull;
|Строка
+
|Целое
|Модель автомобиля
+
|ИД параметра
 
|-
 
|-
|&bull; short_name
+
|attribute_values
|Строка
+
|Массив
|Краткое название автомобиля
+
|Массив значений атрибутов
 
|-
 
|-
|&bull; production_year
+
|&bull; id
 
|Целое
 
|Целое
|Год выпуска автомобиля
+
|Идентификатор атрибута
 
|-
 
|-
|&bull; is_locked
+
|&bull; bool_value
 
|true или false
 
|true или false
|Автомобиль заблокирован
+
|Значение, если тип атрибута «Логический»
 
|-
 
|-
|&bull; order_params
+
|&bull; num_value
|Массив
+
|Дробное
|Массив параметров заказа автомобиля
+
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 
|-
 
|-
|&bull;  
+
|&bull; str_value
|Целое
+
|Строка
|ИД параметра заказа
+
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Пример:
+
Специальные возвращаемые коды:  
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Автомобиль с ИД=ID не найден
 +
|-
 +
|101
 +
|Водитель с ИД=ID не найден
 +
|-
 +
|102
 +
|Группа экипажа с ИД=ID не найдена
 +
|-
 +
|103
 +
|Параметр с ИД=ID не найден или не может быть привязан к экипажу
 +
|-
 +
|104
 +
|Экипаж с таким водителем и автомобилем уже существует
 +
|-
 +
|105
 +
|Служба ЕДС автомобиля и водителя не совпадает
 +
|}
  
<pre>
+
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД созданного экипажа
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 
Запрос:
 
Запрос:
 
+
POST https://ip:port/common_api/1.0/create_crew HTTP/1.1
GET https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
locked_cars=true
+
Content-Type: application/json
 +
Content-Length: <...>
  
 +
{
 +
  "car_id":1,
 +
  "driver_id":2,
 +
  "crew_group_id":3,
 +
  "code":"CODE",
 +
  "use_shifts":true,
 +
  "order_params":[3,4],
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
   "cars_info":[
+
   "crew_id":1
    {
+
}
      "car_id":1,
 
      "code":"111",
 
      "name":"CAR_1",
 
      "gos_number":"111111",
 
      "color":"COLOR_1",
 
      "mark":"MARK_1",
 
      "model":"MODEL_1",
 
      "short_name":"SHORT_NAME_1",
 
      "production_year":2000,
 
      "is_locked":false,
 
      "order_params":[1,2]
 
    },
 
    {
 
      "car_id":2,
 
      "code":"222",
 
      "name":"CAR_2",
 
      "gos_number":"222222",
 
      "color":"COLOR_2",
 
      "mark":"MARK_2",
 
      "model":"MODEL_2",
 
      "short_name":"SHORT_NAME_2",
 
      "production_year":2000,
 
      "is_locked":false,
 
      "order_params":[3,4]
 
    }
 
  ]
 
  }
 
 
}
 
}
 +
</pre>
  
</pre>
+
=== Обновление информации об экипаже ===
 +
Метод: POST
  
=== Запрос координат экипажей ===
+
Название запроса: update_crew_info
Метод: GET
 
  
Название запроса: get_crews_coords
+
Параметры в формате JSON:
  
Параметры:
 
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
! colspan="3" | Обязательные параметры
 
|-
 
|-
 
|crew_id
 
|crew_id
 
|Целое
 
|Целое
|ИД экипажа, по которому нужно вернуть координаты. Если не задано, то будут возвращены координаты всех экипажей на линии.
+
|ИД экипажа
|}
+
|-
 
+
! colspan="3" | Необязательные параметры
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|car_id
|Координаты не найдены
+
|Целое
|}
+
|ИД автомобиля
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|crews_coords
+
|driver_id
|Массив
+
|Целое
|Список координат экипажей
+
|ИД водителя
 
|-
 
|-
|&bull; crew_id
+
|crew_group_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД группы экипажа
 
|-
 
|-
|&bull; crew_code
+
|code
 
|Строка
 
|Строка
 
|Позывной экипажа
 
|Позывной экипажа
 
|-
 
|-
|&bull; coords_time
+
|work_shift_sum
|ГГГГММДДччммсс
 
|Время получения координат
 
|-
 
|&bull; lat
 
 
|Дробное
 
|Дробное
|Долгота
+
|Сумма, списываемая за смену
 
|-
 
|-
|&bull; lon
+
|min_balance
 
|Дробное
 
|Дробное
|Широта
+
|Минимальный баланс, при котором можно выйти на смену
 
|-
 
|-
|&bull; state_kind
+
|work_time
 
|Строка
 
|Строка
|Тип состояния экипажа. Может принимать значения:
+
|Время работы, формат: “6.00-10.30, 23:00-00:48”
• "not_available" — экипаж не на линии
+
|-
 
+
|has_light_house
• "waiting" — экипаж свободен, ожидает заказы
+
|true или false
 
+
|Шашка
• "on_order" — экипаж на заказе
+
|-
 
+
|has_label
• "on_break" — экипаж на перерыве
+
|true или false
|}
+
|Наклейка
 +
|-
 +
|crew_gps_id
 +
|Целое
 +
|GPS идентификатор экипажа
 +
|-
 +
|use_plan_shifts
 +
|true или false
 +
|Запрет работы вне запланированных смен
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров экипажа
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра
 +
|}
 +
 
 +
Специальные возвращаемые коды:  
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Автомобиль с ИД=ID не найден
 +
|-
 +
|101
 +
|Водитель с ИД=ID не найден
 +
|-
 +
|102
 +
|Группа экипажа с ИД=ID не найдена
 +
|-
 +
|103
 +
|Параметр с ИД=ID не найден или не может быть привязан к экипажу
 +
|-
 +
|104
 +
|Экипаж с таким водителем и автомобилем уже существует
 +
|-
 +
|105
 +
|Служба ЕДС автомобиля и водителя не совпадает
 +
|-
 +
|106
 +
|Экипаж с ИД=ID не найден
 +
|-
 +
|107
 +
|Экипаж на линии, запрещено редактирование полей: водитель, автомобиль, позывной, группа экипажа, сумма за смену, минимальный баланс, запрет выхода вне запланированной смены.
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
  
 
Пример:
 
Пример:
 
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/get_crews_coords HTTP/1.1
+
POST https://ip:port/common_api/1.0/update_crew_info
 
Signature: <...>
 
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: 104
 +
 +
{
 +
  "crew_id":1,
 +
  "car_id":1,
 +
  "driver_id":3,
 +
  "crew_group_id":3,
 +
  "code":"CODE",
 +
  "use_plan_shifts":true,
 +
  "order_params":[3,4]
 +
}
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{
+
   "data":{}
    "crews_coords":[
+
}
      {
+
</pre>
        "crew_id":1,
+
 
        "crew_code":"111",
+
=== Запрос информации о водителе ===
        "coords_time":"20120101101010",
+
Метод: GET
        "lat":11.111111,
+
 
        "lon":22.222222,
+
Название запроса: get_driver_info
        "state_kind":"waiting"
 
    },
 
    {
 
        "crew_id":2,
 
        "crew_code":"222",
 
        "coords_time":"20120101101010",
 
        "lat":33.333333,
 
        "lon":44.444444,
 
        "state_kind":"on_order"
 
      }
 
    ]
 
  }
 
}
 
 
 
Запрос:
 
 
 
GET https://ip:port/common_api/1.0/get_crews_coords?crew_id=1 HTTP/1.1
 
Signature: <...>
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
    "crews_coords":[
 
      {
 
        "crew_id":1,
 
        "crew_code":"111",
 
        "coords_time":"20120101101010",
 
        "lat":11.111111,
 
        "lon":22.222222,
 
        "state_kind":"waiting"
 
      }
 
    ]
 
  }
 
}
 
</pre>
 
 
 
=== Запрос адресов, содержащих нужную строку ===
 
Метод: GET
 
 
 
Название запроса: get_addresses_like
 
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 2117: Строка 2417:
 
!Описание
 
!Описание
 
|-
 
|-
! colspan="3"|Обязательные параметры
+
!colspan="3"|Обязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 
|-
 
|-
|get_streets
+
!colspan="3"|Необязательные параметры
|true или false
 
|Искать улицы
 
 
|-
 
|-
|get_houses
+
|need_photo
 
|true или false
 
|true или false
|Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
+
|Нужна ли фотография водителя
|-
 
|get_points
 
|true или false
 
|Искать пункты.
 
|-
 
|street
 
|Строка
 
|Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
 
|-
 
!colspan="3"|Необязательные параметры
 
 
|-
 
|-
|house
+
|fields
 
|Строка
 
|Строка
|Часть номера дома. Нужно только если get_houses = true.
+
|Список возвращаемых полей через запятую
|-
 
|max_addresses_count
 
|Целое
 
|Максимальное количество адресов в ответе
 
 
|}
 
|}
  
Строка 2152: Строка 2440:
 
|-
 
|-
 
|100
 
|100
|Подходящие адреса не найдены
+
|Водитель не найден
 
|}
 
|}
  
Возвращаемые данные в случае успешного выполнения запроса:
+
Возвращаемые параметры в случае успешного выполнения запроса:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 2161: Строка 2449:
 
!Описание
 
!Описание
 
|-
 
|-
|addresses
+
|driver_id
|Массив
+
|Целое
|Список подходящих адресов
+
|ИД водителя
 
|-
 
|-
|&bull; street
+
|name
 
|Строка
 
|Строка
|Название улицы или пункта
+
|ФИО водителя
 +
|-
 +
|balance
 +
|Дробное
 +
|Баланс основного счета водителя
 +
|-
 +
|birthday
 +
|ДД.ММ.ГГГГ
 +
|День рождения водителя
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД основного автомобиля водителя
 
|-
 
|-
|&bull; house
+
|license
 
|Строка
 
|Строка
|Номер дома
+
|Удостоверение водителя
 
|-
 
|-
|&bull; kind
+
|home_phone
 
|Строка
 
|Строка
|Тип адреса. Может принимать значения:
+
|Любой неосновной телефон водителя (устаревшее поле)
• "street" — улица
 
 
 
• "house" — дом
 
 
 
• "point" — пункт
 
 
|-
 
|-
|&bull; comment
+
|mobile_phone
 
|Строка
 
|Строка
|Комментарий
+
|Основной телефон водителя (устаревшее поле)
 +
|-
 +
|is_locked
 +
|true или false
 +
|Водитель заблокирован
 +
|-
 +
|is_dismissed
 +
|true или false
 +
|Водитель уволен
 +
|-
 +
|driver_photo
 +
|Base64
 +
|Фото водителя (только если need_photo = true)
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров водителя
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов водителя
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|&bull; is_default
 +
|true или false
 +
|Признак основного телефона
 +
|-
 +
|&bull; use_for_call
 +
|true или false
 +
|Использовать для отзвона
 +
|-
 +
|term_account
 +
|Строка
 +
|Терминальный аккаунт
 +
|-
 +
|name_for_taxophone
 +
|Строка
 +
|Имя для TaxoPhone
 +
|-
 +
|accounts
 +
|Массив
 +
|Массив балансов счетов
 +
|-
 +
|&bull;account_kind
 +
|Целое
 +
|Тип счета
 +
|-
 +
|&bull;balance
 +
|Дробное
 +
|Баланс счета
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 2190: Строка 2565:
  
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=true&get_points=true&
+
GET https://ip:port/common_api/1.0/get_driver_info?driver_id=1&need_photo=false  
get_houses=false&street=STREE HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
  
Строка 2203: Строка 2576:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "addresses":[
+
     "driver_id":1,
      {
+
    "name":"DRIVER_NAME",
        "street":"STREET1",
+
    "balance":100,
        "house":"",
+
    "birthday":"01.01.1980",
        "kind":"street",
+
    "car_id":1,
        "comment":""
+
    "license":"1234567890",
      },
+
    "home_phone":"79999999999",
 +
    "mobile_phone":"79999999999",
 +
    "is_locked":false,
 +
    "is_dismissed":false,
 +
    "order_params":[3,4],
 +
    "phones":[
 
       {
 
       {
         "street":"STREET2",
+
         "phone":"79999999999",
         "house":"",
+
         "is_default":true,
        "kind":"street",
+
         “use_for_call”:true
         "comment":""
 
 
       },
 
       },
 
       {
 
       {
         "street":"POINT_STREET1",
+
         "phone":"79999999999",
         "house":"",
+
         "is_default":false,
        "kind":"point",
+
         “use_for_call”:false
         "comment":"Point at street STREET1"
 
 
       }
 
       }
     ]
+
     ],
  }
+
    "term_account":"00008",
}
+
    "name_for_taxophone":"NameForTaxoPhone",
 
+
    "accounts":
Запрос:
+
     [
 
 
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=false&get_points=false&
 
get_houses=true&street=STREET1&house=1&max_addresses_count=10 HTTP/1.1
 
Signature: <...>
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
     "addresses":[
 
 
       {
 
       {
         "street":"STREET1",
+
         "account_kind":0,
        "house":"1",
+
         "balance":1000993.00
        "kind":"house",
 
         "comment":""
 
 
       },
 
       },
 
       {
 
       {
         "street":"STREET1",
+
         "account_kind":1000,
        "house":"10",
+
         "balance":600.00
        "kind":"house",
 
        "comment":""
 
      },
 
      {
 
        "street":"STREET1",
 
         "house":"11",
 
        "kind":"house",
 
        "comment":""
 
 
       }
 
       }
 +
    ],
 +
    "attribute_values": [
 +
        {
 +
              "id": 1,
 +
              "bool_value": true
 +
        },
 +
        {
 +
              "id": 2,
 +
              "num_value": 1
 +
        },
 +
        {
 +
              "id": 3,
 +
              "num_value": 10
 +
        },
 +
        {
 +
              "id": 4,
 +
              "str_value": "строка"
 +
        }
 
     ]
 
     ]
 
   }
 
   }
Строка 2262: Строка 2634:
 
</pre>
 
</pre>
  
=== Анализ маршрута ===
+
=== Запрос списка водителей ===
 
Метод: GET
 
Метод: GET
  
Название запроса: analyze_route
+
Название запроса: get_drivers_info
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!colspan="3"|Небязательные параметры
 +
|-
 +
|locked_drivers
 +
|true или false
 +
|Включить в ответ запроса заблокированных водителей (по умолчанию false)
 
|-
 
|-
|source
+
|dismissed_drivers
|Строка
+
|true или false
|Адрес подачи
+
|Включить в ответ запроса уволенных водителей (по умолчанию false)
 
|-
 
|-
|dest
+
|fields
 
|Строка
 
|Строка
|Адрес назначения
+
|Список возвращаемых полей через запятую
|-
 
!colspan="3"|Необязательные параметры
 
|-
 
|source_lon
 
|Дробное
 
|Долгота адреса подачи
 
|-
 
|source_lat
 
|Дробное
 
|Широта адреса подачи
 
|-
 
|dest_lon
 
|Дробное
 
|Долгота адреса назначения
 
|-
 
|dest_lat
 
|Дробное
 
|Широта адреса назначения
 
 
|}
 
|}
  
  
Параметр source не является обязательным к заполнению, если заданы source_lon и source_lat.
+
Специальные возвращаемые коды: нет
  
Параметр dest не является обязательным к заполнению, если заданы dest_lon и dest_lat.
+
Возвращаемые данные в случае успешного выполнения запроса:
  
 
Специальные возвращаемые коды:
 
 
{|
 
{|
!Код
+
!Параметр
 +
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|100
+
|drivers_info
|Адрес подачи не распознан
+
|Массив
 +
|Массив не удаленных водителей
 
|-
 
|-
|101
+
|&bull; driver_id
|Адрес назначения не распознан
+
|Целое
 +
|ИД водителя
 
|-
 
|-
|102
+
|&bull; name
|Маршрут не распознан
+
|Строка
|}
+
|ФИО водителя
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|source_lat 
+
|&bull; balance
 
|Дробное
 
|Дробное
|Широта адреса подачи
+
|Баланс водителя
 
|-
 
|-
|source_lon 
+
|&bull; birthday
|Дробное
+
|ДД.ММ.ГГГГ
|Долгота адреса подачи
+
|День рождения водителя
 
|-
 
|-
|source_zone_id 
+
|&bull; car_id
|Целое  
+
|Целое
|ИД района подачи
+
|ИД основного автомобиля водителя
 
|-
 
|-
|dest_lat
+
|&bull; license
|Дробное
+
|Строка
|Широта адреса назначения
+
|Номер лицензии на перевозку (разрешения на перевозку)
 
|-
 
|-
|dest_lon 
+
|&bull; home_phone
|Дробное
+
|Строка
|Долгота адреса назначения
+
|Любой неосновной телефон водителя (устаревшее поле)
 
|-
 
|-
|dest_zone_id 
+
|&bull; mobile_phone
|Целое
+
|Строка
|ИД района назначения
+
|Основной телефон водителя (устаревшее поле)
 
|-
 
|-
|city_dist 
+
|&bull; is_locked
|Дробное
+
|true или false
|Километраж по городу
+
|Водитель заблокирован
 
|-
 
|-
|country_dist 
+
|&bull; is_dismissed
|Дробное
+
|true или false
|Километраж за городом
+
|Водитель уволен
 
|-
 
|-
|source_country_dist 
+
|&bull; order_params
 +
|Массив
 +
|Массив параметров водителя
 +
|-
 +
|&bull; &bull;
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|&bull; phones
 +
|Массив
 +
|Массив телефонов водителя
 +
|-
 +
|&bull; &bull; phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|&bull; &bull; is_default
 +
|true или false
 +
|Признак основного телефона
 +
|-
 +
|&bull; &bull; use_for_call
 +
|true или false
 +
|Использовать для отзвона
 +
|-
 +
|&bull; term_account
 +
|Строка
 +
|Терминальный аккаунт
 +
|-
 +
|&bull; attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; &bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; &bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; &bull; num_value
 
|Дробное
 
|Дробное
|Километраж до адреса подачи, если адрес подачи за городом
+
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; &bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 2370: Строка 2770:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/analyze_route?source=STREET1,1&dest=STREET2,2&source_lon=
+
GET https://ip:port/common_api/1.0/get_drivers_info
53.153044&source_lat=56.893301&dest_lon=53.218103&dest_lat=56.869759 HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
 +
locked_drivers=true&dismissed_drivers=true
 +
  
 
Ответ:
 
Ответ:
Строка 2382: Строка 2784:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "source_lat":11.111111,
+
     "drivers_info":[
    "source_lon":22.222222,
+
      {
    "source_zone_id":1,
+
        "driver_id":1,
    "dest_lat":33.333333,
+
        "name":"DRIVER_NAME1",
    "dest_lon":44.444444,
+
        "balance":100.00,
    "dest_zone_id":2,
+
        "birthday":"01.01.1980",
    "city_dist":1.1,
+
        "car_id":1,
    "country_dist":2.2,
+
        "license":"1234567890",
    "source_country_dist":3.3
+
        "home_phone":"79999999999",
  }
+
        "mobile_phone":"79999999999",
}
+
        "is_locked":false,
</pre>
+
        "is_dismissed":false,
 +
        "order_params":[3,4],
 +
        "phones":[
 +
          {
 +
            "phone":"79999999999",
 +
            "is_default":true,
 +
            “use_for_call”: true
  
=== Анализ маршрута 2 ===
+
          },
 +
          {
 +
            "phone":"79999999999",
 +
            "is_default":false,
 +
            “use_for_call”: true
  
Метод: GET
+
          }
 +
        ],
 +
        "term_account":"00008",
 +
        "attribute_values": [
 +
            {
 +
                  "id": 3,
 +
                  "num_value": 10
 +
            },
 +
            {
 +
                  "id": 4,
 +
                  "str_value": "строка"
 +
            }
 +
        ]
 +
      },
 +
      {
 +
        "driver_id":2,
 +
        "name":"DRIVER_NAME2",
 +
        "balance":-50.00,
 +
        "birthday":"01.01.1980",
 +
        "car_id":2,
 +
        "license":"1234567899",
 +
        "is_locked":true,
 +
        "is_dismissed":true,
 +
        "order_params":[5,6],
 +
        "phones":[
 +
          {
 +
            "phone":"79999999999",
 +
            "is_default":true,
 +
            “use_for_call”: true
 +
          },
 +
          {
 +
            "phone":"79999999999",
 +
            "is_default":false,
 +
            “use_for_call”: false
 +
          }
 +
        ],
 +
        "term_account":"00009",
 +
        "attribute_values": [
 +
            {
 +
                  "id": 3,
 +
                  "num_value": 10
 +
            },
 +
            {
 +
                  "id": 4,
 +
                  "str_value": "строка"
 +
            }
 +
        ]
 +
      }
 +
    ]
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание водителя ===
 +
Метод: POST
  
Название запроса: analyze_route2
+
Название запроса: create_driver
  
Параметры:
+
Параметры в формате JSON:
  
 
{|
 
{|
Строка 2410: Строка 2877:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|addresses
+
|name
|Массив
+
|Строка
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
+
|ФИО водителя
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД основного автомобиля
 
|-
 
|-
|&bull; address
+
|password
 
|Строка
 
|Строка
|Адрес подачи
+
|Пароль (обязательное поле, если используется сервер связи с водителями)
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
 
|-
 
|-
|&bull; lat
+
!colspan="3"|Необязательные параметры
|Дробное
 
|Широта адреса
 
 
|-
 
|-
|&bull; lon
+
|home_phone
|Дробное
+
|Строка
|Долгота адреса
+
|Неосновной телефон водителя (устаревший параметр)
|}
 
 
 
Специальные возвращаемые коды:
 
 
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|mobile_phone
|Маршрут не распознан
+
|Строка
|}
+
|Основной телефон водителя (устаревший параметр)
 
+
|-
Возвращаемые данные в случае успешного выполнения запроса:
+
|passport
 
+
|Строка
{|
+
|Паспортные данные
!Параметры
+
|-
!Тип
+
|driver_license
!Описание
+
|Строка
 +
|Водительское удостоверение
 +
|-
 +
|employee_type
 +
|Целое
 +
|Тип работника (0 - работник компании, 1 - частник)
 
|-
 
|-
|Addresses
+
|birthday
|Массив
+
|ГГГГММДДччммсс
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
+
|День рождения
 
|-
 
|-
|&bull; lat
+
|number
|Дробное
+
|Строка
|Широта адреса
+
|Табельный номер
 
|-
 
|-
|&bull; lon
+
|license
|Дробное
+
|Строка
|Долгота адреса
+
|Удостоверение
 
|-
 
|-
|&bull; zone_id
+
|start_date
|Целое
+
|ГГГГММДДччммсс
|Район адреса
+
|Дата приема на работу
 
|-
 
|-
|&bull; parking_id
+
|lic_date
|Целое
+
|ГГГГММДДччммсс
|Стоянка адреса
+
|Дата окончания договора
 
|-
 
|-
|city_dist
+
|term_account
|Дробное
+
|Строка
|Километраж по городу
+
|Терминальный аккаунт (если не указан, будет сгенерирован автоматически), должен состоять из 5 цифр
 
|-
 
|-
|country_dist
+
|comment
|Дробное
+
|Строка
|Километраж за городом
+
|Описание
 
|-
 
|-
|source_country_dist
+
|order_params
|Дробное
+
|Массив
|Километраж до адреса подачи, если адрес подачи за городом.
+
|Массив параметров водителя. Устарело. Рекомендуется использовать параметр attribute_values.
|}
+
|-
 
+
|&bull;
Пример:
+
|Целое
 +
|ИД параметра
 +
|-
 +
|driver_photo
 +
|Base64
 +
|Фотография водителя
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов водителя
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|&bull; is_default
 +
|true или false
 +
|Признак основного телефона
 +
|-
 +
|&bull; use_for_call
 +
|true или false
 +
|Использовать для отзвона
 +
|-
 +
|name_for_taxophone
 +
|Строка
 +
|Имя для TaxoPhone
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
  
<pre>
+
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Автомобиль с ИД=ID не найден
 +
|-
 +
|101
 +
|Служба ЕДС с ИД=ID не найдена
 +
|-
 +
|102
 +
|Параметр с ИД=ID не найден или не может быть привязан к водителю
 +
|-
 +
|103
 +
|Терминальный аккаунт не уникален
 +
|-
 +
|104
 +
|Некорректный терминальный аккаунт
 +
|-
 +
|107
 +
|Основной телефон может быть только один
 +
|-
 +
|108
 +
|Водитель должен иметь основной телефон
 +
|-
 +
|109
 +
|Пароль водителя не соответствует политике паролей
 +
|}
  
Запрос:
+
Возвращаемые данные в случае успешного выполнения запроса:
 
+
{|
POST /common_api/1.0/analyze_route2 HTTP/1.1
+
!Параметр
Host: ip:port
+
!Тип
Keep-Alive: 300
+
!Описание
Connection: keep-alive
+
|-
 +
|driver_id
 +
|Целое
 +
|ИД созданного водителя
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/common_api/1.0/create_driver HTTP/1.1
 +
Signature: <...>
 
Content-Type: application/json
 
Content-Type: application/json
Content-Length: 243
+
Content-Length: <...>
Signature: <...>
 
 
 
{"addresses":[{"address":"STREET1, 1","lat":11.111111,"lon":22.222222},{"address":"STREET2,
 
2","lat":33.333333,"lon":44.444444},{"address":"STREET3, 3","lat":55.555555,"lon":55.555555},
 
{"address":"STREET4, 4","lat":77.777777,"lon":88.888888}]}
 
  
 +
{
 +
  "name":"NAME",
 +
  "car_id":140,
 +
  "password":"PASSWORD",
 +
  "birthday":"19930218000000",
 +
  "comment":"COMMENT",
 +
  "order_params":[3,4],
 +
  "name_for_taxophone":"NameForTaxoPhone",
 +
  "phones":[
 +
    {
 +
      "phone":"79999999999",
 +
      "is_default":true,
 +
      “use_for_call”: true
 +
    },
 +
    {
 +
      "phone":"79999999999",
 +
      "is_default":false,
 +
      “use_for_call”: true
 +
    }
 +
  ],
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "addresses":[
+
  "driver_id":10
      {
+
}
        "lat":11.111111,
 
        "lon":22.222222,
 
        "zone_id":1,
 
        "parking_id":1
 
      },
 
      {
 
        "lat":33.333333,
 
        "lon":44.444444,
 
        "zone_id":2,
 
        "parking_id":2
 
      }
 
    ],
 
    "city_dist":0,
 
    "country_dist":2.647,
 
    "source_country_dist":3.412
 
  }
 
 
}
 
}
 
 
</pre>
 
</pre>
  
=== Запрос информации о состоянии заказа ===
+
=== Обновление информации о водителе ===
 +
Метод: POST
  
Метод: GET
+
Название запроса: update_driver_info
  
Название запроса: get_order_state
+
Параметры в формате JSON:
 
 
Параметры:
 
  
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 2539: Строка 3113:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|order_id 
+
|driver_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД редактируемого водителя
|}
+
|-
 
+
!colspan="3"|Необязательные параметры
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|name
|Заказ не найден
+
|Строка
|}
+
|ФИО водителя
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|order_id 
+
|car_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД основного автомобиля
 
|-
 
|-
|state_id 
+
|password
|Целое
+
|Строка
|ИД состояния заказа
+
|Пароль
 
|-
 
|-
|state_kind
+
|uds_id
|Строка
+
|Целое
|Тип состояния заказа. Может принимать значения:
+
|ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
 
 
• "new_order" — новый заказ
 
 
 
• "driver_assigned" — водитель назначен
 
 
 
• "car_at_place" — машина подъехала на место
 
 
 
• "client_inside" — клиент в машине
 
 
 
• "finished" — заказ успешно завершен
 
 
 
• "aborted" — заказ прекращен
 
 
|-
 
|-
|crew_id 
+
|home_phone
|Целое
+
|Строка
|ИД экипажа
+
|Неосновной телефон водителя (устаревший параметр)
 +
|-
 +
|mobile_phone
 +
|Строка
 +
|Основной телефон водителя (устаревший параметр)
 
|-
 
|-
|prior_crew_id
+
|passport
|Целое
+
|Строка
|ИД предварительного экипажа
+
|Паспортные данные
 
|-
 
|-
|driver_id 
+
|driver_license
|Целое
+
|Строка
|ИД водителя
+
|Водительское удостоверение
 
|-
 
|-
|car_id 
+
|employee_type
 
|Целое
 
|Целое
|ИД автомобиля
+
|Тип работника (0 - работник компании, 1 - частник)
 
|-
 
|-
|start_time
+
|birthday
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Время создания заказа
+
|День рождения
 +
|-
 +
|number
 +
|Строка
 +
|Табельный номер
 +
|-
 +
|license
 +
|Строка
 +
|Удостоверение
 
|-
 
|-
|source_time
+
|start_date
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Время подачи
+
|Дата приема на работу
 
|-
 
|-
|finish_time
+
|lic_date
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Время завершения заказа
+
|Дата окончания договора
 
|-
 
|-
|source 
+
|term_account
 
|Строка
 
|Строка
|Адрес подачи
+
|Терминальный аккаунт
 
|-
 
|-
|destination
+
|comment
 
|Строка
 
|Строка
|Адрес назначения
+
|Описание
 +
|-
 +
|time_block
 +
|ГГГГММДДччммсс
 +
|Временная блокировка до
 +
|-
 +
|is_locked
 +
|true или false
 +
|Заблокирован
 
|-
 
|-
|passenger
+
|lock_description
 
|Строка
 
|Строка
|Пассажир
+
|Причина блокировки
 +
|-
 +
|is_dismissed
 +
|true или false
 +
|Уволен
 
|-
 
|-
|phone
+
|dismiss_description
 
|Строка
 
|Строка
|Номер телефона
+
|Причина увольнения
 
|-
 
|-
|client_id
+
|order_params
|Целое
+
|Массив
|ИД клиента
+
|Массив параметров водителя. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
|order_crew_group_id
+
|&bull;
 
|Целое
 
|Целое
|ИД группы экипажей, которая указана в заказе
+
|ИД параметра
 
|-
 
|-
|tariff_id
+
|driver_photo
|Целое
+
|Base64
|ИД тарифа
+
|Фотография водителя
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов водителя
 
|-
 
|-
|car_mark
+
|&bull; phone
 
|Строка
 
|Строка
|Марка автомобиля
+
|Номер телефона
 
|-
 
|-
|car_model
+
|&bull; is_default
|Строка
+
|true или false
|Модель автомобиля
+
|Признак основного телефона
 
|-
 
|-
|car_color
+
|&bull; use_for_call
|Строка
+
|true или false
|Цвет автомобиля
+
|Использовать для отзвона
 
|-
 
|-
|car_number
+
|name_for_taxophone
 
|Строка
 
|Строка
|Государственный номер автомобиля
+
|Имя для TaxoPhone
 
|-
 
|-
|crew_coords
+
|attribute_values
 
|Массив
 
|Массив
|Координаты экипажа
+
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 
|-
 
|-
|&bull; lat
+
|&bull; num_value
 
|Дробное
 
|Дробное
|Широта
+
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 
|-
 
|-
|&bull; lon
+
|&bull; str_value
|Дробное
+
|Строка
|Долгота
+
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Пример:
+
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Автомобиль с ИД=ID не найден
 +
|-
 +
|101
 +
|Служба ЕДС с ИД=ID не найдена
 +
|-
 +
|102
 +
|Параметр с ИД=ID не найден или не может быть привязан к водителю
 +
|-
 +
|103
 +
|Терминальный аккаунт не уникален
 +
|-
 +
|104
 +
|Некорректный терминальный аккаунт
 +
|-
 +
|105
 +
|Водитель с ИД=ID не найден
 +
|-
 +
|106
 +
|Экипаж на линии, запрещено редактирование полей: основной автомобиль, тип работника, служба ЕДС.
 +
|-
 +
|107
 +
|Основной телефон может быть только один
 +
|-
 +
|108
 +
|Водитель должен иметь основной телефон
 +
|-
 +
|109
 +
|Пароль водителя не соответствует политике паролей
 +
|}
  
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 +
Пример:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/get_order_state?order_id=1 HTTP/1.1
+
POST https://ip:port/common_api/1.0/update_driver_info HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 +
{
 +
  "driver_id":10
 +
  "name":"NAME",
 +
  "car_id":140,
 +
  "password":"PASSWORD",
 +
  "birthday":"19930218000000",
 +
  "comment":"COMMENT",
 +
  "order_params":[3,4],
 +
  "name_for_taxophone":"NameForTaxoPhone",
 +
  "phones":[
 +
    {
 +
      "phone":"79999999999",
 +
      "is_default":true,
 +
      “use_for_call”: true
 +
    },
 +
    {
 +
      "phone":"79999999999",
 +
      "is_default":false,
 +
      “use_for_call”: false
 +
    }
 +
  ],
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
 
Ответ:
 
Ответ:
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{
+
   "data":{}
    "order_id":1,
 
    "state_id":12,
 
    "state_kind":"car_at_place",
 
    "crew_id":1,
 
    "prior_crew_id":0,
 
    "driver_id":2,
 
    "car_id":3,
 
    "start_time":"20130117125641",
 
    "source_time":"20130117132617",
 
    "finish_time":"20130117130343",
 
    "source":"1",
 
    "destination":"2",
 
    "passenger":"Слепаков",
 
    "phone":"8800",
 
    "client_id":1,
 
    "order_crew_group_id":1,
 
    "tariff_id":1,
 
    "car_mark":"Ауди",
 
    "car_model":"Q7",
 
    "car_color":"черный",
 
    "car_number":"А777АА",
 
    "crew_coords": {
 
      "lat": 56.833981,
 
      "lon": 53.220249
 
    }
 
  }
 
 
}
 
}
 
</pre>
 
</pre>
  
=== Создание задачи СМС серверу ===
+
=== Запрос информации об автомобиле ===
 +
Метод: GET
  
Метод: POST
+
Название запроса: get_car_info
 
 
Название запроса: send_sms
 
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 2723: Строка 3367:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|phone
+
|car_id
|Строка, <= 16 символов
+
|Целое
|Номер телефона
+
|ИД автомобиля
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|need_photo
 +
|true или false
 +
|Нужна ли фотография автомобиля
 
|-
 
|-
|message
+
|fields
 
|Строка
 
|Строка
|Текст СМС
+
|Список возвращаемых полей через запятую
 
|}
 
|}
  
Специальные возвращаемые коды: нет
+
Специальные возвращаемые коды:
 
+
{|
Возвращаемые данные в случае успешного выполнения запроса: нет
+
!Код
 
+
!Описание
Пример:
+
|-
 
+
|100
<pre>
+
|Автомобиль не найден
Запрос:
+
|}
 
 
POST /common_api/1.0/send_sms HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 33
 
 
 
Signature: <...>
 
 
 
message=SMSText&phone=89050057216
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{}
 
}
 
</pre>
 
 
 
=== Проверка авторизации ===
 
 
 
Метод: GET
 
 
 
Название запроса: check_authorization
 
 
 
Параметры:
 
  
 +
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|car_id
 +
|Целое
 +
|ИД автомобиля
 +
|-
 +
|code
 +
|Строка
 +
|Позывной автомобиля
 +
|-
 +
|name
 +
|Строка
 +
|Наименование автомобиля
 +
|-
 +
|gos_number 
 +
|Строка
 +
|Государственный номер автомобиля
 +
|-
 +
|color
 +
|Строка
 +
|Цвет автомобиля
 
|-
 
|-
|login
+
|mark
|Строка, <= 60 символов
+
|Строка
|Логин
+
|Марка автомобиля
 
|-
 
|-
|password
+
|model
|Строка, <= 60 символов
+
|Строка
|Пароль
+
|Модель автомобиля
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|short_name
|Не найден клиент с логином LOGIN и/или неверный пароль
+
|Строка
|}
+
|Краткое название автомобиля
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|client_id
+
|production_year
 
|Целое
 
|Целое
|ИД клиента
+
|Год выпуска автомобиля
 +
|-
 +
|is_locked
 +
|true или false
 +
|Автомобиль заблокирован
 +
|-
 +
|fuel_level
 +
|Дробное
 +
|Уровень топлива в автомобиле
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|car_photo
 +
|Base64
 +
|Фото автомобиля (только если need_photo = true или поле driver_photo указано в списке фильтра полей fields)
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 2807: Строка 3483:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/check_authorization?login=LOGIN&password=PASSWORD HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false
 
 
 
Signature: <...>
 
Signature: <...>
  
Строка 2817: Строка 3492:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "client_id":131
+
     "car_id":1,
}
+
    "code":"123",
 +
    "name":"CAR_NAME",
 +
    "gos_number":"a123bc",
 +
    "color":"COLOR",
 +
    "mark":"MARK",
 +
    "model":"MODEL",
 +
    "short_name":"SHORT_NAME",
 +
    "production_year":2000,
 +
    "is_locked":false,
 +
    "order_params":[1,2],
 +
    "attribute_values": [
 +
        {
 +
              "id": 1,
 +
              "bool_value": true
 +
        },
 +
        {
 +
              "id": 2,
 +
              "num_value": 1
 +
        },
 +
        {
 +
              "id": 3,
 +
              "num_value": 10
 +
        },
 +
        {
 +
              "id": 4,
 +
              "str_value": "строка"
 +
        }
 +
    ]
 +
  }
 
}
 
}
 
</pre>
 
</pre>
  
=== Регистрация клиента ===
+
=== Запрос списка автомобилей ===
  
Метод: POST
+
Метод: GET
  
Название запроса: register_client
+
Название запроса: get_cars_info
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 2835: Строка 3537:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!colspan="3"|Необязательные параметры
 
|-
 
|-
|name
+
|locked_cars
|Строка, <= 60 символов
+
|true или false
|ФИО
+
|Включить в ответ заблокированных автомобилей (по умолчанию false)
 
|-
 
|-
|login
+
|fields
|Строка, <= 60 символов
 
|Логин
 
|-
 
|password
 
|Строка, <= 60 символов
 
|Пароль
 
|-
 
|phones
 
 
|Строка
 
|Строка
|Номера телефонов (через запятую)
+
|Список возвращаемых полей через запятую
|-
+
|}
!colspan="3"|Необязательные параметры
 
|-
 
|address
 
|Строка
 
|Домашний адрес
 
|-
 
|birthday
 
|ДД.ММ.ГГГГ
 
|Дата рождения
 
|-
 
|gender
 
|Строка
 
|Пол. Может принимать значения:
 
• "male" -  мужской
 
  
• "female" - женский
 
|}
 
  
Специальные возвращаемые коды:
+
Специальные возвращаемые коды: нет
{|
 
!Код
 
!Описание
 
|-
 
|100
 
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 
|-
 
|101
 
|Клиент с логином=LOGIN уже существует
 
|}
 
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|client_id
+
|crews_info
 +
|Массив
 +
|Массив автомобилей
 +
|-
 +
|&bull; car_id
 
|Целое
 
|Целое
|ИД созданного клиента
+
|ИД автомобиля
|}
+
|-
 
+
|&bull; code
 +
|Строка
 +
|Позывной автомобиля
 +
|-
 +
|&bull; name
 +
|Строка
 +
|Наименование автомобиля
 +
|-
 +
|&bull; gos_number
 +
|Строка
 +
|Гос. номер автомобиля
 +
|-
 +
|&bull; color
 +
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|&bull; mark
 +
|Строка
 +
|Марка автомобиля
 +
|-
 +
|&bull; model
 +
|Строка
 +
|Модель автомобиля
 +
|-
 +
|&bull; short_name
 +
|Строка
 +
|Краткое название автомобиля
 +
|-
 +
|&bull; production_year
 +
|Целое
 +
|Год выпуска автомобиля
 +
|-
 +
|&bull; is_locked
 +
|true или false
 +
|Автомобиль заблокирован
 +
|-
 +
|&bull; fuel_level
 +
|Дробное
 +
|Уровень топлива в автомобиле
 +
|-
 +
|&bull; order_params
 +
|Массив
 +
|Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
 +
|-
 +
|&bull; &bull;
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|&bull; attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; &bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; &bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; &bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; &bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 
Пример:
 
Пример:
  
Строка 2899: Строка 3644:
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_cars_info
 
Signature: <...>
 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
+
locked_cars=true
Content-Length: 104
+
 
name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=19930218115517&gender=male&address=AD
 
DRESS
 
  
 
Ответ:
 
Ответ:
Строка 2912: Строка 3655:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "client_id":140
+
     "crews_info":[
 +
      {
 +
        "car_id":1,
 +
        "code":"111",
 +
        "name":"CAR_1",
 +
        "gos_number":"111111",
 +
        "color":"COLOR_1",
 +
        "mark":"MARK_1",
 +
        "model":"MODEL_1",
 +
        "short_name":"SHORT_NAME_1",
 +
        "production_year":2000,
 +
        "is_locked":false,
 +
        "order_params":[1,2],
 +
        "attribute_values": [
 +
            {
 +
                  "id": 1,
 +
                  "bool_value": true
 +
            },
 +
            {
 +
                  "id": 2,
 +
                  "num_value": 1
 +
            }
 +
        ]
 +
      },
 +
      {
 +
        "car_id":2,
 +
        "code":"222",
 +
        "name":"CAR_2",
 +
        "gos_number":"222222",
 +
        "color":"COLOR_2",
 +
        "mark":"MARK_2",
 +
        "model":"MODEL_2",
 +
        "short_name":"SHORT_NAME_2",
 +
        "production_year":2000,
 +
        "is_locked":false,
 +
        "order_params":[3,4],
 +
        "attribute_values": [
 +
            {
 +
                  "id": 3,
 +
                  "num_value": 10
 +
            },
 +
            {
 +
                  "id": 4,
 +
                  "str_value": "строка"
 +
            }
 +
        ]
 +
      }
 +
    ]
 
   }
 
   }
 
}
 
}
 +
 
</pre>
 
</pre>
  
=== Запрос информации по клиенту ===
+
=== Создание автомобиля ===
  
Метод: GET
+
Метод: POST
  
Название запроса: get_client_info
+
Название запроса: create_car
 
 
Параметры:
 
  
 +
Параметры в формате JSON:
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 2932: Строка 3722:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|code
|Целое
+
|Строка
|ИД клиента
+
|Позывной
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|mark
|Не найден клиент ИД=CLIENT_ID
+
|Строка
|}
+
|Марка
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|client_id
+
|color
|Целое
 
|ИД клиента
 
|-
 
|name
 
 
|Строка
 
|Строка
|ФИО
+
|Цвет
 
|-
 
|-
|number
+
|gos_number
 
|Строка
 
|Строка
|Номер договора
+
|Государственный номер
 
|-
 
|-
|address
+
|uds_id
 +
|Целое
 +
|ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|model
 +
|Строка
 +
|Модель
 +
|-
 +
|short_name
 
|Строка
 
|Строка
|Домашний адрес
+
|Краткое название
 
|-
 
|-
|gender
+
|production_year
|Строка
+
|Целое
|Пол. Может принимать значения:
+
|Год выпуска
 
 
• "male" -  мужской
 
 
 
• "female" - женский
 
 
|-
 
|-
|birthday
+
|car_class
|ДД.ММ.ГГГГ
+
|Строка
|Дата рождения
+
|Класс автомобиля (A, B, C, ...)
 
|-
 
|-
|phones 
+
|vin
 
|Строка
 
|Строка
|Номера телефонов (через запятую)
+
|VIN
 
|-
 
|-
|balance
+
|body_number
|Дробное
+
|Строка
|Баланс
+
|Номер кузова
 
|-
 
|-
|bonus_balance
+
|engine_number
|Дробное
+
|Строка
|Бонусный баланс
+
|Номер двигателя
 
|-
 
|-
|login 
+
|permit
 
|Строка
 
|Строка
|Логин
+
|Разрешение на перевозку
 
|-
 
|-
|password
+
|comment
 
|Строка
 
|Строка
|Пароль
+
|Описание
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
 
|-
 
|-
|client_group_id
+
|&bull;
 
|Целое
 
|Целое
|ИД группы клиента
+
|ИД параметра
|}
+
|-
 
+
|car_photo
Пример:
+
|Base64
 
+
|Фотография автомобиля
<pre>
+
|-
Запрос:
+
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Автомобиль с ИД=ID имеет такой же позывной=CODE
 +
|-
 +
|101
 +
|Служба ЕДС не найдена
 +
|-
 +
|0
 +
|Параметр с ИД=ID не найден или не может быть привязан к автомобилю
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД созданного автомобиля
 +
|}
  
GET https://ip:port/common_api/1.0/get_client_info?client_id=140 HTTP/1.1
+
Пример:
  
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/common_api/1.0/create_car HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 +
{
 +
  "code":"CODE",
 +
  "mark":"MARK",
 +
  "model":"MODEL",
 +
  "color":"BLACK",
 +
  "gos_number":"NUMBER",
 +
  "production_year":2000,
 +
  "comment":"COMMENT",
 +
  "order_params":[1,2,3,4],
 +
  "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "client_id":140,
+
  "car_id":140
    "name":"Васильев Артём",
+
}
    "number":"000140",
 
    "address":"Бутово,45",
 
    "gender":"male",
 
    "birthday":"18.02.1993",
 
    "phones":"[
 
      "88",
 
      "99"
 
    ]",
 
    "balance":2985,
 
    "bonus_balance":85,
 
    "login":"artem",
 
    "password":"vasilev",
 
    "client_group_id":1
 
  }
 
 
}
 
}
 
</pre>
 
</pre>
  
=== Изменение информации по клиенту ===
+
=== Обновить информацию об автомобиле ===
  
 
Метод: POST
 
Метод: POST
  
Название запроса: update_client_info
+
Название запроса: update_car_info
  
Параметры:
+
Параметры в формате JSON:
  
 
{|
 
{|
Строка 3054: Строка 3906:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|car_id
 
|Целое
 
|Целое
|ИД клиента
+
|ИД автомобиля
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
 
|-
 
|-
|name
+
|mark
|Строка, <= 60 символов
+
|Строка
|ФИО
+
|Марка
 
|-
 
|-
|login
+
|color
|Строка, <= 60 символов
+
|Строка
|Логин
+
|Цвет
 
|-
 
|-
|password
+
|gos_number
|Строка, <= 60 символов
+
|Строка
|Пароль
+
|Государственный номер
 
|-
 
|-
|phones
+
|model
 
|Строка
 
|Строка
|Номера телефонов (через запятую)
+
|Модель
 
|-
 
|-
|address
+
|short_name
 
|Строка
 
|Строка
|Домашний адрес
+
|Краткое название
 
|-
 
|-
|birthday
+
|production_year
|ДД.ММ.ГГГГ
+
|Целое
|Дата рождения
+
|Год выпуска
 
|-
 
|-
|gender
+
|car_class
 
|Строка
 
|Строка
|Пол. Может принимать значения:
+
|Класс автомобиля (A, B, C, ...)
• "male" -  мужской
 
 
 
• "female" - женский
 
 
|-
 
|-
|client_group_id
+
|vin
|Целое
+
|Строка
|ИД группы клиента
+
|VIN
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|body_number
|Клиент с номером телефона=PHONE уже существует
+
|Строка
 +
|Номер кузова
 
|-
 
|-
|101
+
|engine_number
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
+
|Строка
 +
|Номер двигателя
 
|-
 
|-
|102
+
|permit
|Клиент с логином=LOGIN уже существует
+
|Строка
 +
|Разрешение на перевозку
 +
|-
 +
|comment
 +
|Строка
 +
|Описание
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров автомобиля
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|is_locked
 +
|true или false
 +
|Автомобиль заблокирован
 +
|-
 +
|lock_description
 +
|Строка
 +
|Причина блокировки
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС
 +
|-
 +
|car_photo
 +
|Base64
 +
|Фотография автомобиля
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|101
 +
|Служба ЕДС не найдена
 +
|-
 +
|102
 +
|Автомобиль с ИД=ID не найден
 
|-
 
|-
 
|103
 
|103
|Группа клиента с ИД=CLIENT_GROUP_ID не найдена
+
|Экипаж на линии, запрещено редактирование полей: марка, модель, краткое наименование, цвет, гос. номер, служба ЕДС.
 +
|-
 +
|104
 +
|Параметр с ИД=ID не найден или не может быть привязан к автомобилю
 
|}
 
|}
  
Возвращаемые данные в случае успешного выполнения запроса: нет
+
Возвращаемые данные в случае успешного выполнения запроса: нет.
  
 
Пример:
 
Пример:
 
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
 
+
POST https://ip:port/common_api/1.0/update_car_info
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
+
Content-Type: application/json
Content-Length: 118
+
Content-Length: 104
  
client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=m
+
{
ale&address=ADDRESS&client_group_id=3
+
  "car_id":1,
 +
  "code":"CODE",
 +
  "mark":"MARK",
 +
  "model":"MODEL",
 +
  "color":"BLACK",
 +
  "gos_number":"NUMBER",
 +
  "production_year":2000,
 +
  "comment":"COMMENT",
 +
  "order_params":[3,4]
 +
}
  
 
Ответ:
 
Ответ:
 
 
{
 
{
"code":0,
+
  "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{}
 
   "data":{}
Строка 3138: Строка 4033:
 
</pre>
 
</pre>
  
=== Запрос текущих заказов ===
+
=== Запрос координат экипажей ===
 
 
 
Метод: GET
 
Метод: GET
  
Название запроса: get_current_orders
+
Название запроса: get_crews_coords
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 3151: Строка 4044:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!colspan="3"|Необязательные параметры
 
|-
 
|-
|client_id
+
|crew_id
 
|Целое
 
|Целое
|ИД клиента (может отсутствовать, если phone заполнен)
+
|ИД экипажа, по которому нужно вернуть координаты. Если не задано, то будут возвращены координаты всех экипажей на линии.
|-
 
|phone
 
|Строка, <= 16 символов
 
|Телефон клиента (может отсутствовать, если client_id заполнен)
 
 
|}
 
|}
  
Строка 3168: Строка 4057:
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Координаты не найдены
 
|}
 
|}
  
Строка 3177: Строка 4066:
 
!Описание
 
!Описание
 
|-
 
|-
|id
+
|crews_coords
|Целое
+
|Массив
|ИД заказа
+
|Список координат экипажей
 
|-
 
|-
|state_id
+
|&bull; crew_id
 
|Целое
 
|Целое
|ИД состояния заказа
+
|ИД экипажа
 
|-
 
|-
|start_time
+
|&bull; crew_code
|ГГГГММДДччммсс
+
|Строка
|Дата создания заказа
+
|Позывной экипажа
 
|-
 
|-
|source_time
+
|&bull; coords_time
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Время подачи
+
|Время получения координат
 
|-
 
|-
|source 
+
|&bull; lat
|Строка
+
|Дробное
|Адрес подачи
+
|Долгота
 
|-
 
|-
|destination 
+
|&bull; lon
|Строка
+
|Дробное
|Адрес назначения
+
|Широта
 
|-
 
|-
|passenger
+
|speed
|Строка
 
|Пассажир
 
|-
 
|crew_id
 
 
|Целое
 
|Целое
|ИД экипажа
+
|Скорость движения, км/ч
 
|-
 
|-
|prior_crew_id
+
|direction
 
|Целое
 
|Целое
|ИД предварительного экипажа
+
|Направление движения (0-Север, 90-Восток, 180-Юг, 270-Запад, -1-не задано)
 
|-
 
|-
|driver_id
+
|&bull; state_kind
|Целое
+
|Строка
|ИД водителя
+
|Тип состояния экипажа. Может принимать значения:
|-
+
• "not_available" — экипаж не на линии
|car_id
+
 
|Целое
+
• "waiting" — экипаж свободен, ожидает заказы
|ИД автомобиля
+
 
|-
+
• "on_order" — экипаж на заказе
|phone
+
 
|Строка
+
• "on_break" — экипаж на перерыве
|Номер телефона
 
|-
 
|client_id
 
|Целое
 
|ИД клиента
 
|-
 
|tariff_id
 
|Целое
 
|ИД тарифа
 
|-
 
|order_crew_group_id
 
|Целое
 
|ИД группы экипажей, которая указана в заказе
 
 
|}
 
|}
  
Строка 3241: Строка 4113:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/get_current_orders?client_id=140&phone=18 HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_crews_coords
 
Signature: <...>
 
Signature: <...>
 +
 
Ответ:
 
Ответ:
 +
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "orders":[
+
     "crews_coords":[
      {
 
        "id":20648,
 
        "state_id":44,
 
        "start_time":"20130204181111",
 
        "source_time":"20130204181111",
 
        "source":"1-й пр-т \/Москва\/,",
 
        "destination":"12-й мкр,",
 
        "passenger":"маша",
 
        "crew_id":0,
 
        "prior_crew_id":0,
 
        "driver_id":0,
 
        "car_id":0,
 
        "phone":"18",
 
        "client_id":140,
 
        "tariff_id":1,
 
        "order_crew_group_id":1
 
      },
 
 
       {
 
       {
        "id":20670,
 
        "state_id":45,
 
        "start_time":"20130207153022",
 
        "source_time":"20130207153022",
 
        "source":"11-й мкр,",
 
        "destination":"1-й пр-т \/Москва\/,",
 
        "passenger":"саша",
 
 
         "crew_id":1,
 
         "crew_id":1,
         "prior_crew_id":1,
+
         "crew_code":"111",
         "driver_id":1,
+
        "coords_time":"20120101101010",
         "car_id":1,
+
         "lat":11.111111,
         "phone":"18",
+
         "lon":22.222222,
         "client_id":140,
+
         "state_kind":"waiting"
         "tariff_id":2,
+
    },
         "order_crew_group_id":2
+
    {
 +
         "crew_id":2,
 +
         "crew_code":"222",
 +
        "coords_time":"20120101101010",
 +
        "lat":33.333333,
 +
        "lon":44.444444,
 +
         "state_kind":"on_order"
 
       }
 
       }
 
     ]
 
     ]
 
   }
 
   }
 
}
 
}
</pre>
 
  
=== Запрос выполненных заказов ===
+
Запрос:
  
 +
GET https://ip:port/common_api/1.0/get_crews_coords?crew_id=1
 +
Signature: <...>
 +
 +
Ответ:
 +
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "crews_coords":[
 +
      {
 +
        "crew_id":1,
 +
        "crew_code":"111",
 +
        "coords_time":"20120101101010",
 +
        "lat":11.111111,
 +
        "lon":22.222222,
 +
        "state_kind":"waiting"
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 +
=== Запрос адресов, содержащих нужную строку ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_finished_orders
+
Название запроса: get_addresses_like
  
 
Параметры:
 
Параметры:
Строка 3302: Строка 4182:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
! colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|get_streets
|Целое
+
|true или false
|ИД клиента (может отсутствовать, если phone заполнен)
+
|Искать улицы
 
|-
 
|-
|phone
+
|get_points
|Строка, <= 16 символов
+
|true или false
|Телефон клиента (может отсутствовать, если client_id заполнен)
+
|Искать пункты
 
|-
 
|-
|start_time
+
|get_houses
|ГГГГММДДччммсс
+
|true или false
|Начало периода
+
|Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
 
|-
 
|-
|finish_time
+
|street
|ГГГГММДДччммсс
+
|Строка
|Конец периода
+
|Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
|}
+
|-
 
+
!colspan="3"|Необязательные параметры
Специальные возвращаемые коды:
+
|-
{|
+
|house
!Код
+
|Строка
!Описание
+
|Часть номера дома. Нужно только если get_houses = true.
 +
|-
 +
|city
 +
|Строка
 +
|Город, в котором искать адреса
 +
|-
 +
|max_addresses_count
 +
|Целое
 +
|Максимальное количество адресов в ответе
 +
|-
 +
|search_in_tm
 +
|true или false
 +
|Искать адреса в ТМ (по умолчанию = true)
 +
|-
 +
|search_in_yandex
 +
|true или false
 +
|Искать адреса в Яндекс (по умолчанию = false)
 +
|-
 +
|search_in_google
 +
|true или false
 +
|Искать адреса в Google (по умолчанию = false)
 +
|-
 +
|search_in_2gis
 +
|true или false
 +
|Искать адреса в 2GIS (по умолчанию = false)
 +
|-
 +
|search_in_tmgeoservice
 +
|true или false
 +
|Искать адреса в TMGeoService (по умолчанию = false)
 +
|-
 +
|search_in_mapmd
 +
|true или false
 +
|Искать адреса в Map.md (по умолчанию = false)
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Подходящие адреса не найдены
 +
|-
 +
|101
 +
|Не указано место для поиска адресов
 
|}
 
|}
  
Строка 3336: Строка 4257:
 
!Описание
 
!Описание
 
|-
 
|-
|id
+
|addresses
|Целое
+
|Массив
|ИД заказа
+
|Список подходящих адресов
 
|-
 
|-
|state_id
+
|&bull;address_source
|Целое
+
|Строка
|ИД состояния заказа
+
|Источник адреса. Может принимать значения:
 +
 
 +
•"tm" — Такси Мастер (адрес из базы данных или из карты)
 +
 
 +
•"yandex" — Яндекс
 +
 
 +
•"google" — Google
 +
 
 +
•"2gis" — 2GIS
 +
 
 +
•"tmgeoservice" — TMGeoService
 +
 
 +
•"mapmd" - Map.md
 
|-
 
|-
|start_time
+
|&bull; street
|ГГГГММДДччммсс
+
|Строка
|Время создания заказа
+
|Название улицы или пункта
 
|-
 
|-
|source_time
+
|&bull; house
|ГГГГММДДччммсс
 
|Время подачи
 
|-
 
|finish_time
 
|ГГГГММДДччммсс
 
|Время завершения заказа
 
|-
 
|source 
 
 
|Строка
 
|Строка
|Адрес подачи
+
|Номер дома
 
|-
 
|-
|destination 
+
|&bull; kind
 
|Строка
 
|Строка
|Адрес назначения
+
|Тип адреса. Может принимать значения:
 +
• "street" — улица
 +
 
 +
• "house" — дом
 +
 
 +
• "point" — пункт
 
|-
 
|-
|passenger
+
|&bull; comment
 
|Строка
 
|Строка
|Пассажир
+
|Комментарий
 
|-
 
|-
|sum
+
|&bull; coords
|Дробное
+
|Массив
|Стоимость заказа без учета скидок (наценок)
+
|Координаты дома или пункта
 
|-
 
|-
|total_sum
+
|&bull; &bull;  lat
 
|Дробное
 
|Дробное
|Итоговая стоимость заказа
+
|Широта
 
|-
 
|-
|cash_sum
+
|&bull;  &bull; lon
 
|Дробное
 
|Дробное
|Заплачено наличными
+
|Долгота
|-
+
|}
|cashless_sum
+
 
|Дробное
+
Пример:
|Заплачено с безналичного счета клиента
+
 
|-
+
<pre>
|bonus_sum
+
 
|Дробное
+
Запрос:
|Заплачено с бонусного счета клиента
+
 
|-
+
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=true&get_points=true&
|bank_card_sum
+
get_houses=false&street=STREE
|Дробное
+
Signature: <...>
|Заплачено банковской картой
 
|-
 
|crew_id
 
|Целое
 
|ИД экипажа
 
|-
 
|prior_crew_id
 
|Целое
 
|ИД предварительного экипажа
 
|-
 
|driver_id
 
|Целое
 
|ИД водителя
 
|-
 
|car_id
 
|Целое
 
|ИД автомобиля
 
|-
 
|phone
 
|Строка
 
|Номер телефона
 
|-
 
|client_id
 
|Целое
 
|ИД клиента
 
|-
 
|tariff_id
 
|Целое
 
|ИД тарифа
 
|-
 
|order_crew_group_id
 
|Целое
 
|ИД группы экипажей, которая указана в заказе
 
|}
 
  
Пример:
+
Ответ:
  
<pre>
 
Запрос:
 
GET https://ip:port/common_api/1.0/get_finished_orders?client_id=140&phone= HTTP/1.1
 
Signature: <...>
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "orders":[
+
     "addresses":[
 
       {
 
       {
         "id":20651,
+
         "street":"STREET1",
        "state_id":34,
+
         "house":"",
         "source_time":"20130205110812",
+
         "kind":"street",
         "start_time":"20130205110812",
+
         "comment":""
         "finish_time":"20130205115618",
+
         "coords":{
         "source":"прпроп",
+
         "lat":0,
         "destination":"рррррр",
+
         "lon":0
         "passenger":"вера",
+
         }
        "sum":908,
 
        "total_sum":1000,
 
        "cash_sum":700,
 
        "cashless_sum":100,
 
        "bonus_sum":150,
 
        "bank_card_sum":50,
 
        "crew_id":6,
 
        "prior_crew_id":0,
 
        "driver_id":4,
 
        "car_id":6,
 
        "phone":"111111",
 
        "client_id":140,
 
        "tariff_id":1,
 
         "order_crew_group_id":1
 
 
       },
 
       },
 
       {
 
       {
         "id":20669,
+
         "street":"STREET2",
         "state_id":34,
+
         "house":"",
         "source_time":"20130205130500",
+
         "kind":"street",
         "start_time":"20130205130500",
+
         "comment":""
         "finish_time":"20130205134511",
+
        "coords":{
         "source":"1",
+
        "lat":0,
         "destination":"2",
+
        "lon":0
         "passenger":"маша",
+
        }
         "sum":454,
+
      },
        "total_sum":500,
+
      {
         "cash_sum":0,
+
         "street":"POINT_STREET1",
         "cashless_sum":500,
+
         "house":"",
         "bonus_sum":0,
+
         "kind":"point",
         "bank_card_sum":0,
+
         "comment":"Point at street STREET1"
         "crew_id":6,
+
        "coords":{
         "prior_crew_id":0,
+
        "lat":53.224656,
         "driver_id":4,
+
         "lon":56.842521
         "car_id":6,
+
        }
         "phone":"222222",
+
      }
         "client_id":140,
+
    ]
         "tariff_id":2,
+
  }
         "order_crew_group_id":2
+
}
       }
+
 
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=false&get_points=false&
 +
get_houses=true&street=STREET1&house=1&max_addresses_count=10
 +
Signature: <...>
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "addresses":[
 +
      {
 +
         "street":"STREET1",
 +
         "house":"1",
 +
         "kind":"house",
 +
         "comment":""
 +
      },
 +
      {
 +
         "street":"STREET1",
 +
         "house":"10",
 +
         "kind":"house",
 +
         "comment":""
 +
      },
 +
      {
 +
         "street":"STREET1",
 +
         "house":"11",
 +
         "kind":"house",
 +
         "comment":""
 +
       }
 
     ]
 
     ]
 
   }
 
   }
Строка 3490: Строка 4398:
 
</pre>
 
</pre>
  
=== Проведение операции по клиенту ===
+
=== Запрос адресов, содержащих нужную строку 2 ===
 
+
Метод: GET
Метод: POST
 
  
Название запроса: create_client_operation
+
Название запроса: get_addresses_like2
  
 
Параметры:
 
Параметры:
Строка 3503: Строка 4410:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
! colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|get_streets
|Целое
+
|true или false
|ИД клиента
+
|Искать улицы
 
|-
 
|-
|sum
+
|get_points
|Дробное
+
|true или false
|Сумма
+
|Искать пункты
 +
|-
 +
|get_houses
 +
|true или false
 +
|Искать дома
 +
|-
 +
|address
 +
|Строка
 +
|Строка для поиска адреса
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|city
 +
|Строка
 +
|Города, разделенные запятой, в которых искать адреса
 
|-
 
|-
|oper_type
+
|max_addresses_count
 
|Целое
 
|Целое
|Тип операции:
+
|Максимальное количество адресов в ответе
• "receipt" - приход
+
|-
 
+
|search_in_tm
• "expense" - расход
+
|true или false
 +
|Искать адреса в ТМ (по умолчанию = true)
 +
|-
 +
|search_in_yandex
 +
|true или false
 +
|Искать адреса в Яндекс (по умолчанию = false)
 
|-
 
|-
|pay_type
+
|search_in_google
|Целое
+
|true или false
|Тип оплаты:
+
|Искать адреса в Google (по умолчанию = false)
• "cash" - наличный
 
 
 
• "nocash" - безналичный
 
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|search_in_2gis
 +
|true или false
 +
|Искать адреса в 2GIS (по умолчанию = false)
 
|-
 
|-
|oper_time
+
|search_in_tmgeoservice
|ГГГГММДДччммсс
+
|true или false
|Время создания операции
+
|Искать адреса в TMGeoService (по умолчанию = false)
 
|-
 
|-
|comment
+
|search_in_mapmd
|Строка
+
|true или false
|Комментарий
+
|Искать адреса в Map.md (по умолчанию = false)
 
|}
 
|}
  
Строка 3544: Строка 4469:
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Подходящие адреса не найдены
 +
|-
 +
|101
 +
|Не указано место для поиска адресов
 
|}
 
|}
  
Строка 3553: Строка 4481:
 
!Описание
 
!Описание
 
|-
 
|-
|oper_id
+
|addresses
|Целое
+
|Массив
|ИД операции
+
|Список подходящих адресов
|}
+
|-
 +
|&bull; address_source
 +
|Строка
 +
|Источник адреса. Может принимать значения:
 +
 
 +
•"tm" — Такси Мастер (адрес из базы данных или из карты)
 +
 
 +
•"yandex" — Яндекс
 +
 
 +
•"google" — Google
 +
 
 +
•"2gis" — 2GIS
 +
 
 +
•"tmgeoservice" — TMGeoService
 +
 
 +
•"mapmd" - Map.md
 +
|-
 +
|&bull; city
 +
|Строка
 +
|Название города
 +
|-
 +
|&bull; point
 +
|Строка
 +
|Название пункта
 +
|-
 +
|&bull; street
 +
|Строка
 +
|Название улицы
 +
|-
 +
|&bull; house
 +
|Строка
 +
|Номер дома
 +
|-
 +
|&bull; kind
 +
|Строка
 +
|Тип адреса. Может принимать значения:
 +
• "street" — улица
 +
 
 +
• "house" — дом
 +
 
 +
• "point" — пункт
 +
|-
 +
|&bull; comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|&bull; coords
 +
|Массив
 +
|Координаты дома или пункта
 +
|-
 +
|&bull; &bull;  lat
 +
|Дробное
 +
|Широта
 +
|-
 +
|&bull;  &bull; lon
 +
|Дробное
 +
|Долгота
 +
|}
  
 
Пример:
 
Пример:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_client_operation HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_addresses_like2?get_streets=true&get_points=true& get_houses=true&address=STR12
 
Signature: <...>
 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 99
 
 
client_id=112&oper_time=20130221100719&oper_sum=300&oper_type=receipt&pay_type=cash&comment=COMMENT
 
  
 
Ответ:
 
Ответ:
Строка 3576: Строка 4558:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "oper_id":31
+
     "addresses":[
 
+
      {
 +
        "address_source":"tm",
 +
        "kind":"street",
 +
        "city":"CITY ",
 +
        "point":"",
 +
        "street":"STREET",
 +
        "house":"12",
 +
        "comment":"",
 +
        "coords":{
 +
            "lat":11.11111,
 +
            "lon":22.222222
 +
        }
 +
      },
 +
      {
 +
        "address_source":"tm",
 +
        "kind":"street",
 +
        "city":"CITY ",
 +
        "point":"",
 +
        "street":"STREET",
 +
        "house":"120",
 +
        "comment":"",
 +
        "coords":{
 +
            "lat":11.11111,
 +
            "lon":22.222222
 +
        }
 +
      }
 +
    ]
 
   }
 
   }
 
}
 
}
 +
 +
 
</pre>
 
</pre>
  
=== Запрос операций по клиенту ===
+
=== Поиск ближайшего адреса ===
 +
Метод: GET
  
Метод: GET
+
Название запроса: find_nearest_address
  
Название запроса: get_client_operations
+
Версия ТМ: 3.12
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 3595: Строка 4605:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
! colspan="3"|Обязательные параметры
 +
|-
 +
|lat
 +
|Дробное
 +
|Широта
 +
|-
 +
|lon
 +
|Дробное
 +
|Долгота
 +
|-
 +
! colspan="3"|Необязательные параметры
 
|-
 
|-
|client_id
+
|radius
 
|Целое
 
|Целое
|ИД клиента (обязателен, если phone отсутствует)
+
|Радиус в метрах
 +
|-
 +
|search_in_tm
 +
|true или false
 +
|Искать адреса в ТМ (по умолчанию = true)
 +
|-
 +
|search_in_google
 +
|true или false
 +
|Искать адреса в Google (по умолчанию = false)
 
|-
 
|-
|phone
+
|search_in_tmgeoservice
|Целое
+
|true или false
|Телефон клиента (обязателен, если client_id отсутствует)
+
|Искать адреса в TMGeoService (по умолчанию = false)
 
|-
 
|-
|start_time
+
|search_in_mapmd
|ГГГГММДДччммсс
+
|true или false
|Начало периода
+
|Искать адреса в Map.md (по умолчанию = false)
 
|-
 
|-
|finish_time
+
|search_in_2gis
|ГГГГММДДччммсс
+
|true или false
|Конец периода
+
|Искать адреса в 2ГИС (по умолчанию = false)
 
|}
 
|}
  
Строка 3620: Строка 4648:
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Подходящие адреса не найдены
 +
|-
 +
|101
 +
|Не указано место для поиска адресов
 
|}
 
|}
  
Строка 3629: Строка 4660:
 
!Описание
 
!Описание
 
|-
 
|-
|oper_id
+
|address_source
|Целое
+
|Строка
|ИД операции
+
|Источник адреса. Может принимать значения:
 +
 
 +
* "tm" — Такси Мастер (адрес из базы данных или из карты)
 +
* "google" — Google
 +
* "tmgeoservice" — TMGeoService
 +
* "2gis" — 2ГИС
 +
* "mapmd" — Map.md
 
|-
 
|-
|oper_time
+
|city
|ГГГГММДДччммсс
+
|Строка
|Время создания операции
+
|Название города
 
|-
 
|-
|sum
+
|point
|Дробное
+
|Строка
|Сумма
+
|Название пункта
 
|-
 
|-
|order_id
+
|street
|Целое
+
|Строка
|Заказ, связанный с операцией
+
|Название улицы
 
|-
 
|-
|oper_type
+
|house
|Целое
+
|Строка
|Тип операции:
+
|Номер дома
• "receipt" - приход
 
 
 
• "expense" - расход
 
 
|-
 
|-
|pay_type
+
|kind
|Целое
+
|Строка
|Тип оплаты:
+
|
• "cash" - наличный
+
Тип адреса. Может принимать значения:
  
"nocash" - безналичный
+
* "street" — улица
|-
+
* "house" — дом
|name
+
* "point" — пункт
|Строка
 
|Наименование
 
 
|-
 
|-
 
|comment
 
|comment
 
|Строка
 
|Строка
 
|Комментарий
 
|Комментарий
 +
|-
 +
|coords
 +
|Массив
 +
|Координаты дома или пункта
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота
 
|}
 
|}
  
Строка 3671: Строка 4715:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
GET
+
GET https://ip:port/common_api/1.0/find_nearest_address?lat=56.850926&lon=53.212706&radius=100&search_in_tm=false&search_in_google=false&search_in_tmgeoservice=true HTTP/1.1
 
 
GET https://ip:port/common_api/1.0/get_client_operations?
 
client_id=112&start_time=20130201092112&finish_time=20130221092112 HTTP/1.1
 
 
 
 
Signature: <...>
 
Signature: <...>
  
Строка 3685: Строка 4726:
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{
+
   "data":
     "operations":[
+
  {
      {
+
     "address_source":"tmgeoservice",
        "oper_id":112,
+
    "kind":"house",
        "oper_time":"20130219091328",
+
    "city":"Ижевск",
        "sum":"21,8",
+
    "point":"",
        "order_id":11800,
+
    "street":"Пушкинская ул.",
        "oper_type":"receipt",
+
    "house":"206",
        "pay_type":"cash",
+
    "comment":"",
        "name":"Пополнение счета",
+
    "coords":
        "comment":"Комментарий"
+
    {
      },
+
      "lat":56.850951,
      {
+
      "lon":53.212822
        "oper_id":112,
+
    }
        "oper_time":"20130220112245",
 
        "sum":"4500",
 
        "order_id":11801,
 
        "oper_type":"receipt",
 
        "pay_type":"cash",
 
        "name":"Пополнение счета",
 
        "comment":"Комментарий"
 
      }
 
    ]
 
 
   }
 
   }
 
}
 
}
 +
 
</pre>
 
</pre>
  
 +
=== Анализ маршрута ===
 +
Метод: GET
  
=== Проведение операции по водителю ===
+
Название запроса: analyze_route
 
 
Метод: POST
 
 
 
Название запроса: create_driver_operation
 
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 3728: Строка 4759:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|driver_id
+
|source
|Целое
+
|Строка
|ИД водителя
+
|Адрес подачи
 
|-
 
|-
|oper_sum
+
|dest
|Дробное
 
|Сумма
 
|-
 
|oper_type
 
 
|Строка
 
|Строка
|Тип операции: receipt - приход, expense - расход.
+
|Адрес назначения
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
 
|-
 
|-
|name
+
|source_lon
|Строка
+
|Дробное
|Наименование операции
+
|Долгота адреса подачи
 +
|-
 +
|source_lat
 +
|Дробное
 +
|Широта адреса подачи
 
|-
 
|-
|oper_time
+
|dest_lon
|ГГГГММДДччммсс
+
|Дробное
|Время создания операции (если не задано, текущее)
+
|Долгота адреса назначения
 
|-
 
|-
|comment
+
|dest_lat
|Строка
+
|Дробное
|Комментарий
+
|Широта адреса назначения
 
|}
 
|}
 +
 +
 +
Параметр source не является обязательным к заполнению, если заданы source_lon и source_lat.
 +
 +
Параметр dest не является обязательным к заполнению, если заданы dest_lon и dest_lat.
 +
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
 
 
{|
 
{|
 
!Код
 
!Код
Строка 3762: Строка 4798:
 
|-
 
|-
 
|100
 
|100
|Водитель не найден ИД=DRIVER_ID
+
|Адрес подачи не распознан
|}
+
|-
 +
|101
 +
|Адрес назначения не распознан
 +
|-
 +
|102
 +
|Маршрут не распознан
 +
|}
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 3772: Строка 4813:
 
!Описание
 
!Описание
 
|-
 
|-
|oper_id
+
|source_lat 
|Целое
+
|Дробное
|ИД операции
+
|Широта адреса подачи
 +
|-
 +
|source_lon 
 +
|Дробное
 +
|Долгота адреса подачи
 +
|-
 +
|source_zone_id 
 +
|Целое
 +
|ИД района подачи
 +
|-
 +
|dest_lat
 +
|Дробное
 +
|Широта адреса назначения
 +
|-
 +
|dest_lon 
 +
|Дробное
 +
|Долгота адреса назначения
 +
|-
 +
|dest_zone_id 
 +
|Целое  
 +
|ИД района назначения
 +
|-
 +
|city_dist 
 +
|Дробное
 +
|Километраж по городу
 +
|-
 +
|country_dist 
 +
|Дробное
 +
|Километраж за городом
 +
|-
 +
|source_country_dist 
 +
|Дробное
 +
|Километраж до адреса подачи, если адрес подачи за городом
 
|}
 
|}
 
  
 
Пример:
 
Пример:
  
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_driver_operation HTTP/1.1
+
GET https://ip:port/common_api/1.0/analyze_route?source=STREET1,1&dest=STREET2,2&source_lon=
 +
53.153044&source_lat=56.893301&dest_lon=53.218103&dest_lat=56.869759
 
Signature: <...>
 
Signature: <...>
Content-Type: application/json
+
 
Content-Length: 99
+
Ответ:
  
 
{
 
{
  "driver_id": 1,
+
  "code":0,
  "oper_sum": 10.00,
+
  "descr":"OK",
  "oper_type": "receipt",
+
  "data":{
  "name": "Пополнение счета",
+
    "source_lat":11.111111,
  "oper_time": "20141210100719",
+
    "source_lon":22.222222,
  "comment": "Комментарий к операции"
+
    "source_zone_id":1,
}
+
    "dest_lat":33.333333,
 
+
    "dest_lon":44.444444,
Ответ:
+
    "dest_zone_id":2,
 
+
    "city_dist":1.1,
{
+
    "country_dist":2.2,
  "code":0,
+
    "source_country_dist":3.3
  "descr":"OK",
+
  }
  "data":{
 
  "oper_id":31
 
  }
 
 
}
 
}
 
 
</pre>
 
</pre>
  
 +
=== Анализ маршрута 2 ===
  
=== Запрос операций по водителю ===
+
Метод: POST
  
Метод: GET
+
Название запроса: analyze_route2
  
Название запроса: get_driver_operations
+
Параметры в формате JSON:
 
 
Параметры:
 
  
 
{|
 
{|
Строка 3826: Строка 4893:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|driver_id
+
|addresses
|Целое
+
|Массив
|ИД водителя
+
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
 +
|-
 +
|&bull; address
 +
|Строка
 +
|Адрес подачи
 
|-
 
|-
|start_time
+
|&bull; lat
|ГГГГММДДччммсс
+
|Дробное
|Начало периода
+
|Широта адреса
 
|-
 
|-
|finish_time
+
|&bull; lon
|ГГГГММДДччммсс
+
|Дробное
|Конец периода
+
|Долгота адреса
|}
+
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|get_full_route_coords
 +
|true или false
 +
|Возвращать координаты точек полного маршрута (по умолчанию false)
 +
|-
 +
|crew_group_id
 +
|Целое
 +
|ИД группы экипажей
 +
|}
  
 +
Специальные возвращаемые коды:
  
Специальные возвращаемые коды:
 
 
{|
 
{|
 
!Код
 
!Код
Строка 3846: Строка 4927:
 
|-
 
|-
 
|100
 
|100
|Не найден водитель ИД=DRIVER_ID
+
|Маршрут не распознан
 
|}
 
|}
  
 +
Возвращаемые данные в случае успешного выполнения запроса:
  
Возвращаемые данные в случае успешного выполнения запроса:
 
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|oper_id
+
|Addresses
|Целое
+
|Массив
|ИД операции
+
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
 
|-
 
|-
|oper_time
+
|&bull; lat
|ГГГГММДДччммсс
+
|Дробное
|Время создания операции
+
|Широта адреса
 
|-
 
|-
|sum
+
|&bull; lon
 
|Дробное
 
|Дробное
|Сумма
+
|Долгота адреса
 
|-
 
|-
|order_id
+
|&bull; zone_id
 
|Целое
 
|Целое
|Заказ, связанный с операцией
+
|Район адреса
 
|-
 
|-
|oper_type
+
|&bull; parking_id
 
|Целое
 
|Целое
|Тип операции:
+
|Стоянка адреса
•"receipt" - приход
 
•"expense" - расход
 
 
|-
 
|-
|name
+
|city_dist
|Строка
+
|Дробное
|Наименование
+
|Километраж по городу
 
|-
 
|-
|comment
+
|country_dist
|Строка
+
|Дробное
|Комментарий
+
|Километраж за городом
 +
|-
 +
|source_country_dist
 +
|Дробное
 +
|Километраж до адреса подачи, если адрес подачи за городом.
 +
|-
 +
|full_route_coords
 +
|Массив
 +
|Массив координат точек маршрута.
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта точки
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота точки
 
|}
 
|}
  
Строка 3890: Строка 4985:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_driver_operations?
+
POST /common_api/1.0/analyze_route2
driver_id=112&start_time=20130201092112&finish_time=20130221092112 HTTP/1.1
+
Host: ip:port
 +
Keep-Alive: 300
 +
Connection: keep-alive
 +
Content-Type: application/json
 +
Content-Length: 243
 
Signature: <...>
 
Signature: <...>
 +
 +
{"get_full_route_coords":true,"addresses":[{"address":"STREET1, 1","lat":11.111111,
 +
"lon":22.222222},{"address":"STREET2, 2","lat":33.333333,"lon":44.444444},
 +
{"address":"STREET3, 3","lat":55.555555,"lon":55.555555},{"address":"STREET4,
 +
4","lat":77.777777,"lon":88.888888}]}
 +
 +
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "operations":[
+
    "addresses":[
      {
+
      {
         "oper_id":112,
+
         "lat":11.111111,
         "oper_time":"20130219091328",
+
         "lon":22.222222,
         "sum":"21,8",
+
        "zone_id":1,
         "order_id":11800,
+
         "parking_id":1
         "oper_type":"receipt",
+
      },
         "name":"DRIVER_OPERATION_1",
+
      {
         "comment":"DRIVER_OPERATION_COMMENT_1"
+
         "lat":33.333333,
      },
+
         "lon":44.444444,
      {
+
         "zone_id":2,
        "oper_id":112,
+
         "parking_id":2
        "oper_time":"20130220112245",
+
      }
        "sum":"4500",
+
    ],
         "order_id":11801,
+
    "city_dist":0,
         "oper_type":"receipt",
+
    "country_dist":2.647,
         "name":"DRIVER_OPERATION_2",
+
    "source_country_dist":3.412,
         "comment":"DRIVER_OPERATION_COMMENT_2"
+
    "full_route_coords":[
      }
+
      {
 +
        "lat":55.833603,
 +
         "lon":37.515537
 +
      },
 +
      {
 +
         "lat":55.832855,
 +
        "lon":37.516315
 +
      },
 +
      {
 +
         "lat":55.833405,
 +
         "lon":37.51799
 +
      },
 +
      ...
 
     ]
 
     ]
 
   }
 
   }
Строка 3926: Строка 5044:
 
</pre>
 
</pre>
  
=== Задание координат экипажей ===
+
=== Запрос информации о состоянии заказа ===
Метод: POST
 
  
Название запроса: set_crews_coords
+
Метод: GET
 +
 
 +
Название запроса: get_order_state
 +
 
 +
Параметры:
  
Параметры в формате JSON:
 
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!Обязательные параметры
+
!colspan="3"|Обязательные параметры
 
|-
 
|-
|crew_coords
+
|order_id 
|Массив
 
|Массив координат экипажей
 
|-
 
|&bull; crew_id
 
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД заказа
 
|-
 
|-
|&bull; gps_id
+
!colspan="3"|Необязательные параметры
|Целое
 
|GPS идентификатор (если не задан ИД экипажа)
 
 
|-
 
|-
|&bull; lat
+
|fields
|Дробное
+
|Строка
|Широта
+
|Список возвращаемых полей через запятую
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|&bull; lon
+
|100
|Дробное
+
|Заказ не найден
|Долгота
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
!Необязательные параметры
+
|order_id 
 +
|Целое
 +
|ИД заказа
 
|-
 
|-
|speed
+
|state_id 
|Дробное
+
|Целое
|Скорость
+
|ИД состояния заказа
|}
+
|-
 
+
|state_kind
 
+
|Строка
Специальные возвращаемые коды: нет
+
|Тип состояния заказа. Может принимать значения:
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет
 
 
 
  
Пример:
+
• "new_order" — новый заказ
  
<pre>
+
• "driver_assigned" — водитель назначен
Запрос:
 
  
POST https://ip:port/common_api/1.0/set_crews_coords HTTP/1.1
+
• "car_at_place" — машина подъехала на место
Signature: <...>
 
Content-Type: application/json
 
Content-Length: 109
 
  
{"crews_coords":[{"crew_id":1,"lat":11.111111,"lon":22.222222},
+
"client_inside" — клиент в машине
{"gps_id":2,"lat":33.333333,"lon":44.444444}]}
 
  
Ответ:
+
• "finished" — заказ успешно завершен
  
{
+
"aborted" — заказ прекращен
  "code":0,
 
  "descr":"OK",
 
  "data":{}
 
}
 
</pre>
 
 
 
=== Анализ телефона ===
 
 
 
Метод: GET
 
 
 
Название запроса: analyze_phone
 
 
 
Параметры:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!Обязательные параметры
+
|crew_id 
 +
|Целое
 +
|ИД экипажа
 
|-
 
|-
|phone
+
|prior_crew_id
|Строка
+
|Целое
|Номер телефона
+
|ИД предварительного экипажа
 
|-
 
|-
!Необязательные параметры
+
|driver_id 
 +
|Целое
 +
|ИД водителя
 
|-
 
|-
|search_in_drivers_mobile
+
|car_id 
|true или false
+
|Целое
|Искать среди мобильных телефонов водителей
+
|ИД автомобиля
 
|-
 
|-
|search_in_drivers_home
+
|server_time_offset
|true или false
+
|Целое
|Искать среди домашних телефонов водителей
+
|Смещение относительно серверного времени
 
|-
 
|-
|search_in_clients
+
|start_time
|true или false
+
|ГГГГММДДччммсс
|Искать среди телефонов клиентов
+
|Время создания заказа
 
|-
 
|-
|search_in_phones
+
|source_time
|true или false
+
|ГГГГММДДччммсс
|Искать в справочнике телефонов
+
|Время подачи
|}
 
 
 
 
 
Если параметры search_in_drivers_mobile, search_in_drivers_home, search_in_clients, search_in_phones не заданы, то поиск телефона будет происходить во всех справочниках.
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|finish_time
|Телефон не найден
+
|ГГГГММДДччммсс
|}
+
|Время завершения заказа
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|phone_type
+
|source 
 
|Строка
 
|Строка
|Может принимать значения: «driver_mobile», «driver_home», «client», «phone».
+
|Адрес подачи
 
|-
 
|-
|id
+
|source_lat
|Целое
+
|Строка
|ИД водителя, клиента, телефона из справочника.
+
|Широта адреса подачи
|}
+
|-
 
+
|source_lon
 
+
|Строка
Пример:
+
|Долгота адреса подачи
 
+
|-
<pre>
+
|destination
Запрос:
+
|Строка
 
+
|Адрес назначения
GET /common_api/1.0/analyze_phone?
 
phone=89501234567&search_in_drivers_mobile=true&search_in_drivers_home=true&search_in_clients=true&
 
search_in_phones=true HTTP/1.1
 
 
 
Host: 127.0.0.1:8089
 
Keep-Alive: 300
 
Connection: keep-alive
 
Signature: 4285286a446064353f4a951b721c54f7
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
  "phone_type":"client",
 
  "id":1
 
  }
 
}
 
 
 
</pre>
 
 
 
 
 
=== Показать сообщение в ТМ ===
 
 
 
Метод: POST
 
 
 
Название запроса: show_tm_message
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!Обязательные параметры
+
|destination_lat
 +
|Строка
 +
|Широта адреса назначения
 
|-
 
|-
|text
+
|destination_lon
|Строка
+
|Строка  
|Текст сообщения
+
|Долгота адреса назначения
 
|-
 
|-
!Необязательные параметры
+
|stops
 +
|Массив
 +
|Информация по остановкам заказа
 
|-
 
|-
|header
+
|&bull; address
|Строка
+
|Строка  
|Заголовок сообщения
+
|Адрес остановки
 
|-
 
|-
|timeout
+
|&bull; lat
|Целое
+
|Дробное
|Скрывать сообщение через, сек. (0 — не скрывать)
+
|Широта адреса остановки
 
|-
 
|-
|users
+
|&bull; lon
|Массив
+
|Дробное
|Массив пользователей (если не указаны — отправлять всем)
+
|Долгота адреса остановки
 +
|-
 +
|trip_distance
 +
|Дробное
 +
|Фактический километраж
 +
|-
 +
|trip_time
 +
|Целое
 +
|Фактическое время в пути
 +
|-
 +
|customer
 +
|Строка
 +
|Заказчик
 +
|-
 +
|passenger
 +
|Строка
 +
|Пассажир
 +
|-
 +
|phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|phone_to_dial
 +
|Строка
 +
|Номер телефона для отзвона
 
|-
 
|-
|&bull;
+
|client_id
 
|Целое
 
|Целое
|ИД пользователя
+
|ИД клиента
|}
+
|-
 
+
|client_name
 
+
|Строка
Специальные возвращаемые коды:
+
|Имя клиента
 
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|client_group_id
|Пользователи для отправки сообщения не найдены
+
|Целое
|}
+
|ИД группы клиента
 
 
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет.
 
 
 
Пример:
 
<pre>
 
 
 
Запрос:
 
POST /common_api/1.0/show_tm_message HTTP/1.1
 
Host: 127.0.0.1:8089
 
Keep-Alive: 300
 
Connection: keep-alive
 
Signature: 4285286a446064353f4a951b721c54f7
 
 
 
{
 
  "text": "Текст сообщения",
 
  "users": [
 
      1,
 
      2,
 
      3
 
  ],
 
  "header": "Заголовок",
 
  "timeout": 12
 
}
 
 
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{}
 
}
 
 
 
</pre>
 
 
 
 
 
=== Запрос списка купленных смен водителей ===
 
 
 
Метод: GET
 
 
 
Название запроса: get_driver_shifts
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!Обязательные параметры
+
|client_group_name
 +
|Строка
 +
|Название группы клиента
 
|-
 
|-
|start_time
+
|client_employee_id
|ГГГГММДДччммсс
+
|Целое
|Начало периода
+
|ИД сотрудника клиента
 
|-
 
|-
|finish_time
+
|order_crew_group_id
|ГГГГММДДччммсс
+
|Целое
|Конец периода
+
|ИД группы экипажей, которая указана в заказе
 
|-
 
|-
!Необязательные параметры
+
|tariff_id
|-
 
|driver_id
 
 
|Целое
 
|Целое
|ИД водителя
+
|ИД тарифа
 
|-
 
|-
|new_shifts
+
|car_mark
|true или false
+
|Строка
|Включить в ответ новые смены (по умолчанию true)
+
|Марка автомобиля
 
|-
 
|-
|in_work_shifts
+
|car_model
|true или false
+
|Строка
|Включить в ответ смены в работе (по умолчанию true)
+
|Модель автомобиля
 
|-
 
|-
|finished_shifts
+
|car_color
|true или false
+
|Строка
|Включить в ответ выполненные смены (по умолчанию true)
+
|Цвет автомобиля
 
|-
 
|-
|failed_shifts
+
|car_number
|true или false
+
|Строка
|Включить в ответ неуспешно завершенные смены (по умолчанию true)
+
|Государственный номер автомобиля
 
|-
 
|-
|returned_shifts
+
|confirmed
|true или false
+
|Строка
|Включить в ответ возвращенные смены (по умолчанию false)
+
|Состояние подтвержденности заказа водителем или оператором.
|}
+
 
 +
Может принимать значения:
  
Специальные возвращаемые коды: нет
+
• "not_confirmed" — не подтверждено
  
Возвращаемые данные в случае успешного выполнения запроса:
+
• "confirmed_by_driver" — заказ принят водителем
  
{|
+
• "confirmed_by_oper" — заказ подтвержден оператором
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|shifts
+
|crew_coords
 
|Массив
 
|Массив
|Массив купленных смен
+
|Координаты экипажа
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта
 
|-
 
|-
|&bull; shift_id
+
|&bull; lon
|Целое
+
|Дробное
|ИД купленной смены
+
|Долгота
 
|-
 
|-
|&bull; driver_id
+
|order_params
|Целое
+
|Массив
|ИД водителя
+
|Массив параметров заказа экипажа
 
|-
 
|-
|&bull;driver_name
+
|&bull;  
|Строка
+
|Целое
|ФИО водителя
+
|ИД параметра заказа
 
|-
 
|-
|&bull; plan_shift_id
+
|creation_way
 
|Строка
 
|Строка
|ИД запланированной смены
+
|Способ создания заказа. Может принимать значения:
|-
+
 
|&bull; plan_shift_name
+
• "operator" — заказ создан оператором
|Строка
+
 
|Наименование запланированной смены
+
• "sms" — заказ создан через смс
 +
 
 +
• "market" — заказ из биржи
 +
 
 +
• "common_api" — заказ создан через api
 +
 
 +
• "t_api" — заказ создан через api
 +
 
 +
• "taxophone" — заказ создан через таксофон с телефона
 +
 
 +
• "driver" — заказ создан водителем
 +
 
 +
• "daily_order" — ежедневный заказ
 +
 
 +
• "taxophone_web" — заказ создан через таксофон с сайта
 +
 
 +
• "unknown" — неизвестный
 
|-
 
|-
|&bull; plan_shift_cost
+
|is_prior
|Дробное
+
|true или false
|Цена смены
+
|Предварительный заказ
 
|-
 
|-
|&bull; plan_shift_type
+
|is_really_prior
|Строка
+
|true или false
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
+
|Предварительный заказ на вкладке "Предварительные"
 
|-
 
|-
|&bull; plan_shift_start_time
+
|email
|ГГГГММДДччммсс
+
|Строка
|План-начало смены (для срочных)
+
|Email для уведомлений
 
|-
 
|-
|&bull; plan_shift_finish_time
+
|prior_to_current_before_minutes
|ГГГГММДДччммсс
+
|Целое
|План-конец смены (для срочных)
+
|Время перехода из предварительного в текущие заказы, мин
 
|-
 
|-
|&bull; plan_shift_length
+
|flight_number
|Целое
+
|Строка
|План продолжительность смены, ч. (для бессрочных)
+
|Номер рейса
 
|-
 
|-
|&bull; plan_shift_crew_group_id
+
|sum
|Целое
+
|Дробное
|ИД группы экипажей, которые могут купить смену
+
|Сумма без скидки
 
|-
 
|-
|&bull; shift_state
+
|total_sum
|Строка
+
|Дробное
|Состояние смены («new» - новая, «in_work» - в работе, «finished» - завершена успешно, «failed» - завершена неуспешно)
+
|Итоговая сумма заказа
 
|-
 
|-
|&bull; buy_time
+
|cash_sum
|ГГГГММДДччммсс
+
|Дробное
|Время продажи смены водителю
+
|Сумма наличными
 
|-
 
|-
|&bull; is_returned
+
|cashless_sum
|true или false
+
|Дробное
|Признак возвращенной смены
+
|Сумма безналичными
 
|-
 
|-
|&bull; return_time
+
|bonus_sum
|ГГГГММДДччммсс
+
|Дробное
|Время возврата смены
+
|Сумма бонусами
 
|-
 
|-
|&bull; orders_count
+
|bank_card_sum
|Целое  
+
|Дробное
|Количество заказов, выполненных водителем за смену
+
|Сумма банковской картой
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|-
 +
|bill
 +
|Массив
 +
|Чек TMDriver. Данный узел выводится только, если по заказу есть чек
 +
|-
 +
|&bull; code
 +
|Строка
 +
|Код элемента расчета
 +
|-
 +
|&bull; text
 +
|Строка
 +
|Наименование элемента расчета
 +
|-
 +
|&bull; value
 +
|Строка
 +
|Значение элемента расчета (количество)
 +
|-
 +
|&bull; sum
 +
|Строка
 +
|Стоимость элемента расчета
 +
|-
 +
|fact_route
 +
|Массив
 +
|Фактический маршрут по заказу, выводится только если поле fact_route передали в списке фильтра полей fields
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта точки маршрута
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота точки маршрута
 +
|-
 +
|&bull; time
 +
|ГГГГММДДччммсс
 +
|Время данной точки
 +
|-
 +
|&bull; speed
 +
|Целое
 +
|Скорость в данный момент, км/ч
 +
|-
 +
|&bull; direction
 +
|Целое
 +
|Направление движения, градусы (0 - север, 90 - восток, 180 - юг, 270 - запад)
 
|-
 
|-
|&bull; orders_sum
+
|is_auction
|Дробное
+
|true или false
|Сумма заказов, выполненных водителем за смену
+
|Признак заказа-аукциона
 
|-
 
|-
|&bull; fact_length
+
|payment_pay_system
|Дробное
+
|Строка
|Фактическая продолжительность смены, ч.
+
|Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется).
 
|}
 
|}
  
Строка 4311: Строка 5429:
  
 
<pre>
 
<pre>
Запрос:
+
Запрос:  
  
GET https://ip:port/common_api/1.0/get_driver_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_order_state?order_id=1
Signature: <...>
+
Signature: <...>  
  
 
+
Ответ:  
Ответ:
 
  
 
{
 
{
Строка 4323: Строка 5440:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "shifts":[
+
     "order_id":1,
 +
    "state_id":12,
 +
    "state_kind":"car_at_place",
 +
    "crew_id":1,
 +
    "prior_crew_id":0,
 +
    "driver_id":2,
 +
    "car_id":3,
 +
    "server_time_offset:0,
 +
    "start_time":"20130117125641",
 +
    "source_time":"20130117132617",
 +
    "finish_time":"20130117130343",
 +
    "source":"30 Лет Победы ул. \/Ижевск\/, 4Б",
 +
    "source_lat":56.863613,
 +
    "source_lon":53.186539,
 +
    "destination":"Кирова ул. \/Ижевск\/, 56",
 +
    "destination_lat":56.862202,
 +
    "destination_lon":53.187485,
 +
    "stops":[
 +
      {
 +
        "address":"30 Лет Победы ул. \/Ижевск\/, 8",
 +
        "lat":56.863388,
 +
        "lon":53.184269
 +
      }
 +
    ],
 +
    "trip_distance":10.5,
 +
    "trip_time":20,
 +
    "customer":"Слепаков",
 +
    "passenger":"Слепаков",
 +
    "phone":"8800",
 +
    "client_id":1,
 +
    "client_employee_id":1,
 +
    "order_crew_group_id":1,
 +
    "tariff_id":1,
 +
    "car_mark":"Ауди",
 +
    "car_model":"Q7",
 +
    "car_color":"черный",
 +
    "car_number":"А777АА", 
 +
    "confirmed":"confirmed_by_oper",
 +
    "crew_coords": {
 +
        "lat": 56.833981,
 +
        "lon": 53.220249
 +
    },
 +
    "order_params":[
 +
      1,
 +
      2,
 +
      5
 +
    ],
 +
    "creation_way":"operator",
 +
    "is_prior":true,
 +
    "is_really_prior":false,
 +
    "email":"mail@mail.ru",
 +
    "prior_to_current_before_minutes":30,
 +
    "flight_number":"A-0501/123",
 +
    "sum":50.5,
 +
    "total_sum":80,
 +
    "cash_sum":20.1,
 +
    "cashless_sum":10,
 +
    "bonus_sum":5.2,
 +
    "bank_card_sum":15,
 +
    "attribute_values": [
 +
        {
 +
              "id": 1,
 +
              "bool_value": true
 +
        },
 +
        {
 +
              "id": 2,
 +
              "num_value": 1
 +
        },
 +
        {
 +
              "id": 3,
 +
              "num_value": 10
 +
        },
 +
        {
 +
              "id": 4,
 +
              "str_value": "строка"
 +
        }
 +
    ],
 +
    "bill":
 +
    [
 
       {
 
       {
         "shift_id":1,
+
         "code":"BOARDING",
         "driver_id":1,
+
         "text":"Посадка",
         "driver_name":"DRIVER_1",
+
         "value":"",
         "plan_shift_id":1,
+
         "sum":"20,00"
         "plan_shift_name":"PLAN_SHIFT_1",
+
      },
         "plan_shift_cost":100,
+
      {
         "plan_shift_type":"limited",
+
         "code":"TRIP_TIME",
         "plan_shift_start_time":"20140101101010",
+
         "text":"Общее время",
         "plan_shift_finish_time":"20140101101010",
+
         "value":"0:00:00",
         "plan_shift_length":null,
+
         "sum":""
         "plan_shift_crew_group_id":1,
+
      },
         "shift_state":new,
+
      {
         "buy_time":"20140101101010",
+
         "code":"TRIP_DIST",
         "is_returned":false,
+
         "text":"Общее расстояние",
         "return_time":null,
+
         "value":"0,00 км",
        "orders_count":10,
+
         "sum":""
         "orders_sum":1000,
+
      },
        "fact_length":1.2
+
      {
 +
         "code":"BEFORE_DISC",
 +
         "text":"Сумма без скидки",
 +
         "value":"",
 +
         "sum":"20,00"
 
       },
 
       },
 
       {
 
       {
         "shift_id":2,
+
         "code":"AFTER_DISC",
        "driver_id":2,
+
         "text":"Сумма со скидкой",
         "driver_name":"DRIVER_2",
+
         "value":"",
         "plan_shift_id":2,
+
         "sum":"20,00"
         "plan_shift_name":"PLAN_SHIFT_2",
+
      },
         "plan_shift_cost":200,
+
      {
         "plan_shift_type":"unlimited",
+
         "code":"MINIMUM",
         "plan_shift_start_time":null,
+
         "text":"Минималка",
        "plan_shift_finish_time":null,
+
         "value":"",
         "plan_shift_length":8,
+
         "sum":"60,00"
        "plan_shift_crew_group_id":null,
+
      }
        "shift_state":new,
+
    ],
         "buy_time":"20140101101010",
+
    "fact_route":
         "is_returned":true,
+
    [
         "return_time":"20140101101010",
+
      {
        "orders_count":0,
+
         "lat":11.111111,
         "orders_sum":0,
+
         "lon":22.222222,
         "fact_length":0
+
         "time":"20130117132617",
 +
         "speed":123,
 +
         "direction":0
 
       }
 
       }
     ]
+
     ],
 +
    "is_auction":false,
 +
    "payment_pay_system": "qr"
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
 +
=== Создание задачи СМС серверу ===
  
=== Запрос списка запланированных смен водителей ===
+
Метод: POST
  
Метод: GET
+
Название запроса: send_sms
 
 
Название запроса: get_driver_plan_shifts
 
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!Обязательные параметры
+
!colspan="3"|Обязательные параметры
 
|-
 
|-
|start_time
+
|phone
|ГГГГММДДччммсс
+
|Строка, <= 30 символов
|Начало периода (если включаем в ответ срочные смены)
+
|Номер телефона
 
|-
 
|-
|finish_time
+
|message
|ГГГГММДДччммсс
+
|Строка
|Конец периода (если включаем в ответ срочные смены)
+
|Текст СМС
|-
 
!Необязательные параметры
 
|-
 
|limited_shifts
 
|true или false
 
|Включить в ответ срочные смены (по умолчанию true)
 
|-
 
|unlimited_shifts
 
|true или false
 
|Включить в ответ бессрочные смены (по умолчанию true)
 
 
|}
 
|}
  
 
Специальные возвращаемые коды: нет
 
Специальные возвращаемые коды: нет
  
Возвращаемые данные в случае успешного выполнения запроса:
+
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST /common_api/1.0/send_sms
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 33
 +
 
 +
Signature: <...>
 +
 
 +
message=SMSText&phone=89050057216
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
</pre>
 +
 
 +
=== Проверка авторизации ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: check_authorization
 +
 
 +
Параметры:
 +
 
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|plan_shifts
+
!colspan="3"|Обязательные параметры
|Массив
 
|Массив запланированных смен
 
 
|-
 
|-
|&bull; plan_shift_id
+
|login
|Целое
+
|Строка, <= 60 символов
|ИД запланированной смены
+
|Логин
 
|-
 
|-
|&bull; plan_shift_name
+
|password
|Строка  
+
|Строка, <= 60 символов
|Наименование запланированной смены
+
|Пароль
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|&bull; plan_shift_comment
+
|100
|Строка
+
|Не найден клиент с логином LOGIN и/или неверный пароль
|Комментарий запланированной смены
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|&bull; plan_shift_cost
+
|client_id
|Дробное
+
|Целое
|Цена смены
+
|ИД клиента
|-
 
|&bull; plan_shift_type
 
|Строка
 
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
 
|-
 
|&bull; plan_shift_start_time
 
|ГГГГММДДччммсс
 
|План-начало смены (для срочных)
 
|-
 
|&bull; plan_shift_finish_time
 
|ГГГГММДДччммсс
 
|План-конец смены (для срочных)
 
|-
 
|&bull; plan_shift_length
 
|Целое
 
|План продолжительность смены, ч. (для бессрочных)
 
|-
 
|&bull; plan_shift_crew_group_id
 
|Целое  
 
|ИД группы экипажей, которые могут купить смену
 
|-
 
|&bull; max_sell_count
 
|Целое
 
|Максимальное количество продаж смены
 
|-
 
|&bull; sold_count
 
|Целое
 
|Количество продаж смены
 
 
|}
 
|}
  
Строка 4466: Строка 5671:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
+
GET https://ip:port/common_api/1.0/check_authorization?login=LOGIN&password=PASSWORD
 +
 
 
Signature: <...>
 
Signature: <...>
 
  
 
Ответ:
 
Ответ:
Строка 4476: Строка 5681:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "plan_shifts":[
+
     "client_id":131
      {
+
}
        "plan_shift_id":1,
+
}
        "plan_shift_name":"PLAN_SHIFT_1",
+
</pre>
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_1",
+
 
        "plan_shift_cost":100,
+
=== Регистрация клиента ===
        "plan_shift_type":"limited",
 
        "plan_shift_start_time":"20140101101010",
 
        "plan_shift_finish_time":"20140101101010",
 
        "plan_shift_length":null,
 
        "plan_shift_crew_group_id":1,
 
        "max_sell_count":100,
 
        "sold_count":10
 
      },
 
      {
 
        "plan_shift_id":2,
 
        "plan_shift_name":"PLAN_SHIFT_2",
 
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_2",
 
        "plan_shift_cost":200,
 
        "plan_shift_type":"unlimited",
 
        "plan_shift_start_time":null,
 
        "plan_shift_finish_time":null,
 
        "plan_shift_length":8,
 
        "plan_shift_crew_group_id":2,
 
        "max_sell_count":200,
 
        "sold_count":20
 
      }
 
    ]
 
  }
 
}
 
</pre>
 
 
 
 
 
=== Продажа смены водителю ===
 
  
 
Метод: POST
 
Метод: POST
  
Название запроса: driver_buy_shift
+
Название запроса: register_client
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!Обязательные параметры
+
!colspan="3"|Обязательные параметры
 
|-
 
|-
|crew_id
+
|name
|Целое
+
|Строка, <= 60 символов
|ИД экипажа
+
|ФИО
 
|-
 
|-
|plan_shift_id
+
|login
|Целое
+
|Строка, <= 60 символов
|ИД запланированной смены
+
|Логин
|}
 
 
 
Специальные возвращаемые коды:
 
 
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|password
|Запланированная смена не найдена
+
|Строка, <= 60 символов
 +
|Пароль
 +
|-
 +
|phones
 +
|Строка
 +
|Номера телефонов (через запятую)
 +
|-
 +
!colspan="4"|Необязательные параметры
 +
|-
 +
|client_group
 +
|Целое
 +
|ИД группы клиента
 
|-
 
|-
|101
+
|parent_id
|Экипаж не найден
+
|Целое
 +
|ИД клиента-родителя
 
|-
 
|-
|102
+
|address
|Водитель не найден
+
|Строка
 +
|Домашний адрес
 
|-
 
|-
|103
+
|birthday
|Недостаточно денег на счете водителя
+
|ГГГГММДДччммсс
 +
|Дата рождения
 
|-
 
|-
|104
+
|gender
|Водитель уволен либо заблокирован
+
|Строка
 +
|Пол. Может принимать значения:
 +
• "male" -  мужской
 +
 
 +
• "female" - женский
 
|-
 
|-
|105
+
|email
|Запланированная смена устарела
+
|Строка
 +
|E-mail
 
|-
 
|-
|106
+
|use_email_informing
|Не подходит группа экипажа
+
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 
|-
 
|-
|107
+
|comment
|Превышено максимальное число покупок смены
+
|Строка
 +
|Комментарий
 
|-
 
|-
|108
+
|use_own_account
|Повторная покупка смены
+
|true или false
 +
|Использовать собственный счет для оплаты заказов
 
|}
 
|}
  
 
+
Специальные возвращаемые коды:
Возвращаемые данные в случае успешного выполнения запроса: нет.
+
{|
 
+
!Код
Пример:
+
!Описание
 +
|-
 +
|100
 +
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 +
|-
 +
|101
 +
|Клиент с логином=LOGIN уже существует
 +
|-
 +
|102
 +
|Группа клиента с ИД=CLIENT_GROUP не найдена
 +
|-
 +
|103
 +
|Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
 +
|-
 +
|109
 +
|Пароль клиента не соответствует политике паролей
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД созданного клиента
 +
|}
 +
 
 +
Пример:
  
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
+
POST https://ip:port/common_api/1.0/register_client
 
Signature: <...>
 
Signature: <...>
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
+
Content-Length: 104
crew_id=1&plan_shift_id=1
+
name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=19930218115517&gender=male&address=ADDRESS&client_group=1&parent_id=10&email=mail%40ya.ru&use_email_informing=true&use_own_account=false
  
  
Строка 4587: Строка 5808:
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{}
+
   "data":{
 +
    "client_id":140
 +
  }
 
}
 
}
 
</pre>
 
</pre>
  
== Описание протокола TMTAPI Версия 1.0 ==
+
=== Регистрация клиента 2 ===
 +
Метод: POST
  
=== Общее описание протокола ===
+
Название запроса: register_client2
  
==== Формат запроса ====
+
Версия ТМ: 3.12
  
TM API принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TM API, должно идти название API (tm_tapi) и версия API.
+
Параметры в формате JSON:
  
Пример:
+
{|
 
+
!Параметры
<pre>
+
!Тип
GET https://ip:port/tm_tapi/1.0/get_info_by_phone HTTP/1.1
+
!Описание
</pre>
+
|-
 
+
!colspan="3"|Обязательные параметры
Для получения данных из БД используются запросы типа GET. Для записи данных в БД используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI.
+
|-
 
+
|name
Пример:
+
|Строка, <= 60 символов
 
+
|ФИО
<pre>
 
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE-PHONE_
 
TO_DIAL&signature=661ce071eeefcb4f7fc8bc1f17bd520b HTTP/1.1
 
</pre>
 
 
 
В запросе типа POST параметры передаются в теле запроса в формате application/x-www-form-
 
urlencoded.
 
 
 
Пример:
 
 
 
<pre>
 
POST https://ip:port/tm_tapi/1.0/change_order_state HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 71
 
 
 
order_id=98798&need_state=12&signature=a204c50c7e48f0c6849a87485fe5e171
 
</pre>
 
 
 
В любом запросе обязательно с другими полями должно передаваться поле signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMAPI в Такси-Мастер.
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE
 
&signature=ef17ea682d09e452af544a5758dba396 HTTP/1.1
 
 
 
Секретный ключ:
 
321
 
 
 
Signature = MD5("phone=89058800565&fields=PHONE_TYPE" + "321") = ef17ea682d09e452af544a5758dba396
 
HTTP/1.1
 
</pre>
 
 
 
==== Формат ответа ====
 
TM API всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате XML. Общий вид возвращаемого результата:
 
 
 
<pre>
 
<response>
 
<code>Числовой код результата</code>
 
<descr>Строковое описание результата</descr>
 
<data>Дополнительная информация</data>
 
</response>
 
</pre>
 
 
 
Существуют общие для всех запросов коды результатов:
 
{|
 
! Код
 
! Описание
 
 
|-
 
|-
|0
+
|login
|Успешное выполнение запроса
+
|Строка, <= 60 символов
 +
|Логин
 
|-
 
|-
|1
+
|password
|Неизвестная ошибка
+
|Строка, <= 60 символов
 +
|Пароль
 
|-
 
|-
|2
+
|phones
|Неизвестный тип API
+
|Массив
 +
|Массив телефонов клиента
 
|-
 
|-
|3
+
|&bull; phone
|API отключено в настройках модуля TM API в Такси-Мастер
+
|Строка
 +
|Номер телефона
 
|-
 
|-
|4
+
|&bull; is_default
|Не совпадает секретный ключ
+
|true или false
 +
|Признак основного телефона
 
|-
 
|-
|5
+
!colspan="4"|Необязательные параметры
|Неподдерживаемая версия API
 
 
|-
 
|-
|6
+
|client_group_id
|Неизвестное название запроса
+
|Целое
 +
|ИД группы клиента
 
|-
 
|-
|7
+
|parent_id
|Неверный тип запроса GET
+
|Целое
 +
|ИД клиента-родителя
 
|-
 
|-
|8
+
|address
|Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
+
|Строка
 +
|Домашний адрес
 
|-
 
|-
|9
+
|birthday
|Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
+
|ГГГГММДДччммсс
 +
|Дата рождения
 
|-
 
|-
|10
+
|gender
|Внутренняя ошибка обработки запроса
+
|Строка
|}
+
|Пол. Может принимать значения:
 +
• "male" -  мужской
  
=== Описание запросов ===
+
• "female" - женский
 
 
==== Запрос информации по номеру телефона ====
 
Метод: GET
 
 
 
Название запроса: get_info_by_phone
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|email
 +
|Строка
 +
|E-mail
 
|-
 
|-
|PHONE
+
|use_email_informing
|Строка, <= 16 символов
+
|true или false
|Номер телефона
+
|Использовать E-mail для отправки уведомлений по заказу
 
|-
 
|-
|FIELDS
+
|comment
 
|Строка
 
|Строка
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
+
|Комментарий
 +
|-
 +
|use_own_account
 +
|true или false
 +
|Использовать собственный счет для оплаты заказов
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 
|-
 
|-
|signature
+
|&bull; str_value
|Строка  
+
|Строка
|Поле для проверки секретного ключа.
+
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Специальные возвращаемые коды: нет
+
Специальные возвращаемые коды:
 
 
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
 
 
 
 
{|
 
{|
!Параметр
+
!Код
!Тип
 
 
!Описание
 
!Описание
 
|-
 
|-
|PHONE_TYPE
+
|100
|Целое
+
|Дублирование номера телефона=PHONE в списке
|Тип телефона звонящего
+
|-
(1 - если звонит водитель; 2 - если звонит физическое лицо; 3 - если звонит юридическое лицо; 4 - если звонит номер из справочника Телефоны; 0 - неизвестный номер)
+
|101
 +
|Клиент с логином=LOGIN уже существует
 
|-
 
|-
|PHONE_TO_DIAL
+
|102
|Строка, <= 16 символов
+
|Группа клиента с ИД=CLIENT_GROUP не найдена
|Номер телефона для отзвона по заказу
 
 
|-
 
|-
|CREW_ID
+
|103
|Целое
+
|Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
|ИД экипажа
 
 
|-
 
|-
|IS_PRIOR
+
|105
|true или false
+
|Основной телефон может быть только один
|Признак предварительного заказа
 
 
|-
 
|-
|ORDER_CLIENT_ID
+
|106
|Целое
+
|Клиент должен иметь основной телефон
|ИД клиента из заказа
 
 
|-
 
|-
|DRIVER_PHONE
+
|107
|Строка, <= 16 символов
+
|Атрибут с ИД=ID не найден
|Номер телефона водителя
 
 
|-
 
|-
|CREW_SYSTEMSTATE
+
|108
|Целое
+
|Атрибут с ИД=ID не может быть привязан к клиенту
|Состояние экипажа
 
 
|-
 
|-
|CLIENT_ID
+
|109
|Целое
+
|Пароль клиента не соответствует политике паролей
|ИД клиента
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|CLIENT_TYPE
+
|client_id
|Целое  
+
|Целое
|Тип клиента
+
|ИД созданного клиента
|-
+
|}
|CATEGORYID
+
 
|Целое
+
Пример:
|ИД категории телефона
+
 
|-
+
<pre>
|PHONE_SYSTEM_CATEGORY
+
Запрос:
|Целое
+
 
|Системное значение категории телефона (0 - обычный, 1 - черный, 2 - белый, 3 - серый)
+
POST https://ip:port/common_api/1.0/register_client2 HTTP/1.1
|-
+
Signature: <...>
|ORDER_ID
+
Content-Type: application/json
|Целое
+
Content-Length: <...>
|ИД заказа
+
 
|-
+
{
|DRIVER_ID
+
  "name":"NAME",
|Целое
+
  "login":"LOGIN",
|ИД водителя
+
  "password":"PASSWORD",
|-
+
  "phones":[
|ORDER_STATE
+
    {
|Целое
+
      "phone":"88",
|Состояние заказа
+
      "is_default":true
 +
    },
 +
    {
 +
      "phone":"99",
 +
      "is_default":false
 +
    }
 +
  ],
 +
  "address":"ADDRESS",
 +
  "gender":"male",
 +
  "birthday":"20000101000000",
 +
  "client_group_id":1,
 +
  "parent_id":10,
 +
  "email":"mail@ya.ru",
 +
  "use_email_informing":true,
 +
  "comment":"TEXT",
 +
  "use_own_account":false,
 +
  "attribute_values":[
 +
    {
 +
      "id":5,
 +
      "bool_value":true
 +
    },
 +
    {
 +
      "id":7,
 +
      "num_value":10
 +
    },
 +
    {
 +
      "id":9,
 +
      "str_value":"TEST"
 +
    }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "client_id":140
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос информации по клиенту ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_client_info
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 
|-
 
|-
|DRIVER_REMAINDER
+
!colspan="3"|Обязательные параметры
|Дробное
 
|Баланс счета водителя
 
 
|-
 
|-
|DISCOUNTEDSUMM
+
|client_id
|Строка
+
|Целое
|Сумма заказа с учетом всех скидок
+
|ИД клиента
 
|-
 
|-
|CREW_GROUP_ID
+
!colspan="3"|Необязательные параметры
|Целое
 
|ИД группы экипажа
 
 
|-
 
|-
|CLIENT_BALANCE
+
|fields
|Дробное
+
|Строка
|Баланс клиента
+
|Список возвращаемых полей через запятую. Для полей списка сотрудников, запрашиваемого клиента, названия начинаются с "employees.", например: "employees.name"
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|DRIVER_TIMECOUNT
+
|100
|Целое
+
|Не найден клиент ИД=CLIENT_ID
|Время пути водителя до адреса подачи (в минутах)
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|SOURCE_TIMECOUNT
+
|client_id
|Целое  
+
|Целое
|Время оставшееся до подачи (в минутах)
+
|ИД клиента
 
|-
 
|-
|SOUND_COLOR
+
|parent_id
|Строка
+
|Целое
|Запись с информацией о цвете
+
|ИД клиента-родителя
 
|-
 
|-
|SOUND_MARK
+
|name
|Строка  
+
|Строка
|Запись с информацией о марке автомобиля
+
|ФИО
 
|-
 
|-
|GOSNUMBER
+
|number
|Строка  
+
|Строка
|Государственный номер автомобиля
+
|Номер договора
 
|-
 
|-
|CAR_COLOR
+
|address
|Строка  
+
|Строка
|Цвет автомобиля
+
|Домашний адрес
 
|-
 
|-
|CAR_MARK
+
|gender
 
|Строка  
 
|Строка  
|Марка автомобиля
+
|Пол. Может принимать значения:
 +
• "" - не указан
 +
 
 +
• "male" -  мужской
 +
 
 +
• "female" - женский
 
|-
 
|-
|ORDER_COORDS
+
|birthday
|Строка
+
|ДД.ММ.ГГГГ
|Координаты места подачи
+
|Дата рождения
 
|-
 
|-
|CREW_COORDS
+
|phones 
|Строка
+
|Массив
|Координаты назначенного экипажа
+
|Массив телефонов клиента
 
|-
 
|-
|MARKET_TYPE
+
|&bull; phone
 +
|Строка
 +
|Номер телефона клиента
 +
|-
 +
|balance
 +
|Дробное
 +
|Баланс
 +
|-
 +
|bonus_balance
 +
|Дробное
 +
|Бонусный баланс
 +
|-
 +
|login 
 +
|Строка
 +
|Логин
 +
|-
 +
|password
 +
|Строка
 +
|Пароль
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|tariff_id
 +
|Целое
 +
|ИД тарифа клиента или группы клиентов
 +
|-
 +
|prize_tariff_id
 +
|Целое
 +
|ИД призового тарифа клиента или группы клиентов
 +
|-
 +
|tariff_shift_id
 
|Целое
 
|Целое
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
+
|ИД смены тарифов клиента или группы клиентов
 
|-
 
|-
|ORDERS_COUNT
+
|discount_id
 
|Целое
 
|Целое
|Для телефона клиента — количество текущих и предварительных заказов по телефону; для телефона водителя — количество текущих заказов, на которые назначен данный водитель
+
|ИД скидки клиента или группы клиентов
 
|-
 
|-
|CLIENT_GROUP_ID
+
|prize_discount_id
 
|Целое
 
|Целое
|ИД группы клиента
+
|ИД призовой скидки клиента или группы клиентов
 +
|-
 +
|min_balance
 +
|Дробное
 +
|Порог, ниже которого не может опускаться баланс
 +
|-
 +
|min_balance_for_use_cashless
 +
|Дробное
 +
|Минимальный баланс для использования безналичного счета
 
|-
 
|-
|CLIENT_BONUS_BALANCE
+
|min_bonus_balance_for_use_bonus
 
|Дробное
 
|Дробное
|Бонусный баланс клиента
+
|Минимальный баланс для использования бонусного счета
 +
|-
 +
|is_locked
 +
|true или false
 +
|Клиент заблокирован
 
|-
 
|-
|AD_LIGHTHOUSE
+
|lock_description
 
|Строка
 
|Строка
|Признак наличия шашек. Пустая строка – номер клиента или водителя без экипажа. 1 – есть шашки, 0 – нет шашек.
+
|Причина блокировки
 +
|-
 +
|use_cashless_account
 +
|true или false
 +
|Признак использования безналичного счета
 +
|-
 +
|use_cashless
 +
|true или false
 +
|Признак использования безналичного расчета по умолчанию. Имеет смысл только при use_cashless_account = true
 +
|-
 +
|no_cash_payment
 +
|true или false
 +
|Признак запрета использования наличных расчетов. Имеет смысл только при use_cashless_account = true и use_cashless = true
 
|-
 
|-
|CREW_STATE
+
|remain_prize
 
|Целое
 
|Целое
|Состояние экипажа.
+
|Сколько заказов осталось до призового
 +
|-
 +
|email
 +
|Строка
 +
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|default_crew_group
 +
|Целое
 +
|Группа экипажей по умолчанию
 +
|-
 +
|use_own_account
 +
|true или false
 +
|Использовать собственный счет для оплаты заказа
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|employees
 +
|Массив
 +
|Массив сотрудников клиента. Поля аналогичны полям основного клиента, только у сотрудников отсутствует поле employees
 +
|-
 +
|accounts
 +
|Массив
 +
|Массив счетов клиента. Для сотрудников счета возвращаются, только если их явно запросили в фильтре полей "employees.accounts"
 +
|-
 +
|&bull; account_kind
 +
|Целое
 +
|Тип счета:
 +
* 0 - Основной счет
 +
* 1- Бонусный счет
 +
* Остальные - нестандартные счета
 +
|-
 +
|&bull; balance
 +
|Дробное
 +
|Баланс счета клиента
 +
|-
 +
|&bull; balance_with_children
 +
|Дробное
 +
|Баланс счета клиента с учетом вложенных клиентов
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов. Возвращается, только если явно запросили в фильтре полей "attribute_values" или "employees.attribute_values" для сотрудников
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 4869: Строка 6255:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565l&fields=PHONE_TYPE-PHONE_
 
TO_DIAL-CREW_ID-ORDER_ID&signature=d35ab2765f2968d48c096d5f5327db26 HTTP/1.1
 
  
Ответ:
+
GET https://ip:port/common_api/1.0/get_client_info?client_id=140
  
<response>
+
Signature: <...>
  <code>0</code>
 
  <descr>OK</descr>
 
  <data>
 
    <PHONE_TYPE>0</PHONE_TYPE>
 
    <PHONE_TO_DIAL></PHONE_TO_DIAL>
 
    <CREW_ID>3</CREW_ID>
 
    <ORDER_ID>6</ORDER_ID>
 
  </data>
 
</response>
 
</pre>
 
  
==== Запрос информации по ИД заказа ====
+
Ответ:
  
Метод: GET
+
{
 
+
  "code": 0,
Название запроса: get_info_by_order_id
+
  "descr": "OK",
 +
  "data": {
 +
    "client_id": 20,
 +
    "parent_id": 0,
 +
    "name": "Юр. лицо1",
 +
    "number": "111",
 +
    "address": "Адрес Юр. лицо1",
 +
    "gender": "",
 +
    "birthday": "22.01.2016",
 +
    "phones": [
 +
      "105",
 +
      "123456789",
 +
      "100"
 +
    ],
 +
    "balance": 10,
 +
    "bonus_balance": 333,
 +
    "login": "111",
 +
    "password": "111",
 +
    "client_group_id": 1,
 +
    "tariff_id": 39,
 +
    "prize_tariff_id": 0,
 +
    "tariff_shift_id": 0,
 +
    "discount_id": 2,
 +
    "prize_discount_id": 0,
 +
    "min_balance": 0,
 +
    "min_balance_for_use_cashless": null,
 +
    "min_bonus_balance_for_use_bonus": null,
 +
    "is_locked": false,
 +
    "lock_description": "",
 +
    "use_cashless_account": true,
 +
    "use_cashless": true,
 +
    "remain_prize": 0,
 +
    "email": "Юр. лицо1@ss.ru",
 +
    "use_email_informing": true,
 +
    "default_crew_group": 6,
 +
    "comment": "Сотрудник СВР. Использовать максимальные скидки",
 +
    "employees": [
 +
      {
 +
        "client_id": 323,
 +
        "parent_id": 20,
 +
        "name": "Сотрудник1",
 +
        "number": "111",
 +
        "address": "Адрес Сотрудник1",
 +
        "gender": "",
 +
        "birthday": null,
 +
        "phones": [
 +
          "11221122112211"
 +
        ],
 +
        "balance": 0,
 +
        "bonus_balance": 0,
 +
        "login": "",
 +
        "password": "",
 +
        "client_group_id": 1,
 +
        "tariff_id": 17,
 +
        "prize_tariff_id": 0,
 +
        "tariff_shift_id": 0,
 +
        "discount_id": 2,
 +
        "prize_discount_id": 0,
 +
        "min_balance": 0,
 +
        "min_balance_for_use_cashless": null,
 +
        "min_bonus_balance_for_use_bonus": null,
 +
        "is_locked": false,
 +
        "lock_description": "",
 +
        "use_cashless": true,
 +
        "remain_prize": 0,
 +
        "email": "Сотрудник1@ss.ru",
 +
        "use_email_informing": true,
 +
        "default_crew_group": 6,
 +
        "accounts": [
 +
          {
 +
            "account_kind": 0,
 +
            "balance": 400.00,
 +
            "balance_with_children": 0.00
 +
          },
 +
          {
 +
            "account_kind": 1,
 +
            "balance": 0.00,
 +
            "balance_with_children": 0.00
 +
          },
 +
          {
 +
            "account_kind": 1003,
 +
            "balance": 100.00,
 +
            "balance_with_children": 0.00
 +
          }
 +
        ],
 +
        "attribute_values": [
 +
          {
 +
            "id": 5,
 +
            "bool_value": true
 +
          },
 +
          {
 +
            "id": 4,
 +
            "bool_value": true
 +
          }
 +
        ]
 +
      }
 +
    ],
 +
    "accounts": [
 +
      {
 +
        "account_kind": 0,
 +
        "balance": 2355.00,
 +
        "balance_with_children": 2755.00
 +
      },
 +
      {
 +
        "account_kind": 1,
 +
        "balance": 0.00,
 +
        "balance_with_children": 0.00
 +
      },
 +
      {
 +
        "account_kind": 1003,
 +
        "balance": -20.00,
 +
        "balance_with_children": 80.00
 +
      }
 +
    ],
 +
    "attribute_values": [
 +
      {
 +
        "id": 4,
 +
        "bool_value": true
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Запрос информации по клиентам ===
 +
Метод: GET
 +
 
 +
Название запроса: get_clients_info
 +
 
 +
Версия ТМ: 3.5
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
!Параметр
+
!Параметры
!Тип  
+
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|colspan="3"|Обязательные параметры
+
!colspan="3"|Необязательные параметры
 
|-
 
|-
|ORDER_ID
+
|text
|Целое  
+
|Строка
|ИД заказа
+
|Текст для поиска по названию или по номеру договора клиента
 +
|-
 +
|max_clients_count
 +
|Целое
 +
|Максимальное количество клиентов, которое надо вернуть. Если не указано, то 10.
 +
|-
 +
|client_group_id
 +
|Целое
 +
|Фильтр по группе клиентов
 
|-
 
|-
|FIELDS
+
|parent_id
|Строка
+
|Целое
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
+
|Фильтр по вышестоящему подразделению, возвращаются все подчиненные отделы и сотрудники на всю глубину иерархии
 
|-
 
|-
|signature
+
|fields
|Строка  
+
|Строка
|Поле для проверки секретного ключа
+
|Список возвращаемых полей через запятую. По умолчанию возвращаются поля "name" и "number". Поле "client_id" возвращается всегда
 
|}
 
|}
  
Специальные возвращаемые коды: нет
+
Специальные возвращаемые коды: Нет
 
 
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
 
  
 +
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
{|
!Параметр
+
!Параметры
!Тип  
+
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|DRIVER_TIMECOUNT
+
|client_id
|Строка, <= 16 символов
+
|Целое
|Время до подачи в минутах, указанное водителем
+
|ИД клиента
 
|-
 
|-
|SOUND_COLOR
+
|name
|Строка  
+
|Строка
|Запись с информацией о цвете
+
|Наименование
 
|-
 
|-
|CAR_MARK
+
|number
|Строка  
+
|Строка
|Марка автомобиля
+
|Номер договора
 
|-
 
|-
|CAR_COLOR
+
|parent_id
|Строка
+
|Целое
|Цвет автомобиля
+
|ИД клиента-родителя
 
|-
 
|-
|GOSNUMBER
+
|address
|Строка  
+
|Строка
|Государственный номер автомобиля
+
|Домашний адрес
 
|-
 
|-
|SOUND_MARK
+
|gender
 
|Строка  
 
|Строка  
|Запись с информацией о марке автомобиля
+
|Пол. Может принимать значения:
 +
• "" - не указан
 +
 
 +
• "male" -  мужской
 +
 
 +
• "female" - женский
 
|-
 
|-
|CREW_GROUP_ID
+
|birthday
|Целое
+
|ДД.ММ.ГГГГ
|ИД группы экипажа
+
|Дата рождения
 
|-
 
|-
|IS_PRIOR
+
|phones 
|true или false
+
|Массив
|Признак предварительного заказа
+
|Массив телефонов клиента
 
|-
 
|-
|DISCOUNTEDSUMM
+
|&bull; phone
|Строка  
+
|Строка
|Сумма заказа с учетом всех скидок
+
|Номер телефона клиента
 
|-
 
|-
|DRIVER_PHONE
+
|balance
|Строка, <= 16 символов
+
|Дробное
|Номер телефона водителя
+
|Баланс
 
|-
 
|-
|CATEGORYID
+
|bonus_balance
|Целое
+
|Дробное
|ИД категории телефона
+
|Бонусный баланс
 
|-
 
|-
|SOURCE_TIMECOUNT
+
|login 
|Целое
+
|Строка
|Время до подачи в минутах
+
|Логин
 
|-
 
|-
|ORDER_COORDS
+
|password
 
|Строка
 
|Строка
|Координаты места подачи
+
|Пароль
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|tariff_id
 +
|Целое
 +
|ИД тарифа клиента или группы клиентов
 +
|-
 +
|prize_tariff_id
 +
|Целое
 +
|ИД призового тарифа клиента или группы клиентов
 +
|-
 +
|tariff_shift_id
 +
|Целое
 +
|ИД смены тарифов клиента или группы клиентов
 +
|-
 +
|discount_id
 +
|Целое
 +
|ИД скидки клиента или группы клиентов
 
|-
 
|-
|CREW_COORDS
+
|prize_discount_id
 +
|Целое
 +
|ИД призовой скидки клиента или группы клиентов
 +
|-
 +
|min_balance
 +
|Дробное
 +
|Порог, ниже которого не может опускаться баланс
 +
|-
 +
|min_balance_for_use_cashless
 +
|Дробное
 +
|Минимальный баланс для использования безналичного счета
 +
|-
 +
|min_bonus_balance_for_use_bonus
 +
|Дробное
 +
|Минимальный баланс для использования бонусного счета
 +
|-
 +
|is_locked
 +
|true или false
 +
|Клиент заблокирован
 +
|-
 +
|lock_description
 
|Строка
 
|Строка
|Координаты назначенного экипажа
+
|Причина блокировки
 +
|-
 +
|use_cashless_account
 +
|true или false
 +
|Признак использования безналичного счета
 
|-
 
|-
|ORDER_STATE
+
|use_cashless
|Целое
+
|true или false
|ИД состояния заказа
+
|Признак использования безналичного расчета по умолчанию. Имеет смысл только при use_cashless_account = true
 +
|-
 +
|no_cash_payment
 +
|true или false
 +
|Признак запрета использования наличных расчетов. Имеет смысл только при use_cashless_account = true и use_cashless = true
 
|-
 
|-
|MARKET_TYPE
+
|remain_prize
|Целое  
+
|Целое
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
+
|Сколько заказов осталось до призового
 
|-
 
|-
|AD_LIGHTHOUSE
+
|email
 
|Строка
 
|Строка
|Признак наличия шашек (1 – шашки есть, 0 – шашек нет).
+
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 
|-
 
|-
|CREW_STATE
+
|default_crew_group
 
|Целое
 
|Целое
|Состояние экипажа.
+
|Группа экипажей по умолчанию
 +
|-
 +
|use_own_account
 +
|true или false
 +
|Использовать собственный счет для оплаты заказа
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|accounts
 +
|Массив
 +
|Массив счетов клиента
 +
|-
 +
|&bull; account_kind
 +
|Целое
 +
|Тип счета:
 +
* 0 - Основной счет
 +
* 1- Бонусный счет
 +
* Остальные - нестандартные счета
 +
|-
 +
|&bull; balance
 +
|Дробное
 +
|Баланс счета клиента
 +
|-
 +
|&bull; balance_with_children
 +
|Дробное
 +
|Баланс счета клиента с учетом вложенных клиентов
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 
|}
 
|}
  
Строка 5001: Строка 6618:
 
Запрос:
 
Запрос:
  
GET https://ip:port/tm_tapi/1.0/get_info_by_order_id?order_id=60&fields=DRIVER_SOURCETIME-MARKCOLOR-
+
GET https://ip:port/common_api/1.0/get_clients_info?text=test&max_clients_count=10&client_group_id=1&parent_id=20&fields=name,number HTTP/1.1
GOSNUMBER-IS_PRIOR-MOBILE_PHONE-SOURCE_TIME&signature=fdcd04e570443b56176b83f44748dc23
+
Signature: <...>
HTTP/1.1
 
  
 
Ответ:
 
Ответ:
  
<response>
+
{
   <code>0</code>
+
   "code":0,
   <descr>OK</descr>
+
   "descr":"OK",
   <data>
+
   "data":{
     <DRIVER_SOURCETIME></DRIVER_SOURCETIME>
+
     "clients_info":[
    <MARK></MARK>
+
      {
    <COLOR></COLOR>
+
        "client_id":390,
    <GOSNUMBER></GOSNUMBER>
+
        "name":"tester1",
    <IS_PRIOR></IS_PRIOR>
+
        "number":"001"
    <MOBILE_PHONE></MOBILE_PHONE>
+
      },
     <SOURCE_TIME></SOURCE_TIME>
+
      {
   </data>
+
        "client_id":394,
</response>
+
        "name":"tester2",
 +
        "number":"002"
 +
      }
 +
     ]
 +
   }
 +
}
 +
 
 
</pre>
 
</pre>
  
==== Смена состояния заказа ====
+
=== Изменение информации по клиенту ===
 +
 
 
Метод: POST
 
Метод: POST
  
Название запроса: change_order_state
+
Название запроса: update_client_info
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметры
!Тип  
+
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|ORDER_ID
+
|client_id
|Целое  
+
|Целое
|ИД заказа
+
|ИД клиента
 
|-
 
|-
|NEED_STATE
+
!colspan="3"|Необязательные параметры
|Целое
 
|Новое состояние заказа
 
 
|-
 
|-
|signature
+
|name
|Строка  
+
|Строка, <= 60 символов
|Поле для проверки секретного ключа
+
|ФИО
|}
 
 
 
Специальные возвращаемые коды:
 
 
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|login
|Заказ с таким ИД не найден
+
|Строка, <= 60 символов
 +
|Логин
 
|-
 
|-
|101
+
|password
|Изменение состояния не соответствует необходимым условиям
+
|Строка, <= 60 символов
|}
+
|Пароль
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|ORDER_ID
+
|phones
|Целое
+
|Строка
|ИД созданного заказа
+
|Номера телефонов (через запятую)
 
|-
 
|-
|NEW_STATE
+
|address
|Целое  
+
|Строка
|Новое состояние заказа
+
|Домашний адрес
 +
|-
 +
|birthday
 +
|ГГГГММДДччммсс
 +
|Дата рождения
 +
|-
 +
|gender
 +
|Строка
 +
|Пол. Может принимать значения:
 +
• "male" -  мужской
 +
 
 +
• "female" - женский
 +
|-
 +
|parent_id
 +
|Целое
 +
|ИД клиента-родителя
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|email
 +
|Строка
 +
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|use_own_account
 +
|true или false
 +
|Использовать собственный счет для оплаты заказов
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Клиент с номером телефона=PHONE уже существует
 +
|-
 +
|101
 +
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 +
|-
 +
|102
 +
|Клиент с логином=LOGIN уже существует
 +
|-
 +
|103
 +
|Группа клиента с ИД=CLIENT_GROUP_ID не найдена
 +
|-
 +
|104
 +
|Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
 +
|-
 +
|109
 +
|Пароль клиента не соответствует политике паролей
 
|}
 
|}
 +
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
  
 
Пример:
 
Пример:
Строка 5083: Строка 6752:
 
Запрос:
 
Запрос:
  
POST https://ip:port/tm_tapi/1.0/change_order_state HTTP/1.1
+
POST https://ip:port/common_api/1.0/update_client_info
 +
Signature: <...>
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Content-Length: 71
+
Content-Length: <...>
  
order_id=18561&need_state=14&signature=3e8107e0c044e55d983db1fbed82fd8c
+
client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=male&address=ADDRESS&parent_id=10&client_group_id=3&email=mail%40ya.ru&use_email_informing=true
  
 
Ответ:
 
Ответ:
  
<response>
+
{
  <code>0</code>
+
"code":0,
   <descr>OK</descr>
+
   "descr":"OK",
  <data>
+
   "data":{}
    <ORDER_ID>18561</ORDER_ID>
+
}
    <NEW_STATE>14</NEW_STATE>
 
   </data>
 
</response>
 
 
</pre>
 
</pre>
  
==== Запись пути к файлу разговора в базу данных ====
+
=== Изменение информации по клиенту 2 ===
 +
Метод: POST
  
Метод: POST
+
Название запроса: update_client_info2
  
Название запроса: create_record_link
+
Версия ТМ: 3.12
  
Параметры:
+
Параметры в формате JSON:
  
 
{|
 
{|
!Параметр
+
!Параметры
!Тип  
+
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|RECORD_DATE
+
|client_id
|ДДММГГГГччммсс
+
|Целое
|Дата записи
+
|ИД клиента
 
|-
 
|-
|RECORD_LENGTH
+
!colspan="3"|Необязательные параметры
|Целое
 
|Продолжительность записи (в секундах)
 
 
|-
 
|-
|CALL_ID
+
|name
|Строка, <= 60 символов  
+
|Строка, <= 60 символов
|ИД звонка (необязателен, если указан PHONE)
+
|ФИО
 
|-
 
|-
|PHONE
+
|login
|Строка, <= 16 символов  
+
|Строка, <= 60 символов
|Номер телефона (необязателен, если указан CALL_ID)
+
|Логин
 
|-
 
|-
|FILE_PATH
+
|password
|Строка, <=255 символов  
+
|Строка, <= 60 символов
|Путь к файлу записи
+
|Пароль
 
|-
 
|-
|CALL_TYPE
+
|phones
|0 или 1
+
|Массив
|0 — Исходящий, 1 — Входящий
+
|Массив телефонов клиента
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|&bull; is_default
 +
|true или false
 +
|Признак основного телефона
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|parent_id
 +
|Целое
 +
|ИД клиента-родителя
 +
|-
 +
|address
 +
|Строка
 +
|Домашний адрес
 +
|-
 +
|birthday
 +
|ГГГГММДДччммсс
 +
|Дата рождения
 
|-
 
|-
|signature
+
|gender
|Строка  
+
|Строка
|Поле для проверки секретного ключа
+
|Пол. Может принимать значения:
|}
+
• "male" -  мужской
  
Специальные возвращаемые коды: нет.
+
• "female" - женский
 
+
|-
Возвращаемые данные в случае успешного выполнения запроса
+
|email
 
+
|Строка
{|
+
|E-mail
!Параметр
+
|-
!Тип
+
|use_email_informing
!Описание
+
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 
|-
 
|-
|RECORD_ID
+
|use_own_account
|Целое
+
|true или false
|ИД созданной записи
+
|Использовать собственный счет для оплаты заказов
|}
+
|-
 
+
|attribute_values
Пример:
+
|Массив
 
+
|Массив значений атрибутов
<pre>
+
|-
Запрос:
+
|&bull; id
 
+
|Целое
POST https://ip:port/tm_tapi/1.0/create_record_link HTTP/1.1
+
|Идентификатор атрибута
Content-Type: application/x-www-form-urlencoded
+
|-
Content-Length: 185
+
|&bull; bool_value
 
+
|true или false
RECORD_DATE=20130122180949&RECORD_LENGTH=215&CALL_ID=12345&PHONE=8987564&FILE_PATH=d%3A%5Ctemp%5CTM
+
|Значение, если тип атрибута «Логический»
%5Ctrunk%5CSource%5CDevUtils%5CTMAPITest%5C&CALL_TYPE=1&signature=56851c4e8d2d4bb9ba615615f76ad7f7
+
|-
 
+
|&bull; num_value
Ответ:
+
|Дробное
<response>
+
|Значение, если тип атрибута:
  <code>0</code>
+
* «Число» (непосредственное значение)
  <descr>OK</descr>
+
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  <data>
+
* «Перечисляемый» (значение выбранного элемента перечисления)
    <RECORD_ID>25</RECORD_ID>
+
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
  </data>
+
|-
</response>
+
|&bull; str_value
</pre>
+
|Строка
 
+
|Значение, если тип атрибута «Строка»
==== Создать новый заказ ====
+
|}
 
 
Метод: POST
 
 
 
Название запроса: make_new_order
 
 
 
Параметры:
 
  
 +
Специальные возвращаемые коды:
 
{|
 
{|
!Параметр
+
!Код
!Тип
 
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|100
 +
|Клиент с ИД=CLIENT_ID не найден
 
|-
 
|-
|PHONE
+
|101
|Строка, <= 16 символов
+
|Дублирование номера телефона=PHONE в списке
|Номер телефона
 
 
|-
 
|-
|ORDER_STATE_ID
+
|102
|Целое
+
|Клиент с логином=LOGIN уже существует
|ИД состояния заказа
 
 
|-
 
|-
|signature
+
|103
|Строка
+
|Группа клиента с ИД=CLIENT_GROUP_ID не найдена
|Поле для проверки секретного ключа
 
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|104
 +
|Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
 
|-
 
|-
|CREWGROUPID
+
|105
|Целое
+
|Основной телефон может быть только один
|ИД группы экипажа
 
 
|-
 
|-
|TARIF_ID
+
|106
|Целое
+
|Клиент должен иметь основной телефон
|ИД тарифа
 
 
|-
 
|-
|DISCOUNTEDSUMM
+
|107
|Дробное
+
|Атрибут с ИД=ID не найден
|Фиксированная сумма за заказ
 
 
|-
 
|-
|CUSTOMER
+
|108
|Строка, <=80 символов
+
|Атрибут с ИД=ID не может быть привязан к клиенту
|Заказчик
 
 
|-
 
|-
|SOURCE
+
|109
|Строка, <=80 символов
+
|Пароль клиента не соответствует политике паролей
|Адрес подачи
+
|}
|-
+
 
|SOURCE_STREET
+
Возвращаемые данные в случае успешного выполнения запроса: нет
|Целое
+
 
|ИД улицы подачи
+
Пример:
|-
+
 
|SOURCE_HOUSE
+
<pre>
|Строка, <=10 символов
+
Запрос:
|Дом подачи
+
 
|-
+
POST https://ip:port/common_api/1.0/update_client_info2 HTTP/1.1
|SOURCE_FLAT
+
Signature: <...>
|Строка, <=10 символов
+
Content-Type: application/json
|Квартира подачи
+
Content-Length: <...>
|-
+
 
|SOURCE_POINT
+
{
|Целое
+
  "client_id":140,
|ИД пункта подачи
+
  "name":"NAME",
 +
  "login":"LOGIN",
 +
  "password":"PASSWORD",
 +
  "phones":[
 +
    {
 +
      "phone":"88",
 +
      "is_default":true
 +
    }
 +
  ],
 +
  "address":"ADDRESS",
 +
  "gender":"male",
 +
  "birthday":"20000101000000",
 +
  "client_group_id":1,
 +
  "parent_id":10,
 +
  "email":"mail@ya.ru",
 +
  "use_email_informing":true,
 +
  "comment":"TEXT",
 +
  "use_own_account":false,
 +
  "attribute_values":[
 +
    {
 +
      "id":7,
 +
      "num_value":5
 +
    },
 +
    {
 +
      "id":9,
 +
      "str_value":null
 +
    }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос текущих заказов ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_current_orders
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 
|-
 
|-
|DESTINATION
+
!colspan="3"|Необязательные параметры
|Строка, <=80 символов
 
|Адрес назначения
 
 
|-
 
|-
|DESTINATION_STREET
+
|client_id
 
|Целое
 
|Целое
|ИД улицы назначения
+
|ИД клиента
 
|-
 
|-
|DESTINATION_HOUSE
+
|client_employee_id
|Строка, <=10 символов
+
|Целое
|Дом назначения
+
|ИД сотрудника (только если указан ИД клиента)
 
|-
 
|-
|DESTINATION_FLAT
+
|phone
|Строка, <=10 символов
+
|Строка, <= 30 символов
|Квартира назначения
+
|Телефон клиента
 
|-
 
|-
|DESTINATION_POINT
+
|crew_id
 
|Целое
 
|Целое
|ИД пункта назначения
+
|ИД экипажа
 
|-
 
|-
|CREWID
+
|driver_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД водителя
 
|-
 
|-
|SUMM
+
|fields
|Дробное
+
|Строка
|Стоимость заказа без учета скидок (наценок)
+
|Список возвращаемых полей через запятую
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден клиент ИД=CLIENT_ID
 +
|-
 +
|101
 +
|Не найден сотрудник клиента ИД=CLIENT_EMPLOYEE_ID
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|id
 +
|Целое
 +
|ИД заказа
 
|-
 
|-
|STARTUSER
+
|state_id
 
|Целое
 
|Целое
|Пользователь, создавший заказ
+
|ИД состояния заказа
 
|-
 
|-
|STARTTIME
+
|state_kind
|ГГГГММДДччммсс
+
|Строка
|Дата создания заказа
+
|Тип состояния заказа. Может принимать значения:
 +
* "new_order" — новый заказ
 +
* "driver_assigned" — водитель назначен
 +
* "car_at_place" — машина подъехала на место
 +
* "client_inside" — клиент в машине
 +
* "finished" — заказ успешно завершен
 +
* "aborted" — заказ прекращен
 
|-
 
|-
|FINISHUSER
+
|crew_id
 
|Целое
 
|Целое
|Пользователь, завершивший заказ
+
|ИД экипажа
 
|-
 
|-
|FINISHTIME
+
|prior_crew_id
|ГГГГММДДччммсс
 
|Дата завершения заказа
 
|-
 
|SOURCE_ZONE
 
 
|Целое
 
|Целое
|Район подачи
+
|ИД предварительного экипажа
 
|-
 
|-
|DESTINATION_ZONE
+
|driver_id
 
|Целое
 
|Целое
|Район назначения
+
|ИД водителя
 
|-
 
|-
|SOURCE_PARKING
+
|car_id
 
|Целое
 
|Целое
|Стоянка подачи
+
|ИД автомобиля
 
|-
 
|-
|DESTINATION_PARKING
+
|server_time_offset
 
|Целое
 
|Целое
|Стоянка назначения
+
|Смещение относительно серверного времени
 
|-
 
|-
|SOURCE_TIME
+
|start_time
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Дата подачи
+
|Дата создания заказа
 
|-
 
|-
|SOURCE_COUNTRY
+
|source_time
|0 или 1 (false или true)
+
|ГГГГММДДччммсс
|Признак междугороднего заказа
+
|Время подачи
 
|-
 
|-
|IS_PRIOR
+
|source 
|0 или 1 (false или true)
+
|Строка
|Признак предварительного заказа
+
|Адрес подачи
 
|-
 
|-
|PRIZE
+
|source_lat
|0 или 1 (false или true)
+
|Строка
|Признак призового заказа
+
|Широта адреса подачи
 
|-
 
|-
|NOTE
+
|source_lon
|Строка, <=80 символов
+
|Строка  
|Примечание
+
|Долгота адреса подачи
 
|-
 
|-
|BONUSPOINT
+
|destination 
|Дробное
+
|Строка
|Бонусные баллы, начисленные водителю за заказ
+
|Адрес назначения
 
|-
 
|-
|DISTANCE
+
|destination_lat
|Дробное
+
|Строка
|Километраж по городу (в километрах)
+
|Широта адреса назначения
 
|-
 
|-
|HOURLY_LEN
+
|destination_lon
|Целое
+
|Строка
|Длительность исполнения почасового заказа (в минутах)
+
|Долгота адреса назначения
 
|-
 
|-
|HOURLY_START
+
|stops
|ГГГГММДДччммсс
+
|Массив
|Дата начала отсчета при почасовом заказе
+
|Информация по остановкам заказа
 
|-
 
|-
|HOURLY_PAY
+
|• address
|0 или 1 (false или true)
+
|Строка
|Признак почасового заказа
+
|Адрес остановки
 
|-
 
|-
|PHONE_TO_DIAL
+
|• lat
|Строка, <=16 символов
+
|Дробное
|Номер телефона для отзвона по заказу
+
|Широта адреса остановки
 
|-
 
|-
|FROMBORDER
+
|• lon
|0 или 1 (false или true)
+
|Дробное
|Признак заказа "с бордюра"
+
|Долгота адреса остановки
 
|-
 
|-
|WAITING_START
+
|customer
|ГГГГММДДччммсс
+
|Строка
|Дата начала ожидания заказчика водителем
+
|Заказчик
 
|-
 
|-
|WAITING_LENGTH
+
|passenger
|Целое
+
|Строка
|Общая длина периода ожидания заказчика водителем (в минутах)
+
|Пассажир
 
|-
 
|-
|BACKFREE
+
|phone
|Целое
+
|Строка
|Признак применения скидки в 50% на обратный путь
+
|Номер телефона
 
|-
 
|-
|INPUTTIME
+
|phone_to_dial
|ГГГГММДДччммсс
+
|Строка
|Дата принятия заказа (от даты создания заказа отличается тем, что может быть задана пользователем)
+
|Номер телефона для отзвона
 
|-
 
|-
|MONEY_RECEIVE
+
|client_id
|0 или 1 (false или true)
+
|Целое
|Подтверждение принятия денег наличными
+
|ИД клиента
 
|-
 
|-
|NOTIFY_BEFORE
+
|client_name
|Целое
+
|Строка
|Период времени, за который пользователь оповещается о наступлении даты подачи
+
|Имя клиента
 
|-
 
|-
|WANTCREWID
+
|client_group_id
 
|Целое
 
|Целое
|ИД желаемого экипажа
+
|ИД группы клиента
 
|-
 
|-
|DISTANCE_COUNTRY
+
|client_group_name
|Дробное
+
|Строка
|Километраж за границами города (в километрах)
+
|Название группы клиента
 
|-
 
|-
|DISTANCE_CHECK
+
|client_employee_id
|0 или 1 (false или true)
+
|Целое
|Разрешение ручного ввода километража
+
|ИД сотрудника клиента
 
|-
 
|-
|CLIENTID
+
|order_crew_group_id
 
|Целое
 
|Целое
|ИД постоянного клиента
+
|ИД группы экипажей, которая указана в заказе
 
|-
 
|-
|INFRA_STATE
+
|tariff_id
 
|Целое
 
|Целое
|Состояние заявки в исходящей кампании колцентра INFRA (1 - заявка передана в исходящую компанию, 2 - отзвон успешно произведен, 3 - занято, 4 - не берут трубку)
+
|ИД тарифа
 
|-
 
|-
|INFRA_ORDER
+
|car_mark
|Целое
+
|Строка
|INFRA-заказ (спец. поле для работы с колцентром компании Инфрател)
+
|Марка автомобиля
|}
+
|-
 +
|car_model
 +
|Строка
 +
|Модель автомобиля
 +
|-
 +
|car_color
 +
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|car_number
 +
|Строка
 +
|Гос.номер автомобиля
 +
|-
 +
|confirmed
 +
|Строка
 +
|Состояние подтвержденности заказа водителем или оператором. Может принимать значения:
 +
 
 +
* "not_confirmed" — не подтверждено
 +
* "confirmed_by_driver" — заказ принят водителем
 +
* "confirmed_by_oper" — заказ подтвержден оператором
 +
|-
 +
|crew_coords
 +
|Массив
 +
|Координаты экипажа
 +
|-
 +
|• lat
 +
|Дробное
 +
|Широта
 +
|-
 +
|• lon
 +
|Дробное
 +
|Долгота
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров заказа экипажа. Устарело. Рекомендуется использовать параметр attribute_values. (Возвращается только если в списке фильтра полей fields запросили поле order_params)
 +
|-
 +
|•
 +
|Целое
 +
|ИД параметра заказа
 +
|-
 +
|creation_way
 +
|Строка
 +
|Способ создания заказа. Может принимать значения:
 +
 
 +
• "operator" — заказ создан оператором
  
Специальные возвращаемые коды: нет
+
• "sms" — заказ создан через смс
  
Возвращаемые данные в случае успешного выполнения запроса
+
• "market" — заказ из биржи
  
{|
+
• "common_api" — заказ создан через api
!Параметр
 
!Тип
 
!Описание
 
|-
 
|ORDER_ID
 
|Целое
 
|ИД созданного заказа
 
|}
 
  
Пример:
+
• "t_api" — заказ создан через api
  
<pre>
+
• "taxophone" —  заказ создан через таксофон с телефона
Запрос:
 
  
POST https://ip:port/tm_tapi/1.0/make_new_order HTTP/1.1
+
• "driver" — заказ создан водителем
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 206
 
  
PHONE=89058770593&ORDER_STATE_ID=10&DISCOUNTED_SUMM=100&signature=afc947f610eba380df6d0e441b03ddad
+
• "daily_order" — ежедневный заказ
  
Ответ:
+
• "taxophone_web" — заказ создан через таксофон с сайта
  
<response>
+
• "unknown" — неизвестный
  <code>0</code>
 
  <descr>OK</descr>
 
  <data>
 
    <order_id>27</order_id>
 
  </data>
 
</response>
 
</pre>
 
 
 
==== Поиск улицы в базе ====
 
Метод: POST
 
 
 
Название запроса: street_search
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|is_prior
 +
|true или false
 +
|Предварительный заказ
 
|-
 
|-
|PHONE
+
|is_really_prior
|Строка, <= 16 символов
+
|true или false
|Номер телефона
+
|Предварительный заказ на вкладке "Предварительные"
 
|-
 
|-
|CALL_ID
+
|email
|Целое
+
|Строка
|ИД звонка
+
|Email для уведомлений
 
|-
 
|-
|VOICE_STREET
+
|prior_to_current_before_minutes
|Строка, <= 60 символов
+
|Целое
|Название улицы или пункта, полученное через преобразование голоса в текст
+
|Время перехода из предварительного в текущие заказы, мин
 
|-
 
|-
|signature
+
|flight_number
 
|Строка
 
|Строка
|Поле для проверки секретного ключа
+
|Номер рейса
|}
 
 
 
Специальные возвращаемые коды: нет
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|CALL_ID
+
|sum
|Целое
+
|Дробное
|ИД звонка
+
|Сумма без скидки
 
|-
 
|-
|PHONE
+
|total_sum
|Строка, <= 16 символов
+
|Дробное
|Номер телефона
+
|Итоговая сумма заказа
 
|-
 
|-
|STREET_FOUND
+
|cash_sum
|0 или 1 (false или true)
+
|Дробное
|Признак того, что улица найдена
+
|Сумма наличными
 +
|-
 +
|cashless_sum
 +
|Дробное
 +
|Сумма безналичными
 +
|-
 +
|bonus_sum
 +
|Дробное
 +
|Сумма бонусами
 +
|-
 +
|bank_card_sum
 +
|Дробное
 +
|Сумма банковской картой
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|• id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|• bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|• num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|• str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|-
 +
|bill
 +
|Массив
 +
|Чек TMDriver. Данный узел выводится только, если по заказу есть чек и если в списке фильтра полей fields запросили поле bill
 +
|-
 +
|• code
 +
|Строка
 +
|Код элемента расчета
 +
|-
 +
|• text
 +
|Строка
 +
|Наименование элемента расчета
 +
|-
 +
|• value
 +
|Строка
 +
|Значение элемента расчета (количество)
 +
|-
 +
|• sum
 +
|Строка
 +
|Стоимость элемента расчета
 +
|-
 +
|is_auction
 +
|true или false
 +
|Признак заказа-аукциона
 
|-
 
|-
|STREET_NAME
+
|payment_pay_system
|Строка, <= 60 символов
+
|Строка
|Наименование улицы или пункта, найденное в базе данных
+
|Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется)
 
|}
 
|}
 
  
 
Пример:
 
Пример:
Строка 5501: Строка 7325:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
POST https://ip:port/tm_tapi/1.0/new_order_by_voice HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 175
 
  
PHONE=89058770593&CALL_ID=56&VOICE_STREET=пушкинск&FIND_STREET=0&API_FIND_STREET=&NUM_HOUSE=&signat
+
GET https://ip:port/common_api/1.0/get_current_orders?client_id=140&phone=18
ure=9204a53e0f4842bb623c3a5f7683520a
+
Signature: <...>
  
 
Ответ:
 
Ответ:
  
<response>
+
{
   <code>0</code>
+
   "code":0,
   <descr>OK</descr>
+
   "descr":"OK",
   <data>
+
   "data":{
     <CALL_ID>56</CALL_ID>
+
     "order_id":1,
     <PHONE>89058770593</PHONE>
+
    "state_id":12,
     <FIND_STREET>1</FIND_STREET>
+
    "state_kind":"car_at_place",
     <API_FIND_STREET>Пушкинская</API_FIND_STREET>
+
    "crew_id":1,
   </data>
+
    "prior_crew_id":0,
</response>
+
    "driver_id":2,
 +
    "car_id":3,
 +
    "server_time_offset:0,
 +
    "start_time":"20130117125641",
 +
    "source_time":"20130117132617",
 +
    "source":"30 Лет Победы ул. \/Ижевск\/, 4Б",
 +
    "source_lat":56.863613,
 +
    "source_lon":53.186539,
 +
    "destination":"Кирова ул. \/Ижевск\/, 56",
 +
    "destination_lat":56.862202,
 +
    "destination_lon":53.187485,
 +
     "stops":[
 +
      {
 +
        "address":"30 Лет Победы ул. \/Ижевск\/, 8",
 +
        "lat":56.863388,
 +
        "lon":53.184269
 +
      }
 +
    ],
 +
    "customer":"Слепаков",
 +
    "passenger":"Слепаков",
 +
    "phone":"8800",
 +
    "client_id":1,
 +
    "client_employee_id":1,
 +
    "order_crew_group_id":1,
 +
    "tariff_id":1,
 +
    "car_mark":"Ауди",
 +
    "car_model":"Q7",
 +
    "car_color":"черный",
 +
    "car_number":"А777АА", 
 +
    "confirmed":"confirmed_by_oper",
 +
    "crew_coords": {
 +
        "lat": 56.833981,
 +
        "lon": 53.220249
 +
    },
 +
     "order_params":[
 +
      1,
 +
      2,
 +
      5
 +
    ],
 +
    "creation_way":"operator",
 +
    "is_prior":true,
 +
    "is_really_prior":false,
 +
    "email":"mail@mail.ru",
 +
    "prior_to_current_before_minutes":30,
 +
    "flight_number":"A-0501/123",
 +
    "sum":50.5,
 +
    "total_sum":80,
 +
     "cash_sum":20.1,
 +
    "cashless_sum":10,
 +
    "bonus_sum":5.2,
 +
    "bank_card_sum":15,
 +
    "attribute_values": [
 +
        {
 +
              "id": 1,
 +
              "bool_value": true
 +
        },
 +
        {
 +
              "id": 2,
 +
              "num_value": 1
 +
        },
 +
        {
 +
              "id": 3,
 +
              "num_value": 10
 +
        },
 +
        {
 +
              "id": 4,
 +
              "str_value": "строка"
 +
        }
 +
    ],
 +
    "bill":
 +
    [
 +
      {
 +
        "code":"BOARDING",
 +
        "text":"Посадка",
 +
        "value":"",
 +
        "sum":"20,00"
 +
      },
 +
      {
 +
        "code":"TRIP_TIME",
 +
        "text":"Общее время",
 +
        "value":"0:00:00",
 +
        "sum":""
 +
      },
 +
      {
 +
        "code":"TRIP_DIST",
 +
        "text":"Общее расстояние",
 +
        "value":"0,00 км",
 +
        "sum":""
 +
      },
 +
      {
 +
        "code":"BEFORE_DISC",
 +
        "text":"Сумма без скидки",
 +
        "value":"",
 +
        "sum":"20,00"
 +
      },
 +
      {
 +
        "code":"AFTER_DISC",
 +
        "text":"Сумма со скидкой",
 +
        "value":"",
 +
        "sum":"20,00"
 +
      },
 +
      {
 +
        "code":"MINIMUM",
 +
        "text":"Минималка",
 +
        "value":"",
 +
        "sum":"60,00"
 +
      }
 +
    ]
 +
        "is_auction":false,
 +
        "payment_pay_system":"qr"
 +
   }
 +
}
 
</pre>
 
</pre>
  
==== Смена состояния заказа по результату автодозвона ====
+
=== Запрос выполненных заказов ===
Метод: POST
+
 
 +
Метод: GET
  
Название запроса: set_request_state
+
Название запроса: get_finished_orders
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметры
!Тип  
+
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|STATE_ID
+
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
!colspan="3"| '''Примечание''': должен присутствовать хотя бы один параметр из client_id, phone, crew_id, driver_id.
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|client_employee_id
 
|Целое
 
|Целое
|Cостояние заказа до отзвона
+
|ИД сотрудника (только если указан ИД клиента)
 
|-
 
|-
|PHONE_TYPE
+
|phone
|0 или 1
+
|Строка, <= 30 символов
|Признак, указывающий кому был совершен звонок (0 - водителю, 1 - клиенту)
+
|Телефон клиента
 
|-
 
|-
|ORDER_ID
+
|crew_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД экипажа
 
|-
 
|-
|STATE
+
|driver_id
|Целое (2, 3, 4, 5)
+
|Целое
|Состояние отзвона
+
|ИД водителя
 
|-
 
|-
|signature
+
|state_type
 
|Строка
 
|Строка
|Поле для проверки секретного ключа
+
|Тип состояния заказа. Может принимать значения:
|}
 
  
Специальные возвращаемые коды: нет
+
• "all" — все
  
Возвращаемые данные в случае успешного выполнения запроса: нет
+
• "finished" — выполненные
  
Настройки смены состояний заказа с использованием автодозвона задаются в карточке
+
• "aborted" — прекращенные
состояний заказа.
+
|-
 +
|state_ids
 +
|Строка
 +
|Список состояний заказа через точку с запятой, пример: «1;2;3»
 +
|-
 +
|fields
 +
|Строка
 +
|Список возвращаемых полей через запятую
 +
|}
  
Пример:
+
'''Примечание''': должен присутствовать хотя бы один параметр из client_id, phone, crew_id, driver_id.
  
<pre>
+
Возвращаемые данные в случае успешного выполнения запроса:
Запрос:
+
{|
POST https://ip:port/tm_tapi/1.0/set_request_state HTTP/1.1
+
!Параметр
Content-Type: application/x-www-form-urlencoded
+
!Тип
Content-Length: 71
+
!Описание
 
+
|-
state_id=7&phone_type=1&order_id=50&state=4&signature=0eb50db401d3540e038fde68eb260333
+
|id
 
+
|Целое
Ответ:
+
|ИД заказа
 
+
|-
<response>
+
|state_id
  <code>0</code>
+
|Целое
  <descr>OK</descr>
+
|ИД состояния заказа
</response>
 
</pre>
 
 
 
==== Соединить клиента и водителя ====
 
Метод: POST
 
 
 
Название запроса: connect_client_and_driver
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|crew_id
 +
|Целое
 +
|ИД экипажа
 
|-
 
|-
|order_id
+
|prior_crew_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД предварительного экипажа
 
|-
 
|-
|signature
+
|driver_id
|Строка
+
|Целое
|Поле для проверки секретного ключа
+
|ИД водителя
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|car_id
|Не найден заказ с таким ИД
+
|Целое
 +
|ИД автомобиля
 
|-
 
|-
|102
+
|server_time_offset
|Не найдена биржа заказа у данного заказа
+
|Целое
|}
+
|Смещение относительно серверного времени
 
+
|-
Возвращаемые данные в случае успешного выполнения запроса: нет
+
|start_time
 
+
|ГГГГММДДччммсс
Пример:
+
|Время создания заказа
 
+
|-
<pre>
+
|source_time
Запрос:
+
|ГГГГММДДччммсс
 
+
|Время подачи
POST https://ip:port/tm_tapi/1.0/connect_client_and_driver HTTP/1.1
+
|-
Content-Type: application/x-www-form-urlencoded
+
|finish_time
Content-Length: 53
+
|ГГГГММДДччммсс
 
+
|Время завершения заказа
order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4
+
|-
 
+
|source 
Ответ:
+
|Строка
 +
|Адрес подачи
 +
|-
 +
|source_lat
 +
|Дробное
 +
|Широта адреса подачи
 +
|-
 +
|source_lon 
 +
|Дробное
 +
|Долгота адреса подачи
 +
|-
 +
|destination 
 +
|Строка
 +
|Адрес назначения
 +
|-
 +
|destination_lat
 +
|Дробное
 +
|Широта адреса назначения
 +
|-
 +
|destination_lon 
 +
|Дробное
 +
|Долгота адреса назначения
 +
|-
 +
|stops
 +
|Массив
 +
|Массив адресов остановок
 +
|-
 +
|&bull; address
 +
|Строка
 +
|Адрес остановки
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта адреса остановки
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота адреса остановки
 +
|-
 +
|trip_distance
 +
|Дробное
 +
|Фактический километраж
 +
|-
 +
|trip_time
 +
|Целое
 +
|Фактическое время в пути
 +
|-
 +
|customer
 +
|Строка
 +
|Заказчик
 +
|-
 +
|passenger
 +
|Строка
 +
|Пассажир
 +
|-
 +
|phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
|phone_to_dial
 +
|Строка
 +
|Номер телефона для отзвона
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|client_name
 +
|Строка
 +
|Имя клиента
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|client_group_name
 +
|Строка
 +
|Название группы клиента
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника клиента
 +
|-
 +
|order_crew_group_id
 +
|Целое
 +
|ИД группы экипажей, которая указана в заказе
 +
|-
 +
|tariff_id
 +
|Целое
 +
|ИД тарифа
 +
|-
 +
|car_mark
 +
|Строка
 +
|Марка автомобиля
 +
|-
 +
|car_model
 +
|Строка
 +
|Модель автомобиля
 +
|-
 +
|car_color
 +
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|car_number
 +
|Строка
 +
|Гос.номер автомобиля
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров заказа экипажа. Устарело. Рекомендуется использовать параметр attribute_values. (Возвращается только если в списке фильтра полей fields запросили поле order_params)
 +
|-
 +
|•
 +
|Целое
 +
|ИД параметра заказа
 +
|-
 +
|creation_way
 +
|Строка
 +
|Способ создания заказа. Может принимать значения:
 +
 
 +
• "operator" — заказ создан оператором
 +
 
 +
• "sms" — заказ создан через смс
 +
 
 +
• "market" — заказ из биржи
 +
 
 +
• "common_api" — заказ создан через api
 +
 
 +
• "t_api" — заказ создан через api
 +
 
 +
• "taxophone" —  заказ создан через таксофон с телефона
  
<response>
+
• "driver" — заказ создан водителем
  <code>102</code>
+
 
  <descr>Market not found by OrderId</descr>
+
• "daily_order" — ежедневный заказ
</response>
+
 
 +
• "taxophone_web" — заказ создан через таксофон с сайта
  
</pre>
+
• "unknown" — неизвестный
 
+
|-
 
+
|is_prior
==== Установить режим «Перерыв» для линий софтфона ====
+
|true или false
Метод: POST
+
|Предварительный заказ
 
+
|-
Название запроса: set_sip_account_dnd_mode
+
|email
 
+
|Строка
Параметры:
+
|Email для уведомлений
 
+
|-
{|
+
|flight_number
!Параметр
+
|Строка
!Тип
+
|Номер рейса
!Описание
+
|-
|-
+
|sum
!colspan="3"|Обязательные параметры
+
|Дробное
|-
+
|Стоимость заказа без учета скидок (наценок)
|dnd
+
|-
|Строка
+
|total_sum
|0 или 1
+
|Дробное
|-
+
|Итоговая стоимость заказа
|user_login
+
|-
|Строка
+
|cash_sum
|Логин пользователя ТМ
+
|Дробное
|-
+
|Заплачено наличными
|lines
+
|-
|Строка
+
|cashless_sum
|<nowiki>Список линий, разделенных символом «|».</nowiki>
+
|Дробное
|-
+
|Заплачено с безналичного счета клиента
|signature
+
|-
|Строка
+
|bonus_sum
|Поле для проверки секретного ключа.
+
|Дробное
|}
+
|Заплачено с бонусного счета клиента
 
+
|-
Специальные возвращаемые коды:
+
|bank_card_sum
{|
+
|Дробное
!Код
+
|Заплачено банковской картой
!Описание
+
|-
|-
+
|attribute_values
|100
+
|Массив
|Пользователь с таким логином или линиями не найден.
+
|Массив значений атрибутов
 +
|-
 +
|• id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|• bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|• num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|• str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|-
 +
|bill
 +
|Массив
 +
|Чек TMDriver. Данный узел выводится только, если по заказу есть чек и если в списке фильтра полей fields запросили поле bill
 +
|-
 +
|• code
 +
|Строка
 +
|Код элемента расчета
 +
|-
 +
|• text
 +
|Строка
 +
|Наименование элемента расчета
 +
|-
 +
|• value
 +
|Строка
 +
|Значение элемента расчета (количество)
 +
|-
 +
|• sum
 +
|Строка
 +
|Стоимость элемента расчета
 +
|-
 +
|is_auction
 +
|true или false
 +
|Признак заказа-аукциона
 +
|-
 +
|payment_pay_system
 +
|Строка
 +
|Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется)
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_finished_orders?start_time=20220405142210&finish_time=20220405142710&fields=state_id,crew_id,prior_crew_id,driver_id,car_id,server_time_offset,start_time,source_time,finish_time,source,source_lat,source_lon,destination,destination_lat,destination_lon,stops,trip_distance,trip_time,customer,passenger,phone,phone_to_dial,client_id,client_name,client_group_id,client_group_name,client_employee_id,order_crew_group_id,tariff_id,order_params,attribute_values,creation_way,is_prior,email,flight_number,sum,total_sum,cash_sum,cashless_sum,bonus_sum,bank_card_sum,car_mark,car_model,car_color,car_number,bill
 +
 
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":
 +
  {
 +
    "orders":
 +
    [
 +
      {
 +
        "id":47834,
 +
        "state_id":4,
 +
        "crew_id":17,
 +
        "prior_crew_id":0,
 +
        "driver_id":17,
 +
        "car_id":16,
 +
        "server_time_offset":0,
 +
        "start_time":"20220405142418",
 +
        "source_time":"20220405142418",
 +
        "finish_time":"20220405142708",
 +
        "source":"5-Я ЯМСКОГО ПОЛЯ УЛ., 37",
 +
        "source_lat":56.853062,
 +
        "source_lon":53.20715,
 +
        "destination":"ХОДЫНСКАЯ УЛ., 10А",
 +
        "destination_lat":0,
 +
        "destination_lon":0,
 +
        "stops":
 +
        [],
 +
        "trip_distance":10,
 +
        "trip_time":3600,
 +
        "customer":"Client 89872977005",
 +
        "passenger":"",
 +
        "phone":"89872977005",
 +
        "phone_to_dial":"",
 +
        "client_id":43111,
 +
        "client_name":"Client 89872977005",
 +
        "client_group_id":2,
 +
        "client_group_name":"Физические",
 +
        "client_employee_id":0,
 +
        "order_crew_group_id":0,
 +
        "tariff_id":2,
 +
        "order_params":
 +
        [
 +
          28,
 +
          29,
 +
          30,
 +
          55,
 +
          58,
 +
          59,
 +
          62
 +
        ],
 +
        "attribute_values":
 +
        [
 +
          {
 +
            "id":28,
 +
            "num_value":0
 +
          },
 +
          {
 +
            "id":29,
 +
            "num_value":0
 +
          },
 +
          {
 +
            "id":30,
 +
            "num_value":0
 +
          },
 +
          {
 +
            "id":55,
 +
            "num_value":1
 +
          },
 +
          {
 +
            "id":58,
 +
            "num_value":0
 +
          },
 +
          {
 +
            "id":59,
 +
            "num_value":0
 +
          },
 +
          {
 +
            "id":62,
 +
            "num_value":0
 +
          }
 +
        ],
 +
        "creation_way":"operator",
 +
        "is_prior":false,
 +
        "email":"",
 +
        "flight_number":"",
 +
        "sum":100,
 +
        "total_sum":100,
 +
        "cash_sum":50,
 +
        "cashless_sum":40,
 +
        "bonus_sum":10,
 +
        "bank_card_sum":0,
 +
        "car_mark":"Баф",
 +
        "car_model":"Fenix 3346",
 +
        "car_color":"белая",
 +
        "car_number":"а111аа",
 +
        "is_auction":false,
 +
        "payment_pay_system": "qr"
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Проведение операции по клиенту ===
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: create_client_operation
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|sum
 +
|Дробное
 +
|Сумма
 +
|-
 +
|oper_type
 +
|Целое
 +
|Тип операции:
 +
• "receipt" - приход
 +
 
 +
• "expense" - расход
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|oper_time
 +
|ГГГГММДДччммсс
 +
|Время создания операции (если не указано, текущее)
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|pay_type
 +
|Целое
 +
|Тип оплаты:
 +
• "cash" - наличный
 +
 
 +
• "nocash" - безналичный
 +
|-
 +
|bonus_oper
 +
|true или false
 +
|Операция по бонусному счёту. Данный параметр устарел - рекомендуется использовать "account_kind"
 +
|-
 +
|account_kind
 +
|Целое
 +
|Тип счета:
 +
* 0 - Основной счет
 +
* 1- Бонусный счет
 +
* Остальные - нестандартные счета
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден клиент ИД=CLIENT_ID
 +
|-
 +
|101
 +
|Не найден тип счета ИД=ACCOUNT_KIND
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|oper_id
 +
|Целое
 +
|ИД операции
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_client_operation
 +
Signature: <...>
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: <...>
 +
 
 +
client_id=112&oper_time=20130221100719&oper_sum=300&oper_type=receipt&pay_type=cash&comment=COMMENT&account_kind=0
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "oper_id":31
 +
 
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Запрос операций по клиенту ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_client_operations
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|account_kind
 +
|Целое
 +
|Тип счета:
 +
* 0 - Основной счет
 +
* 1- Бонусный счет
 +
* Остальные - нестандартные счета
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден клиент ИД=CLIENT_ID
 +
|-
 +
|101
 +
|Не найден тип счета ИД=ACCOUNT_KIND
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|oper_id
 +
|Целое
 +
|ИД операции
 +
|-
 +
|oper_time
 +
|ГГГГММДДччммсс
 +
|Время создания операции
 +
|-
 +
|sum
 +
|Дробное
 +
|Сумма
 +
|-
 +
|order_id
 +
|Целое
 +
|Заказ, связанный с операцией
 +
|-
 +
|oper_type
 +
|Целое
 +
|Тип операции:
 +
• "receipt" - приход
 +
 
 +
• "expense" - расход
 +
|-
 +
|pay_type
 +
|Целое
 +
|Тип оплаты:
 +
• "cash" - наличный
 +
 
 +
• "nocash" - безналичный
 +
|-
 +
|account_kind
 +
|Целое
 +
|Тип счета:
 +
* 0 - Основной счет
 +
* 1- Бонусный счет
 +
* Остальные - нестандартные счета
 +
|-
 +
|name
 +
|Строка
 +
|Наименование
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|cancelled_by_oper_id
 +
|Целое
 +
|ИД операции отмены (для отмененной операции)
 +
|-
 +
|cancelled_oper_id
 +
|Целое
 +
|ИД отмененной операции (для операции отмены)
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_client_operations?client_id=112&start_time=20130201092112&finish_time=20130221092112&account_kind=0 HTTP/1.1
 +
Signature: <...>
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "operations":[
 +
      {
 +
        "oper_id":111,
 +
        "oper_time":"20130219091328",
 +
        "sum":"21,8",
 +
        "order_id":11800,
 +
        "oper_type":"receipt",
 +
        "pay_type":"cash",
 +
        "account_kind":0,
 +
        "name":"Пополнение счета",
 +
        "comment":"Комментарий",
 +
        "cancelled_by_oper_id":0,
 +
        "cancelled_oper_id":112
 +
      },
 +
      {
 +
        "oper_id":112,
 +
        "oper_time":"20130220112245",
 +
        "sum":"4500",
 +
        "order_id":11801,
 +
        "oper_type":"receipt",
 +
        "pay_type":"cash",
 +
        "account_kind":0,
 +
        "name":"Пополнение счета",
 +
        "comment":"Комментарий"
 +
        "cancelled_by_oper_id":111,
 +
        "cancelled_oper_id":0
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Проведение операции по водителю ===
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: create_driver_operation
 +
 
 +
Параметры  в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|oper_sum
 +
|Дробное
 +
|Сумма
 +
|-
 +
|oper_type
 +
|Строка
 +
|Тип операции:
 +
 
 +
• receipt - приход
 +
 
 +
• expense - расход
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|name
 +
|Строка
 +
|Наименование операции
 +
|-
 +
|oper_time
 +
|ГГГГММДДччммсс
 +
|Время создания операции (если не задано, текущее)  !! Не используется с ТМ 3.7
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|account_kind
 +
|Целое
 +
|ИД типа счета (0 - основной счет), по умолчанию 0
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Водитель не найден ИД=DRIVER_ID
 +
|-
 +
|101
 +
|Не найден тип счета ИД=ACCOUNT_KIND
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|oper_id
 +
|Целое
 +
|ИД операции
 +
|}
 +
 
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
 
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_driver_operation
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: 99
 +
 
 +
{
 +
  "driver_id": 1,
 +
  "oper_sum": 10.00,
 +
  "oper_type": "receipt",
 +
  "name": "Пополнение счета",
 +
  "oper_time": "20141210100719",
 +
  "comment": "Комментарий к операции"
 +
    "account_kind": 1
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
  "oper_id":31
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос операций по водителю ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_driver_operations
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|account_kind
 +
|Целое
 +
|ИД типа счета (0 - основной счет), по умолчанию 0
 +
|}
 +
 
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден водитель ИД=DRIVER_ID
 +
|-
 +
|101
 +
|Не найден тип счета ИД=ACCOUNT_KIND
 +
|}
 +
 
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|oper_id
 +
|Целое
 +
|ИД операции
 +
|-
 +
|oper_time
 +
|ГГГГММДДччммсс
 +
|Время создания операции
 +
|-
 +
|sum
 +
|Дробное
 +
|Сумма
 +
|-
 +
|order_id
 +
|Целое
 +
|Заказ, связанный с операцией
 +
|-
 +
|oper_type
 +
|Целое
 +
|Тип операции:
 +
 
 +
•"receipt" - приход
 +
 
 +
•"expense" - расход
 +
|-
 +
|name
 +
|Строка
 +
|Наименование
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|account_kind
 +
|Целое
 +
| ИД типа счета
 +
|-
 +
|cancelled_by_oper_id
 +
|Целое
 +
|ИД операции отмены (для отмененной операции)
 +
|-
 +
|cancelled_oper_id
 +
|Целое
 +
|ИД отмененной операции (для операции отмены)
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_driver_operations?
 +
driver_id=112&start_time=20130201092112&finish_time=20130221092112
 +
Signature: <...>
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "operations":[
 +
      {
 +
        "oper_id":111,
 +
        "oper_time":"20130219091328",
 +
        "sum":"21,8",
 +
        "order_id":11800,
 +
        "oper_type":"receipt",
 +
        "name":"DRIVER_OPERATION_1",
 +
        "comment":"DRIVER_OPERATION_COMMENT_1",
 +
        "account_kind":0,
 +
        "cancelled_by_oper_id":0,
 +
        "cancelled_oper_id":112
 +
      },
 +
      {
 +
        "oper_id":112,
 +
        "oper_time":"20130220112245",
 +
        "sum":"4500",
 +
        "order_id":11801,
 +
        "oper_type":"receipt",
 +
        "name":"DRIVER_OPERATION_2",
 +
        "comment":"DRIVER_OPERATION_COMMENT_2",
 +
        "account_kind":0,
 +
        "cancelled_by_oper_id":111,
 +
        "cancelled_oper_id":0
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Назначение динамического приоритета водителю ===
 +
Метод: POST
 +
 
 +
Название запроса: create_driver_dyn_priority
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя (должно быть что-то одно: либо driver_id, либо crew_id)
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД экипажа (должно быть что-то одно: либо driver_id, либо crew_id)
 +
|-
 +
|priority
 +
|Целое
 +
|Приоритет
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Время начала действия приоритета
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время окончания действия приоритета
 +
|-
 +
|name
 +
|Строка
 +
|Наименование приоритета
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Водитель не найден ИД=DRIVER_ID
 +
|-
 +
|101
 +
|Экипаж не найден ИД=CREW_ID
 +
|-
 +
|102
 +
|Время начала действия приоритета должно быть меньше времени окончания
 +
|-
 +
|103
 +
|Время действия приоритета уже истекло
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|dyn_priority_id
 +
|Целое
 +
|ИД созданного динамического приоритета
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/common_api/1.0/create_driver_dyn_priority
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "driver_id": 1,
 +
  "priority": 10,
 +
  "start_time": "20150101100000",
 +
  "finish_time": "20150101200000",
 +
  "name": "За выполнение заказа в отдаленный район"
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
  "dyn_priority_id":123
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Задание координат экипажей ===
 +
Метод: POST
 +
 
 +
Название запроса: set_crews_coords
 +
 
 +
Параметры в формате JSON:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|crew_coords
 +
|Массив
 +
|Массив координат экипажей
 +
|-
 +
|&bull; crew_id
 +
|Целое
 +
|ИД экипажа
 +
|-
 +
|&bull; gps_id
 +
|Целое
 +
|GPS идентификатор (если не задан ИД экипажа). Данный параметр устарел - не применяется, начиная с версии 3.9
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|speed
 +
|Дробное
 +
|Скорость
 +
|-
 +
|direction
 +
|Целое
 +
|Направление движения (0-Север, 90-Восток, 180-Юг, 270-Запад, -1-не задано)
 +
|}
 +
 
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/set_crews_coords HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "crews_coords":[
 +
    {
 +
      "crew_id":1,
 +
      "lat":11.111111,
 +
      "lon":22.222222,
 +
      "speed":66.66,
 +
      "direction":333
 +
    },
 +
    {
 +
      "gps_id":2,
 +
      "lat":33.333333,
 +
      "lon":44.444444
 +
    }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
</pre>
 +
 
 +
=== Изменение информации по заказу ===
 +
Метод: POST
 +
 
 +
Название запроса: update_order
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|order_id
 +
|Целое
 +
|ИД заказа
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|phone
 +
|Строка, <= 30 символов
 +
|Номер телефона
 +
|-
 +
|source_time
 +
|ГГГГММДДччммсс
 +
|Время подачи
 +
|-
 +
|is_prior
 +
|true или false
 +
|Предварительный заказ
 +
|-
 +
|customer
 +
|Строка
 +
|Заказчик
 +
|-
 +
|passenger
 +
|Строка
 +
|Пассажир
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|-
 +
|crew_group_id
 +
|Целое
 +
|ИД группы экипажей
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС
 +
|-
 +
|tariff_id
 +
|Целое
 +
|ИД тариф
 +
|-
 +
|addresses
 +
|Массив
 +
|Массив адресов. Первый элемент — адрес
 +
подачи(обязательно), последний — адрес назначения,
 +
между ними — остановки.
 +
|-
 +
|&bull; address
 +
|Строка
 +
|Адрес подачи
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта адреса
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота адреса
 +
|-
 +
|order_params
 +
|Массив
 +
|Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД параметра заказа
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|-
 +
|cost_order
 +
|Дробное
 +
|Сумма заказа
 +
|-
 +
|state_id
 +
|Целое
 +
|ИД состояния заказа
 +
|-
 +
|discount_id
 +
|Целое
 +
|ИД скидки
 +
|-
 +
|auto_select_discount
 +
|true или false
 +
|Автоматически подобрать скидку, если не указана явно
 +
|-
 +
|auto_select_tariff
 +
|true или false
 +
|Автоматически подобрать тариф, если не указан явно
 +
|-
 +
|auto_recalc_cost
 +
|true или false
 +
|Автоматически пересчитать сумму заказа
 +
|-
 +
|auto_update_order_params
 +
|true или false
 +
|Автоматически обновить параметры заказа по клиенту и группе клиента
 +
|-
 +
|email
 +
|Строка
 +
|Email для уведомлений
 +
|-
 +
|prior_to_current_before_minutes
 +
|Целое
 +
|Время перехода из предварительного в текущие заказы, мин
 +
|-
 +
|flight_number
 +
|Строка
 +
|Номер рейса
 +
|-
 +
|need_custom_validate
 +
|true или false
 +
|Использовать специальную проверку перед изменением заказа
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Заказ не найден
 +
|-
 +
|101
 +
|Состояние заказа не найдено
 +
|-
 +
|102
 +
|Тариф не найден
 +
|-
 +
|103
 +
|Скидка не найдена
 +
|-
 +
|104
 +
|Группа экипажа не найдена
 +
|-
 +
|105
 +
|Служба не найдена
 +
|-
 +
|106
 +
|Клиент не найден
 +
|-
 +
|107
 +
|Изменение состояния не соответствует необходимым условиям
 +
|-
 +
|108
 +
|Параметр заказа не найден
 +
|-
 +
|109
 +
|Атрибут не может быть привязан к заказу
 +
|-
 +
|110
 +
|Ошибка специальной проверки заказа перед изменением. В ответе будет возвращаться:
 +
  "data": {
 +
    "message":"Текст ошибки для пользователя."
 +
  }
 +
|-
 +
|111
 +
|Недостаточно средств на безналичном счете клиента в ТМ
 +
|-
 +
|112
 +
|Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
POST https://ip:port/common_api/1.0/update_order HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
    "order_id": 12105,
 +
    "phone": "555",
 +
    "source_time": "20141216095044",
 +
    "is_prior": true,
 +
    "auto_select_discount": true,
 +
    "auto_select_tariff": true,
 +
    "auto_recalc_cost": true,
 +
    "auto_update_order_params": true,
 +
    "customer": "Заказчик",
 +
    "passenger": "Пассажир",
 +
    "comment": "Комментарий",
 +
    "crew_group_id": 8,
 +
    "client_id": 30,
 +
    "tariff_id": 33,
 +
    "addresses":[
 +
      {"address":"SOURCE","lat":56.896817,"lon":53.147830},     
 +
      {"address":"STOP1","lat":56.845452,"lon":53.226775},
 +
      {"address":"STOP2"},
 +
      {"address":"DESTINATION","lat":56.861230,"lon":53.241870}
 +
    ],
 +
    "cost_order": 200,
 +
    "state_id": 55,
 +
    "discount_id": 1,
 +
    "email" : "mail@mail.ru",
 +
    "prior_to_current_before_minutes":30,
 +
    "flight_number":"Number",
 +
    "need_custom_validate":false,
 +
    "attribute_values": [
 +
      {
 +
            "id": 1,
 +
            "bool_value": true
 +
      },
 +
      {
 +
            "id": 2,
 +
            "num_value": 1
 +
      },
 +
      {
 +
            "id": 3,
 +
            "num_value": 10
 +
      },
 +
      {
 +
            "id": 4,
 +
            "str_value": "строка"
 +
      }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
</pre>
 +
 
 +
=== Анализ телефона ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: analyze_phone
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|search_in_drivers_mobile
 +
|true или false
 +
|Искать среди телефонов водителей
 +
|-
 +
|search_in_clients
 +
|true или false
 +
|Искать среди телефонов клиентов
 +
|-
 +
|search_in_phones
 +
|true или false
 +
|Искать в справочнике телефонов
 +
|}
 +
 
 +
 
 +
Если параметры search_in_drivers_mobile, search_in_clients, search_in_phones не заданы, то поиск телефона будет происходить во всех справочниках.
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Телефон не найден
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|phone_type
 +
|Строка
 +
|Может принимать значения: «driver_mobile», «client», «phone».
 +
|-
 +
|id
 +
|Целое
 +
|ИД водителя, клиента, телефона из справочника.
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника клиента (если телефон найден среди телефонов клиента)
 +
|}
 +
 
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET /common_api/1.0/analyze_phone?
 +
phone=89501234567&search_in_drivers_mobile=true&search_in_drivers_home=true&search_in_clients=true&
 +
search_in_phones=true
 +
 
 +
Host: 127.0.0.1:8089
 +
Keep-Alive: 300
 +
Connection: keep-alive
 +
Signature: 4285286a446064353f4a951b721c54f7
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
  "phone_type":"client",
 +
  "id":1
 +
  "client_employee_id":2
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Показать сообщение в ТМ ===
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: show_tm_message
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|text
 +
|Строка
 +
|Текст сообщения
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|type
 +
|Строка
 +
|Тип сообщения ("warning", "error", "information", "confirmation"), по умолчанию "information"
 +
|-
 +
|header
 +
|Строка
 +
|Заголовок сообщения
 +
|-
 +
|timeout
 +
|Целое
 +
|Скрывать сообщение через, сек. (0 — не скрывать)
 +
|-
 +
|users
 +
|Массив
 +
|Массив пользователей (если не указаны — отправлять всем)
 +
|-
 +
|&bull;
 +
|Целое
 +
|ИД пользователя
 +
|-
 +
|color
 +
|Строка
 +
|Цвет уведомления в формате RGB: #FFFFFF
 +
|-
 +
|order_id
 +
|Целое
 +
|ИД заказа для кнопки открытия карточки в уведомлении
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД автомобиля для кнопки открытия карточки в уведомлении
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя для кнопки открытия карточки в уведомлении
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД экипажа для кнопки открытия карточки в уведомлении
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента для кнопки открытия карточки в уведомлении
 +
|}
 +
 
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Пользователи для отправки сообщения не найдены
 +
|}
 +
 
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
<pre>
 +
 
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/show_tm_message HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
    "text": "Текст сообщения",
 +
    "type": "warning",
 +
    "users": [
 +
        1,
 +
        2,
 +
        3
 +
    ],
 +
    "header": "Заголовок",
 +
    "timeout": 12,
 +
    "color":"#FFFF80",
 +
    "car_id":55
 +
}
 +
 
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос списка купленных смен водителей ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_driver_shifts
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|new_shifts
 +
|true или false
 +
|Включить в ответ новые смены (по умолчанию true)
 +
|-
 +
|in_work_shifts
 +
|true или false
 +
|Включить в ответ смены в работе (по умолчанию true)
 +
|-
 +
|finished_shifts
 +
|true или false
 +
|Включить в ответ выполненные смены (по умолчанию true)
 +
|-
 +
|failed_shifts
 +
|true или false
 +
|Включить в ответ неуспешно завершенные смены (по умолчанию true)
 +
|-
 +
|returned_shifts
 +
|true или false
 +
|Включить в ответ возвращенные смены (по умолчанию false)
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|shifts
 +
|Массив
 +
|Массив купленных смен
 +
|-
 +
|&bull; shift_id
 +
|Целое
 +
|ИД купленной смены
 +
|-
 +
|&bull; driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|&bull;driver_name
 +
|Строка
 +
|ФИО водителя
 +
|-
 +
|&bull; plan_shift_id
 +
|Строка
 +
|ИД запланированной смены
 +
|-
 +
|&bull; plan_shift_name
 +
|Строка
 +
|Наименование запланированной смены
 +
|-
 +
|&bull; plan_shift_cost
 +
|Дробное
 +
|Цена смены
 +
|-
 +
|&bull; plan_shift_type
 +
|Строка
 +
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
 +
|-
 +
|&bull; plan_shift_start_time
 +
|ГГГГММДДччммсс
 +
|План-начало смены (для срочных)
 +
|-
 +
|&bull; plan_shift_finish_time
 +
|ГГГГММДДччммсс
 +
|План-конец смены (для срочных)
 +
|-
 +
|&bull; plan_shift_length
 +
|Целое
 +
|План продолжительность смены, ч. (для бессрочных)
 +
|-
 +
|&bull; plan_shift_crew_group_id
 +
|Целое
 +
|ИД первой группы экипажей, которая может купить смену
 +
|-
 +
|&bull; plan_shift_crew_groups
 +
|Массив
 +
|ИД групп экипажей, которые могут купить смену
 +
|-
 +
|&bull; shift_state
 +
|Строка
 +
|Состояние смены («new» - новая, «in_work» - в работе, «finished» - завершена успешно, «failed» - завершена неуспешно)
 +
|-
 +
|&bull; buy_time
 +
|ГГГГММДДччммсс
 +
|Время продажи смены водителю
 +
|-
 +
|&bull; is_returned
 +
|true или false
 +
|Признак возвращенной смены
 +
|-
 +
|&bull; return_time
 +
|ГГГГММДДччммсс
 +
|Время возврата смены
 +
|-
 +
|&bull; orders_count
 +
|Целое
 +
|Количество заказов, выполненных водителем за смену
 +
|-
 +
|&bull; orders_sum
 +
|Дробное
 +
|Сумма заказов, выполненных водителем за смену
 +
|-
 +
|&bull; fact_length
 +
|Дробное
 +
|Фактическая продолжительность смены, ч.
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_driver_shifts?start_time=20140101101010&finish_time=20140101202020
 +
Signature: <...>
 +
 
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "shifts":[
 +
      {
 +
        "shift_id":1,
 +
        "driver_id":1,
 +
        "driver_name":"DRIVER_1",
 +
        "plan_shift_id":1,
 +
        "plan_shift_name":"PLAN_SHIFT_1",
 +
        "plan_shift_cost":100,
 +
        "plan_shift_type":"limited",
 +
        "plan_shift_start_time":"20140101101010",
 +
        "plan_shift_finish_time":"20140101101010",
 +
        "plan_shift_length":null,
 +
        "plan_shift_crew_group_id":1,
 +
        "shift_state":new,
 +
        "buy_time":"20140101101010",
 +
        "is_returned":false,
 +
        "return_time":null,
 +
        "orders_count":10,
 +
        "orders_sum":1000,
 +
        "fact_length":1.2
 +
      },
 +
      {
 +
        "shift_id":2,
 +
        "driver_id":2,
 +
        "driver_name":"DRIVER_2",
 +
        "plan_shift_id":2,
 +
        "plan_shift_name":"PLAN_SHIFT_2",
 +
        "plan_shift_cost":200,
 +
        "plan_shift_type":"unlimited",
 +
        "plan_shift_start_time":null,
 +
        "plan_shift_finish_time":null,
 +
        "plan_shift_length":8,
 +
        "plan_shift_crew_group_id":null,
 +
        "shift_state":new,
 +
        "buy_time":"20140101101010",
 +
        "is_returned":true,
 +
        "return_time":"20140101101010",
 +
        "orders_count":0,
 +
        "orders_sum":0,
 +
        "fact_length":0
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Запрос списка запланированных смен водителей ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_driver_plan_shifts
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода (если включаем в ответ срочные смены)
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода (если включаем в ответ срочные смены)
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|limited_shifts
 +
|true или false
 +
|Включить в ответ срочные смены (по умолчанию true)
 +
|-
 +
|unlimited_shifts
 +
|true или false
 +
|Включить в ответ бессрочные смены (по умолчанию true)
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|plan_shifts
 +
|Массив
 +
|Массив запланированных смен
 +
|-
 +
|&bull; plan_shift_id
 +
|Целое
 +
|ИД запланированной смены
 +
|-
 +
|&bull; plan_shift_name
 +
|Строка
 +
|Наименование запланированной смены
 +
|-
 +
|&bull; plan_shift_comment
 +
|Строка
 +
|Комментарий запланированной смены
 +
|-
 +
|&bull; plan_shift_cost
 +
|Дробное
 +
|Цена смены
 +
|-
 +
|&bull; plan_shift_type
 +
|Строка
 +
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
 +
|-
 +
|&bull; plan_shift_start_time
 +
|ГГГГММДДччммсс
 +
|План-начало смены (для срочных)
 +
|-
 +
|&bull; plan_shift_finish_time
 +
|ГГГГММДДччммсс
 +
|План-конец смены (для срочных)
 +
|-
 +
|&bull; plan_shift_length
 +
|Целое
 +
|План продолжительность смены, ч. (для бессрочных)
 +
|-
 +
|&bull; plan_shift_crew_group_id
 +
|Целое
 +
|ИД первой группы экипажей, которая может купить смену
 +
|-
 +
|&bull; plan_shift_crew_groups
 +
|Массив
 +
|ИД групп экипажей, которые могут купить смену
 +
|-
 +
|&bull; max_sell_count
 +
|Целое
 +
|Максимальное количество продаж смены
 +
|-
 +
|&bull; sold_count
 +
|Целое
 +
|Количество продаж смены
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020
 +
Signature: <...>
 +
 
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "plan_shifts":[
 +
      {
 +
        "plan_shift_id":1,
 +
        "plan_shift_name":"PLAN_SHIFT_1",
 +
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_1",
 +
        "plan_shift_cost":100,
 +
        "plan_shift_type":"limited",
 +
        "plan_shift_start_time":"20140101101010",
 +
        "plan_shift_finish_time":"20140101101010",
 +
        "plan_shift_length":null,
 +
        "plan_shift_crew_group_id":1,
 +
        "max_sell_count":100,
 +
        "sold_count":10
 +
      },
 +
      {
 +
        "plan_shift_id":2,
 +
        "plan_shift_name":"PLAN_SHIFT_2",
 +
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_2",
 +
        "plan_shift_cost":200,
 +
        "plan_shift_type":"unlimited",
 +
        "plan_shift_start_time":null,
 +
        "plan_shift_finish_time":null,
 +
        "plan_shift_length":8,
 +
        "plan_shift_crew_group_id":2,
 +
        "max_sell_count":200,
 +
        "sold_count":20
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Продажа смены водителю ===
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: driver_buy_shift
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД экипажа
 +
|-
 +
|plan_shift_id
 +
|Целое
 +
|ИД запланированной смены
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Запланированная смена не найдена
 +
|-
 +
|101
 +
|Экипаж не найден
 +
|-
 +
|102
 +
|Водитель не найден
 +
|-
 +
|103
 +
|Недостаточно денег на счете водителя
 +
|-
 +
|104
 +
|Водитель уволен либо заблокирован
 +
|-
 +
|105
 +
|Запланированная смена устарела
 +
|-
 +
|106
 +
|Не подходит группа экипажа
 +
|-
 +
|107
 +
|Превышено максимальное число покупок смены
 +
|-
 +
|108
 +
|Повторная покупка смены
 +
|-
 +
|109
 +
|Экипажу не назначен атрибут для доступа к смене
 +
|}
 +
 
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/driver_buy_shift
 +
Signature: <...>
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 25
 +
crew_id=1&plan_shift_id=1
 +
 
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
</pre>
 +
 
 +
=== Сохранение отзыва клиента ===
 +
Метод: POST
 +
 
 +
Название запроса: save_client_feed_back
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|phone
 +
|Строка
 +
|Телефон
 +
|-
 +
|rating
 +
|Целое
 +
|Рейтинг (от 1 до 5)
 +
|-
 +
|text
 +
|Строка
 +
|Текстовый отзыв
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|order_id
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 +
Допускается указывать либо параметр rating либо text, либо оба параметра.
 +
 
 +
Специальные возвращаемые коды: нет.
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
POST /common_api/1.0/save_client_feed_back
 +
Host: 127.0.0.1:8090
 +
Keep-Alive: 300
 +
Connection: keep-alive
 +
Content-Type: application/json
 +
Content-Length: 72
 +
Signature: <...>
 +
 
 +
{
 +
  "phone":"89123456789",
 +
  "rating":4,
 +
  "text":"test feedback",
 +
  "order_id":100
 +
}
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
</pre>
 +
 
 +
=== Поиск экипажей по координатам ===
 +
Метод: GET
 +
 
 +
Название запроса: find_crews_by_coords
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|lat
 +
|Дробное
 +
|Широта точки центра поиска
 +
|-
 +
|lon
 +
|Дробное
 +
|Долгота точки центра поиска
 +
|-
 +
|radius
 +
|Дробное
 +
|Радиус поиска, км или мили
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|crews_without_coords
 +
|true или false
 +
|Искать экипажи без реальных координат по координатам стоянок
 +
|-
 +
|crews_release_in
 +
|Целое
 +
|Допустимое время до освобождения в зоне поиска, если надо возвращать занятые экипажи (если 0, то искать только свободные экипажи), мин
 +
|-
 +
|crew_group_id
 +
|Целое
 +
|ИД группы экипажей, заказы из которой должны видеть подходящие экипажи
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС, к которой должны принадлежать подходящие экипажи
 +
|-
 +
|attributes
 +
|Строка
 +
|Список ИД атрибутов заказа, которыми должны обладать подходящие экипажи (через точку с запятой, пример: «1;2;3»). Устарело. Рекомендуется использовать параметр attribute_values.
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|waiting_count
 +
|Целое
 +
|Количество свободных экипажей в зоне поиска
 +
|-
 +
|on_order_count
 +
|Целое
 +
|Количество занятых экипажей, освобождающихся в зоне поиска
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/common_api/1.0/find_crews_by_coords?
 +
lat=11.111111&lon=22.222222&radius=2&crews_release_in=5
 +
Signature: <...>
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
  "waiting_count":5,
 +
  "on_order_count":2
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Подбор тарифа для заказа ===
 +
Метод: POST
 +
 
 +
Название запроса: select_tariff_for_order
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|crew_group_id
 +
|Целое
 +
|ИД группы экипажей
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС
 +
|-
 +
|source_time
 +
|ГГГГММДДччммсс
 +
|Время подачи
 +
|-
 +
|is_prize
 +
|true или false
 +
|Призовой заказ
 +
|-
 +
|addresses
 +
|Массив
 +
|Массив координат адресов. Первый элемент — адрес подачи,
 +
последний — адрес назначения, между ними — остановки.
 +
Заполняется если определены координаты всех адресов.
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота адреса
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта адреса
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Клиент не найден
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|tariff_id
 +
|Целое
 +
|Тариф
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/common_api/1.0/select_tariff_for_order
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
{
 +
  "client_id":1,
 +
  "crew_group_id":2,
 +
  "source_time":"20160101100000",
 +
  "is_prize":true
 +
"addresses": [
 +
      {
 +
            "lat": 11.111111,
 +
            "lon": 22.222222
 +
      },
 +
      {
 +
            "lat": 33.333333,
 +
            "lon": 44.444444
 +
}
 +
}
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
  "tariff_id":2
 +
}
 +
}
 +
</pre>
 +
 
 +
=== Импорт марок автомобилей в БД  ===
 +
Метод: POST
 +
 
 +
Название запроса:  import_car_marks
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|marks
 +
|Массив строк
 +
|Импортируемые марки автомобилей
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/import_car_marks
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
{
 +
  "marks": [
 +
    "Mercedes",
 +
    "BMW"
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Импорт цветов автомобилей в БД  ===
 +
Метод: POST
 +
 
 +
Название запроса:  import_car_colors
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|colors
 +
|Массив строк
 +
|Импортируемые цвета автомобилей
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/import_car_colors
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "colors": [
 +
    "красный",
 +
    "синий"
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос информации по сотруднику клиента  ===
 +
Метод: GET
 +
 
 +
Название запроса: get_client_employee_info
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника клиента
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден сотрудник клиента ИД=CLIENT_EMPLOYEE_ID
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД сотрудника
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|name
 +
|Строка
 +
|ФИО сотрудника
 +
|-
 +
|is_deleted
 +
|true или false
 +
|Признак удаленного сотрудника
 +
|-
 +
|email
 +
|Строка
 +
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|default_crew_group
 +
|Целое
 +
|Группа экипажей по умолчанию
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов сотрудника клиента
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона сотрудника
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_client_employee_info?client_employee_id=10
 +
Signature: <...>
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "client_employee_id":5,
 +
    "client_id":1,
 +
    "name":"Иванов Иван",
 +
    "is_deleted":false,
 +
    "email":"mail@mail.ru",
 +
    "use_email_informing":true,
 +
    "default_crew_group":1,
 +
    "phones":[
 +
      {
 +
        "phone":"88"
 +
      },
 +
      {
 +
        "phone":"99"
 +
      }
 +
    ]
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание сотрудника клиента ===
 +
Метод: POST
 +
 
 +
Название запроса: create_client_employee
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|name
 +
|Строка
 +
|ФИО сотрудника
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|email
 +
|Строка
 +
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов сотрудника
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Клиент с ИД=CLIENT_ID не найден
 +
|-
 +
|101
 +
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_client_employee
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: 104
 +
 
 +
{
 +
  "client_id":10
 +
  "name":"Иванов Иван",
 +
  "email":"mail@mail.ru",
 +
  "use_email_informing":true,
 +
  "phones":[
 +
    {
 +
      "phone":"79999999999",
 +
    },
 +
    {
 +
      "phone":"79999999999",
 +
    }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Обновление информации о сотруднике клиента ===
 +
Метод: POST
 +
 
 +
Название запроса: update_client_employee_info
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|client_employee_id
 +
|Целое
 +
|ИД редактируемого сотрудника клиента 
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|name
 +
|Строка
 +
|ФИО сотрудника
 +
|-
 +
|is_deleted
 +
|true или false
 +
|Признак удаленного сотрудника
 +
|-
 +
|email
 +
|Строка
 +
|E-mail
 +
|-
 +
|use_email_informing
 +
|true или false
 +
|Использовать E-mail для отправки уведомлений по заказу
 +
|-
 +
|phones
 +
|Массив
 +
|Массив телефонов сотрудника
 +
|-
 +
|&bull; phone
 +
|Строка
 +
|Номер телефона
 +
|}
 +
 
 +
Примечание: запрещено редактировать телефоны удаленного сотрудника.
 +
 
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Сотрудник с ИД=CLIENT_EMPLOYEE_ID не найден
 +
|-
 +
|101
 +
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 +
|-
 +
|102
 +
|Запрещено редактирование телефонов удаленного сотрудника
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/update_client_employee_info
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: 104
 +
 
 +
{
 +
  "client_employee_id":10
 +
  "name":"Иванов Иван",
 +
  "is_deleted":false,
 +
  "email":"mail@mail.ru",
 +
  "use_email_informing":true,
 +
  "phones":[
 +
    {
 +
      "phone":"79999999999",
 +
    },
 +
    {
 +
      "phone":"79999999999",
 +
    }
 +
  ]
 +
}
 +
 
 +
Ответ:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Запрос списка состояний заказа ===
 +
Метод: GET
 +
 
 +
Название запроса: get_order_states_list
 +
 
 +
Параметры: нет
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|order_params
 +
|Массив
 +
|Список параметров заказа
 +
|-
 +
|&bull; id
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|&bull; name
 +
|Строка
 +
|Название параметра
 +
|-
 +
|&bull; state_type
 +
|Строка
 +
|Тип состояния. Может принимать значения:
 +
 
 +
• "accepted" — заказ принят
 +
 
 +
• "in_work" — заказ в работе
 +
 
 +
• "finished" — заказ выполнен
 +
 
 +
• "aborted" — заказ прекращен
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
 
 +
GET https://ip:port/common_api/1.0/get_order_states_list
 +
 
 +
Signature: <...>
 +
 
 +
Ответ:
 +
 
 +
 
 +
{
 +
"code":0,
 +
"descr":"OK",
 +
"data":{
 +
"order_params":[
 +
    {
 +
      "id":1,
 +
      "name":"Принят",
 +
      "state_type":"accepted"
 +
    },
 +
    {
 +
      "id":2,
 +
      "name":"В работе",
 +
      "state_type":"in_work"
 +
      },
 +
    ...
 +
                ]
 +
        }
 +
}
 +
 
 +
</pre>
 +
 
 +
===  Запрос списка состояний экипажа ===
 +
Метод: GET
 +
 
 +
Название запроса: get_crew_states_list
 +
 
 +
Параметры: нет
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|order_params
 +
|Массив
 +
|Список параметров заказа
 +
|-
 +
|&bull; id
 +
|Целое
 +
|ИД параметра
 +
|-
 +
|&bull; name
 +
|Строка
 +
|Название параметра
 +
|-
 +
|&bull; state_type
 +
|Строка
 +
|Тип состояния. Может принимать значения:
 +
 
 +
• "waiting" — экипаж свободен
 +
 
 +
• "not_available" — экипаж не на линии
 +
 
 +
• "on_order" — экипаж на заказе
 +
 
 +
• "on_break" — экипаж на перерыве
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/common_api/1.0/get_crew_states_list
 +
Signature: <...>
 +
 
 +
Ответ:
 +
{
 +
"code":0,
 +
"descr":"OK",
 +
"data":{
 +
"order_params":[
 +
        {
 +
          "id":1,
 +
          "name":"Свободен",
 +
          "state_type":"waiting"
 +
        },
 +
        {
 +
          "id":2,
 +
          "name":"Не работает",
 +
          "state_type":"not_available"
 +
        },
 +
        ...
 +
              ]
 +
        }
 +
}
 +
 
 +
</pre>
 +
 
 +
 
 +
=== Запрос глобальных атрибутов ===
 +
Метод: GET
 +
 
 +
Название запроса: get_global_attributes
 +
 
 +
Версия ТМ: 3.9
 +
 
 +
Параметры: нет
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|attribute_values
 +
|Массив
 +
|Массив значений глобальных атрибутов
 +
|-
 +
|&bull; id
 +
|Целое
 +
|Идентификатор атрибута
 +
|-
 +
|&bull; bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|&bull; num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|&bull; str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
GET https://ip:port/common_api/1.0/get_global_attributes
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "global_attributes":[
 +
      {
 +
        "id":123,
 +
        "bool_value":true
 +
      },
 +
      {
 +
        "id":124,
 +
        "num_value":314
 +
      },
 +
      {
 +
        "id":125,
 +
        "str_value": "AAA"
 +
      }
 +
    ]
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Изменение глобального атрибута ===
 +
Метод: POST
 +
 
 +
Название запроса: update_global_attribute
 +
 
 +
Версия ТМ: 3.9
 +
 
 +
Параметры в формате JSON:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|id
 +
|Целое
 +
|ИД изменяемого атрибута
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|bool_value
 +
|true или false
 +
|Значение, если тип атрибута «Логический»
 +
|-
 +
|num_value
 +
|Дробное
 +
|Значение, если тип атрибута:
 +
* «Число» (непосредственное значение)
 +
* «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
 +
* «Перечисляемый» (значение выбранного элемента перечисления)
 +
* «Дата» и «Дата/время» (Unix-время, всегда целое число)
 +
|-
 +
|str_value
 +
|Строка
 +
|Значение, если тип атрибута «Строка»
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Атрибут не найден
 +
|-
 +
|101
 +
|Атрибут не глобальный
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
POST https://ip:port/common_api/1.0/update_global_attribute HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "id": 12,
 +
  "bool_value": true
 +
}
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание резервирования автомобиля ===
 +
Метод: POST
 +
 
 +
Название запроса: create_car_reservation
 +
 
 +
Версия ТМ: 3.9.46
 +
 
 +
Параметры в формате JSON:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД автомобиля
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|car_reservation_type_id
 +
|Целое
 +
|ИД типа резервирования
 +
|-
 +
|start_time
 +
|ГГГГММДД
 +
 
 +
или
 +
 
 +
ГГГГММДДччммсс
 +
|Дата или дата/время начала.
 +
Если указывается дата без времени, то планируемое время начала резервирования устанавливается исходя из времени начала, указанного в соответствующем типе резервирования
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время окончания резервирования. Если не указано, рассчитывается на основании времени планируемого начала резервирования и продолжительности резервирования, указанного в соответствующем типе резервирования
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден автомобиль
 +
|-
 +
|101
 +
|Не найден водитель
 +
|-
 +
|102
 +
|Не найден тип резервирования
 +
|-
 +
|103
 +
|Время начала резервирования должно быть меньше времени завершения
 +
|-
 +
|104
 +
|Автомобиль уже зарезервирован в указанный период времени
 +
|-
 +
|105
 +
|Водитель уже имеет зарезервированный автомобиль в указанный период времени
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|car_reservation_id
 +
|Целое
 +
|ИД резервирования
 +
|}
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
POST https://ip:port/common_api/1.0/create_car_reservation HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "car_id": 1,
 +
  "driver_id": 1,
 +
  "car_reservation_type_id": 1,
 +
  "start_date": "20201231",
 +
  "comment": "COMMENT"
 +
}
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code": 0,
 +
  "descr": "OK",
 +
  "data": {
 +
    "car_reservation_id": 5
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание недоступности автомобиля ===
 +
Метод: POST
 +
 
 +
Название запроса: create_car_inaccessibility
 +
 
 +
Версия ТМ: 3.9.46
 +
 
 +
Параметры в формате JSON:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД автомобиля
 +
|-
 +
|car_inaccessibility_type_id
 +
|Целое
 +
|ИД типа недоступности
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Время начала
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время завершения
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден автомобиль
 +
|-
 +
|101
 +
|Не найден тип недоступности
 +
|-
 +
|102
 +
|Время начала недоступности должно быть меньше времени завершения
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|car_inaccessibility_id
 +
|Целое
 +
|ИД недоступности
 +
|}
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
POST https://ip:port/common_api/1.0/create_car_inaccessibility HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "car_id": 1,
 +
  "car_inaccesibility_type_id": 1,
 +
  "start_time": "20201231235959",
 +
  "finish_time": "20210101050000",
 +
  "comment": "COMMENT"
 +
}
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code": 0,
 +
  "descr": "OK",
 +
  "data": {
 +
    "car_inaccessibility_id": 5
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Вызвать системное событие ===
 +
Метод: POST
 +
 
 +
Название запроса: run_system_event
 +
 
 +
Версия ТМ: 3.10
 +
 
 +
Параметры в формате JSON:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|system_event_id
 +
|Целое
 +
|ИД системного события с типом "По запросу CommonAPI"
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|Произвольный параметр
 +
|любой
 +
|В запросе можно передавать дополнительные произвольные параметры с любыми названиями и значениями. Эти параметры могут использоваться в системном событии.
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|У системного события тип не "По запросу CommonAPI"
 +
|-
 +
|101
 +
|Системное событие не найдено
 +
|-
 +
|102
 +
|Системное событие не активно
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
POST https://ip:port/common_api/1.0/run_system_event HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "system_event_id": 123,
 +
  "custom_param_1": true
 +
  "custom_param_2": 123,
 +
  "custom_param_3": 123.45,
 +
  "custom_param_4": "aaa"
 +
}
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Проверить штраф клиента за отмену заказа ===
 +
Метод: GET
 +
 
 +
Название запроса: check_cancel_order_penalty
 +
 
 +
Версия ТМ: 3.11
 +
 
 +
Параметры в формате JSON:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|order_id
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|cancel_order_state_id
 +
|Целое
 +
|ИД состояния заказа, в которое переходит заказ при отмене
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден заказ ИД=order_id
 +
|-
 +
|101
 +
|Не найдено состояние заказа ИД=cancel_order_state_id
 +
|-
 +
|102
 +
|Состояние заказа не соответствует необходимым условиям
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|cancel_order_penalty_sum
 +
|Дробное
 +
|Величина штрафа, которая будет начислена клиенту в случае отмены заказа или 0, если штрафа нет
 +
|}
 +
 
 +
 
 +
<pre>
 +
Пример запроса:
 +
GET https://ip:port/common_api/1.0/check_cancel_order_penalty?order_id=12345&cancel_order_state_id=12 HTTP/1.1
 +
Signature: <...>
 +
 
 +
Пример ответа:
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "cancel_order_penalty_sum":350
 +
  }
 +
}
 +
 
 +
 
 +
</pre>
 +
 
 +
=== Запрос трека экипажа ===
 +
Метод: GET
 +
 
 +
Название запроса: get_crew_track
 +
 
 +
Версия ТМ: 3.11
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|crew_id
 +
|Целое
 +
|ИД экипажа
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Начало периода
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода, должен отличаться о начала периода не более чем на 7 дней
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден экипаж ИД=crew_id
 +
|-
 +
|101
 +
|Задан период времени более 7 дней
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|track
 +
|Массив
 +
|Массив, трек экипажа за период времени
 +
|-
 +
|&bull; lat
 +
|Дробное
 +
|Широта точки маршрута
 +
|-
 +
|&bull; lon
 +
|Дробное
 +
|Долгота точки маршрута
 +
|-
 +
|&bull; time
 +
|ГГГГММДДччммсс
 +
|Время данной точки
 +
|-
 +
|&bull; speed
 +
|Целое
 +
|Скорость в данный момент, км/ч
 +
|-
 +
|&bull; direction
 +
|Целое
 +
|Направление движения, градусы (0 - север, 90 - восток, 180 - юг, 270 - запад)
 +
|}
 +
 
 +
 
 +
<pre>
 +
Пример запроса:
 +
 
 +
GET https://ip:port/common_api/1.0/get_crew_track?crew_id=1&start_time=20210911120000&finish_time=20210911130000 HTTP/1.1
 +
Signature: <...>
 +
 
 +
Пример ответа:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "track": [
 +
      {
 +
        "lat": 11.111111,
 +
        "lon": 22.222222,
 +
        "time": "20210911120000",
 +
        "speed": 123,
 +
        "direction": 0
 +
      }
 +
    ]
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание фиксированной смены водителя ===
 +
Метод: POST
 +
 
 +
Название запроса: create_fixed_driver_shift
 +
 
 +
Версия ТМ: 3.12
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Время начала
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время завершения
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден водитель
 +
|-
 +
|101
 +
|Время начала фиксированной смены должно быть меньше времени завершения
 +
|-
 +
|102
 +
|Создаваемая смена пересекается по времени с уже существующей сменой данного водителя
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|fixed_driver_shift_id
 +
|Целое
 +
|ИД фиксированной смены
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_fixed_driver_shift HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "driver_id": 1,
 +
  "start_time": "20201231235959",
 +
  "finish_time": "20210101050000"
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code": 0,
 +
  "descr": "OK",
 +
  "data": {
 +
    "fixed_driver_shift_id": 5
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Удаление фиксированной смены водителя ===
 +
Метод: POST
 +
 
 +
Название запроса: delete_fixed_driver_shift
 +
 
 +
Версия ТМ: 3.12
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|fixed_driver_shift_id
 +
|Целое
 +
|ИД фиксированной смены водителя
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Фиксированная смена водителя не найдена
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/delete_fixed_driver_shift HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: <...>
 +
 
 +
fixed_driver_shift_id=1
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{}
 +
}
 +
 
 +
</pre>
 +
 
 +
 
 +
=== Создание путевого листа ===
 +
Метод: POST
 +
 
 +
Название запроса: create_way_bill
 +
 
 +
Версия ТМ: 3.14
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Время начала
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время завершения
 +
|-
 +
|driver_id
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|car_id
 +
|Целое
 +
|ИД автомобиля
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|number
 +
|Строка
 +
|Номер путевого листа
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Нет лицензии на использование путевых листов
 +
|-
 +
|101
 +
|Не найден водитель
 +
|-
 +
|102
 +
|Не найден автомобиль
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|way_bill_id
 +
|Целое
 +
|ИД созданного путевого листа
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_way_bill HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "number": "api_123",
 +
  "start_time": "20230508000000",
 +
  "finish_time": "20230509000000",
 +
  "driver_id": 123,
 +
  "car_id": 123,
 +
  "comment": "Комментарий"
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code": 0,
 +
  "descr": "OK",
 +
  "data": {
 +
    "way_bill_id": 5
 +
  }
 +
}
 +
 
 +
</pre>
 +
 
 +
=== Создание осмотра по путевому листу ===
 +
Метод: POST
 +
 
 +
Название запроса: create_way_bill_check
 +
 
 +
Версия ТМ: 3.14
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|way_bill_id
 +
|Целое
 +
|ИД путевого листа (должен быть задан либо ИД либо номер)
 +
|-
 +
|way_bill_number
 +
|Строка
 +
|Номер путевого листа (должен быть задан либо ИД либо номер)
 +
|-
 +
|kind
 +
|Строка
 +
|Тип осмотра ("med/tech")
 +
|-
 +
|user_name
 +
|Строка
 +
|Имя пользователя
 +
|-
 +
|success
 +
|true или false
 +
|Результат осмотра
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|number
 +
|Строка
 +
|Номер осмотра
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Нет лицензии на использование путевых листов
 +
|-
 +
|101
 +
|Не найден путевой лист
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/common_api/1.0/create_way_bill_check HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/json
 +
Content-Length: <...>
 +
 
 +
{
 +
  "way_bill_id": 123,
 +
  "number": "api_med_123",
 +
  "kind": "med",
 +
  "user_name": "Имя",
 +
  "success": true,
 +
  "comment": "Комментарий"
 +
}
 +
 
 +
Ответ:
 +
 
 +
{
 +
  "code": 0,
 +
  "descr": "OK",
 +
  "data": {}
 +
}
 +
 
 +
</pre>
 +
 
 +
== Описание протокола TMTAPI Версия 1.0 ==
 +
 
 +
=== Общее описание протокола ===
 +
 
 +
==== Формат запроса ====
 +
 
 +
TM API принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TM API, должно идти название API (tm_tapi) и версия API.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
GET https://ip:port/tm_tapi/1.0/get_info_by_phone
 +
</pre>
 +
 
 +
Для получения данных из БД используются запросы типа GET. Для записи данных в БД используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE-PHONE_
 +
TO_DIAL&signature=661ce071eeefcb4f7fc8bc1f17bd520b
 +
</pre>
 +
 
 +
В запросе типа POST параметры передаются в теле запроса в формате application/x-www-form-
 +
urlencoded.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
POST https://ip:port/tm_tapi/1.0/change_order_state
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 71
 +
 
 +
order_id=98798&need_state=12&signature=a204c50c7e48f0c6849a87485fe5e171
 +
</pre>
 +
 
 +
В любом запросе обязательно с другими полями должно передаваться поле signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMAPI в Такси-Мастер.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE
 +
&signature=ef17ea682d09e452af544a5758dba396
 +
 
 +
Секретный ключ:
 +
321
 +
 
 +
Signature = MD5("phone=89058800565&fields=PHONE_TYPE" + "321") = ef17ea682d09e452af544a5758dba396
 +
 
 +
</pre>
 +
 
 +
==== Формат ответа ====
 +
TM API всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате XML. Общий вид возвращаемого результата:
 +
 
 +
<pre>
 +
<response>
 +
<code>Числовой код результата</code>
 +
<descr>Строковое описание результата</descr>
 +
<data>Дополнительная информация</data>
 +
</response>
 +
</pre>
 +
 
 +
Существуют общие для всех запросов коды результатов:
 +
{|
 +
! Код
 +
! Описание
 +
|-
 +
|0
 +
|Успешное выполнение запроса
 +
|-
 +
|1
 +
|Неизвестная ошибка
 +
|-
 +
|2
 +
|Неизвестный тип API
 +
|-
 +
|3
 +
|API отключено в настройках модуля TM API в Такси-Мастер
 +
|-
 +
|4
 +
|Не совпадает секретный ключ
 +
|-
 +
|5
 +
|Неподдерживаемая версия API
 +
|-
 +
|6
 +
|Неизвестное название запроса
 +
|-
 +
|7
 +
|Неверный тип запроса GET
 +
|-
 +
|8
 +
|Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
 +
|-
 +
|9
 +
|Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
 +
|-
 +
|10
 +
|Внутренняя ошибка обработки запроса
 +
|}
 +
 
 +
=== Описание запросов ===
 +
 
 +
==== Запрос информации по номеру телефона ====
 +
Метод: GET
 +
 
 +
Название запроса: get_info_by_phone
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона
 +
|-
 +
|FIELDS
 +
|Строка
 +
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа.
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|PHONE_TYPE
 +
|Целое
 +
|Тип телефона звонящего:
 +
1 - если звонит водитель с основного телефона;
 +
 
 +
2 - если звонит физическое лицо;
 +
 
 +
3 - если звонит юридическое лицо;
 +
 
 +
4 - если звонит номер из справочника Телефоны;
 +
 
 +
5 - если звонит водитель с неосновного телефона;
 +
 
 +
6 - если звонит ЦОЗ водитель;
 +
 
 +
0 - неизвестный номер.
 +
|-
 +
|PHONE_TO_DIAL
 +
|Строка, <= 16 символов
 +
|Номер телефона для отзвона по заказу
 +
|-
 +
|CREW_ID
 +
|Целое
 +
|ИД экипажа
 +
|-
 +
|IS_PRIOR
 +
|0 или 1 (false или true)
 +
|Признак предварительного заказа
 +
|-
 +
|IS_PRIZE
 +
|0 или 1 (false или true)
 +
|Признак призового заказа
 +
|-
 +
|ORDER_CLIENT_ID
 +
|Целое
 +
|ИД клиента из заказа
 +
|-
 +
|DRIVER_PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона водителя
 +
|-
 +
|CREW_SYSTEMSTATE
 +
|Целое
 +
|Состояние экипажа
 +
|-
 +
|CLIENT_ID
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|CLIENT_TYPE
 +
|Целое
 +
|Тип клиента
 +
|-
 +
|CATEGORYID
 +
|Целое
 +
|ИД категории телефона
 +
|-
 +
|PHONE_SYSTEM_CATEGORY
 +
|Целое
 +
|Системное значение категории телефона (0 - обычный, 1 - черный, 2 - белый, 3 - серый)
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|DRIVER_ID
 +
|Целое
 +
|ИД водителя
 +
|-
 +
|ORDER_STATE
 +
|Целое
 +
|Состояние заказа
 +
|-
 +
|DRIVER_REMAINDER
 +
|Дробное
 +
|Баланс счета водителя
 +
|-
 +
|DISCOUNTEDSUMM
 +
|Строка
 +
|Сумма заказа с учетом всех скидок
 +
|-
 +
|CREW_GROUP_ID
 +
|Целое
 +
|ИД группы экипажа (если в заказе указан экипаж, то берется ИД группы экипажа, если нет — из карты заказа)
 +
|-
 +
|FIRST_CREW_GROUP_ID
 +
|Целое
 +
|ИД первой группы экипажа
 +
|-
 +
|CLIENT_BALANCE
 +
|Дробное
 +
|Баланс клиента
 +
|-
 +
|DRIVER_TIMECOUNT
 +
|Целое
 +
|Время пути водителя до адреса подачи в минутах
 +
|-
 +
|SOURCE_TIMECOUNT
 +
|Целое
 +
|Время оставшееся до подачи в минутах
 +
|-
 +
|GOSNUMBER
 +
|Строка
 +
|Государственный номер автомобиля
 +
|-
 +
|CAR_COLOR
 +
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|CAR_MARK
 +
|Строка
 +
|Марка автомобиля
 +
|-
 +
|ORDER_COORDS
 +
|Строка
 +
|Координаты места подачи. Порядок координат: долгота адреса, широта адреса.
 +
|-
 +
|CREW_COORDS
 +
|Строка
 +
|Координаты назначенного экипажа. Порядок координат: долгота адреса, широта адреса.
 +
|-
 +
|MARKET_TYPE
 +
|Целое
 +
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
 +
|-
 +
|ORDERS_COUNT
 +
|Целое
 +
|Для телефона клиента — количество текущих и предварительных заказов по телефону; для телефона водителя — количество текущих заказов, на которые назначен данный водитель
 +
|-
 +
|CLIENT_GROUP_ID
 +
|Целое
 +
|ИД группы клиента
 +
|-
 +
|CLIENT_BONUS_BALANCE
 +
|Дробное
 +
|Бонусный баланс клиента
 +
|-
 +
|AD_LIGHTHOUSE
 +
|Строка
 +
|Признак наличия шашек. Пустая строка – номер клиента или водителя без экипажа. 1 – есть шашки, 0 – нет шашек.
 +
|-
 +
|CREW_STATE
 +
|Целое
 +
|Состояние экипажа.
 +
|-
 +
|SOURCE_TIME
 +
|ГГГГММДДччммсс
 +
|Дата и время подачи
 +
|-
 +
|DRV_SHIFT_START_TIME
 +
|ГГГГММДДччммсс
 +
|Начало фактической смены водителя
 +
|-
 +
|START_USER_SIP_ACCOUNTS
 +
|Строка
 +
|Список логинов SIP–аккаунтов пользователя, принявшего заказ
 +
|-
 +
|CREATION_WAY
 +
|Строка
 +
|Способ создания заказа (operator, sms, market, common_api, t_api, taxophone, driver, daily_order, taxophone_web, unknown)
 +
|-
 +
|CREATOR_TAXI_PHONE
 +
|Строка
 +
|Телефон службы-создателя для заказов, принятых из ЦОЗ
 +
|-
 +
|PERFORMER_TAXI_PHONE
 +
|Строка
 +
|Телефон службы-исполнителя для заказов, отданных в ЦОЗ
 +
|-
 +
|CLIENT_IS_LOCKED
 +
|0 или 1 (false или true)
 +
|Признак блокировки клиента
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565l&fields=PHONE_TYPE-PHONE_
 +
TO_DIAL-CREW_ID-ORDER_ID&signature=d35ab2765f2968d48c096d5f5327db26
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <PHONE_TYPE>0</PHONE_TYPE>
 +
    <PHONE_TO_DIAL></PHONE_TO_DIAL>
 +
    <CREW_ID>3</CREW_ID>
 +
    <ORDER_ID>6</ORDER_ID>
 +
    <SOURCE_TIME>20140929134911</SOURCE_TIME>
 +
    <DRV_SHIFT_START_TIME>20141007105050</DRV_SHIFT_START_TIME>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Запрос информации по ИД заказа ====
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_info_by_order_id
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|FIELDS
 +
|Строка
 +
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|DRIVER_TIMECOUNT
 +
|Строка, <= 16 символов
 +
|Время до подачи в минутах, указанное водителем
 +
|-
 +
|CAR_MARK
 +
|Строка
 +
|Марка автомобиля
 +
|-
 +
|CAR_COLOR
 +
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|GOSNUMBER
 +
|Строка
 +
|Государственный номер автомобиля
 +
|-
 +
|CREW_GROUP_ID
 +
|Целое
 +
|ИД группы экипажа (значение из карты заказа)
 +
|-
 +
|FIRST_CREW_GROUP_ID
 +
|Целое
 +
|ИД первой группы экипажа
 +
|-
 +
|IS_PRIOR
 +
|0 или 1 (false или true)
 +
|Признак предварительного заказа
 +
|-
 +
|IS_PRIZE
 +
|0 или 1 (false или true)
 +
|Признак призового заказа
 +
|-
 +
|DISCOUNTEDSUMM
 +
|Строка
 +
|Сумма заказа с учетом всех скидок
 +
|-
 +
|DRIVER_PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона водителя
 +
|-
 +
|CATEGORYID
 +
|Целое
 +
|ИД категории телефона
 +
|-
 +
|SOURCE_TIMECOUNT
 +
|Целое
 +
|Время до подачи в минутах
 +
|-
 +
|ORDER_COORDS
 +
|Строка
 +
|Координаты места подачи. Порядок координат: долгота адреса, широта адреса.
 +
|-
 +
|CREW_COORDS
 +
|Строка
 +
|Координаты назначенного экипажа. Порядок координат: долгота адреса, широта адреса.
 +
|-
 +
|ORDER_STATE
 +
|Целое
 +
|ИД состояния заказа
 +
|-
 +
|MARKET_TYPE
 +
|Целое
 +
|Тип биржи заказов (3 — ЦОЗ).
 +
|-
 +
|AD_LIGHTHOUSE
 +
|Строка
 +
|Признак наличия шашек (1 – шашки есть, 0 – шашек нет).
 +
|-
 +
|CREW_STATE
 +
|Целое
 +
|Состояние экипажа
 +
|-
 +
|SOURCE_TIME
 +
|ГГГГММДДччммсс
 +
|Дата и время подачи
 +
|-
 +
|START_USER_SIP_ACCOUNTS
 +
|Строка
 +
|Список логинов SIP–аккаунтов пользователя, принявшего заказ
 +
|-
 +
|ORDER_PARAMS
 +
|Целое
 +
|Список ИД параметров заказа
 +
|-
 +
|CREATION_WAY
 +
|Строка
 +
|Способ создания заказа (operator, sms, market, common_api, t_api, taxophone, driver, daily_order, taxophone_web, unknown)
 +
|-
 +
|CREATOR_TAXI_PHONE
 +
|Строка
 +
|Телефон службы-создателя для заказов, принятых из ЦОЗ
 +
|-
 +
|PERFORMER_TAXI_PHONE
 +
|Строка
 +
|Телефон службы-исполнителя для заказов, отданных в ЦОЗ
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/tm_tapi/1.0/get_info_by_order_id?order_id=60&fields=DRIVER_SOURCETIME-MARKCOLOR-
 +
GOSNUMBER-IS_PRIOR-MOBILE_PHONE-SOURCE_TIME&signature=fdcd04e570443b56176b83f44748dc23
 +
 
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <DRIVER_SOURCETIME></DRIVER_SOURCETIME>
 +
    <MARK></MARK>
 +
    <COLOR></COLOR>
 +
    <GOSNUMBER></GOSNUMBER>
 +
    <IS_PRIOR></IS_PRIOR>
 +
    <MOBILE_PHONE></MOBILE_PHONE>
 +
    <SOURCE_TIME>20140929134911</SOURCE_TIME>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Смена состояния заказа ====
 +
Метод: POST
 +
 
 +
Название запроса: change_order_state
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|NEED_STATE
 +
|Целое
 +
|Новое состояние заказа
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Заказ с таким ИД не найден
 +
|-
 +
|101
 +
|Изменение состояния не соответствует необходимым условиям
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|NEED_STATE
 +
|Целое
 +
|Новое состояние заказа
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/change_order_state
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 71
 +
 
 +
order_id=18561&need_state=14&signature=3e8107e0c044e55d983db1fbed82fd8c
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <ORDER_ID>18561</ORDER_ID>
 +
    <NEW_STATE>14</NEW_STATE>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Запись пути к файлу разговора в базу данных ====
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: create_record_link
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|CALL_ID
 +
|Строка, <= 60 символов
 +
|ИД звонка (необязателен, если указан PHONE)
 +
|-
 +
|PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона (необязателен, если указан CALL_ID)
 +
|-
 +
|CALL_TYPE
 +
|0 или 1
 +
|0 — Исходящий, 1 — Входящий
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|RECORD_DATE
 +
|ДДММГГГГччммсс
 +
|Дата записи
 +
|-
 +
|RECORD_LENGTH
 +
|Целое
 +
|Продолжительность записи (в секундах)
 +
|-
 +
|FILE_PATH
 +
|Строка, <=255 символов
 +
|Путь к файлу записи
 +
|-
 +
|TRANSFERED_TO
 +
|Строка,<=30 символов
 +
|Номер телефона(линии) на который(ую) был переведен звонок (доп. параметр для CALL_RESULT="transfered")
 +
|-
 +
|CALL_RESULT
 +
|Строка
 +
|Результат звонка, возможны следующие значения:
 +
* "success" - успешный,
 +
* "no_answer" - не дозвонились,
 +
* "answered" - ответили,
 +
* "missed" - пропущен,
 +
* "transfered" - переведен,
 +
* "broke_off" - сброшен,
 +
* "other_user_answered" - принят другим оператором.
 +
* Если не задан, то "success"
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет.
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|RECORD_ID
 +
|Целое
 +
|ИД созданной записи
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/create_record_link HTTP/1.1
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: <...>
 +
 
 +
RECORD_DATE=20130122180949&RECORD_LENGTH=215&CALL_ID=12345&PHONE=8987564&FILE_PATH=d%3A%5Ctemp%5CTM%5Ctrunk%5CSource%5CDevUtils%5CTMAPITest%5C&CALL_TYPE=1&CALL_RESULT=no_answer&signature=<...>
 +
 
 +
Ответ:
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <RECORD_ID>25</RECORD_ID>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Создать новый заказ ====
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: make_new_order
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона
 +
|-
 +
|ORDER_STATE_ID
 +
|Целое
 +
|ИД состояния заказа
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|CREWGROUPID
 +
|Целое
 +
|ИД группы экипажа
 +
|-
 +
|TARIF_ID
 +
|Целое
 +
|ИД тарифа
 +
|-
 +
|DISCOUNTEDSUMM
 +
|Дробное
 +
|Фиксированная сумма за заказ
 +
|-
 +
|CUSTOMER
 +
|Строка, <=80 символов
 +
|Заказчик
 +
|-
 +
|SOURCE
 +
|Строка, <=80 символов
 +
|Адрес подачи
 +
|-
 +
|SOURCE_STREET
 +
|Целое
 +
|ИД улицы подачи
 +
|-
 +
|SOURCE_HOUSE
 +
|Строка, <=10 символов
 +
|Дом подачи
 +
|-
 +
|SOURCE_FLAT
 +
|Строка, <=10 символов
 +
|Квартира подачи
 +
|-
 +
|SOURCE_POINT
 +
|Целое
 +
|ИД пункта подачи
 +
|-
 +
|DESTINATION
 +
|Строка, <=80 символов
 +
|Адрес назначения
 +
|-
 +
|DESTINATION_STREET
 +
|Целое
 +
|ИД улицы назначения
 +
|-
 +
|DESTINATION_HOUSE
 +
|Строка, <=10 символов
 +
|Дом назначения
 +
|-
 +
|DESTINATION_FLAT
 +
|Строка, <=10 символов
 +
|Квартира назначения
 +
|-
 +
|DESTINATION_POINT
 +
|Целое
 +
|ИД пункта назначения
 +
|-
 +
|CREWID
 +
|Целое
 +
|ИД экипажа
 +
|-
 +
|SUMM
 +
|Дробное
 +
|Стоимость заказа без учета скидок (наценок)
 +
|-
 +
|STARTUSER
 +
|Целое
 +
|Пользователь, создавший заказ
 +
|-
 +
|STARTTIME
 +
|ГГГГММДДччммсс
 +
|Дата создания заказа
 +
|-
 +
|FINISHUSER
 +
|Целое
 +
|Пользователь, завершивший заказ
 +
|-
 +
|FINISHTIME
 +
|ГГГГММДДччммсс
 +
|Дата завершения заказа
 +
|-
 +
|SOURCE_ZONE
 +
|Целое
 +
|Район подачи
 +
|-
 +
|DESTINATION_ZONE
 +
|Целое
 +
|Район назначения
 +
|-
 +
|SOURCE_PARKING
 +
|Целое
 +
|Стоянка подачи
 +
|-
 +
|DESTINATION_PARKING
 +
|Целое
 +
|Стоянка назначения
 +
|-
 +
|SOURCE_TIME
 +
|ГГГГММДДччммсс
 +
|Дата подачи
 +
|-
 +
|SOURCE_COUNTRY
 +
|0 или 1 (false или true)
 +
|Признак междугороднего заказа
 +
|-
 +
|IS_PRIOR
 +
|0 или 1 (false или true)
 +
|Признак предварительного заказа
 +
|-
 +
|PRIZE
 +
|0 или 1 (false или true)
 +
|Признак призового заказа
 +
|-
 +
|NOTE
 +
|Строка, <=80 символов
 +
|Примечание
 +
|-
 +
|BONUSPOINT
 +
|Дробное
 +
|Бонусные баллы, начисленные водителю за заказ
 +
|-
 +
|DISTANCE
 +
|Дробное
 +
|Километраж по городу (в километрах)
 +
|-
 +
|HOURLY_LEN
 +
|Целое
 +
|Длительность исполнения почасового заказа (в минутах)
 +
|-
 +
|HOURLY_START
 +
|ГГГГММДДччммсс
 +
|Дата начала отсчета при почасовом заказе
 +
|-
 +
|HOURLY_PAY
 +
|0 или 1 (false или true)
 +
|Признак почасового заказа
 +
|-
 +
|PHONE_TO_DIAL
 +
|Строка, <=16 символов
 +
|Номер телефона для отзвона по заказу
 +
|-
 +
|FROMBORDER
 +
|0 или 1 (false или true)
 +
|Признак заказа "с бордюра"
 +
|-
 +
|WAITING_START
 +
|ГГГГММДДччммсс
 +
|Дата начала ожидания заказчика водителем
 +
|-
 +
|WAITING_LENGTH
 +
|Целое
 +
|Общая длина периода ожидания заказчика водителем (в минутах)
 +
|-
 +
|BACKFREE
 +
|Целое
 +
|Признак применения скидки в 50% на обратный путь
 +
|-
 +
|INPUTTIME
 +
|ГГГГММДДччммсс
 +
|Дата принятия заказа (от даты создания заказа отличается тем, что может быть задана пользователем)
 +
|-
 +
|MONEY_RECEIVE
 +
|0 или 1 (false или true)
 +
|Подтверждение принятия денег наличными
 +
|-
 +
|NOTIFY_BEFORE
 +
|Целое
 +
|Период времени, за который пользователь оповещается о наступлении даты подачи
 +
|-
 +
|WANTCREWID
 +
|Целое
 +
|ИД желаемого экипажа
 +
|-
 +
|DISTANCE_COUNTRY
 +
|Дробное
 +
|Километраж за границами города (в километрах)
 +
|-
 +
|DISTANCE_CHECK
 +
|0 или 1 (false или true)
 +
|Разрешение ручного ввода километража
 +
|-
 +
|CLIENTID
 +
|Целое
 +
|ИД постоянного клиента
 +
|-
 +
|INFRA_STATE
 +
|Целое
 +
|Состояние заявки в исходящей компании колцентра INFRA (1 - заявка передана в исходящую компанию, 2 - отзвон успешно произведен, 3 - занято, 4 - не берут трубку)
 +
|-
 +
|INFRA_ORDER
 +
|Целое
 +
|INFRA-заказ (спец. поле для работы с колцентром компании Инфрател)
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД созданного заказа
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/make_new_order
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 206
 +
 
 +
PHONE=89058770593&ORDER_STATE_ID=10&DISCOUNTED_SUMM=100&signature=afc947f610eba380df6d0e441b03ddad
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <order_id>27</order_id>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Поиск улицы в базе ====
 +
Метод: POST
 +
 
 +
Название запроса: street_search
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона
 +
|-
 +
|CALL_ID
 +
|Целое
 +
|ИД звонка
 +
|-
 +
|VOICE_STREET
 +
|Строка, <= 60 символов
 +
|Название улицы или пункта, полученное через преобразование голоса в текст
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|CALL_ID
 +
|Целое
 +
|ИД звонка
 +
|-
 +
|PHONE
 +
|Строка, <= 16 символов
 +
|Номер телефона
 +
|-
 +
|STREET_FOUND
 +
|0 или 1 (false или true)
 +
|Признак того, что улица найдена
 +
|-
 +
|STREET_NAME
 +
|Строка, <= 60 символов
 +
|Наименование улицы или пункта, найденное в базе данных
 +
|}
 +
 
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/tm_tapi/1.0/street_search
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 175
 +
 
 +
PHONE=89058770593&CALL_ID=56&VOICE_STREET=пушкинск&FIND_STREET=0&API_FIND_STREET=&NUM_HOUSE=&signat
 +
ure=9204a53e0f4842bb623c3a5f7683520a
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <CALL_ID>56</CALL_ID>
 +
    <PHONE>89058770593</PHONE>
 +
    <FIND_STREET>1</FIND_STREET>
 +
    <API_FIND_STREET>Пушкинская</API_FIND_STREET>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Смена состояния заказа по результату автодозвона ====
 +
Метод: POST
 +
 
 +
Название запроса: set_request_state
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|STATE_ID
 +
|Целое
 +
|Cостояние заказа до отзвона
 +
|-
 +
|PHONE_TYPE
 +
|0..2
 +
|Признак, что звонили 1-  клиенту, 0 – водителю, 2 -диспетчеру
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|STATE
 +
|Целое (0, 1, 2, 3, 4, 5)
 +
|Состояние отзвона (0 – начальное, 1 — в процессе, 2 — успешно, 3 — занято, 4 — нет ответа, 5 — ошибка)
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Настройки смены состояний заказа с использованием автодозвона задаются в карточке
 +
состояний заказа.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
POST https://ip:port/tm_tapi/1.0/set_request_state
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 71
 +
 
 +
state_id=7&phone_type=1&order_id=50&state=4&signature=0eb50db401d3540e038fde68eb260333
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
</response>
 +
</pre>
 +
 
 +
==== Соединить клиента и водителя ====
 +
Метод: POST
 +
 
 +
Название запроса: connect_client_and_driver
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|order_id
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Не найден заказ с таким ИД
 +
|-
 +
|103
 +
|В заказе нет водителя
 +
|-
 +
|104
 +
|У водителя не определен телефон
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/connect_client_and_driver
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 53
 +
 
 +
order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
</response>
 +
 
 +
</pre>
 +
 
 +
==== Количество свободных экипажей на линии ====
 +
Метод: GET
 +
 
 +
Название запроса: get_free_crews_count
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|crew_group_id
 +
|Целое
 +
|ИД группы экипажа предполагаемого заказа
 +
|-
 +
|uds_id
 +
|Целое
 +
|ИД службы ЕДС предполагаемого заказа
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|COUNT
 +
|Целое
 +
|Количество свободных экипажей на линии
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/tm_tapi/1.0/get_free_crews_count?
 +
crew_group_id=1&uds_id=1&signature=88ca2091061c3e90123275f2c5df55a6
 +
Content-Type: application/x-www-form-urlencoded
 +
Ответ:
 +
<response>
 +
<code>0</code>
 +
<descr>OK</descr>
 +
<data>
 +
<COUNT>5</COUNT>
 +
</data>
 +
</response>
 +
</pre>
 +
 
 +
==== Запрос пользователя по логину софтфона ====
 +
Метод: GET
 +
 
 +
Название запроса: get_user_by_sip_login
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|-
 +
|login
 +
|Строка
 +
|Логин SIP-аккаунта
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|ID
 +
|Целое
 +
|ИД пользователя, который использует указанный логин SIP-аккаунта софтфона в данный момент
 +
|-
 +
|NAME
 +
|Строка
 +
|Имя пользователя, который использует указанный логин SIP-аккаунта софтфона в данный момент
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
GET https://ip:port/tm_tapi/1.0/get_user_by_sip_login?
 +
login=LOGIN&signature=9b06455cdfe933e7af12a35a70e9b1c6
 +
Content-Type: application/x-www-form-urlencoded
 +
Ответ:
 +
<response>
 +
<code>0</code>
 +
<descr>OK</descr>
 +
<data>
 +
<ID>1</ID>
 +
<NAME>ADMINISTRATOR</NAME>
 +
</data>
 +
</response>
 +
</pre>
 +
 
 +
==== Установить режим «Перерыв» для линий софтфона ====
 +
Метод: POST
 +
 
 +
Название запроса: set_sip_account_dnd_mode
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|dnd
 +
|Строка
 +
|0 или 1
 +
|-
 +
|user_login
 +
|Строка
 +
|Логин пользователя ТМ
 +
|-
 +
|lines
 +
|Строка
 +
|<nowiki>Список линий, разделенных символом «|»</nowiki>
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Пользователь с таким логином или линиями не найден.
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/set_sip_account_dnd_mode
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 66
 +
 
 +
dnd=1&user_login=USER&lines=101%7C102&signature=3e8107e0c044e55d983db1fbed82fd8c
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
</response>
 +
</pre>
 +
 
 +
==== Запрос телефонов водителя по позывному экипажа ====
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_driver_phones_by_crew_code
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|crew_code
 +
|Строка
 +
|Позывной экипажа
 +
|}
 +
 
 +
 
 +
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Водитель не найден
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|mobile_phone
 +
|Строка
 +
|Основной телефон водителя
 +
|-
 +
|home_phone
 +
|Строка
 +
|Неосновной телефон водителя
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
Запрос:
 +
 
 +
GET https://ip:port/tm_tapi/1.0/get_driver_phones_by_crew_code?
 +
crew_code=CODE&signature=6f03bc45d3aa17f7738672180a3ee5de
 +
Content-Type: application/x-www-form-urlencoded
 +
 
 +
Ответ:
 +
 
 +
<response>
 +
<code>0</code>
 +
<descr>OK</descr>
 +
<data>
 +
<mobile_phone>123456789</mobile_phone>
 +
<home_phone>987654321</home_phone>
 +
</data>
 +
</response>
 +
 
 +
</pre>
 +
 
 +
==== Запрос информации о ключе защиты ====
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_key_info
 +
 
 +
Параметры: нет.
 +
 
 +
Специальные возвращаемые коды: нет.
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|company_name
 +
|Строка
 +
|Наименование организации
 +
|-
 +
|company_id
 +
|Целое
 +
|ИД организации
 +
|-
 +
|tm_server_license_count
 +
|Целое
 +
|Количество лицензий для TMServer
 +
|-
 +
|tm_license_count
 +
|Целое
 +
|Количество лицензий для TM2
 +
|-
 +
|tm_terminal_license_count
 +
|Целое
 +
|Количество лицензий для терминала
 +
|-
 +
|tm_driver_server_license_count
 +
|Целое
 +
|Количество лицензий для TMDriverServer
 +
|-
 +
|tm_driver_license_count
 +
|Целое
 +
|Количество лицензий для водителей
 +
|-
 +
|tm_sms_server_license_count
 +
|Целое
 +
|Количество лицензий для TMSMSServer
 
|}
 
|}
 
Возвращаемые данные в случае успешного выполнения запроса: нет
 
  
 
Пример:
 
Пример:
 
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
 
+
GET https://ip:port/tm_tapi/1.0/get_key_info
POST https://ip:port/tm_tapi/1.0/set_sip_account_dnd_mode HTTP/1.1
 
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Content-Length: 66
 
 
dnd=1&user_login=USER&lines=101%7C102&signature=3e8107e0c044e55d983db1fbed82fd8c
 
 
Ответ:
 
 
<response>
 
  <code>0</code>
 
  <descr>OK</descr>
 
</response>
 
</pre>
 
 
 
=== Запрос телефонов водителя по позывному экипажа ===
 
 
Метод: GET
 
 
Название запроса: get_driver_phones_by_crew_code
 
 
Параметры:
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
!Обязательные параметры
 
|-
 
|crew_code
 
|Строка
 
|Позывной экипажа
 
|}
 
  
 
+
signature=6f03bc45d3aa17f7738672180a3ee5de
Специальные возвращаемые коды:
 
 
 
{|
 
!Код
 
!Описание
 
|-
 
|100
 
|Водитель не найден
 
|}
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
|mobile_phone
 
|Строка
 
|Сотовый телефон водителя
 
|-
 
|home_phone
 
|Строка
 
|Домашний телефон водителя
 
|}
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
GET https://ip:port/tm_tapi/1.0/get_driver_phones_by_crew_code?
 
crew_code=CODE&signature=6f03bc45d3aa17f7738672180a3ee5de HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
  
 
Ответ:
 
Ответ:
Строка 5764: Строка 12 693:
 
<descr>OK</descr>
 
<descr>OK</descr>
 
<data>
 
<data>
<mobile_phone>123456789</mobile_phone>
+
company_name>ООО БИТ-Мастер</company_name>
<home_phone>987654321</home_phone>
+
<company_id>000</company_id>
 +
<tm_server_license_count>1</tm_server_license_count>
 +
<tm_license_count>10</tm_license_count>
 +
<tm_terminal_license_count>1</tm_terminal_license_count>
 +
<tm_driver_server_license_count>1</tm_driver_server_license_count>
 +
<tm_driver_license_count>30</tm_driver_license_count>
 +
<tm_sms_server_license_count>1</tm_sms_server_license_count>
 
</data>
 
</data>
 
</response>
 
</response>
 
 
</pre>
 
</pre>
  
Строка 5779: Строка 12 713:
 
Форма, представленная в примере, будет выглядеть следующим образом:
 
Форма, представленная в примере, будет выглядеть следующим образом:
 
{{картинка|Форма для заказа такси.jpg}}
 
{{картинка|Форма для заказа такси.jpg}}
 
[[Категория:ТМ2]]
 

Текущая версия на 14:04, 5 декабря 2023

TM API - специальный набор инструментов Такси-Мастер, который позволит объединить систему с вашим сайтом и различными полезными сервисами. Он предоставляется вам на свободных условиях.

Благодаря этому набору вы сможете:

  1. Создать механизм приема заказов через интернет.
  2. Сделать ваш сайт более информативным: публиковать полезную для клиентов информацию прямо из системы - список ближайших экипажей, предварительный расчет стоимости поездки, мониторинг движения автомобиля такси в процессе выполнения заказа, карты города и контактную информацию.
Предупреждение!
Все перечисленные функции работают в Такси-Мастер не ниже 3.13.0 от 24.10.2022г. В более ранних версиях программы часть функций может не поддерживаться.

Содержание

Параметры TM API

Задать настройки для корректной работы TM API вы сможете в программе Такси-Мастер в меню «Настройки» в одноименной ветке «TM API».

  1. Установите флажок «Template-checkbox-off.png Использовать TM API», чтобы приступить к его использованию.
  2. В поле «Локальный порт» введите номер порта подключения к интернету, на котором работает и будет ожидать запросы о новых заказах TMServer. Рекомендуется оставить номер порта по умолчанию.
  3. При необходимости установите флажок «Template-checkbox-off.png Использовать автопроброс порта с помощью UPnP», также укажите «Внешний порт» и «Локальный IP».

Ветка «Открытое API»

В данной ветке регулируется доступ к синхронизации Такси-Мастер со сторонним сервисом (сайтом), с помощью которого клиенты будут создавать заказы. С примером кода для работы вы можете ознакомиться в данной статье в разделе Общее описание протокола.

  1. Установите флажок «Template-checkbox-off.png Использовать открытое API» для того, чтобы запустить работу протокола TMCommonAPI.
  2. В поле «Секретный ключ» укажите произвольный номер. В дальнейшем этот номер следует использовать в API-запросах на сайте.
  3. В таблице "Пользователи CommonAPI" можно настроить доступ к CommonAPI. Для этого нужно создать пользователей, у которых будет отдельный секретный ключ, и отметить доступные запросы CommonAPI.

Ветка «API для телефонии»

В данной ветке регулируются настройки API для телефонии, т.е. взаимодействие Такси-Мастер с call-центром через программный интерфейс. С его помощью call-центр может дать команду Такси-Мастер создать заказ или запросить информацию о статусе текущего заказа.

  1. Установите флажок «Template-checkbox-off.png Использовать открытое API для телефонии» для того, чтобы запустить работу протокола TMTAPI.
  2. В поле «Секретный ключ» укажите номер секретного ключа для работы.

Ветка «TaxoPhone API»

Ветка «Платежные терминалы»

Интересная информация
Ранее для связи платежных систем и Такси-Мастер служила такая утилита, как TMWeb. В данный момент мы отказались от ее использования, а функции были распределены между двумя компонентами системы: TM API и TMServer.

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

  1. Установите флажок «Template-checkbox-off.png Включить прием терминальных платежей». Данная функция позволит отображать все платежные операции по приходу средств от водителей через терминалы в базе данных программы.
  2. В поле «Секретный ключ» укажите номер секретного ключа для работы с платежными системами и сверки платежей, который будет выслан вам в письме от менеджера. Секретный ключ - это определенный набор символов, необходимый для формирования подписи при передаче информации о платеже.
  3. Кнопка «Задать всем водителям терминальный аккаунт по их ИД» служит для соединения TM API с сервером Такси-Мастер. В результате соединения записи о терминальных аккаунтах генерируются, заносятся (для тех водителей, у которых они отсутствуют) и обновляются (для тех водителей, у которых уже существуют терминальные аккаунты) в Такси-Мастер.

Общее описание протокола

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

TMAPI принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TM API, должно идти название API (common_api) и версия API. Пример:

GET https://ip:port/common_api/1.0/get_crew_groups_list 

Для получения данных из БД используются запросы типа GET. Для записи данных в базу данных используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI. Пример:

GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 
Signature: <...>

В запросе типа POST параметры передаются в теле запроса в формате application/x-www-form-urlencoded. Пример:

POST https://ip:port/common_api/1.0/create_order 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: 118

phone=89123456789&source=SOURCE&source_time=20120501100000&dest=DEST&customer=CUSTOMER&
comment=COMMENT&crew_group_id=1

В любом запросе обязательно должен быть заголовок Signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в «Файл - Настройки - TM API - Открытое API». Пример:

Запрос:
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 

Секретный ключ:
1234567890

Signature = MD5("tariff_id=1&distance_city=10" + "1234567890") = d7b8fb11b5499b64d750b8efe53e2877

Формат ответа

TM API всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате JSON. Общий вид возвращаемого результата:

{
"code":<Числовой код результата>,
"descr":"<Строковое описание результата>",
"data":{<Дополнительная информация>}
}

Существуют общие для всех запросов коды результатов:

Код Описание
0 Успешное выполнение запроса
1 Неизвестная ошибка
2 Неизвестный тип API
3 API отключено в настройках модуля TM API в ТМ2
4 Не совпадает секретный ключ
5 Неподдерживаемая версия API
6 Неизвестное название запроса
7 Неверный тип запроса GET/POST
8 Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
9 Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
10 Внутренняя ошибка обработки запроса

Описание запросов

Запрос-пинг

Для данного запроса не проверяется версия API, секретный ключ и тип запроса GET/POST.

Метод: GET или POST

Название запроса: ping

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:
GET https://ip:port/common_api/1.0/ping 
Ответ:
{
"code":0,
"descr":"OK",
"data":{}
}

Запрос списка групп экипажей

Метод: GET

Название запроса: get_crew_groups_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
crew_groups Массив Список групп экипажей
• id Целое ИД группы экипажей
• name Строка Название группы экипажей

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_crew_groups_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "crew_groups":[
     {
       "id":1,
       "name":"CREW_GROUP1"
     },
     {
       "id":2,
       "name":"CREW_GROUP2"
     }
    ]
  }
}

Запрос списка групп клиентов

Метод: GET

Название запроса: get_client_groups_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_groups Массив Список групп клиентов
• id Целое ИД группы клиентов
• name Строка Название группы клиентов

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_client_groups_list 
Signature: <...>
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "client_groups":[
      {
        "id":1,
        "name":"CLIENT_GROUP1"
      },
      {
        "id":2,
        "name":"CLIENT_GROUP2"
      }
    ]
  }
}

Запрос списка служб ЕДС

Метод: GET

Название запроса: get_uds_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
uds Массив Список служб ЕДС
• id Целое ИД службы ЕДС
• name Строка Название службы ЕДС

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_uds_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "uds":[
      {
        "id":1,
        "name":"UDS1"
      },
      {
        "id":2,
        "name":"UDS2"
      }
    ]
  }
}

Запрос списка тарифов

Метод: GET

Название запроса: get_tariffs_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
tariffs Массив Список тарифов
• id Целое ИД тарифа
• name Строка Название тарифа
• is_active true или false Активный тариф

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_tariffs_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "tariffs":[
      {
        "id":1,
        "name":"TARIFF1"
        "is_active":true 
      },
      {
         "id":2,
         "name":"TARIFF2"
         "is_active":true
      }
    ]
  }
}

Запрос списка услуг

Запрос устарел. Рекомендуется использовать Запрос списка атрибутов

Метод: GET

Название запроса: get_services_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
services Массив Список услуг
• id Целое ИД услуги
• name Строка Название услуги
• sum Дробное Абсолютная сумма услуги, руб
• percent Дробное Процент услуги от стоимости заказа, %

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_services_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "services":[
      {
        "id":1,
        "name":"SERVICE1",
        "sum":100,
        "percent":0
      },
      {
        "id":2,
        "name":"SERVICE2"
        "sum":0,
        "percent":10
      }
    ]
  }
}

Запрос списка атрибутов

Метод: GET

Название запроса: get_order_params_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_params Массив Список параметров заказа
• id Целое ИД параметра
• name Строка Название параметра
• sum Дробное Абсолютная сумма параметра, руб
• percent Дробное Процент параметра от стоимости заказа, %
• order_access_control true или falce Регулирует доступ к заказу

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_order_params_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "order_params":[
      {
        "id":1,
        "name":"PARAM1",
        "sum":100,
        "percent":0,
        "order_access_control":true
      },
      {
        "id":2,
        "name":"PARAM2",
        "sum":0,
        "percent":10,
        "order_access_control":false
      }
    ]
  }
}

Запрос списка скидок

Метод: GET

Название запроса: get_discounts_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
discounts Массив Список скидок
• id Целое ИД скидки
• name Строка Название скидки
• sum Дробное Абсолютная сумма скидки, руб
• percent Дробное Процент скидки от стоимости заказа, %

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_discounts_list 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "discounts":[
      {
        "id":1,
        "name":"DISCOUNT1",
        "sum":100,
        "percent":0
      },
      {
        "id":2,
        "name":"DISCOUNT2"
        "sum":0,
        "percent":10
      }
    ]
  }
}

Создание нового заказа

Метод: POST

Название запроса: create_order

Параметры:

Параметр Тип Описание
Обязательные параметры
phone Строка, <= 30 символов Номер телефона
source Строка Адрес подачи
source_time ГГГГММДДччммсс Время подачи
Необязательные параметры
dest Строка Адрес назначения
customer Строка Заказчик
comment Строка Комментарий
crew_group_id Целое ИД группы экипажей
uds_id Целое ИД службы ЕДС
tariff_id Целое ИД тарифа
is_prior true или false Предварительный заказ
source_lon Дробное Долгота адреса подачи
source_lat Дробное Широта адреса подачи
dest_lon Дробное Долгота адреса назначения
dest_lat Дробное Широта адреса назначения

Специальные возвращаемые коды:

Код Описание
100 Заказ с такими параметрами уже создан
101 Тариф не найден
102 Группа экипажа не найдена
103 Служба ЕДС не найдена
110 Клиент заблокирован
111 Не найден клиент, который может использовать собственный счет для оплаты заказов
114 Недостаточно средств на безналичном счете клиента в ТМ
115 Отрицательный баланс на безналичном счете клиента в ТМ
116 Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_id Целое ИД созданного заказа

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_order 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: 156

phone=89123456789&source=SOURCE&source_time=20120501100000&dest=DEST&customer=CUSTOMER&
comment=COMMENT&crew_group_id=1&uds_id=1&tariff_id=3&is_prior=false&source_lon=53.147836&source_lat
=56.896817&dest_lon=53.226775&dest_lat=56.845452

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "order_id":12345
  }
}

Создание нового заказа 2

Метод: POST

Название запроса: create_order2

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
phone Строка, <= 30 символов Номер телефонам (необязателен, если client_id присутствует).
client_id Целое ИД клиента (необязателен, если phone присутствует).
addresses Массив Массив адресов. Первый элемент — адрес подачи(обязательно), последний — адрес назначения, между ними — остановки.
• address Строка Адрес подачи
• lat Дробное Широта адреса
• lon Дробное Долгота адреса
• zone_id Целое ИД района
• parking_id Целое ИД стоянки
server_time_offset Целое Смещения относительно серверного времени
source_time ГГГГММДДччммсс Время подачи
Необязательные параметры
passenger Строка Пассажир
phone_to_dial Строка, <= 30 символов Телефон для отзвона
customer Строка Заказчик
comment Строка Комментарий
crew_group_id Целое ИД группы экипажей
uds_id Целое ИД службы ЕДС
tariff_id Целое ИД тарифа
is_prior true или false Предварительный заказ
check_duplicate true или false Проверка на дубликат
services Массив Массив услуг. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД услуги
crew_props Массив Массив признаков экипажей. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД признака экипажа
order_params Массив Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра заказа
total_cost Дробное Сумма заказа
use_cashless true или false Оплата по возможности всей суммы заказа с безналичного счета клиента (насколько хватает средств на счете).
use_bonus true или false Оплата по возможности всей суммы заказа с бонусного счета клиента (насколько хватает средств на бонусном счете).
cashless_sum Дробное Фиксированная сумма оплаты заказа с безналичного счета клиента (не используется, если use_cashless = true).
bonus_sum Дробное Фиксированная сумма оплаты заказа с бонусного счета клиента (не используется, если use_bonus = true).
client_employee_id Целое ИД сотрудника клиента (если задан client_id)
email Строка Email для отправки уведомлений
prior_to_current_before_minutes Целое Время перехода из предварительного в текущие заказы, мин
flight_number Строка Номер рейса
need_custom_validate true или false Использовать специальную проверку перед созданием заказа
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Заказ с такими параметрами уже создан
101 Тариф не найден
102 Группа экипажа не найдена
103 Служба ЕДС не найдена
104 Клиент не найден
105 Район не найден
106 Стоянка не найдена
107 Сотрудник клиента не найден
108 Параметр заказа не найден
109 Атрибут не может быть привязан к заказу
110 Клиент заблокирован
111 Не найден клиент, который может использовать собственный счет для оплаты заказов
112 Сотрудник клиента заблокирован
113 Ошибка специальной проверки заказа перед созданием. В ответе будет возвращаться:
 "data": {
   "message":"Текст ошибки для пользователя."
 }
114 Недостаточно средств на безналичном счете клиента в ТМ
115 Отрицательный баланс на безналичном счете клиента в ТМ
116 Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_id Целое ИД созданного заказа

Пример:

POST https://ip:port/common_api/1.0/create_order2 HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "server_time_offset":2,
  "source_time":"20140415172811",
  "is_prior":false,
  "check_duplicate":true,
  "phone":"123456",
  "phone_to_dial":"654321",
  "client_id":1,  
  "client_employee_id":4,  
  "customer":"CUSTOMER",
  "passenger":"PASSENGER",
  "comment":"COMMENT",
  "crew_group_id":1,
  "uds_id":1,
  "tariff_id":1,
  "addresses": [
      {
          "address": "SOURCE",
          "lat": 56.896817,
          "lon": 53.14783
          "zone_id": 1,
          "parking_id": 1
      },
      {
          "address": "STOP1",
          "lat": 56.845452,
          "lon": 53.226775
          "zone_id": 2,
          "parking_id": 2
      },
      {
          "address": "STOP2"
      },
      {
          "address": "DESTINATION",
          "lat": 56.86123,
          "lon": 53.24187
      }
  ]
  "services":[1,2],
  "crew_props":[1],
  "order_params":[3,4],
  "total_cost":370,
  "client_id":28,
  "use_cashless":false,
  "use_bonus":false,
  "cashless_sum":700,
  "bonus_sum":350,
  "email":"email@gmail.com",
  "prior_to_current_before_minutes":30,
  "flight_number":"130-qwe2",
  "need_custom_validate":false,
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "order_id":1672
  }
}

Расчет суммы заказа

Метод: GET

Название запроса: calc_order_cost

Параметры:
Параметр Тип Описание
Обязательные параметры
tariff_id Целое ИД тарифа
Необязательные параметры
source_time ГГГГММДДччммсс Время подачи
is_prior true или false Предварительный заказ
client_id Целое ИД клиента
client_employee_id Целое ИД сотрудника клиента
discount_id Целое ИД скидки
disc_card_id Целое ИД дисконтной карты
source_zone_id Целое ИД района подачи
dest_zone_id Целое ИД района назначения
distance_city Дробное Километраж по городу
distance_country Дробное Километраж за городом
source_distance_country Дробное Километраж до подачи за городом
is_country true или false Загородный заказ
waiting_minutes Целое Время ожидания посадки клиента в минутах
is_hourly true или false Почасовой заказ
hourly_minutes Целое Длительность почасового заказа в минутах
is_prize true или false Призовой заказ
back_way true или false Обратный путь за городом
services Строка Список ИД услуг через точку с запятой, пример: «1;2;3»

Устарело. Рекомендуется использовать параметр order_params.

order_params Строка Список ИД параметров заказа через точку с запятой, пример: «1;2;3»
cashless true или false Признак безналичного заказа

Специальные возвращаемые коды:

Код Описание
100 Тариф не найден
101 Ошибка при расчете по тарифу
102 Скидка не найдена
103 Клиент не найден
104 Район подачи не найден
105 Район назначения не найден
106 Дисконтная карта не найдена
107 Район остановки не найден
108 Группа экипажа не найдена
109 Служба ЕДС не найдена
110 Дисконтная карта не действительна
111 Не найден сотрудник клиента

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
sum Дробное Рассчитанная общая сумма заказа
info Массив Дополнительная информация по расчету суммы заказа
• comment Строка Описание позиции дополнительной информации по расчету суммы заказа
• sum Строка Сумма позиции дополнительной информации по расчету суммы заказа

Пример:

Запрос: 

GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&source_time=20120501100000&is_prior=false&client_id=1&client_employee_id=11&discount_id=1&disc_card_id=1&
source_zone_id=1&dest_zone_id=2&distance_city=10&distance_country=20&source_distance_country=5&is_country=true&waiting_minutes=10&is_hourly=false&hourly_minutes=60&
is_prize=true&back_way=false&services=1;2;3&order_params=1;2;3 HTTP/1.1
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "sum":1000,
    "info":[
      {
         "comment":"SUM1",
         "sum":"100"
      },
      {
         "comment":"SUM2",
         "sum":"200"
      }
    ]
  }
} 

Расчет суммы заказа 2

Метод: POST

Название запроса: calc_order_cost2

Параметры в формате JSON:

Параметр Тип Описание
order_id Целое ИД заказа
tariff_id Целое ИД тарифа
source_time ГГГГММДДччммсс Время подачи
is_prior true или false Предварительный заказ
client_id Целое ИД клиента
phone Строка Телефон клиента
discount_id Целое ИД скидки
disc_card_id Целое ИД дисконтной карты
source_zone_id Целое ИД района подачи
source_lon Дробное Долгота адреса подачи
source_lat Дробное Широта адреса подачи
dest_zone_id Целое ИД района назначения
dest_lon Дробное Долгота адреса назначения
dest_lat Дробное Широта адреса назначения
distance_city Дробное Километраж по городу
distance_country Дробное Километраж за городом
source_distance_country Дробное Километраж до подачи за городом
is_country true или false Загородный заказ
waiting_minutes Целое Время ожидания посадки клиента в минутах
is_hourly true или false Почасовой заказ
hourly_minutes Целое Длительность почасового заказа в минутах
is_prize true или false Призовой заказ
back_way true или false Обратный путь за городом
order_params Массив Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра заказа
cashless true или false Признак безналичного заказа
stops Массив Список остановок
• zone_id Целое ИД района остановки
• lat Дробное Широта адреса остановки
• lon Дробное Долгота адреса остановки
crew_group_id Целое ИД группы экипажа
uds_id Целое ИД службы ЕДС
analyze_route true или false Нужно ли выполнять анализ адресов и маршрута. Если данный флаг установлен (analyze_route=true), то значения параметров: distance_city, distance_country, source_distance_country, переданные в данном запросе будут игнорироваться. Они автоматически будут рассчитаны в ходе выполнения запроса в результате анализа адресов и маршрута. Также перед анализом адресов будут автоматически найдены районы (по справочнику "Районы") для тех адресов, у которых район не указан явно (zone_id=0). Также по результатам анализа адресов автоматически будут определены флаги "Загородный заказ" (is_country) и "Межгород".
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Тариф не найден
101 Ошибка при расчете по тарифу
102 Скидка не найдена
103 Клиент не найден
104 Район подачи не найден
105 Район назначения не найден
106 Дисконтная карта не найдена
107 Район остановки не найден
108 Группа экипажа не найдена
109 Служба ЕДС не найдена
110 Дисконтная карта не действительна
111 Сотрудник клиента не найден
112 Атрибут не найден
113 Атрибут не может быть привязан к заказу
114 Заказ не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
sum Дробное Рассчитанная общая сумма заказа
info Массив Дополнительная информация по расчету суммы заказа
• comment Строка Описание позиции дополнительной информации по расчету суммы заказа
• sum Строка Сумма позиции дополнительной информации по расчету суммы заказа

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/calc_order_cost2 HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "tariff_id":1,
  "source_time":"20140415172811",
  "is_prior":false,
  "client_id":1,  
  "discount_id":1,
  "disc_card_id":1,
  "source_zone_id":1,,
  "source_lat":11.111111,
  "source_lon":22.222222,
  "dest_zone_id":2,,
  "dest_lat":33.333333,
  "dest_lon":44.444444,
  "distance_city":10,
  "distance_country":20,
  "source_distance_country":5,
  "is_country":true,
  "waiting_minutes":10,
  "is_hourly":false,
  "hourly_minutes":60,
  "is_prize":true,
  "back_way":false,
  "order_params":[3,4],
  "stops": [
      {
          "zone_id": 1,
          "lat": 11.111111,
          "lon": 22.222222
      },
      { 
          "zone_id": 2,
          "lat": 33.333333,
          "lon": 44.444444
      }
  ],
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "sum":1000,
    "info":[
      {
        "comment":"SUM1",
        "sum":"100"
      },
      {
        "comment":"SUM2",
        "sum":"200"
      }
    ]
  }
}

Изменение состояния заказа

Метод: POST

Название запроса: change_order_state

Параметры:

Параметр Тип Описание
Обязательные параметры
order_id Целое ИД заказа
new_state Целое Новое состояние заказа
Необязательные параметры
cancel_order_penalty_sum Дробное Сумма штрафа клиента за отмену заказа. Если свойство new_state имеет тип "Прекращен" (выполняется отмена заказа) и при отмене заказа должен быть назначен штраф клиенту, то если данное значение штрафа указано (даже если указано значение 0), то оно имеет приоритет. Если данное значение не указано, то сумма штрафа будет определена автоматически по группе клиентов.

Специальные возвращаемые коды:

Код Описание
100 Не найден заказ ИД=ORDER_ID
101 Не найдено состояние заказа ИД=NEW_STATE
102 Изменение состояния не соответствует необходимым условиям.

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_id Целое ИД заказа
new_state Целое Новое состояние заказа

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/change_order_state?order_id=6&new_state=4 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "order_id":6,
    "new_state":4
  }
} 

Запрос информации об экипаже

Метод: GET

Название запроса: get_crew_info

Параметры:

Параметр Тип Описание
Обязательные параметры
crew_id Целое ИД экипажа
Необязательные параметры
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды:

Код Описание
100 Экипаж не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
crew_id Целое ИД экипажа
code Строка Позывной экипажа
name Строка Наименование экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
crew_group_id Целое ИД группы экипажа
crew_state_id Целое ИД состояния экипажа
online true или false Водитель подключен к серверу «Связи с водителями»
work_shift_sum Дробное Сумма, списываемая за смену
min_balance Дробное Минимальный баланс, при котором можно выйти на смену
common_priority Целое Общий приоритет
static_priority Целое Статический приоритет
dynamic_priority Целое Динамический приоритет
rating_priority Целое Приоритет по рейтингу
order_change_id Целое Индивидуальная сдача с заказа
has_light_house true или false Шашка
has_label true или false Наклейка
use_plan_shifts true или false Запрет работы вне запланированных смен
fuel_level Дробное Уровень топлива в автомобиле
order_params Массив Массив параметров экипажа
Целое ИД параметра заказа
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос: 

GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "crew_id":1,
    "code":"123",
    "name":"CREW_NAME",
    "driver_id":1,
    "car_id":1,
    "crew_group_id":1,
    "crew_state_id":3,
    "online":true
    "work_shift_sum":0,
    "min_balance":10,
    "common_priority":0,
    "static_priority":0,
    "dynamic_priority":0,
    "rating_priority":0,
    "order_change_id":218,
    "has_light_house":false,
    "has_label":false,
    "order_params":[
      1,
      2,
    ],
    "attribute_values": [
        {
              "id": 1,
              "bool_value": true
        },
        {
              "id": 2,
              "num_value": 1
        },
        {
              "id": 3,
              "num_value": 10
        },
        {
              "id": 4,
              "str_value": "строка"
        }
    ]
  }
}

Запрос информации об экипажах

Метод: GET

Название запроса: get_crews_info

Параметры:

Параметр Тип Описание
Необязательные параметры
not_working_crews true или false Нужно ли возвращать экипажи не на линии. По умолчанию возвращаются только экипажи на линии
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
crews_info Массив Массив экипажей
• crew_id Целое ИД экипажа
• code Строка Позывной экипажа
• name Строка Наименование экипажа
• driver_id Целое ИД водителя
• car_id Целое ИД автомобиля
• crew_group_id Целое ИД группы экипажа
• crew_state_id Целое ИД состояния экипажа
• online true или false Водитель подключен к серверу «Связи с водителями»
• work_shift_sum Дробное Сумма, списываемая за смену
• min_balance Дробное Минимальный баланс, при котором можно выйти на смену
• common_priority Целое Общий приоритет
• static_priority Целое Статический приоритет
• dynamic_priority Целое Динамический приоритет
• rating_priority Целое Приоритет по рейтингу
• order_change_id Целое Индивидуальная сдача с заказа
• has_light_house true или false Шашка
• has_label true или false Наклейка
• use_plan_shifts true или false Запрет работы вне запланированных смен
• fuel_level Дробное Уровень топлива в автомобиле
• order_params Массив Массив параметров заказа экипажа
• • Целое ИД параметра заказа
• attribute_values Массив Массив значений атрибутов
• • id Целое Идентификатор атрибута
• • bool_value true или false Значение, если тип атрибута «Логический»
• • num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• • str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_crews_info 
Signature: <...>

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "crews_info":[
      {
        "crew_id":1,
        "code":"123",
        "name":"CREW_NAME1",
        "driver_id":1,
        "car_id":1,
        "crew_group_id":1,
        "crew_state_id":3
        "online":true,
        "work_shift_sum":0,
        "min_balance":10,
        "common_priority":10,
        "static_priority":10,
        "dynamic_priority":0,
        "rating_priority":0,
        "order_change_id":0,
        "has_light_house":false,
        "has_label":false,
        "use_plan_shifts":false,
        "fuel_level":8.15,
        "order_params":[
          1,
          5,
        ]
      },
      {
        "crew_id":12,
        "code":"777",
        "name":"CREW_NAME2",
        "driver_id":12,
        "car_id":12,
        "crew_group_id":2
        "crew_state_id":1,
        "online":false,
        "work_shift_sum":0,
        "min_balance":10,
        "common_priority":15,
        "static_priority":15,
        "dynamic_priority":0,
        "rating_priority":0,
        "order_change_id":0,
        "has_light_house":false,
        "has_label":true,
        "use_plan_shifts":true,
        "fuel_level":null,
        "order_params":[]
      }
    ]
  }
}

Создание экипажа

Метод: POST

Название запроса: create_crew

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
car_id Целое ИД автомобиля
driver_id Целое ИД водителя
crew_group_id Целое ИД группы экипажа
Необязательные параметры
code Строка Позывной экипажа
work_shift_sum Дробное Сумма, списываемая за смену
min_balance Дробное Минимальный баланс, при котором можно выйти на смену
work_time Строка Время работы, формат: “6.00-10.30, 23:00-00:48”
has_light_house true или false Шашка
has_label true или false Наклейка
use_plan_shifts true или false Запрет работы вне запланированных смен
order_params Массив Массив параметров экипажа. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Автомобиль с ИД=ID не найден
101 Водитель с ИД=ID не найден
102 Группа экипажа с ИД=ID не найдена
103 Параметр с ИД=ID не найден или не может быть привязан к экипажу
104 Экипаж с таким водителем и автомобилем уже существует
105 Служба ЕДС автомобиля и водителя не совпадает

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
crew_id Целое ИД созданного экипажа

Пример:

Запрос:
POST https://ip:port/common_api/1.0/create_crew HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "car_id":1,
  "driver_id":2,
  "crew_group_id":3,
  "code":"CODE",
  "use_shifts":true,
  "order_params":[3,4],
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
  "crew_id":1
 }
}

Обновление информации об экипаже

Метод: POST

Название запроса: update_crew_info

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
crew_id Целое ИД экипажа
Необязательные параметры
car_id Целое ИД автомобиля
driver_id Целое ИД водителя
crew_group_id Целое ИД группы экипажа
code Строка Позывной экипажа
work_shift_sum Дробное Сумма, списываемая за смену
min_balance Дробное Минимальный баланс, при котором можно выйти на смену
work_time Строка Время работы, формат: “6.00-10.30, 23:00-00:48”
has_light_house true или false Шашка
has_label true или false Наклейка
crew_gps_id Целое GPS идентификатор экипажа
use_plan_shifts true или false Запрет работы вне запланированных смен
order_params Массив Массив параметров экипажа
Целое ИД параметра

Специальные возвращаемые коды:

Код Описание
100 Автомобиль с ИД=ID не найден
101 Водитель с ИД=ID не найден
102 Группа экипажа с ИД=ID не найдена
103 Параметр с ИД=ID не найден или не может быть привязан к экипажу
104 Экипаж с таким водителем и автомобилем уже существует
105 Служба ЕДС автомобиля и водителя не совпадает
106 Экипаж с ИД=ID не найден
107 Экипаж на линии, запрещено редактирование полей: водитель, автомобиль, позывной, группа экипажа, сумма за смену, минимальный баланс, запрет выхода вне запланированной смены.

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:
POST https://ip:port/common_api/1.0/update_crew_info 
Signature: <...>
Content-Type: application/json
Content-Length: 104

{
  "crew_id":1,
  "car_id":1,
  "driver_id":3,
  "crew_group_id":3,
  "code":"CODE",
  "use_plan_shifts":true,
  "order_params":[3,4]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{}
}

Запрос информации о водителе

Метод: GET

Название запроса: get_driver_info

Параметры:

Параметры Тип Описание
Обязательные параметры
driver_id Целое ИД водителя
Необязательные параметры
need_photo true или false Нужна ли фотография водителя
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды:

Код Описание
100 Водитель не найден

Возвращаемые параметры в случае успешного выполнения запроса:

Параметр Тип Описание
driver_id Целое ИД водителя
name Строка ФИО водителя
balance Дробное Баланс основного счета водителя
birthday ДД.ММ.ГГГГ День рождения водителя
car_id Целое ИД основного автомобиля водителя
license Строка Удостоверение водителя
home_phone Строка Любой неосновной телефон водителя (устаревшее поле)
mobile_phone Строка Основной телефон водителя (устаревшее поле)
is_locked true или false Водитель заблокирован
is_dismissed true или false Водитель уволен
driver_photo Base64 Фото водителя (только если need_photo = true)
order_params Массив Массив параметров водителя
Целое ИД параметра
phones Массив Массив телефонов водителя
• phone Строка Номер телефона
• is_default true или false Признак основного телефона
• use_for_call true или false Использовать для отзвона
term_account Строка Терминальный аккаунт
name_for_taxophone Строка Имя для TaxoPhone
accounts Массив Массив балансов счетов
•account_kind Целое Тип счета
•balance Дробное Баланс счета
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_driver_info?driver_id=1&need_photo=false 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "driver_id":1,
    "name":"DRIVER_NAME",
    "balance":100,
    "birthday":"01.01.1980",
    "car_id":1,
    "license":"1234567890",
    "home_phone":"79999999999",
    "mobile_phone":"79999999999",
    "is_locked":false,
    "is_dismissed":false,
    "order_params":[3,4],
    "phones":[
      {
        "phone":"79999999999",
        "is_default":true,
        “use_for_call”:true
      },
      {
        "phone":"79999999999",
        "is_default":false,
        “use_for_call”:false
      }
    ],
    "term_account":"00008",
    "name_for_taxophone":"NameForTaxoPhone",
    "accounts":
    [
      {
        "account_kind":0,
        "balance":1000993.00
      },
      {
        "account_kind":1000,
        "balance":600.00
      }
    ],
    "attribute_values": [
        {
              "id": 1,
              "bool_value": true
        },
        {
              "id": 2,
              "num_value": 1
        },
        {
              "id": 3,
              "num_value": 10
        },
        {
              "id": 4,
              "str_value": "строка"
        }
    ]
  }
}

Запрос списка водителей

Метод: GET

Название запроса: get_drivers_info

Параметры:

Параметр Тип Описание
Небязательные параметры
locked_drivers true или false Включить в ответ запроса заблокированных водителей (по умолчанию false)
dismissed_drivers true или false Включить в ответ запроса уволенных водителей (по умолчанию false)
fields Строка Список возвращаемых полей через запятую


Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
drivers_info Массив Массив не удаленных водителей
• driver_id Целое ИД водителя
• name Строка ФИО водителя
• balance Дробное Баланс водителя
• birthday ДД.ММ.ГГГГ День рождения водителя
• car_id Целое ИД основного автомобиля водителя
• license Строка Номер лицензии на перевозку (разрешения на перевозку)
• home_phone Строка Любой неосновной телефон водителя (устаревшее поле)
• mobile_phone Строка Основной телефон водителя (устаревшее поле)
• is_locked true или false Водитель заблокирован
• is_dismissed true или false Водитель уволен
• order_params Массив Массив параметров водителя
• • Целое ИД параметра
• phones Массив Массив телефонов водителя
• • phone Строка Номер телефона
• • is_default true или false Признак основного телефона
• • use_for_call true или false Использовать для отзвона
• term_account Строка Терминальный аккаунт
• attribute_values Массив Массив значений атрибутов
• • id Целое Идентификатор атрибута
• • bool_value true или false Значение, если тип атрибута «Логический»
• • num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• • str_value Строка Значение, если тип атрибута «Строка»

Пример:


Запрос:

GET https://ip:port/common_api/1.0/get_drivers_info 
Signature: <...>
locked_drivers=true&dismissed_drivers=true


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "drivers_info":[
      {
        "driver_id":1,
        "name":"DRIVER_NAME1",
        "balance":100.00,
        "birthday":"01.01.1980",
        "car_id":1,
        "license":"1234567890",
        "home_phone":"79999999999",
        "mobile_phone":"79999999999",
        "is_locked":false,
        "is_dismissed":false,
        "order_params":[3,4],
        "phones":[
          {
            "phone":"79999999999",
            "is_default":true,
            “use_for_call”: true

          },
          {
            "phone":"79999999999",
            "is_default":false,
            “use_for_call”: true

          }
        ],
        "term_account":"00008",
        "attribute_values": [
            {
                  "id": 3,
                  "num_value": 10
            },
            {
                  "id": 4,
                  "str_value": "строка"
            }
        ]
      },
      {
        "driver_id":2,
        "name":"DRIVER_NAME2",
        "balance":-50.00,
        "birthday":"01.01.1980",
        "car_id":2,
        "license":"1234567899",
        "is_locked":true,
        "is_dismissed":true,
        "order_params":[5,6],
        "phones":[
          {
            "phone":"79999999999",
            "is_default":true,
            “use_for_call”: true
          },
          {
            "phone":"79999999999",
            "is_default":false,
            “use_for_call”: false
          }
        ],
        "term_account":"00009",
        "attribute_values": [
            {
                  "id": 3,
                  "num_value": 10
            },
            {
                  "id": 4,
                  "str_value": "строка"
            }
        ]
      }
    ]
  }
}

Создание водителя

Метод: POST

Название запроса: create_driver

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
name Строка ФИО водителя
car_id Целое ИД основного автомобиля
password Строка Пароль (обязательное поле, если используется сервер связи с водителями)
uds_id Целое ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
Необязательные параметры
home_phone Строка Неосновной телефон водителя (устаревший параметр)
mobile_phone Строка Основной телефон водителя (устаревший параметр)
passport Строка Паспортные данные
driver_license Строка Водительское удостоверение
employee_type Целое Тип работника (0 - работник компании, 1 - частник)
birthday ГГГГММДДччммсс День рождения
number Строка Табельный номер
license Строка Удостоверение
start_date ГГГГММДДччммсс Дата приема на работу
lic_date ГГГГММДДччммсс Дата окончания договора
term_account Строка Терминальный аккаунт (если не указан, будет сгенерирован автоматически), должен состоять из 5 цифр
comment Строка Описание
order_params Массив Массив параметров водителя. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра
driver_photo Base64 Фотография водителя
phones Массив Массив телефонов водителя
• phone Строка Номер телефона
• is_default true или false Признак основного телефона
• use_for_call true или false Использовать для отзвона
name_for_taxophone Строка Имя для TaxoPhone
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Автомобиль с ИД=ID не найден
101 Служба ЕДС с ИД=ID не найдена
102 Параметр с ИД=ID не найден или не может быть привязан к водителю
103 Терминальный аккаунт не уникален
104 Некорректный терминальный аккаунт
107 Основной телефон может быть только один
108 Водитель должен иметь основной телефон
109 Пароль водителя не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
driver_id Целое ИД созданного водителя

Пример:

Запрос:
POST https://ip:port/common_api/1.0/create_driver HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "name":"NAME",
  "car_id":140,
  "password":"PASSWORD",
  "birthday":"19930218000000",
  "comment":"COMMENT",
  "order_params":[3,4],
  "name_for_taxophone":"NameForTaxoPhone",
  "phones":[
    {
      "phone":"79999999999",
      "is_default":true,
      “use_for_call”: true
    },
    {
      "phone":"79999999999",
      "is_default":false,
      “use_for_call”: true
    }
  ],
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
  "driver_id":10
 }
}

Обновление информации о водителе

Метод: POST

Название запроса: update_driver_info

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД редактируемого водителя
Необязательные параметры
name Строка ФИО водителя
car_id Целое ИД основного автомобиля
password Строка Пароль
uds_id Целое ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
home_phone Строка Неосновной телефон водителя (устаревший параметр)
mobile_phone Строка Основной телефон водителя (устаревший параметр)
passport Строка Паспортные данные
driver_license Строка Водительское удостоверение
employee_type Целое Тип работника (0 - работник компании, 1 - частник)
birthday ГГГГММДДччммсс День рождения
number Строка Табельный номер
license Строка Удостоверение
start_date ГГГГММДДччммсс Дата приема на работу
lic_date ГГГГММДДччммсс Дата окончания договора
term_account Строка Терминальный аккаунт
comment Строка Описание
time_block ГГГГММДДччммсс Временная блокировка до
is_locked true или false Заблокирован
lock_description Строка Причина блокировки
is_dismissed true или false Уволен
dismiss_description Строка Причина увольнения
order_params Массив Массив параметров водителя. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра
driver_photo Base64 Фотография водителя
phones Массив Массив телефонов водителя
• phone Строка Номер телефона
• is_default true или false Признак основного телефона
• use_for_call true или false Использовать для отзвона
name_for_taxophone Строка Имя для TaxoPhone
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Автомобиль с ИД=ID не найден
101 Служба ЕДС с ИД=ID не найдена
102 Параметр с ИД=ID не найден или не может быть привязан к водителю
103 Терминальный аккаунт не уникален
104 Некорректный терминальный аккаунт
105 Водитель с ИД=ID не найден
106 Экипаж на линии, запрещено редактирование полей: основной автомобиль, тип работника, служба ЕДС.
107 Основной телефон может быть только один
108 Водитель должен иметь основной телефон
109 Пароль водителя не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:
POST https://ip:port/common_api/1.0/update_driver_info HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "driver_id":10
  "name":"NAME",
  "car_id":140,
  "password":"PASSWORD",
  "birthday":"19930218000000",
  "comment":"COMMENT",
  "order_params":[3,4],
  "name_for_taxophone":"NameForTaxoPhone",
  "phones":[
    {
      "phone":"79999999999",
      "is_default":true,
      “use_for_call”: true
    },
    {
      "phone":"79999999999",
      "is_default":false,
      “use_for_call”: false
    }
  ],
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{}
}

Запрос информации об автомобиле

Метод: GET

Название запроса: get_car_info

Параметры:

Параметры Тип Описание
Обязательные параметры
car_id Целое ИД автомобиля
Необязательные параметры
need_photo true или false Нужна ли фотография автомобиля
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды:

Код Описание
100 Автомобиль не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
car_id Целое ИД автомобиля
code Строка Позывной автомобиля
name Строка Наименование автомобиля
gos_number Строка Государственный номер автомобиля
color Строка Цвет автомобиля
mark Строка Марка автомобиля
model Строка Модель автомобиля
short_name Строка Краткое название автомобиля
production_year Целое Год выпуска автомобиля
is_locked true или false Автомобиль заблокирован
fuel_level Дробное Уровень топлива в автомобиле
order_params Массив Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра
car_photo Base64 Фото автомобиля (только если need_photo = true или поле driver_photo указано в списке фильтра полей fields)
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "car_id":1,
    "code":"123",
    "name":"CAR_NAME",
    "gos_number":"a123bc",
    "color":"COLOR",
    "mark":"MARK",
    "model":"MODEL",
    "short_name":"SHORT_NAME",
    "production_year":2000,
    "is_locked":false,
    "order_params":[1,2],
    "attribute_values": [
        {
              "id": 1,
              "bool_value": true
        },
        {
              "id": 2,
              "num_value": 1
        },
        {
              "id": 3,
              "num_value": 10
        },
        {
              "id": 4,
              "str_value": "строка"
        }
    ]
  }
}

Запрос списка автомобилей

Метод: GET

Название запроса: get_cars_info

Параметры:

Параметры Тип Описание
Необязательные параметры
locked_cars true или false Включить в ответ заблокированных автомобилей (по умолчанию false)
fields Строка Список возвращаемых полей через запятую


Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметры Тип Описание
crews_info Массив Массив автомобилей
• car_id Целое ИД автомобиля
• code Строка Позывной автомобиля
• name Строка Наименование автомобиля
• gos_number Строка Гос. номер автомобиля
• color Строка Цвет автомобиля
• mark Строка Марка автомобиля
• model Строка Модель автомобиля
• short_name Строка Краткое название автомобиля
• production_year Целое Год выпуска автомобиля
• is_locked true или false Автомобиль заблокирован
• fuel_level Дробное Уровень топлива в автомобиле
• order_params Массив Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
• • Целое ИД параметра
• attribute_values Массив Массив значений атрибутов
• • id Целое Идентификатор атрибута
• • bool_value true или false Значение, если тип атрибута «Логический»
• • num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• • str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_cars_info 
Signature: <...>
locked_cars=true


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "crews_info":[
      {
        "car_id":1,
        "code":"111",
        "name":"CAR_1",
        "gos_number":"111111",
        "color":"COLOR_1",
        "mark":"MARK_1",
        "model":"MODEL_1",
        "short_name":"SHORT_NAME_1",
        "production_year":2000,
        "is_locked":false,
        "order_params":[1,2],
        "attribute_values": [
            {
                  "id": 1,
                  "bool_value": true
            },
            {
                  "id": 2,
                  "num_value": 1
            }
        ]
      },
      {
        "car_id":2,
        "code":"222",
        "name":"CAR_2",
        "gos_number":"222222",
        "color":"COLOR_2",
        "mark":"MARK_2",
        "model":"MODEL_2",
        "short_name":"SHORT_NAME_2",
        "production_year":2000,
        "is_locked":false,
        "order_params":[3,4],
        "attribute_values": [
            {
                  "id": 3,
                  "num_value": 10
            },
            {
                  "id": 4,
                  "str_value": "строка"
            }
        ]
      }
    ]
  }
}

Создание автомобиля

Метод: POST

Название запроса: create_car

Параметры в формате JSON:

Параметры Тип Описание
Обязательные параметры
code Строка Позывной
mark Строка Марка
color Строка Цвет
gos_number Строка Государственный номер
uds_id Целое ИД службы ЕДС (обязательное поле, если используется ЕДС, иначе можно не указывать)
Необязательные параметры
model Строка Модель
short_name Строка Краткое название
production_year Целое Год выпуска
car_class Строка Класс автомобиля (A, B, C, ...)
vin Строка VIN
body_number Строка Номер кузова
engine_number Строка Номер двигателя
permit Строка Разрешение на перевозку
comment Строка Описание
order_params Массив Массив параметров автомобиля. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра
car_photo Base64 Фотография автомобиля
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Автомобиль с ИД=ID имеет такой же позывной=CODE
101 Служба ЕДС не найдена
0 Параметр с ИД=ID не найден или не может быть привязан к автомобилю

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
car_id Целое ИД созданного автомобиля

Пример:

Запрос:
POST https://ip:port/common_api/1.0/create_car HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "code":"CODE",
  "mark":"MARK",
  "model":"MODEL",
  "color":"BLACK",
  "gos_number":"NUMBER",
  "production_year":2000,
  "comment":"COMMENT",
  "order_params":[1,2,3,4],
  "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
  "car_id":140
 }
}

Обновить информацию об автомобиле

Метод: POST

Название запроса: update_car_info

Параметры в формате JSON:

Параметры Тип Описание
Обязательные параметры
car_id Целое ИД автомобиля
Необязательные параметры
mark Строка Марка
color Строка Цвет
gos_number Строка Государственный номер
model Строка Модель
short_name Строка Краткое название
production_year Целое Год выпуска
car_class Строка Класс автомобиля (A, B, C, ...)
vin Строка VIN
body_number Строка Номер кузова
engine_number Строка Номер двигателя
permit Строка Разрешение на перевозку
comment Строка Описание
order_params Массив Массив параметров автомобиля
Целое ИД параметра
is_locked true или false Автомобиль заблокирован
lock_description Строка Причина блокировки
uds_id Целое ИД службы ЕДС
car_photo Base64 Фотография автомобиля

Специальные возвращаемые коды:

Код Описание
101 Служба ЕДС не найдена
102 Автомобиль с ИД=ID не найден
103 Экипаж на линии, запрещено редактирование полей: марка, модель, краткое наименование, цвет, гос. номер, служба ЕДС.
104 Параметр с ИД=ID не найден или не может быть привязан к автомобилю

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:
POST https://ip:port/common_api/1.0/update_car_info 
Signature: <...>
Content-Type: application/json
Content-Length: 104

{
  "car_id":1,
  "code":"CODE",
  "mark":"MARK",
  "model":"MODEL",
  "color":"BLACK",
  "gos_number":"NUMBER",
  "production_year":2000,
  "comment":"COMMENT",
  "order_params":[3,4]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{}
}

Запрос координат экипажей

Метод: GET

Название запроса: get_crews_coords

Параметры:

Параметры Тип Описание
Необязательные параметры
crew_id Целое ИД экипажа, по которому нужно вернуть координаты. Если не задано, то будут возвращены координаты всех экипажей на линии.

Специальные возвращаемые коды:

Код Описание
100 Координаты не найдены

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
crews_coords Массив Список координат экипажей
• crew_id Целое ИД экипажа
• crew_code Строка Позывной экипажа
• coords_time ГГГГММДДччммсс Время получения координат
• lat Дробное Долгота
• lon Дробное Широта
speed Целое Скорость движения, км/ч
direction Целое Направление движения (0-Север, 90-Восток, 180-Юг, 270-Запад, -1-не задано)
• state_kind Строка Тип состояния экипажа. Может принимать значения:

• "not_available" — экипаж не на линии

• "waiting" — экипаж свободен, ожидает заказы

• "on_order" — экипаж на заказе

• "on_break" — экипаж на перерыве

Пример:


Запрос:
GET https://ip:port/common_api/1.0/get_crews_coords 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "crews_coords":[
      {
        "crew_id":1,
        "crew_code":"111",
        "coords_time":"20120101101010",
        "lat":11.111111,
        "lon":22.222222,
        "state_kind":"waiting"
     },
     {
        "crew_id":2,
        "crew_code":"222",
        "coords_time":"20120101101010",
        "lat":33.333333,
        "lon":44.444444,
        "state_kind":"on_order"
      }
    ]
  }
}

Запрос:

GET https://ip:port/common_api/1.0/get_crews_coords?crew_id=1 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "crews_coords":[
      {
        "crew_id":1,
        "crew_code":"111",
        "coords_time":"20120101101010",
        "lat":11.111111,
        "lon":22.222222,
        "state_kind":"waiting"
      }
    ]
  }
}

Запрос адресов, содержащих нужную строку

Метод: GET

Название запроса: get_addresses_like

Параметры:

Параметры Тип Описание
Обязательные параметры
get_streets true или false Искать улицы
get_points true или false Искать пункты
get_houses true или false Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
street Строка Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
Необязательные параметры
house Строка Часть номера дома. Нужно только если get_houses = true.
city Строка Город, в котором искать адреса
max_addresses_count Целое Максимальное количество адресов в ответе
search_in_tm true или false Искать адреса в ТМ (по умолчанию = true)
search_in_yandex true или false Искать адреса в Яндекс (по умолчанию = false)
search_in_google true или false Искать адреса в Google (по умолчанию = false)
search_in_2gis true или false Искать адреса в 2GIS (по умолчанию = false)
search_in_tmgeoservice true или false Искать адреса в TMGeoService (по умолчанию = false)
search_in_mapmd true или false Искать адреса в Map.md (по умолчанию = false)

Специальные возвращаемые коды:

Код Описание
100 Подходящие адреса не найдены
101 Не указано место для поиска адресов

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
addresses Массив Список подходящих адресов
•address_source Строка Источник адреса. Может принимать значения:

•"tm" — Такси Мастер (адрес из базы данных или из карты)

•"yandex" — Яндекс

•"google" — Google

•"2gis" — 2GIS

•"tmgeoservice" — TMGeoService

•"mapmd" - Map.md

• street Строка Название улицы или пункта
• house Строка Номер дома
• kind Строка Тип адреса. Может принимать значения:

• "street" — улица

• "house" — дом

• "point" — пункт

• comment Строка Комментарий
• coords Массив Координаты дома или пункта
• • lat Дробное Широта
• • lon Дробное Долгота

Пример:


Запрос:

GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=true&get_points=true&
get_houses=false&street=STREE 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "addresses":[
      {
        "street":"STREET1",
        "house":"",
        "kind":"street",
        "comment":""
        "coords":{
        "lat":0,
        "lon":0
        }
      },
      {
        "street":"STREET2",
        "house":"",
        "kind":"street",
        "comment":""
        "coords":{
        "lat":0,
        "lon":0
        }
      },
      {
        "street":"POINT_STREET1",
        "house":"",
        "kind":"point",
        "comment":"Point at street STREET1"
        "coords":{
        "lat":53.224656,
        "lon":56.842521
        }
      }
    ]
  }
}

Запрос:

GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=false&get_points=false&
get_houses=true&street=STREET1&house=1&max_addresses_count=10 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "addresses":[
      {
        "street":"STREET1",
        "house":"1",
        "kind":"house",
        "comment":""
      },
      {
        "street":"STREET1",
        "house":"10",
        "kind":"house",
        "comment":""
      },
      {
        "street":"STREET1",
        "house":"11",
        "kind":"house",
        "comment":""
      }
    ]
  }
}

Запрос адресов, содержащих нужную строку 2

Метод: GET

Название запроса: get_addresses_like2

Параметры:

Параметры Тип Описание
Обязательные параметры
get_streets true или false Искать улицы
get_points true или false Искать пункты
get_houses true или false Искать дома
address Строка Строка для поиска адреса
Необязательные параметры
city Строка Города, разделенные запятой, в которых искать адреса
max_addresses_count Целое Максимальное количество адресов в ответе
search_in_tm true или false Искать адреса в ТМ (по умолчанию = true)
search_in_yandex true или false Искать адреса в Яндекс (по умолчанию = false)
search_in_google true или false Искать адреса в Google (по умолчанию = false)
search_in_2gis true или false Искать адреса в 2GIS (по умолчанию = false)
search_in_tmgeoservice true или false Искать адреса в TMGeoService (по умолчанию = false)
search_in_mapmd true или false Искать адреса в Map.md (по умолчанию = false)

Специальные возвращаемые коды:

Код Описание
100 Подходящие адреса не найдены
101 Не указано место для поиска адресов

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
addresses Массив Список подходящих адресов
• address_source Строка Источник адреса. Может принимать значения:

•"tm" — Такси Мастер (адрес из базы данных или из карты)

•"yandex" — Яндекс

•"google" — Google

•"2gis" — 2GIS

•"tmgeoservice" — TMGeoService

•"mapmd" - Map.md

• city Строка Название города
• point Строка Название пункта
• street Строка Название улицы
• house Строка Номер дома
• kind Строка Тип адреса. Может принимать значения:

• "street" — улица

• "house" — дом

• "point" — пункт

• comment Строка Комментарий
• coords Массив Координаты дома или пункта
• • lat Дробное Широта
• • lon Дробное Долгота

Пример:


Запрос:

GET https://ip:port/common_api/1.0/get_addresses_like2?get_streets=true&get_points=true& get_houses=true&address=STR12 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "addresses":[
      {
        "address_source":"tm",
        "kind":"street",
        "city":"CITY ",
        "point":"",
        "street":"STREET",
        "house":"12",
        "comment":"",
        "coords":{
             "lat":11.11111,
             "lon":22.222222 
        }
      },
      {
         "address_source":"tm",
         "kind":"street",
         "city":"CITY ",
         "point":"",
         "street":"STREET",
         "house":"120",
         "comment":"",
         "coords":{
             "lat":11.11111,
             "lon":22.222222 
        }
      }
    ]
  }
}


Поиск ближайшего адреса

Метод: GET

Название запроса: find_nearest_address

Версия ТМ: 3.12

Параметры:

Параметры Тип Описание
Обязательные параметры
lat Дробное Широта
lon Дробное Долгота
Необязательные параметры
radius Целое Радиус в метрах
search_in_tm true или false Искать адреса в ТМ (по умолчанию = true)
search_in_google true или false Искать адреса в Google (по умолчанию = false)
search_in_tmgeoservice true или false Искать адреса в TMGeoService (по умолчанию = false)
search_in_mapmd true или false Искать адреса в Map.md (по умолчанию = false)
search_in_2gis true или false Искать адреса в 2ГИС (по умолчанию = false)

Специальные возвращаемые коды:

Код Описание
100 Подходящие адреса не найдены
101 Не указано место для поиска адресов

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
address_source Строка Источник адреса. Может принимать значения:
  • "tm" — Такси Мастер (адрес из базы данных или из карты)
  • "google" — Google
  • "tmgeoservice" — TMGeoService
  • "2gis" — 2ГИС
  • "mapmd" — Map.md
city Строка Название города
point Строка Название пункта
street Строка Название улицы
house Строка Номер дома
kind Строка

Тип адреса. Может принимать значения:

  • "street" — улица
  • "house" — дом
  • "point" — пункт
comment Строка Комментарий
coords Массив Координаты дома или пункта
• lat Дробное Широта
• lon Дробное Долгота

Пример:


Запрос:

GET https://ip:port/common_api/1.0/find_nearest_address?lat=56.850926&lon=53.212706&radius=100&search_in_tm=false&search_in_google=false&search_in_tmgeoservice=true HTTP/1.1
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":
  {
    "address_source":"tmgeoservice",
    "kind":"house",
    "city":"Ижевск",
    "point":"",
    "street":"Пушкинская ул.",
    "house":"206",
    "comment":"",
    "coords":
    {
      "lat":56.850951,
      "lon":53.212822
    }
  }
}

Анализ маршрута

Метод: GET

Название запроса: analyze_route

Параметры:

Параметры Тип Описание
Обязательные параметры
source Строка Адрес подачи
dest Строка Адрес назначения
Необязательные параметры
source_lon Дробное Долгота адреса подачи
source_lat Дробное Широта адреса подачи
dest_lon Дробное Долгота адреса назначения
dest_lat Дробное Широта адреса назначения


Параметр source не является обязательным к заполнению, если заданы source_lon и source_lat.

Параметр dest не является обязательным к заполнению, если заданы dest_lon и dest_lat.


Специальные возвращаемые коды:

Код Описание
100 Адрес подачи не распознан
101 Адрес назначения не распознан
102 Маршрут не распознан

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
source_lat Дробное Широта адреса подачи
source_lon Дробное Долгота адреса подачи
source_zone_id Целое ИД района подачи
dest_lat Дробное Широта адреса назначения
dest_lon Дробное Долгота адреса назначения
dest_zone_id Целое ИД района назначения
city_dist Дробное Километраж по городу
country_dist Дробное Километраж за городом
source_country_dist Дробное Километраж до адреса подачи, если адрес подачи за городом

Пример:

Запрос:

GET https://ip:port/common_api/1.0/analyze_route?source=STREET1,1&dest=STREET2,2&source_lon=
53.153044&source_lat=56.893301&dest_lon=53.218103&dest_lat=56.869759 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "source_lat":11.111111,
    "source_lon":22.222222,
    "source_zone_id":1,
    "dest_lat":33.333333,
    "dest_lon":44.444444,
    "dest_zone_id":2,
    "city_dist":1.1,
    "country_dist":2.2,
    "source_country_dist":3.3
  }
}

Анализ маршрута 2

Метод: POST

Название запроса: analyze_route2

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
addresses Массив Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
• address Строка Адрес подачи
• lat Дробное Широта адреса
• lon Дробное Долгота адреса
Необязательные параметры
get_full_route_coords true или false Возвращать координаты точек полного маршрута (по умолчанию false)
crew_group_id Целое ИД группы экипажей

Специальные возвращаемые коды:

Код Описание
100 Маршрут не распознан

Возвращаемые данные в случае успешного выполнения запроса:

Параметры Тип Описание
Addresses Массив Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
• lat Дробное Широта адреса
• lon Дробное Долгота адреса
• zone_id Целое Район адреса
• parking_id Целое Стоянка адреса
city_dist Дробное Километраж по городу
country_dist Дробное Километраж за городом
source_country_dist Дробное Километраж до адреса подачи, если адрес подачи за городом.
full_route_coords Массив Массив координат точек маршрута.
• lat Дробное Широта точки
• lon Дробное Долгота точки

Пример:


Запрос:

POST /common_api/1.0/analyze_route2 
Host: ip:port
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/json
Content-Length: 243
Signature: <...>

{"get_full_route_coords":true,"addresses":[{"address":"STREET1, 1","lat":11.111111,
"lon":22.222222},{"address":"STREET2, 2","lat":33.333333,"lon":44.444444},
{"address":"STREET3, 3","lat":55.555555,"lon":55.555555},{"address":"STREET4,
4","lat":77.777777,"lon":88.888888}]}



Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
     "addresses":[
       {
        "lat":11.111111,
        "lon":22.222222,
        "zone_id":1,
        "parking_id":1
       },
       {
        "lat":33.333333,
        "lon":44.444444,
        "zone_id":2,
        "parking_id":2
       }
     ],
     "city_dist":0,
     "country_dist":2.647,
     "source_country_dist":3.412,
     "full_route_coords":[
       {
        "lat":55.833603,
        "lon":37.515537
       },
       {
        "lat":55.832855,
        "lon":37.516315
       },
       {
        "lat":55.833405,
        "lon":37.51799
       },
       ...
    ]
  }
}

Запрос информации о состоянии заказа

Метод: GET

Название запроса: get_order_state

Параметры:

Параметры Тип Описание
Обязательные параметры
order_id Целое ИД заказа
Необязательные параметры
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды:

Код Описание
100 Заказ не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_id Целое ИД заказа
state_id Целое ИД состояния заказа
state_kind Строка Тип состояния заказа. Может принимать значения:

• "new_order" — новый заказ

• "driver_assigned" — водитель назначен

• "car_at_place" — машина подъехала на место

• "client_inside" — клиент в машине

• "finished" — заказ успешно завершен

• "aborted" — заказ прекращен

crew_id Целое ИД экипажа
prior_crew_id Целое ИД предварительного экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
server_time_offset Целое Смещение относительно серверного времени
start_time ГГГГММДДччммсс Время создания заказа
source_time ГГГГММДДччммсс Время подачи
finish_time ГГГГММДДччммсс Время завершения заказа
source Строка Адрес подачи
source_lat Строка Широта адреса подачи
source_lon Строка Долгота адреса подачи
destination Строка Адрес назначения
destination_lat Строка Широта адреса назначения
destination_lon Строка Долгота адреса назначения
stops Массив Информация по остановкам заказа
• address Строка Адрес остановки
• lat Дробное Широта адреса остановки
• lon Дробное Долгота адреса остановки
trip_distance Дробное Фактический километраж
trip_time Целое Фактическое время в пути
customer Строка Заказчик
passenger Строка Пассажир
phone Строка Номер телефона
phone_to_dial Строка Номер телефона для отзвона
client_id Целое ИД клиента
client_name Строка Имя клиента
client_group_id Целое ИД группы клиента
client_group_name Строка Название группы клиента
client_employee_id Целое ИД сотрудника клиента
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе
tariff_id Целое ИД тарифа
car_mark Строка Марка автомобиля
car_model Строка Модель автомобиля
car_color Строка Цвет автомобиля
car_number Строка Государственный номер автомобиля
confirmed Строка Состояние подтвержденности заказа водителем или оператором.

Может принимать значения:

• "not_confirmed" — не подтверждено

• "confirmed_by_driver" — заказ принят водителем

• "confirmed_by_oper" — заказ подтвержден оператором

crew_coords Массив Координаты экипажа
• lat Дробное Широта
• lon Дробное Долгота
order_params Массив Массив параметров заказа экипажа
Целое ИД параметра заказа
creation_way Строка Способ создания заказа. Может принимать значения:

• "operator" — заказ создан оператором

• "sms" — заказ создан через смс

• "market" — заказ из биржи

• "common_api" — заказ создан через api

• "t_api" — заказ создан через api

• "taxophone" — заказ создан через таксофон с телефона

• "driver" — заказ создан водителем

• "daily_order" — ежедневный заказ

• "taxophone_web" — заказ создан через таксофон с сайта

• "unknown" — неизвестный

is_prior true или false Предварительный заказ
is_really_prior true или false Предварительный заказ на вкладке "Предварительные"
email Строка Email для уведомлений
prior_to_current_before_minutes Целое Время перехода из предварительного в текущие заказы, мин
flight_number Строка Номер рейса
sum Дробное Сумма без скидки
total_sum Дробное Итоговая сумма заказа
cash_sum Дробное Сумма наличными
cashless_sum Дробное Сумма безналичными
bonus_sum Дробное Сумма бонусами
bank_card_sum Дробное Сумма банковской картой
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»
bill Массив Чек TMDriver. Данный узел выводится только, если по заказу есть чек
• code Строка Код элемента расчета
• text Строка Наименование элемента расчета
• value Строка Значение элемента расчета (количество)
• sum Строка Стоимость элемента расчета
fact_route Массив Фактический маршрут по заказу, выводится только если поле fact_route передали в списке фильтра полей fields
• lat Дробное Широта точки маршрута
• lon Дробное Долгота точки маршрута
• time ГГГГММДДччммсс Время данной точки
• speed Целое Скорость в данный момент, км/ч
• direction Целое Направление движения, градусы (0 - север, 90 - восток, 180 - юг, 270 - запад)
is_auction true или false Признак заказа-аукциона
payment_pay_system Строка Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется).

Пример:

Запрос: 

GET https://ip:port/common_api/1.0/get_order_state?order_id=1  
Signature: <...> 

Ответ: 

{
  "code":0,
  "descr":"OK",
  "data":{
    "order_id":1,
    "state_id":12,
    "state_kind":"car_at_place",
    "crew_id":1,
    "prior_crew_id":0,
    "driver_id":2,
    "car_id":3,
    "server_time_offset:0,
    "start_time":"20130117125641",
    "source_time":"20130117132617",
    "finish_time":"20130117130343",
    "source":"30 Лет Победы ул. \/Ижевск\/, 4Б",
    "source_lat":56.863613,
    "source_lon":53.186539,
    "destination":"Кирова ул. \/Ижевск\/, 56",
    "destination_lat":56.862202,
    "destination_lon":53.187485,
    "stops":[
      {
        "address":"30 Лет Победы ул. \/Ижевск\/, 8",
        "lat":56.863388,
        "lon":53.184269
      }
    ],
    "trip_distance":10.5,
    "trip_time":20,
    "customer":"Слепаков",
    "passenger":"Слепаков",
    "phone":"8800",
    "client_id":1,
    "client_employee_id":1,
    "order_crew_group_id":1,
    "tariff_id":1,
    "car_mark":"Ауди",
    "car_model":"Q7",
    "car_color":"черный",
    "car_number":"А777АА",   
    "confirmed":"confirmed_by_oper",
    "crew_coords": {
        "lat": 56.833981,
        "lon": 53.220249
    },
    "order_params":[
      1,
      2,
      5
    ],
    "creation_way":"operator",
    "is_prior":true,
    "is_really_prior":false,
    "email":"mail@mail.ru",
    "prior_to_current_before_minutes":30,
    "flight_number":"A-0501/123",
    "sum":50.5,
    "total_sum":80,
    "cash_sum":20.1,
    "cashless_sum":10,
    "bonus_sum":5.2,
    "bank_card_sum":15,
    "attribute_values": [
        {
              "id": 1,
              "bool_value": true
        },
        {
              "id": 2,
              "num_value": 1
        },
        {
              "id": 3,
              "num_value": 10
        },
        {
              "id": 4,
              "str_value": "строка"
        }
    ],
    "bill":
    [
      {
        "code":"BOARDING",
        "text":"Посадка",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"TRIP_TIME",
        "text":"Общее время",
        "value":"0:00:00",
        "sum":""
      },
      {
        "code":"TRIP_DIST",
        "text":"Общее расстояние",
        "value":"0,00 км",
        "sum":""
      },
      {
        "code":"BEFORE_DISC",
        "text":"Сумма без скидки",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"AFTER_DISC",
        "text":"Сумма со скидкой",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"MINIMUM",
        "text":"Минималка",
        "value":"",
        "sum":"60,00"
      }
    ],
    "fact_route":
    [
      {
        "lat":11.111111,
        "lon":22.222222,
        "time":"20130117132617",
        "speed":123,
        "direction":0
      }
    ],
    "is_auction":false,
    "payment_pay_system": "qr"
  }
}

Создание задачи СМС серверу

Метод: POST

Название запроса: send_sms

Параметры:

Параметры Тип Описание
Обязательные параметры
phone Строка, <= 30 символов Номер телефона
message Строка Текст СМС

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST /common_api/1.0/send_sms 
Content-Type: application/x-www-form-urlencoded
Content-Length: 33

Signature: <...>

message=SMSText&phone=89050057216

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Проверка авторизации

Метод: GET

Название запроса: check_authorization

Параметры:

Параметры Тип Описание
Обязательные параметры
login Строка, <= 60 символов Логин
password Строка, <= 60 символов Пароль

Специальные возвращаемые коды:

Код Описание
100 Не найден клиент с логином LOGIN и/или неверный пароль

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_id Целое ИД клиента

Пример:

Запрос:

GET https://ip:port/common_api/1.0/check_authorization?login=LOGIN&password=PASSWORD 

Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "client_id":131
 }
}

Регистрация клиента

Метод: POST

Название запроса: register_client

Параметры:

Параметры Тип Описание
Обязательные параметры
name Строка, <= 60 символов ФИО
login Строка, <= 60 символов Логин
password Строка, <= 60 символов Пароль
phones Строка Номера телефонов (через запятую)
Необязательные параметры
client_group Целое ИД группы клиента
parent_id Целое ИД клиента-родителя
address Строка Домашний адрес
birthday ГГГГММДДччммсс Дата рождения
gender Строка Пол. Может принимать значения:

• "male" - мужской

• "female" - женский

email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
comment Строка Комментарий
use_own_account true или false Использовать собственный счет для оплаты заказов

Специальные возвращаемые коды:

Код Описание
100 Клиент с ИД=ID имеет такой же номер телефона=PHONE
101 Клиент с логином=LOGIN уже существует
102 Группа клиента с ИД=CLIENT_GROUP не найдена
103 Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
109 Пароль клиента не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_id Целое ИД созданного клиента

Пример:

Запрос:

POST https://ip:port/common_api/1.0/register_client 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: 104
name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=19930218115517&gender=male&address=ADDRESS&client_group=1&parent_id=10&email=mail%40ya.ru&use_email_informing=true&use_own_account=false


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "client_id":140
  }
}

Регистрация клиента 2

Метод: POST

Название запроса: register_client2

Версия ТМ: 3.12

Параметры в формате JSON:

Параметры Тип Описание
Обязательные параметры
name Строка, <= 60 символов ФИО
login Строка, <= 60 символов Логин
password Строка, <= 60 символов Пароль
phones Массив Массив телефонов клиента
• phone Строка Номер телефона
• is_default true или false Признак основного телефона
Необязательные параметры
client_group_id Целое ИД группы клиента
parent_id Целое ИД клиента-родителя
address Строка Домашний адрес
birthday ГГГГММДДччммсс Дата рождения
gender Строка Пол. Может принимать значения:

• "male" - мужской

• "female" - женский

email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
comment Строка Комментарий
use_own_account true или false Использовать собственный счет для оплаты заказов
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Дублирование номера телефона=PHONE в списке
101 Клиент с логином=LOGIN уже существует
102 Группа клиента с ИД=CLIENT_GROUP не найдена
103 Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
105 Основной телефон может быть только один
106 Клиент должен иметь основной телефон
107 Атрибут с ИД=ID не найден
108 Атрибут с ИД=ID не может быть привязан к клиенту
109 Пароль клиента не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_id Целое ИД созданного клиента

Пример:

Запрос:

POST https://ip:port/common_api/1.0/register_client2 HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "name":"NAME",
  "login":"LOGIN",
  "password":"PASSWORD",
  "phones":[
    {
      "phone":"88",
      "is_default":true
    },
    {
      "phone":"99",
      "is_default":false
    }
  ],
  "address":"ADDRESS",
  "gender":"male",
  "birthday":"20000101000000",
  "client_group_id":1,
  "parent_id":10,
  "email":"mail@ya.ru",
  "use_email_informing":true,
  "comment":"TEXT",
  "use_own_account":false,
  "attribute_values":[
    {
      "id":5,
      "bool_value":true
    },
    {
      "id":7,
      "num_value":10
    },
    {
      "id":9,
      "str_value":"TEST"
    }
  ]
}

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "client_id":140
  }
}

Запрос информации по клиенту

Метод: GET

Название запроса: get_client_info

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента
Необязательные параметры
fields Строка Список возвращаемых полей через запятую. Для полей списка сотрудников, запрашиваемого клиента, названия начинаются с "employees.", например: "employees.name"

Специальные возвращаемые коды:

Код Описание
100 Не найден клиент ИД=CLIENT_ID

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_id Целое ИД клиента
parent_id Целое ИД клиента-родителя
name Строка ФИО
number Строка Номер договора
address Строка Домашний адрес
gender Строка Пол. Может принимать значения:

• "" - не указан

• "male" - мужской

• "female" - женский

birthday ДД.ММ.ГГГГ Дата рождения
phones Массив Массив телефонов клиента
• phone Строка Номер телефона клиента
balance Дробное Баланс
bonus_balance Дробное Бонусный баланс
login Строка Логин
password Строка Пароль
client_group_id Целое ИД группы клиента
tariff_id Целое ИД тарифа клиента или группы клиентов
prize_tariff_id Целое ИД призового тарифа клиента или группы клиентов
tariff_shift_id Целое ИД смены тарифов клиента или группы клиентов
discount_id Целое ИД скидки клиента или группы клиентов
prize_discount_id Целое ИД призовой скидки клиента или группы клиентов
min_balance Дробное Порог, ниже которого не может опускаться баланс
min_balance_for_use_cashless Дробное Минимальный баланс для использования безналичного счета
min_bonus_balance_for_use_bonus Дробное Минимальный баланс для использования бонусного счета
is_locked true или false Клиент заблокирован
lock_description Строка Причина блокировки
use_cashless_account true или false Признак использования безналичного счета
use_cashless true или false Признак использования безналичного расчета по умолчанию. Имеет смысл только при use_cashless_account = true
no_cash_payment true или false Признак запрета использования наличных расчетов. Имеет смысл только при use_cashless_account = true и use_cashless = true
remain_prize Целое Сколько заказов осталось до призового
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
default_crew_group Целое Группа экипажей по умолчанию
use_own_account true или false Использовать собственный счет для оплаты заказа
comment Строка Комментарий
employees Массив Массив сотрудников клиента. Поля аналогичны полям основного клиента, только у сотрудников отсутствует поле employees
accounts Массив Массив счетов клиента. Для сотрудников счета возвращаются, только если их явно запросили в фильтре полей "employees.accounts"
• account_kind Целое Тип счета:
  • 0 - Основной счет
  • 1- Бонусный счет
  • Остальные - нестандартные счета
• balance Дробное Баланс счета клиента
• balance_with_children Дробное Баланс счета клиента с учетом вложенных клиентов
attribute_values Массив Массив значений атрибутов. Возвращается, только если явно запросили в фильтре полей "attribute_values" или "employees.attribute_values" для сотрудников
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_client_info?client_id=140 

Signature: <...>

Ответ:

{
  "code": 0,
  "descr": "OK",
  "data": {
    "client_id": 20,
    "parent_id": 0,
    "name": "Юр. лицо1",
    "number": "111",
    "address": "Адрес Юр. лицо1",
    "gender": "",
    "birthday": "22.01.2016",
    "phones": [
      "105",
      "123456789",
      "100"
    ],
    "balance": 10,
    "bonus_balance": 333,
    "login": "111",
    "password": "111",
    "client_group_id": 1,
    "tariff_id": 39,
    "prize_tariff_id": 0,
    "tariff_shift_id": 0,
    "discount_id": 2,
    "prize_discount_id": 0,
    "min_balance": 0,
    "min_balance_for_use_cashless": null,
    "min_bonus_balance_for_use_bonus": null,
    "is_locked": false,
    "lock_description": "",
    "use_cashless_account": true,
    "use_cashless": true,
    "remain_prize": 0,
    "email": "Юр. лицо1@ss.ru",
    "use_email_informing": true,
    "default_crew_group": 6,
    "comment": "Сотрудник СВР. Использовать максимальные скидки",
    "employees": [
      {
        "client_id": 323,
        "parent_id": 20,
        "name": "Сотрудник1",
        "number": "111",
        "address": "Адрес Сотрудник1",
        "gender": "",
        "birthday": null,
        "phones": [
          "11221122112211"
        ],
        "balance": 0,
        "bonus_balance": 0,
        "login": "",
        "password": "",
        "client_group_id": 1,
        "tariff_id": 17,
        "prize_tariff_id": 0,
        "tariff_shift_id": 0,
        "discount_id": 2,
        "prize_discount_id": 0,
        "min_balance": 0,
        "min_balance_for_use_cashless": null,
        "min_bonus_balance_for_use_bonus": null,
        "is_locked": false,
        "lock_description": "",
        "use_cashless": true,
        "remain_prize": 0,
        "email": "Сотрудник1@ss.ru",
        "use_email_informing": true,
        "default_crew_group": 6,
        "accounts": [
          {
            "account_kind": 0,
            "balance": 400.00,
            "balance_with_children": 0.00
          },
          {
            "account_kind": 1,
            "balance": 0.00,
            "balance_with_children": 0.00
          },
          {
            "account_kind": 1003,
            "balance": 100.00,
            "balance_with_children": 0.00
          }
        ],
        "attribute_values": [
          {
            "id": 5,
            "bool_value": true
          },
          {
            "id": 4,
            "bool_value": true
          }
        ]
      }
    ],
    "accounts": [
      {
        "account_kind": 0,
        "balance": 2355.00,
        "balance_with_children": 2755.00
      },
      {
        "account_kind": 1,
        "balance": 0.00,
        "balance_with_children": 0.00
      },
      {
        "account_kind": 1003,
        "balance": -20.00,
        "balance_with_children": 80.00
      }
    ],
    "attribute_values": [
      {
        "id": 4,
        "bool_value": true
      }
    ]
  }
}

Запрос информации по клиентам

Метод: GET

Название запроса: get_clients_info

Версия ТМ: 3.5

Параметры:

Параметры Тип Описание
Необязательные параметры
text Строка Текст для поиска по названию или по номеру договора клиента
max_clients_count Целое Максимальное количество клиентов, которое надо вернуть. Если не указано, то 10.
client_group_id Целое Фильтр по группе клиентов
parent_id Целое Фильтр по вышестоящему подразделению, возвращаются все подчиненные отделы и сотрудники на всю глубину иерархии
fields Строка Список возвращаемых полей через запятую. По умолчанию возвращаются поля "name" и "number". Поле "client_id" возвращается всегда

Специальные возвращаемые коды: Нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметры Тип Описание
client_id Целое ИД клиента
name Строка Наименование
number Строка Номер договора
parent_id Целое ИД клиента-родителя
address Строка Домашний адрес
gender Строка Пол. Может принимать значения:

• "" - не указан

• "male" - мужской

• "female" - женский

birthday ДД.ММ.ГГГГ Дата рождения
phones Массив Массив телефонов клиента
• phone Строка Номер телефона клиента
balance Дробное Баланс
bonus_balance Дробное Бонусный баланс
login Строка Логин
password Строка Пароль
client_group_id Целое ИД группы клиента
tariff_id Целое ИД тарифа клиента или группы клиентов
prize_tariff_id Целое ИД призового тарифа клиента или группы клиентов
tariff_shift_id Целое ИД смены тарифов клиента или группы клиентов
discount_id Целое ИД скидки клиента или группы клиентов
prize_discount_id Целое ИД призовой скидки клиента или группы клиентов
min_balance Дробное Порог, ниже которого не может опускаться баланс
min_balance_for_use_cashless Дробное Минимальный баланс для использования безналичного счета
min_bonus_balance_for_use_bonus Дробное Минимальный баланс для использования бонусного счета
is_locked true или false Клиент заблокирован
lock_description Строка Причина блокировки
use_cashless_account true или false Признак использования безналичного счета
use_cashless true или false Признак использования безналичного расчета по умолчанию. Имеет смысл только при use_cashless_account = true
no_cash_payment true или false Признак запрета использования наличных расчетов. Имеет смысл только при use_cashless_account = true и use_cashless = true
remain_prize Целое Сколько заказов осталось до призового
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
default_crew_group Целое Группа экипажей по умолчанию
use_own_account true или false Использовать собственный счет для оплаты заказа
comment Строка Комментарий
accounts Массив Массив счетов клиента
• account_kind Целое Тип счета:
  • 0 - Основной счет
  • 1- Бонусный счет
  • Остальные - нестандартные счета
• balance Дробное Баланс счета клиента
• balance_with_children Дробное Баланс счета клиента с учетом вложенных клиентов
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_clients_info?text=test&max_clients_count=10&client_group_id=1&parent_id=20&fields=name,number HTTP/1.1
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "clients_info":[
      {
        "client_id":390,
        "name":"tester1",
        "number":"001"
      },
      {
        "client_id":394,
        "name":"tester2",
        "number":"002"
      }
    ]
  }
}

Изменение информации по клиенту

Метод: POST

Название запроса: update_client_info

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента
Необязательные параметры
name Строка, <= 60 символов ФИО
login Строка, <= 60 символов Логин
password Строка, <= 60 символов Пароль
phones Строка Номера телефонов (через запятую)
address Строка Домашний адрес
birthday ГГГГММДДччммсс Дата рождения
gender Строка Пол. Может принимать значения:

• "male" - мужской

• "female" - женский

parent_id Целое ИД клиента-родителя
client_group_id Целое ИД группы клиента
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
comment Строка Комментарий
use_own_account true или false Использовать собственный счет для оплаты заказов

Специальные возвращаемые коды:

Код Описание
100 Клиент с номером телефона=PHONE уже существует
101 Клиент с ИД=ID имеет такой же номер телефона=PHONE
102 Клиент с логином=LOGIN уже существует
103 Группа клиента с ИД=CLIENT_GROUP_ID не найдена
104 Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
109 Пароль клиента не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST https://ip:port/common_api/1.0/update_client_info 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: <...>

client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=male&address=ADDRESS&parent_id=10&client_group_id=3&email=mail%40ya.ru&use_email_informing=true

Ответ:

{
 "code":0,
  "descr":"OK",
  "data":{}
}

Изменение информации по клиенту 2

Метод: POST

Название запроса: update_client_info2

Версия ТМ: 3.12

Параметры в формате JSON:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента
Необязательные параметры
name Строка, <= 60 символов ФИО
login Строка, <= 60 символов Логин
password Строка, <= 60 символов Пароль
phones Массив Массив телефонов клиента
• phone Строка Номер телефона
• is_default true или false Признак основного телефона
client_group_id Целое ИД группы клиента
parent_id Целое ИД клиента-родителя
address Строка Домашний адрес
birthday ГГГГММДДччммсс Дата рождения
gender Строка Пол. Может принимать значения:

• "male" - мужской

• "female" - женский

email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
comment Строка Комментарий
use_own_account true или false Использовать собственный счет для оплаты заказов
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Клиент с ИД=CLIENT_ID не найден
101 Дублирование номера телефона=PHONE в списке
102 Клиент с логином=LOGIN уже существует
103 Группа клиента с ИД=CLIENT_GROUP_ID не найдена
104 Клиент указанный в качестве родителя с ИД=PARENT_ID не найден
105 Основной телефон может быть только один
106 Клиент должен иметь основной телефон
107 Атрибут с ИД=ID не найден
108 Атрибут с ИД=ID не может быть привязан к клиенту
109 Пароль клиента не соответствует политике паролей

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST https://ip:port/common_api/1.0/update_client_info2 HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "client_id":140,
  "name":"NAME",
  "login":"LOGIN",
  "password":"PASSWORD",
  "phones":[
    {
      "phone":"88",
      "is_default":true
    }
  ],
  "address":"ADDRESS",
  "gender":"male",
  "birthday":"20000101000000",
  "client_group_id":1,
  "parent_id":10,
  "email":"mail@ya.ru",
  "use_email_informing":true,
  "comment":"TEXT",
  "use_own_account":false,
  "attribute_values":[
    {
      "id":7,
      "num_value":5
    },
    {
      "id":9,
      "str_value":null
    }
  ]
}

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Запрос текущих заказов

Метод: GET

Название запроса: get_current_orders

Параметры:

Параметры Тип Описание
Необязательные параметры
client_id Целое ИД клиента
client_employee_id Целое ИД сотрудника (только если указан ИД клиента)
phone Строка, <= 30 символов Телефон клиента
crew_id Целое ИД экипажа
driver_id Целое ИД водителя
fields Строка Список возвращаемых полей через запятую

Специальные возвращаемые коды:

Код Описание
100 Не найден клиент ИД=CLIENT_ID
101 Не найден сотрудник клиента ИД=CLIENT_EMPLOYEE_ID

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
id Целое ИД заказа
state_id Целое ИД состояния заказа
state_kind Строка Тип состояния заказа. Может принимать значения:
  • "new_order" — новый заказ
  • "driver_assigned" — водитель назначен
  • "car_at_place" — машина подъехала на место
  • "client_inside" — клиент в машине
  • "finished" — заказ успешно завершен
  • "aborted" — заказ прекращен
crew_id Целое ИД экипажа
prior_crew_id Целое ИД предварительного экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
server_time_offset Целое Смещение относительно серверного времени
start_time ГГГГММДДччммсс Дата создания заказа
source_time ГГГГММДДччммсс Время подачи
source Строка Адрес подачи
source_lat Строка Широта адреса подачи
source_lon Строка Долгота адреса подачи
destination Строка Адрес назначения
destination_lat Строка Широта адреса назначения
destination_lon Строка Долгота адреса назначения
stops Массив Информация по остановкам заказа
• address Строка Адрес остановки
• lat Дробное Широта адреса остановки
• lon Дробное Долгота адреса остановки
customer Строка Заказчик
passenger Строка Пассажир
phone Строка Номер телефона
phone_to_dial Строка Номер телефона для отзвона
client_id Целое ИД клиента
client_name Строка Имя клиента
client_group_id Целое ИД группы клиента
client_group_name Строка Название группы клиента
client_employee_id Целое ИД сотрудника клиента
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе
tariff_id Целое ИД тарифа
car_mark Строка Марка автомобиля
car_model Строка Модель автомобиля
car_color Строка Цвет автомобиля
car_number Строка Гос.номер автомобиля
confirmed Строка Состояние подтвержденности заказа водителем или оператором. Может принимать значения:
  • "not_confirmed" — не подтверждено
  • "confirmed_by_driver" — заказ принят водителем
  • "confirmed_by_oper" — заказ подтвержден оператором
crew_coords Массив Координаты экипажа
• lat Дробное Широта
• lon Дробное Долгота
order_params Массив Массив параметров заказа экипажа. Устарело. Рекомендуется использовать параметр attribute_values. (Возвращается только если в списке фильтра полей fields запросили поле order_params)
Целое ИД параметра заказа
creation_way Строка Способ создания заказа. Может принимать значения:

• "operator" — заказ создан оператором

• "sms" — заказ создан через смс

• "market" — заказ из биржи

• "common_api" — заказ создан через api

• "t_api" — заказ создан через api

• "taxophone" — заказ создан через таксофон с телефона

• "driver" — заказ создан водителем

• "daily_order" — ежедневный заказ

• "taxophone_web" — заказ создан через таксофон с сайта

• "unknown" — неизвестный

is_prior true или false Предварительный заказ
is_really_prior true или false Предварительный заказ на вкладке "Предварительные"
email Строка Email для уведомлений
prior_to_current_before_minutes Целое Время перехода из предварительного в текущие заказы, мин
flight_number Строка Номер рейса
sum Дробное Сумма без скидки
total_sum Дробное Итоговая сумма заказа
cash_sum Дробное Сумма наличными
cashless_sum Дробное Сумма безналичными
bonus_sum Дробное Сумма бонусами
bank_card_sum Дробное Сумма банковской картой
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»
bill Массив Чек TMDriver. Данный узел выводится только, если по заказу есть чек и если в списке фильтра полей fields запросили поле bill
• code Строка Код элемента расчета
• text Строка Наименование элемента расчета
• value Строка Значение элемента расчета (количество)
• sum Строка Стоимость элемента расчета
is_auction true или false Признак заказа-аукциона
payment_pay_system Строка Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется)

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_current_orders?client_id=140&phone=18 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "order_id":1,
    "state_id":12,
    "state_kind":"car_at_place",
    "crew_id":1,
    "prior_crew_id":0,
    "driver_id":2,
    "car_id":3,
    "server_time_offset:0,
    "start_time":"20130117125641",
    "source_time":"20130117132617",
    "source":"30 Лет Победы ул. \/Ижевск\/, 4Б",
    "source_lat":56.863613,
    "source_lon":53.186539,
    "destination":"Кирова ул. \/Ижевск\/, 56",
    "destination_lat":56.862202,
    "destination_lon":53.187485,
    "stops":[
      {
        "address":"30 Лет Победы ул. \/Ижевск\/, 8",
        "lat":56.863388,
        "lon":53.184269
      }
    ],
    "customer":"Слепаков",
    "passenger":"Слепаков",
    "phone":"8800",
    "client_id":1,
    "client_employee_id":1,
    "order_crew_group_id":1,
    "tariff_id":1,
    "car_mark":"Ауди",
    "car_model":"Q7",
    "car_color":"черный",
    "car_number":"А777АА",   
    "confirmed":"confirmed_by_oper",
    "crew_coords": {
        "lat": 56.833981,
        "lon": 53.220249
    },
    "order_params":[
      1,
      2,
      5
    ],
    "creation_way":"operator",
    "is_prior":true,
    "is_really_prior":false,
    "email":"mail@mail.ru",
    "prior_to_current_before_minutes":30,
    "flight_number":"A-0501/123",
    "sum":50.5,
    "total_sum":80,
    "cash_sum":20.1,
    "cashless_sum":10,
    "bonus_sum":5.2,
    "bank_card_sum":15,
    "attribute_values": [
        {
              "id": 1,
              "bool_value": true
        },
        {
              "id": 2,
              "num_value": 1
        },
        {
              "id": 3,
              "num_value": 10
        },
        {
              "id": 4,
              "str_value": "строка"
        }
    ],
    "bill":
    [
      {
        "code":"BOARDING",
        "text":"Посадка",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"TRIP_TIME",
        "text":"Общее время",
        "value":"0:00:00",
        "sum":""
      },
      {
        "code":"TRIP_DIST",
        "text":"Общее расстояние",
        "value":"0,00 км",
        "sum":""
      },
      {
        "code":"BEFORE_DISC",
        "text":"Сумма без скидки",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"AFTER_DISC",
        "text":"Сумма со скидкой",
        "value":"",
        "sum":"20,00"
      },
      {
        "code":"MINIMUM",
        "text":"Минималка",
        "value":"",
        "sum":"60,00"
      }
    ]
        "is_auction":false,
        "payment_pay_system":"qr"
  }
}

Запрос выполненных заказов

Метод: GET

Название запроса: get_finished_orders

Параметры:

Параметры Тип Описание
Обязательные параметры
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода
Необязательные параметры
Примечание: должен присутствовать хотя бы один параметр из client_id, phone, crew_id, driver_id.
client_id Целое ИД клиента
client_employee_id Целое ИД сотрудника (только если указан ИД клиента)
phone Строка, <= 30 символов Телефон клиента
crew_id Целое ИД экипажа
driver_id Целое ИД водителя
state_type Строка Тип состояния заказа. Может принимать значения:

• "all" — все

• "finished" — выполненные

• "aborted" — прекращенные

state_ids Строка Список состояний заказа через точку с запятой, пример: «1;2;3»
fields Строка Список возвращаемых полей через запятую

Примечание: должен присутствовать хотя бы один параметр из client_id, phone, crew_id, driver_id.

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
id Целое ИД заказа
state_id Целое ИД состояния заказа
crew_id Целое ИД экипажа
prior_crew_id Целое ИД предварительного экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
server_time_offset Целое Смещение относительно серверного времени
start_time ГГГГММДДччммсс Время создания заказа
source_time ГГГГММДДччммсс Время подачи
finish_time ГГГГММДДччммсс Время завершения заказа
source Строка Адрес подачи
source_lat Дробное Широта адреса подачи
source_lon Дробное Долгота адреса подачи
destination Строка Адрес назначения
destination_lat Дробное Широта адреса назначения
destination_lon Дробное Долгота адреса назначения
stops Массив Массив адресов остановок
• address Строка Адрес остановки
• lat Дробное Широта адреса остановки
• lon Дробное Долгота адреса остановки
trip_distance Дробное Фактический километраж
trip_time Целое Фактическое время в пути
customer Строка Заказчик
passenger Строка Пассажир
phone Строка Номер телефона
phone_to_dial Строка Номер телефона для отзвона
client_id Целое ИД клиента
client_name Строка Имя клиента
client_group_id Целое ИД группы клиента
client_group_name Строка Название группы клиента
client_employee_id Целое ИД сотрудника клиента
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе
tariff_id Целое ИД тарифа
car_mark Строка Марка автомобиля
car_model Строка Модель автомобиля
car_color Строка Цвет автомобиля
car_number Строка Гос.номер автомобиля
order_params Массив Массив параметров заказа экипажа. Устарело. Рекомендуется использовать параметр attribute_values. (Возвращается только если в списке фильтра полей fields запросили поле order_params)
Целое ИД параметра заказа
creation_way Строка Способ создания заказа. Может принимать значения:

• "operator" — заказ создан оператором

• "sms" — заказ создан через смс

• "market" — заказ из биржи

• "common_api" — заказ создан через api

• "t_api" — заказ создан через api

• "taxophone" — заказ создан через таксофон с телефона

• "driver" — заказ создан водителем

• "daily_order" — ежедневный заказ

• "taxophone_web" — заказ создан через таксофон с сайта

• "unknown" — неизвестный

is_prior true или false Предварительный заказ
email Строка Email для уведомлений
flight_number Строка Номер рейса
sum Дробное Стоимость заказа без учета скидок (наценок)
total_sum Дробное Итоговая стоимость заказа
cash_sum Дробное Заплачено наличными
cashless_sum Дробное Заплачено с безналичного счета клиента
bonus_sum Дробное Заплачено с бонусного счета клиента
bank_card_sum Дробное Заплачено банковской картой
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»
bill Массив Чек TMDriver. Данный узел выводится только, если по заказу есть чек и если в списке фильтра полей fields запросили поле bill
• code Строка Код элемента расчета
• text Строка Наименование элемента расчета
• value Строка Значение элемента расчета (количество)
• sum Строка Стоимость элемента расчета
is_auction true или false Признак заказа-аукциона
payment_pay_system Строка Тип платежной системы ("card", "gpay", "apple_pay", "qr", "sber_pay", либо пусто, если не используется)

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_finished_orders?start_time=20220405142210&finish_time=20220405142710&fields=state_id,crew_id,prior_crew_id,driver_id,car_id,server_time_offset,start_time,source_time,finish_time,source,source_lat,source_lon,destination,destination_lat,destination_lon,stops,trip_distance,trip_time,customer,passenger,phone,phone_to_dial,client_id,client_name,client_group_id,client_group_name,client_employee_id,order_crew_group_id,tariff_id,order_params,attribute_values,creation_way,is_prior,email,flight_number,sum,total_sum,cash_sum,cashless_sum,bonus_sum,bank_card_sum,car_mark,car_model,car_color,car_number,bill

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":
  {
    "orders":
    [
      {
        "id":47834,
        "state_id":4,
        "crew_id":17,
        "prior_crew_id":0,
        "driver_id":17,
        "car_id":16,
        "server_time_offset":0,
        "start_time":"20220405142418",
        "source_time":"20220405142418",
        "finish_time":"20220405142708",
        "source":"5-Я ЯМСКОГО ПОЛЯ УЛ., 37",
        "source_lat":56.853062,
        "source_lon":53.20715,
        "destination":"ХОДЫНСКАЯ УЛ., 10А",
        "destination_lat":0,
        "destination_lon":0,
        "stops":
        [],
        "trip_distance":10,
        "trip_time":3600,
        "customer":"Client 89872977005",
        "passenger":"",
        "phone":"89872977005",
        "phone_to_dial":"",
        "client_id":43111,
        "client_name":"Client 89872977005",
        "client_group_id":2,
        "client_group_name":"Физические",
        "client_employee_id":0,
        "order_crew_group_id":0,
        "tariff_id":2,
        "order_params":
        [
          28,
          29,
          30,
          55,
          58,
          59,
          62
        ],
        "attribute_values":
        [
          {
            "id":28,
            "num_value":0
          },
          {
            "id":29,
            "num_value":0
          },
          {
            "id":30,
            "num_value":0
          },
          {
            "id":55,
            "num_value":1
          },
          {
            "id":58,
            "num_value":0
          },
          {
            "id":59,
            "num_value":0
          },
          {
            "id":62,
            "num_value":0
          }
        ],
        "creation_way":"operator",
        "is_prior":false,
        "email":"",
        "flight_number":"",
        "sum":100,
        "total_sum":100,
        "cash_sum":50,
        "cashless_sum":40,
        "bonus_sum":10,
        "bank_card_sum":0,
        "car_mark":"Баф",
        "car_model":"Fenix 3346",
        "car_color":"белая",
        "car_number":"а111аа",
        "is_auction":false,
        "payment_pay_system": "qr"
      }
    ]
  }
}

Проведение операции по клиенту

Метод: POST

Название запроса: create_client_operation

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента
sum Дробное Сумма
oper_type Целое Тип операции:

• "receipt" - приход

• "expense" - расход

Необязательные параметры
oper_time ГГГГММДДччммсс Время создания операции (если не указано, текущее)
comment Строка Комментарий
pay_type Целое Тип оплаты:

• "cash" - наличный

• "nocash" - безналичный

bonus_oper true или false Операция по бонусному счёту. Данный параметр устарел - рекомендуется использовать "account_kind"
account_kind Целое Тип счета:
  • 0 - Основной счет
  • 1- Бонусный счет
  • Остальные - нестандартные счета

Специальные возвращаемые коды:

Код Описание
100 Не найден клиент ИД=CLIENT_ID
101 Не найден тип счета ИД=ACCOUNT_KIND

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
oper_id Целое ИД операции

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_client_operation 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: <...>

client_id=112&oper_time=20130221100719&oper_sum=300&oper_type=receipt&pay_type=cash&comment=COMMENT&account_kind=0

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "oper_id":31

  }
}

Запрос операций по клиенту

Метод: GET

Название запроса: get_client_operations

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода
Необязательные параметры
account_kind Целое Тип счета:
  • 0 - Основной счет
  • 1- Бонусный счет
  • Остальные - нестандартные счета

Специальные возвращаемые коды:

Код Описание
100 Не найден клиент ИД=CLIENT_ID
101 Не найден тип счета ИД=ACCOUNT_KIND

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
oper_id Целое ИД операции
oper_time ГГГГММДДччммсс Время создания операции
sum Дробное Сумма
order_id Целое Заказ, связанный с операцией
oper_type Целое Тип операции:

• "receipt" - приход

• "expense" - расход

pay_type Целое Тип оплаты:

• "cash" - наличный

• "nocash" - безналичный

account_kind Целое Тип счета:
  • 0 - Основной счет
  • 1- Бонусный счет
  • Остальные - нестандартные счета
name Строка Наименование
comment Строка Комментарий
cancelled_by_oper_id Целое ИД операции отмены (для отмененной операции)
cancelled_oper_id Целое ИД отмененной операции (для операции отмены)

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_client_operations?client_id=112&start_time=20130201092112&finish_time=20130221092112&account_kind=0 HTTP/1.1
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "operations":[
      {
        "oper_id":111,
        "oper_time":"20130219091328",
        "sum":"21,8",
        "order_id":11800,
        "oper_type":"receipt",
        "pay_type":"cash",
        "account_kind":0,
        "name":"Пополнение счета",
        "comment":"Комментарий",
        "cancelled_by_oper_id":0,
        "cancelled_oper_id":112
      },
      {
        "oper_id":112,
        "oper_time":"20130220112245",
        "sum":"4500",
        "order_id":11801,
        "oper_type":"receipt",
        "pay_type":"cash",
        "account_kind":0,
        "name":"Пополнение счета",
        "comment":"Комментарий"
        "cancelled_by_oper_id":111,
        "cancelled_oper_id":0
      }
    ]
  }
}

Проведение операции по водителю

Метод: POST

Название запроса: create_driver_operation

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД водителя
oper_sum Дробное Сумма
oper_type Строка Тип операции:

• receipt - приход

• expense - расход

Необязательные параметры
name Строка Наименование операции
oper_time ГГГГММДДччммсс Время создания операции (если не задано, текущее)  !! Не используется с ТМ 3.7
comment Строка Комментарий
account_kind Целое ИД типа счета (0 - основной счет), по умолчанию 0

Специальные возвращаемые коды:

Код Описание
100 Водитель не найден ИД=DRIVER_ID
101 Не найден тип счета ИД=ACCOUNT_KIND

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
oper_id Целое ИД операции


Пример:


Запрос:

POST https://ip:port/common_api/1.0/create_driver_operation 
Signature: <...>
Content-Type: application/json
Content-Length: 99

{
   "driver_id": 1,
   "oper_sum": 10.00,
   "oper_type": "receipt",
   "name": "Пополнение счета",
   "oper_time": "20141210100719",
   "comment": "Комментарий к операции"
    "account_kind": 1
}

Ответ:

{
   "code":0,
   "descr":"OK",
   "data":{
   "oper_id":31
   }
}

Запрос операций по водителю

Метод: GET

Название запроса: get_driver_operations

Параметры:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД водителя
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода
Необязательные параметры
account_kind Целое ИД типа счета (0 - основной счет), по умолчанию 0


Специальные возвращаемые коды:

Код Описание
100 Не найден водитель ИД=DRIVER_ID
101 Не найден тип счета ИД=ACCOUNT_KIND


Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
oper_id Целое ИД операции
oper_time ГГГГММДДччммсс Время создания операции
sum Дробное Сумма
order_id Целое Заказ, связанный с операцией
oper_type Целое Тип операции:

•"receipt" - приход

•"expense" - расход

name Строка Наименование
comment Строка Комментарий
account_kind Целое ИД типа счета
cancelled_by_oper_id Целое ИД операции отмены (для отмененной операции)
cancelled_oper_id Целое ИД отмененной операции (для операции отмены)

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_driver_operations?
driver_id=112&start_time=20130201092112&finish_time=20130221092112 
Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "operations":[
      {
        "oper_id":111,
        "oper_time":"20130219091328",
        "sum":"21,8",
        "order_id":11800,
        "oper_type":"receipt",
        "name":"DRIVER_OPERATION_1",
        "comment":"DRIVER_OPERATION_COMMENT_1",
        "account_kind":0,
        "cancelled_by_oper_id":0,
        "cancelled_oper_id":112
      },
      {
        "oper_id":112,
        "oper_time":"20130220112245",
        "sum":"4500",
        "order_id":11801,
        "oper_type":"receipt",
        "name":"DRIVER_OPERATION_2",
        "comment":"DRIVER_OPERATION_COMMENT_2",
        "account_kind":0,
        "cancelled_by_oper_id":111,
        "cancelled_oper_id":0
      }
    ]
  }
}

Назначение динамического приоритета водителю

Метод: POST

Название запроса: create_driver_dyn_priority

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД водителя (должно быть что-то одно: либо driver_id, либо crew_id)
crew_id Целое ИД экипажа (должно быть что-то одно: либо driver_id, либо crew_id)
priority Целое Приоритет
start_time ГГГГММДДччммсс Время начала действия приоритета
finish_time ГГГГММДДччммсс Время окончания действия приоритета
name Строка Наименование приоритета

Специальные возвращаемые коды:

Код Описание
100 Водитель не найден ИД=DRIVER_ID
101 Экипаж не найден ИД=CREW_ID
102 Время начала действия приоритета должно быть меньше времени окончания
103 Время действия приоритета уже истекло

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
dyn_priority_id Целое ИД созданного динамического приоритета

Пример:

Запрос:
POST https://ip:port/common_api/1.0/create_driver_dyn_priority 
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
   "driver_id": 1,
   "priority": 10,
   "start_time": "20150101100000",
   "finish_time": "20150101200000",
   "name": "За выполнение заказа в отдаленный район"
}

Ответ:

{
   "code":0,
   "descr":"OK",
   "data":{
   "dyn_priority_id":123
   }
}

Задание координат экипажей

Метод: POST

Название запроса: set_crews_coords

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
crew_coords Массив Массив координат экипажей
• crew_id Целое ИД экипажа
• gps_id Целое GPS идентификатор (если не задан ИД экипажа). Данный параметр устарел - не применяется, начиная с версии 3.9
• lat Дробное Широта
• lon Дробное Долгота
Необязательные параметры
speed Дробное Скорость
direction Целое Направление движения (0-Север, 90-Восток, 180-Юг, 270-Запад, -1-не задано)


Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет


Пример:

Запрос:

POST https://ip:port/common_api/1.0/set_crews_coords HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "crews_coords":[
    {
      "crew_id":1,
      "lat":11.111111,
      "lon":22.222222,
      "speed":66.66,
      "direction":333
    },
    {
      "gps_id":2,
      "lat":33.333333,
      "lon":44.444444
    }
  ]
}

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Изменение информации по заказу

Метод: POST

Название запроса: update_order

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
order_id Целое ИД заказа
Необязательные параметры
phone Строка, <= 30 символов Номер телефона
source_time ГГГГММДДччммсс Время подачи
is_prior true или false Предварительный заказ
customer Строка Заказчик
passenger Строка Пассажир
comment Строка Комментарий
crew_group_id Целое ИД группы экипажей
client_id Целое ИД клиента
uds_id Целое ИД службы ЕДС
tariff_id Целое ИД тариф
addresses Массив Массив адресов. Первый элемент — адрес

подачи(обязательно), последний — адрес назначения, между ними — остановки.

• address Строка Адрес подачи
• lat Дробное Широта адреса
• lon Дробное Долгота адреса
order_params Массив Массив параметров заказа. Устарело. Рекомендуется использовать параметр attribute_values.
Целое ИД параметра заказа
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»
cost_order Дробное Сумма заказа
state_id Целое ИД состояния заказа
discount_id Целое ИД скидки
auto_select_discount true или false Автоматически подобрать скидку, если не указана явно
auto_select_tariff true или false Автоматически подобрать тариф, если не указан явно
auto_recalc_cost true или false Автоматически пересчитать сумму заказа
auto_update_order_params true или false Автоматически обновить параметры заказа по клиенту и группе клиента
email Строка Email для уведомлений
prior_to_current_before_minutes Целое Время перехода из предварительного в текущие заказы, мин
flight_number Строка Номер рейса
need_custom_validate true или false Использовать специальную проверку перед изменением заказа

Специальные возвращаемые коды:

Код Описание
100 Заказ не найден
101 Состояние заказа не найдено
102 Тариф не найден
103 Скидка не найдена
104 Группа экипажа не найдена
105 Служба не найдена
106 Клиент не найден
107 Изменение состояния не соответствует необходимым условиям
108 Параметр заказа не найден
109 Атрибут не может быть привязан к заказу
110 Ошибка специальной проверки заказа перед изменением. В ответе будет возвращаться:
 "data": {
   "message":"Текст ошибки для пользователя."
 }
111 Недостаточно средств на безналичном счете клиента в ТМ
112 Для клиента запрещена оплата заказа наличными. Клиент должен максимально использовать в заказе безналичную оплату (оплату с основного счета)

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

POST https://ip:port/common_api/1.0/update_order HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
    "order_id": 12105,
    "phone": "555",
    "source_time": "20141216095044",
    "is_prior": true,
    "auto_select_discount": true,
    "auto_select_tariff": true,
    "auto_recalc_cost": true,
    "auto_update_order_params": true,
    "customer": "Заказчик",
    "passenger": "Пассажир",
    "comment": "Комментарий",
    "crew_group_id": 8,
    "client_id": 30,
    "tariff_id": 33,
    "addresses":[
       {"address":"SOURCE","lat":56.896817,"lon":53.147830},       
       {"address":"STOP1","lat":56.845452,"lon":53.226775},
       {"address":"STOP2"}, 
       {"address":"DESTINATION","lat":56.861230,"lon":53.241870}
    ],
    "cost_order": 200,
    "state_id": 55,
    "discount_id": 1,
    "email" : "mail@mail.ru",
    "prior_to_current_before_minutes":30,
    "flight_number":"Number",
    "need_custom_validate":false,
    "attribute_values": [
      {
            "id": 1,
            "bool_value": true
      },
      {
            "id": 2,
            "num_value": 1
      },
      {
            "id": 3,
            "num_value": 10
      },
      {
            "id": 4,
            "str_value": "строка"
      }
  ]
}

Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{}
}

Анализ телефона

Метод: GET

Название запроса: analyze_phone

Параметры:

Параметр Тип Описание
Обязательные параметры
phone Строка Номер телефона
Необязательные параметры
search_in_drivers_mobile true или false Искать среди телефонов водителей
search_in_clients true или false Искать среди телефонов клиентов
search_in_phones true или false Искать в справочнике телефонов


Если параметры search_in_drivers_mobile, search_in_clients, search_in_phones не заданы, то поиск телефона будет происходить во всех справочниках.

Специальные возвращаемые коды:

Код Описание
100 Телефон не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
phone_type Строка Может принимать значения: «driver_mobile», «client», «phone».
id Целое ИД водителя, клиента, телефона из справочника.
client_employee_id Целое ИД сотрудника клиента (если телефон найден среди телефонов клиента)


Пример:

Запрос:

GET /common_api/1.0/analyze_phone?
phone=89501234567&search_in_drivers_mobile=true&search_in_drivers_home=true&search_in_clients=true&
search_in_phones=true 

Host: 127.0.0.1:8089
Keep-Alive: 300
Connection: keep-alive
Signature: 4285286a446064353f4a951b721c54f7

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
  "phone_type":"client",
  "id":1
  "client_employee_id":2
   }
}

Показать сообщение в ТМ

Метод: POST

Название запроса: show_tm_message

Параметры:

Параметр Тип Описание
Обязательные параметры
text Строка Текст сообщения
Необязательные параметры
type Строка Тип сообщения ("warning", "error", "information", "confirmation"), по умолчанию "information"
header Строка Заголовок сообщения
timeout Целое Скрывать сообщение через, сек. (0 — не скрывать)
users Массив Массив пользователей (если не указаны — отправлять всем)
Целое ИД пользователя
color Строка Цвет уведомления в формате RGB: #FFFFFF
order_id Целое ИД заказа для кнопки открытия карточки в уведомлении
car_id Целое ИД автомобиля для кнопки открытия карточки в уведомлении
driver_id Целое ИД водителя для кнопки открытия карточки в уведомлении
crew_id Целое ИД экипажа для кнопки открытия карточки в уведомлении
client_id Целое ИД клиента для кнопки открытия карточки в уведомлении


Специальные возвращаемые коды:

Код Описание
100 Пользователи для отправки сообщения не найдены


Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:


Запрос:

POST https://ip:port/common_api/1.0/show_tm_message HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
    "text": "Текст сообщения",
    "type": "warning",
    "users": [
        1,
        2,
        3
    ],
    "header": "Заголовок",
    "timeout": 12,
    "color":"#FFFF80",
    "car_id":55
}


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Запрос списка купленных смен водителей

Метод: GET

Название запроса: get_driver_shifts

Параметры:

Параметр Тип Описание
Обязательные параметры
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода
Необязательные параметры
driver_id Целое ИД водителя
new_shifts true или false Включить в ответ новые смены (по умолчанию true)
in_work_shifts true или false Включить в ответ смены в работе (по умолчанию true)
finished_shifts true или false Включить в ответ выполненные смены (по умолчанию true)
failed_shifts true или false Включить в ответ неуспешно завершенные смены (по умолчанию true)
returned_shifts true или false Включить в ответ возвращенные смены (по умолчанию false)

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
shifts Массив Массив купленных смен
• shift_id Целое ИД купленной смены
• driver_id Целое ИД водителя
•driver_name Строка ФИО водителя
• plan_shift_id Строка ИД запланированной смены
• plan_shift_name Строка Наименование запланированной смены
• plan_shift_cost Дробное Цена смены
• plan_shift_type Строка Тип смены («limited» - срочная, «unlimited» - бессрочная)
• plan_shift_start_time ГГГГММДДччммсс План-начало смены (для срочных)
• plan_shift_finish_time ГГГГММДДччммсс План-конец смены (для срочных)
• plan_shift_length Целое План продолжительность смены, ч. (для бессрочных)
• plan_shift_crew_group_id Целое ИД первой группы экипажей, которая может купить смену
• plan_shift_crew_groups Массив ИД групп экипажей, которые могут купить смену
• shift_state Строка Состояние смены («new» - новая, «in_work» - в работе, «finished» - завершена успешно, «failed» - завершена неуспешно)
• buy_time ГГГГММДДччммсс Время продажи смены водителю
• is_returned true или false Признак возвращенной смены
• return_time ГГГГММДДччммсс Время возврата смены
• orders_count Целое Количество заказов, выполненных водителем за смену
• orders_sum Дробное Сумма заказов, выполненных водителем за смену
• fact_length Дробное Фактическая продолжительность смены, ч.

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_driver_shifts?start_time=20140101101010&finish_time=20140101202020 
Signature: <...>


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "shifts":[
      {
        "shift_id":1,
        "driver_id":1,
        "driver_name":"DRIVER_1",
        "plan_shift_id":1,
        "plan_shift_name":"PLAN_SHIFT_1",
        "plan_shift_cost":100,
        "plan_shift_type":"limited",
        "plan_shift_start_time":"20140101101010",
        "plan_shift_finish_time":"20140101101010",
        "plan_shift_length":null,
        "plan_shift_crew_group_id":1,
        "shift_state":new,
        "buy_time":"20140101101010",
        "is_returned":false,
        "return_time":null,
        "orders_count":10,
        "orders_sum":1000,
        "fact_length":1.2
      },
      {
        "shift_id":2,
        "driver_id":2,
        "driver_name":"DRIVER_2",
        "plan_shift_id":2,
        "plan_shift_name":"PLAN_SHIFT_2",
        "plan_shift_cost":200,
        "plan_shift_type":"unlimited",
        "plan_shift_start_time":null,
        "plan_shift_finish_time":null,
        "plan_shift_length":8,
        "plan_shift_crew_group_id":null,
        "shift_state":new,
        "buy_time":"20140101101010",
        "is_returned":true,
        "return_time":"20140101101010",
        "orders_count":0,
        "orders_sum":0,
        "fact_length":0
      }
    ]
  }
}

Запрос списка запланированных смен водителей

Метод: GET

Название запроса: get_driver_plan_shifts

Параметры:

Параметр Тип Описание
Обязательные параметры
start_time ГГГГММДДччммсс Начало периода (если включаем в ответ срочные смены)
finish_time ГГГГММДДччммсс Конец периода (если включаем в ответ срочные смены)
Необязательные параметры
limited_shifts true или false Включить в ответ срочные смены (по умолчанию true)
unlimited_shifts true или false Включить в ответ бессрочные смены (по умолчанию true)

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
plan_shifts Массив Массив запланированных смен
• plan_shift_id Целое ИД запланированной смены
• plan_shift_name Строка Наименование запланированной смены
• plan_shift_comment Строка Комментарий запланированной смены
• plan_shift_cost Дробное Цена смены
• plan_shift_type Строка Тип смены («limited» - срочная, «unlimited» - бессрочная)
• plan_shift_start_time ГГГГММДДччммсс План-начало смены (для срочных)
• plan_shift_finish_time ГГГГММДДччммсс План-конец смены (для срочных)
• plan_shift_length Целое План продолжительность смены, ч. (для бессрочных)
• plan_shift_crew_group_id Целое ИД первой группы экипажей, которая может купить смену
• plan_shift_crew_groups Массив ИД групп экипажей, которые могут купить смену
• max_sell_count Целое Максимальное количество продаж смены
• sold_count Целое Количество продаж смены

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020 
Signature: <...>


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "plan_shifts":[
      {
        "plan_shift_id":1,
        "plan_shift_name":"PLAN_SHIFT_1",
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_1",
        "plan_shift_cost":100,
        "plan_shift_type":"limited",
        "plan_shift_start_time":"20140101101010",
        "plan_shift_finish_time":"20140101101010",
        "plan_shift_length":null,
        "plan_shift_crew_group_id":1,
        "max_sell_count":100,
        "sold_count":10
      },
      {
        "plan_shift_id":2,
        "plan_shift_name":"PLAN_SHIFT_2",
        "plan_shift_comment":"PLAN_SHIFT_COMMENT_2",
        "plan_shift_cost":200,
        "plan_shift_type":"unlimited",
        "plan_shift_start_time":null,
        "plan_shift_finish_time":null,
        "plan_shift_length":8,
        "plan_shift_crew_group_id":2,
        "max_sell_count":200,
        "sold_count":20
      }
    ]
  }
}

Продажа смены водителю

Метод: POST

Название запроса: driver_buy_shift

Параметры:

Параметр Тип Описание
Обязательные параметры
crew_id Целое ИД экипажа
plan_shift_id Целое ИД запланированной смены

Специальные возвращаемые коды:

Код Описание
100 Запланированная смена не найдена
101 Экипаж не найден
102 Водитель не найден
103 Недостаточно денег на счете водителя
104 Водитель уволен либо заблокирован
105 Запланированная смена устарела
106 Не подходит группа экипажа
107 Превышено максимальное число покупок смены
108 Повторная покупка смены
109 Экипажу не назначен атрибут для доступа к смене


Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:

POST https://ip:port/common_api/1.0/driver_buy_shift 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
crew_id=1&plan_shift_id=1


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Сохранение отзыва клиента

Метод: POST

Название запроса: save_client_feed_back

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
phone Строка Телефон
rating Целое Рейтинг (от 1 до 5)
text Строка Текстовый отзыв
Необязательные параметры
order_id Целое ИД заказа
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Допускается указывать либо параметр rating либо text, либо оба параметра.

Специальные возвращаемые коды: нет.

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:
POST /common_api/1.0/save_client_feed_back 
Host: 127.0.0.1:8090
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/json
Content-Length: 72
Signature: <...>

{
  "phone":"89123456789",
  "rating":4,
  "text":"test feedback",
  "order_id":100
}
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{}
}

Поиск экипажей по координатам

Метод: GET

Название запроса: find_crews_by_coords

Параметры:

Параметр Тип Описание
Обязательные параметры
lat Дробное Широта точки центра поиска
lon Дробное Долгота точки центра поиска
radius Дробное Радиус поиска, км или мили
Необязательные параметры
crews_without_coords true или false Искать экипажи без реальных координат по координатам стоянок
crews_release_in Целое Допустимое время до освобождения в зоне поиска, если надо возвращать занятые экипажи (если 0, то искать только свободные экипажи), мин
crew_group_id Целое ИД группы экипажей, заказы из которой должны видеть подходящие экипажи
uds_id Целое ИД службы ЕДС, к которой должны принадлежать подходящие экипажи
attributes Строка Список ИД атрибутов заказа, которыми должны обладать подходящие экипажи (через точку с запятой, пример: «1;2;3»). Устарело. Рекомендуется использовать параметр attribute_values.
attribute_values Массив Массив значений атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
waiting_count Целое Количество свободных экипажей в зоне поиска
on_order_count Целое Количество занятых экипажей, освобождающихся в зоне поиска

Пример:

Запрос:
GET https://ip:port/common_api/1.0/find_crews_by_coords?
lat=11.111111&lon=22.222222&radius=2&crews_release_in=5 
Signature: <...>
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
  "waiting_count":5,
  "on_order_count":2
  }
}

Подбор тарифа для заказа

Метод: POST

Название запроса: select_tariff_for_order

Параметры в формате JSON:

Параметр Тип Описание
Необязательные параметры
client_id Целое ИД клиента
crew_group_id Целое ИД группы экипажей
uds_id Целое ИД службы ЕДС
source_time ГГГГММДДччммсс Время подачи
is_prize true или false Призовой заказ
addresses Массив Массив координат адресов. Первый элемент — адрес подачи,

последний — адрес назначения, между ними — остановки. Заполняется если определены координаты всех адресов.

• lon Дробное Долгота адреса
• lat Дробное Широта адреса

Специальные возвращаемые коды:

Код Описание
100 Клиент не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
tariff_id Целое Тариф

Пример:

Запрос:
POST https://ip:port/common_api/1.0/select_tariff_for_order 
Signature: <...>
Content-Type: application/json
Content-Length: <...>
{
  "client_id":1,
  "crew_group_id":2,
  "source_time":"20160101100000",
  "is_prize":true
 "addresses": [
      {
            "lat": 11.111111,
            "lon": 22.222222
      },
      {
            "lat": 33.333333,
            "lon": 44.444444
 }
}
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
  "tariff_id":2
 }
}

Импорт марок автомобилей в БД

Метод: POST

Название запроса: import_car_marks

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
marks Массив строк Импортируемые марки автомобилей

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/import_car_marks 
Signature: <...> 
Content-Type: application/json 
Content-Length: <...> 
{
  "marks": [
    "Mercedes",
    "BMW"
  ]
 } 

Ответ:

 {
  "code":0,
  "descr":"OK",
  "data":{}
 }

Импорт цветов автомобилей в БД

Метод: POST

Название запроса: import_car_colors

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
colors Массив строк Импортируемые цвета автомобилей

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/import_car_colors 
Signature: <...> 
Content-Type: application/json 
Content-Length: <...>

 {
  "colors": [
    "красный",
    "синий"
  ]
 }

 Ответ:

 {
  "code":0,
  "descr":"OK",
  "data":{}
 }

Запрос информации по сотруднику клиента

Метод: GET

Название запроса: get_client_employee_info

Параметры:

Параметр Тип Описание
Обязательные параметры
client_employee_id Целое ИД сотрудника клиента

Специальные возвращаемые коды:

Код Описание
100 Не найден сотрудник клиента ИД=CLIENT_EMPLOYEE_ID

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
client_employee_id Целое ИД сотрудника
client_id Целое ИД клиента
name Строка ФИО сотрудника
is_deleted true или false Признак удаленного сотрудника
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
default_crew_group Целое Группа экипажей по умолчанию
phones Массив Массив телефонов сотрудника клиента
• phone Строка Номер телефона сотрудника

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_client_employee_info?client_employee_id=10 
Signature: <...> 

Ответ:

 {
  "code":0,
  "descr":"OK",
  "data":{
     "client_employee_id":5,
    "client_id":1,
    "name":"Иванов Иван",
    "is_deleted":false,
    "email":"mail@mail.ru",
    "use_email_informing":true,
    "default_crew_group":1,
    "phones":[
      {
        "phone":"88"
      },
      {
        "phone":"99"
      }
    ]
  }
 }

Создание сотрудника клиента

Метод: POST

Название запроса: create_client_employee

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
client_id Целое ИД клиента
name Строка ФИО сотрудника
Необязательные параметры
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
phones Массив Массив телефонов сотрудника
• phone Строка Номер телефона

Специальные возвращаемые коды:

Код Описание
100 Клиент с ИД=CLIENT_ID не найден
101 Клиент с ИД=ID имеет такой же номер телефона=PHONE

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/create_client_employee 
Signature: <...> 
Content-Type: application/json 
Content-Length: 104

{
  "client_id":10
  "name":"Иванов Иван",
  "email":"mail@mail.ru",
  "use_email_informing":true,
  "phones":[
    {
      "phone":"79999999999",
    },
    {
      "phone":"79999999999",
    }
  ]
 }

 Ответ:
 {
  "code":0,
  "descr":"OK",
  "data":{}
 }

Обновление информации о сотруднике клиента

Метод: POST

Название запроса: update_client_employee_info

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
client_employee_id Целое ИД редактируемого сотрудника клиента
Необязательные параметры
name Строка ФИО сотрудника
is_deleted true или false Признак удаленного сотрудника
email Строка E-mail
use_email_informing true или false Использовать E-mail для отправки уведомлений по заказу
phones Массив Массив телефонов сотрудника
• phone Строка Номер телефона

Примечание: запрещено редактировать телефоны удаленного сотрудника.


Специальные возвращаемые коды:

Код Описание
100 Сотрудник с ИД=CLIENT_EMPLOYEE_ID не найден
101 Клиент с ИД=ID имеет такой же номер телефона=PHONE
102 Запрещено редактирование телефонов удаленного сотрудника

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос: 

POST https://ip:port/common_api/1.0/update_client_employee_info 
Signature: <...> 
Content-Type: application/json
Content-Length: 104

{
  "client_employee_id":10
  "name":"Иванов Иван",
  "is_deleted":false,
  "email":"mail@mail.ru",
  "use_email_informing":true,
  "phones":[
    {
      "phone":"79999999999",
    },
    {
      "phone":"79999999999",
    }
  ]
 } 

Ответ:
 {
  "code":0,
  "descr":"OK",
  "data":{}
 }

Запрос списка состояний заказа

Метод: GET

Название запроса: get_order_states_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_params Массив Список параметров заказа
• id Целое ИД параметра
• name Строка Название параметра
• state_type Строка Тип состояния. Может принимать значения:

• "accepted" — заказ принят

• "in_work" — заказ в работе

• "finished" — заказ выполнен

• "aborted" — заказ прекращен

Пример:

Запрос:


GET https://ip:port/common_api/1.0/get_order_states_list 

Signature: <...>

Ответ:


{
 "code":0,
 "descr":"OK",
 "data":{
 "order_params":[
     {
      "id":1,
      "name":"Принят",
      "state_type":"accepted"
     },
     {
      "id":2,
      "name":"В работе",
      "state_type":"in_work"
      },
     ...
                ]
        }
}

Запрос списка состояний экипажа

Метод: GET

Название запроса: get_crew_states_list

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
order_params Массив Список параметров заказа
• id Целое ИД параметра
• name Строка Название параметра
• state_type Строка Тип состояния. Может принимать значения:

• "waiting" — экипаж свободен

• "not_available" — экипаж не на линии

• "on_order" — экипаж на заказе

• "on_break" — экипаж на перерыве

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_crew_states_list 
Signature: <...>

Ответ:
{
 "code":0,
 "descr":"OK",
 "data":{
 "order_params":[
         {
          "id":1,
          "name":"Свободен",
          "state_type":"waiting"
         },
         {
          "id":2,
          "name":"Не работает",
          "state_type":"not_available"
         },
         ...
               ]
        }
}


Запрос глобальных атрибутов

Метод: GET

Название запроса: get_global_attributes

Версия ТМ: 3.9

Параметры: нет

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
attribute_values Массив Массив значений глобальных атрибутов
• id Целое Идентификатор атрибута
• bool_value true или false Значение, если тип атрибута «Логический»
• num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
• str_value Строка Значение, если тип атрибута «Строка»

Пример:

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

GET https://ip:port/common_api/1.0/get_global_attributes

Пример ответа:

{
  "code":0,
  "descr":"OK",
  "data":{
    "global_attributes":[
      {
        "id":123,
        "bool_value":true
      },
      {
        "id":124,
        "num_value":314
      },
      {
        "id":125,
        "str_value": "AAA"
      }
    ]
  }
}

Изменение глобального атрибута

Метод: POST

Название запроса: update_global_attribute

Версия ТМ: 3.9

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
id Целое ИД изменяемого атрибута
Необязательные параметры
bool_value true или false Значение, если тип атрибута «Логический»
num_value Дробное Значение, если тип атрибута:
  • «Число» (непосредственное значение)
  • «Число (выбор из списка)» (непосредственное значение выбранного элемента списка)
  • «Перечисляемый» (значение выбранного элемента перечисления)
  • «Дата» и «Дата/время» (Unix-время, всегда целое число)
str_value Строка Значение, если тип атрибута «Строка»

Специальные возвращаемые коды:

Код Описание
100 Атрибут не найден
101 Атрибут не глобальный

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

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

POST https://ip:port/common_api/1.0/update_global_attribute HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "id": 12,
  "bool_value": true
}

Пример ответа:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Создание резервирования автомобиля

Метод: POST

Название запроса: create_car_reservation

Версия ТМ: 3.9.46

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
car_id Целое ИД автомобиля
driver_id Целое ИД водителя
car_reservation_type_id Целое ИД типа резервирования
start_time ГГГГММДД

или

ГГГГММДДччммсс

Дата или дата/время начала.

Если указывается дата без времени, то планируемое время начала резервирования устанавливается исходя из времени начала, указанного в соответствующем типе резервирования

Необязательные параметры
finish_time ГГГГММДДччммсс Время окончания резервирования. Если не указано, рассчитывается на основании времени планируемого начала резервирования и продолжительности резервирования, указанного в соответствующем типе резервирования
comment Строка Комментарий

Специальные возвращаемые коды:

Код Описание
100 Не найден автомобиль
101 Не найден водитель
102 Не найден тип резервирования
103 Время начала резервирования должно быть меньше времени завершения
104 Автомобиль уже зарезервирован в указанный период времени
105 Водитель уже имеет зарезервированный автомобиль в указанный период времени

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
car_reservation_id Целое ИД резервирования
Пример запроса:

POST https://ip:port/common_api/1.0/create_car_reservation HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "car_id": 1,
  "driver_id": 1,
  "car_reservation_type_id": 1,
  "start_date": "20201231",
  "comment": "COMMENT" 
}

Пример ответа:

{
  "code": 0,
  "descr": "OK",
  "data": {
    "car_reservation_id": 5
  }
}

Создание недоступности автомобиля

Метод: POST

Название запроса: create_car_inaccessibility

Версия ТМ: 3.9.46

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
car_id Целое ИД автомобиля
car_inaccessibility_type_id Целое ИД типа недоступности
start_time ГГГГММДДччммсс Время начала
Необязательные параметры
finish_time ГГГГММДДччммсс Время завершения
comment Строка Комментарий

Специальные возвращаемые коды:

Код Описание
100 Не найден автомобиль
101 Не найден тип недоступности
102 Время начала недоступности должно быть меньше времени завершения

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
car_inaccessibility_id Целое ИД недоступности
Пример запроса:

POST https://ip:port/common_api/1.0/create_car_inaccessibility HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "car_id": 1,
  "car_inaccesibility_type_id": 1,
  "start_time": "20201231235959",
  "finish_time": "20210101050000",
  "comment": "COMMENT" 
}

Пример ответа:

{
  "code": 0,
  "descr": "OK",
  "data": {
    "car_inaccessibility_id": 5
  }
}

Вызвать системное событие

Метод: POST

Название запроса: run_system_event

Версия ТМ: 3.10

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
system_event_id Целое ИД системного события с типом "По запросу CommonAPI"
Необязательные параметры
Произвольный параметр любой В запросе можно передавать дополнительные произвольные параметры с любыми названиями и значениями. Эти параметры могут использоваться в системном событии.

Специальные возвращаемые коды:

Код Описание
100 У системного события тип не "По запросу CommonAPI"
101 Системное событие не найдено
102 Системное событие не активно

Возвращаемые данные в случае успешного выполнения запроса: нет.

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

POST https://ip:port/common_api/1.0/run_system_event HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "system_event_id": 123,
  "custom_param_1": true
  "custom_param_2": 123,
  "custom_param_3": 123.45,
  "custom_param_4": "aaa" 
}

Пример ответа:

{
  "code":0,
  "descr":"OK",
  "data":{}
}

Проверить штраф клиента за отмену заказа

Метод: GET

Название запроса: check_cancel_order_penalty

Версия ТМ: 3.11

Параметры в формате JSON:

Параметр Тип Описание
Обязательные параметры
order_id Целое ИД заказа
cancel_order_state_id Целое ИД состояния заказа, в которое переходит заказ при отмене

Специальные возвращаемые коды:

Код Описание
100 Не найден заказ ИД=order_id
101 Не найдено состояние заказа ИД=cancel_order_state_id
102 Состояние заказа не соответствует необходимым условиям

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
cancel_order_penalty_sum Дробное Величина штрафа, которая будет начислена клиенту в случае отмены заказа или 0, если штрафа нет


Пример запроса:
GET https://ip:port/common_api/1.0/check_cancel_order_penalty?order_id=12345&cancel_order_state_id=12 HTTP/1.1
Signature: <...>

Пример ответа:
{
  "code":0,
  "descr":"OK",
  "data":{
    "cancel_order_penalty_sum":350
  }
}


Запрос трека экипажа

Метод: GET

Название запроса: get_crew_track

Версия ТМ: 3.11

Параметры:

Параметр Тип Описание
Обязательные параметры
crew_id Целое ИД экипажа
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода, должен отличаться о начала периода не более чем на 7 дней

Специальные возвращаемые коды:

Код Описание
100 Не найден экипаж ИД=crew_id
101 Задан период времени более 7 дней

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
track Массив Массив, трек экипажа за период времени
• lat Дробное Широта точки маршрута
• lon Дробное Долгота точки маршрута
• time ГГГГММДДччммсс Время данной точки
• speed Целое Скорость в данный момент, км/ч
• direction Целое Направление движения, градусы (0 - север, 90 - восток, 180 - юг, 270 - запад)


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

GET https://ip:port/common_api/1.0/get_crew_track?crew_id=1&start_time=20210911120000&finish_time=20210911130000 HTTP/1.1
Signature: <...>

Пример ответа:

{
  "code":0,
  "descr":"OK",
  "data":{
    "track": [
      {
        "lat": 11.111111,
        "lon": 22.222222,
        "time": "20210911120000",
        "speed": 123,
        "direction": 0
      }
    ]
  }
}

Создание фиксированной смены водителя

Метод: POST

Название запроса: create_fixed_driver_shift

Версия ТМ: 3.12

Параметры:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД водителя
start_time ГГГГММДДччммсс Время начала
finish_time ГГГГММДДччммсс Время завершения

Специальные возвращаемые коды:

Код Описание
100 Не найден водитель
101 Время начала фиксированной смены должно быть меньше времени завершения
102 Создаваемая смена пересекается по времени с уже существующей сменой данного водителя

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
fixed_driver_shift_id Целое ИД фиксированной смены

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_fixed_driver_shift HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "driver_id": 1,
  "start_time": "20201231235959",
  "finish_time": "20210101050000"
}

Ответ:

{
  "code": 0,
  "descr": "OK",
  "data": {
    "fixed_driver_shift_id": 5
  }
}

Удаление фиксированной смены водителя

Метод: POST

Название запроса: delete_fixed_driver_shift

Версия ТМ: 3.12

Параметры:

Параметр Тип Описание
Обязательные параметры
fixed_driver_shift_id Целое ИД фиксированной смены водителя

Специальные возвращаемые коды:

Код Описание
100 Фиксированная смена водителя не найдена

Возвращаемые данные в случае успешного выполнения запроса: нет.

Пример:

Запрос:

POST https://ip:port/common_api/1.0/delete_fixed_driver_shift HTTP/1.1
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: <...>

fixed_driver_shift_id=1

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{}
}


Создание путевого листа

Метод: POST

Название запроса: create_way_bill

Версия ТМ: 3.14

Параметры:

Параметр Тип Описание
Обязательные параметры
start_time ГГГГММДДччммсс Время начала
finish_time ГГГГММДДччммсс Время завершения
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
Необязательные параметры
number Строка Номер путевого листа
comment Строка Комментарий

Специальные возвращаемые коды:

Код Описание
100 Нет лицензии на использование путевых листов
101 Не найден водитель
102 Не найден автомобиль

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
way_bill_id Целое ИД созданного путевого листа

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_way_bill HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "number": "api_123",
  "start_time": "20230508000000",
  "finish_time": "20230509000000",
  "driver_id": 123,
  "car_id": 123,
  "comment": "Комментарий"
}

Ответ:

{
  "code": 0,
  "descr": "OK",
  "data": {
    "way_bill_id": 5
  }
}

Создание осмотра по путевому листу

Метод: POST

Название запроса: create_way_bill_check

Версия ТМ: 3.14

Параметры:

Параметр Тип Описание
Обязательные параметры
way_bill_id Целое ИД путевого листа (должен быть задан либо ИД либо номер)
way_bill_number Строка Номер путевого листа (должен быть задан либо ИД либо номер)
kind Строка Тип осмотра ("med/tech")
user_name Строка Имя пользователя
success true или false Результат осмотра
Необязательные параметры
number Строка Номер осмотра
comment Строка Комментарий

Специальные возвращаемые коды:

Код Описание
100 Нет лицензии на использование путевых листов
101 Не найден путевой лист

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_way_bill_check HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: <...>

{
  "way_bill_id": 123,
  "number": "api_med_123",
  "kind": "med",
  "user_name": "Имя",
  "success": true,
  "comment": "Комментарий"
}

Ответ:

{
  "code": 0,
  "descr": "OK",
  "data": {}
}

Описание протокола TMTAPI Версия 1.0

Общее описание протокола

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

TM API принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TM API, должно идти название API (tm_tapi) и версия API.

Пример:

GET https://ip:port/tm_tapi/1.0/get_info_by_phone 

Для получения данных из БД используются запросы типа GET. Для записи данных в БД используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI.

Пример:

GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE-PHONE_
TO_DIAL&signature=661ce071eeefcb4f7fc8bc1f17bd520b 

В запросе типа POST параметры передаются в теле запроса в формате application/x-www-form- urlencoded.

Пример:

POST https://ip:port/tm_tapi/1.0/change_order_state 
Content-Type: application/x-www-form-urlencoded
Content-Length: 71

order_id=98798&need_state=12&signature=a204c50c7e48f0c6849a87485fe5e171

В любом запросе обязательно с другими полями должно передаваться поле signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMAPI в Такси-Мастер.

Пример:

Запрос:
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE
&signature=ef17ea682d09e452af544a5758dba396 

Секретный ключ:
321

Signature = MD5("phone=89058800565&fields=PHONE_TYPE" + "321") = ef17ea682d09e452af544a5758dba396

Формат ответа

TM API всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате XML. Общий вид возвращаемого результата:

<response>
<code>Числовой код результата</code>
<descr>Строковое описание результата</descr>
<data>Дополнительная информация</data>
</response>

Существуют общие для всех запросов коды результатов:

Код Описание
0 Успешное выполнение запроса
1 Неизвестная ошибка
2 Неизвестный тип API
3 API отключено в настройках модуля TM API в Такси-Мастер
4 Не совпадает секретный ключ
5 Неподдерживаемая версия API
6 Неизвестное название запроса
7 Неверный тип запроса GET
8 Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
9 Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
10 Внутренняя ошибка обработки запроса

Описание запросов

Запрос информации по номеру телефона

Метод: GET

Название запроса: get_info_by_phone

Параметры:

Параметр Тип Описание
Обязательные параметры
PHONE Строка, <= 16 символов Номер телефона
FIELDS Строка Список полей, которые необходимо вернуть. Поля перечисляются через символ "-"
signature Строка Поле для проверки секретного ключа.

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.

Параметр Тип Описание
PHONE_TYPE Целое Тип телефона звонящего:

1 - если звонит водитель с основного телефона;

2 - если звонит физическое лицо;

3 - если звонит юридическое лицо;

4 - если звонит номер из справочника Телефоны;

5 - если звонит водитель с неосновного телефона;

6 - если звонит ЦОЗ водитель;

0 - неизвестный номер.

PHONE_TO_DIAL Строка, <= 16 символов Номер телефона для отзвона по заказу
CREW_ID Целое ИД экипажа
IS_PRIOR 0 или 1 (false или true) Признак предварительного заказа
IS_PRIZE 0 или 1 (false или true) Признак призового заказа
ORDER_CLIENT_ID Целое ИД клиента из заказа
DRIVER_PHONE Строка, <= 16 символов Номер телефона водителя
CREW_SYSTEMSTATE Целое Состояние экипажа
CLIENT_ID Целое ИД клиента
CLIENT_TYPE Целое Тип клиента
CATEGORYID Целое ИД категории телефона
PHONE_SYSTEM_CATEGORY Целое Системное значение категории телефона (0 - обычный, 1 - черный, 2 - белый, 3 - серый)
ORDER_ID Целое ИД заказа
DRIVER_ID Целое ИД водителя
ORDER_STATE Целое Состояние заказа
DRIVER_REMAINDER Дробное Баланс счета водителя
DISCOUNTEDSUMM Строка Сумма заказа с учетом всех скидок
CREW_GROUP_ID Целое ИД группы экипажа (если в заказе указан экипаж, то берется ИД группы экипажа, если нет — из карты заказа)
FIRST_CREW_GROUP_ID Целое ИД первой группы экипажа
CLIENT_BALANCE Дробное Баланс клиента
DRIVER_TIMECOUNT Целое Время пути водителя до адреса подачи в минутах
SOURCE_TIMECOUNT Целое Время оставшееся до подачи в минутах
GOSNUMBER Строка Государственный номер автомобиля
CAR_COLOR Строка Цвет автомобиля
CAR_MARK Строка Марка автомобиля
ORDER_COORDS Строка Координаты места подачи. Порядок координат: долгота адреса, широта адреса.
CREW_COORDS Строка Координаты назначенного экипажа. Порядок координат: долгота адреса, широта адреса.
MARKET_TYPE Целое Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
ORDERS_COUNT Целое Для телефона клиента — количество текущих и предварительных заказов по телефону; для телефона водителя — количество текущих заказов, на которые назначен данный водитель
CLIENT_GROUP_ID Целое ИД группы клиента
CLIENT_BONUS_BALANCE Дробное Бонусный баланс клиента
AD_LIGHTHOUSE Строка Признак наличия шашек. Пустая строка – номер клиента или водителя без экипажа. 1 – есть шашки, 0 – нет шашек.
CREW_STATE Целое Состояние экипажа.
SOURCE_TIME ГГГГММДДччммсс Дата и время подачи
DRV_SHIFT_START_TIME ГГГГММДДччммсс Начало фактической смены водителя
START_USER_SIP_ACCOUNTS Строка Список логинов SIP–аккаунтов пользователя, принявшего заказ
CREATION_WAY Строка Способ создания заказа (operator, sms, market, common_api, t_api, taxophone, driver, daily_order, taxophone_web, unknown)
CREATOR_TAXI_PHONE Строка Телефон службы-создателя для заказов, принятых из ЦОЗ
PERFORMER_TAXI_PHONE Строка Телефон службы-исполнителя для заказов, отданных в ЦОЗ
CLIENT_IS_LOCKED 0 или 1 (false или true) Признак блокировки клиента

Пример:

Запрос:
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565l&fields=PHONE_TYPE-PHONE_
TO_DIAL-CREW_ID-ORDER_ID&signature=d35ab2765f2968d48c096d5f5327db26 

Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <PHONE_TYPE>0</PHONE_TYPE>
    <PHONE_TO_DIAL></PHONE_TO_DIAL>
    <CREW_ID>3</CREW_ID>
    <ORDER_ID>6</ORDER_ID>
    <SOURCE_TIME>20140929134911</SOURCE_TIME>
    <DRV_SHIFT_START_TIME>20141007105050</DRV_SHIFT_START_TIME>
  </data>
</response>

Запрос информации по ИД заказа

Метод: GET

Название запроса: get_info_by_order_id

Параметры:

Параметр Тип Описание
Обязательные параметры
ORDER_ID Целое ИД заказа
FIELDS Строка Список полей, которые необходимо вернуть. Поля перечисляются через символ "-"
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.

Параметр Тип Описание
DRIVER_TIMECOUNT Строка, <= 16 символов Время до подачи в минутах, указанное водителем
CAR_MARK Строка Марка автомобиля
CAR_COLOR Строка Цвет автомобиля
GOSNUMBER Строка Государственный номер автомобиля
CREW_GROUP_ID Целое ИД группы экипажа (значение из карты заказа)
FIRST_CREW_GROUP_ID Целое ИД первой группы экипажа
IS_PRIOR 0 или 1 (false или true) Признак предварительного заказа
IS_PRIZE 0 или 1 (false или true) Признак призового заказа
DISCOUNTEDSUMM Строка Сумма заказа с учетом всех скидок
DRIVER_PHONE Строка, <= 16 символов Номер телефона водителя
CATEGORYID Целое ИД категории телефона
SOURCE_TIMECOUNT Целое Время до подачи в минутах
ORDER_COORDS Строка Координаты места подачи. Порядок координат: долгота адреса, широта адреса.
CREW_COORDS Строка Координаты назначенного экипажа. Порядок координат: долгота адреса, широта адреса.
ORDER_STATE Целое ИД состояния заказа
MARKET_TYPE Целое Тип биржи заказов (3 — ЦОЗ).
AD_LIGHTHOUSE Строка Признак наличия шашек (1 – шашки есть, 0 – шашек нет).
CREW_STATE Целое Состояние экипажа
SOURCE_TIME ГГГГММДДччммсс Дата и время подачи
START_USER_SIP_ACCOUNTS Строка Список логинов SIP–аккаунтов пользователя, принявшего заказ
ORDER_PARAMS Целое Список ИД параметров заказа
CREATION_WAY Строка Способ создания заказа (operator, sms, market, common_api, t_api, taxophone, driver, daily_order, taxophone_web, unknown)
CREATOR_TAXI_PHONE Строка Телефон службы-создателя для заказов, принятых из ЦОЗ
PERFORMER_TAXI_PHONE Строка Телефон службы-исполнителя для заказов, отданных в ЦОЗ

Пример:

Запрос:

GET https://ip:port/tm_tapi/1.0/get_info_by_order_id?order_id=60&fields=DRIVER_SOURCETIME-MARKCOLOR-
GOSNUMBER-IS_PRIOR-MOBILE_PHONE-SOURCE_TIME&signature=fdcd04e570443b56176b83f44748dc23


Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <DRIVER_SOURCETIME></DRIVER_SOURCETIME>
    <MARK></MARK>
    <COLOR></COLOR>
    <GOSNUMBER></GOSNUMBER>
    <IS_PRIOR></IS_PRIOR>
    <MOBILE_PHONE></MOBILE_PHONE>
    <SOURCE_TIME>20140929134911</SOURCE_TIME>
  </data>
</response>

Смена состояния заказа

Метод: POST

Название запроса: change_order_state

Параметры:

Параметр Тип Описание
Обязательные параметры
ORDER_ID Целое ИД заказа
NEED_STATE Целое Новое состояние заказа
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды:

Код Описание
100 Заказ с таким ИД не найден
101 Изменение состояния не соответствует необходимым условиям

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
ORDER_ID Целое ИД заказа
NEED_STATE Целое Новое состояние заказа

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/change_order_state 
Content-Type: application/x-www-form-urlencoded
Content-Length: 71

order_id=18561&need_state=14&signature=3e8107e0c044e55d983db1fbed82fd8c

Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <ORDER_ID>18561</ORDER_ID>
    <NEW_STATE>14</NEW_STATE>
  </data>
</response>

Запись пути к файлу разговора в базу данных

Метод: POST

Название запроса: create_record_link

Параметры:

Параметр Тип Описание
Обязательные параметры
CALL_ID Строка, <= 60 символов ИД звонка (необязателен, если указан PHONE)
PHONE Строка, <= 16 символов Номер телефона (необязателен, если указан CALL_ID)
CALL_TYPE 0 или 1 0 — Исходящий, 1 — Входящий
signature Строка Поле для проверки секретного ключа
Необязательные параметры
RECORD_DATE ДДММГГГГччммсс Дата записи
RECORD_LENGTH Целое Продолжительность записи (в секундах)
FILE_PATH Строка, <=255 символов Путь к файлу записи
TRANSFERED_TO Строка,<=30 символов Номер телефона(линии) на который(ую) был переведен звонок (доп. параметр для CALL_RESULT="transfered")
CALL_RESULT Строка Результат звонка, возможны следующие значения:
  • "success" - успешный,
  • "no_answer" - не дозвонились,
  • "answered" - ответили,
  • "missed" - пропущен,
  • "transfered" - переведен,
  • "broke_off" - сброшен,
  • "other_user_answered" - принят другим оператором.
  • Если не задан, то "success"

Специальные возвращаемые коды: нет.

Возвращаемые данные в случае успешного выполнения запроса

Параметр Тип Описание
RECORD_ID Целое ИД созданной записи

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/create_record_link HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: <...>

RECORD_DATE=20130122180949&RECORD_LENGTH=215&CALL_ID=12345&PHONE=8987564&FILE_PATH=d%3A%5Ctemp%5CTM%5Ctrunk%5CSource%5CDevUtils%5CTMAPITest%5C&CALL_TYPE=1&CALL_RESULT=no_answer&signature=<...>

Ответ:
<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <RECORD_ID>25</RECORD_ID>
  </data>
</response>

Создать новый заказ

Метод: POST

Название запроса: make_new_order

Параметры:

Параметр Тип Описание
Обязательные параметры
PHONE Строка, <= 16 символов Номер телефона
ORDER_STATE_ID Целое ИД состояния заказа
signature Строка Поле для проверки секретного ключа
Необязательные параметры
CREWGROUPID Целое ИД группы экипажа
TARIF_ID Целое ИД тарифа
DISCOUNTEDSUMM Дробное Фиксированная сумма за заказ
CUSTOMER Строка, <=80 символов Заказчик
SOURCE Строка, <=80 символов Адрес подачи
SOURCE_STREET Целое ИД улицы подачи
SOURCE_HOUSE Строка, <=10 символов Дом подачи
SOURCE_FLAT Строка, <=10 символов Квартира подачи
SOURCE_POINT Целое ИД пункта подачи
DESTINATION Строка, <=80 символов Адрес назначения
DESTINATION_STREET Целое ИД улицы назначения
DESTINATION_HOUSE Строка, <=10 символов Дом назначения
DESTINATION_FLAT Строка, <=10 символов Квартира назначения
DESTINATION_POINT Целое ИД пункта назначения
CREWID Целое ИД экипажа
SUMM Дробное Стоимость заказа без учета скидок (наценок)
STARTUSER Целое Пользователь, создавший заказ
STARTTIME ГГГГММДДччммсс Дата создания заказа
FINISHUSER Целое Пользователь, завершивший заказ
FINISHTIME ГГГГММДДччммсс Дата завершения заказа
SOURCE_ZONE Целое Район подачи
DESTINATION_ZONE Целое Район назначения
SOURCE_PARKING Целое Стоянка подачи
DESTINATION_PARKING Целое Стоянка назначения
SOURCE_TIME ГГГГММДДччммсс Дата подачи
SOURCE_COUNTRY 0 или 1 (false или true) Признак междугороднего заказа
IS_PRIOR 0 или 1 (false или true) Признак предварительного заказа
PRIZE 0 или 1 (false или true) Признак призового заказа
NOTE Строка, <=80 символов Примечание
BONUSPOINT Дробное Бонусные баллы, начисленные водителю за заказ
DISTANCE Дробное Километраж по городу (в километрах)
HOURLY_LEN Целое Длительность исполнения почасового заказа (в минутах)
HOURLY_START ГГГГММДДччммсс Дата начала отсчета при почасовом заказе
HOURLY_PAY 0 или 1 (false или true) Признак почасового заказа
PHONE_TO_DIAL Строка, <=16 символов Номер телефона для отзвона по заказу
FROMBORDER 0 или 1 (false или true) Признак заказа "с бордюра"
WAITING_START ГГГГММДДччммсс Дата начала ожидания заказчика водителем
WAITING_LENGTH Целое Общая длина периода ожидания заказчика водителем (в минутах)
BACKFREE Целое Признак применения скидки в 50% на обратный путь
INPUTTIME ГГГГММДДччммсс Дата принятия заказа (от даты создания заказа отличается тем, что может быть задана пользователем)
MONEY_RECEIVE 0 или 1 (false или true) Подтверждение принятия денег наличными
NOTIFY_BEFORE Целое Период времени, за который пользователь оповещается о наступлении даты подачи
WANTCREWID Целое ИД желаемого экипажа
DISTANCE_COUNTRY Дробное Километраж за границами города (в километрах)
DISTANCE_CHECK 0 или 1 (false или true) Разрешение ручного ввода километража
CLIENTID Целое ИД постоянного клиента
INFRA_STATE Целое Состояние заявки в исходящей компании колцентра INFRA (1 - заявка передана в исходящую компанию, 2 - отзвон успешно произведен, 3 - занято, 4 - не берут трубку)
INFRA_ORDER Целое INFRA-заказ (спец. поле для работы с колцентром компании Инфрател)

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса

Параметр Тип Описание
ORDER_ID Целое ИД созданного заказа

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/make_new_order 
Content-Type: application/x-www-form-urlencoded
Content-Length: 206

PHONE=89058770593&ORDER_STATE_ID=10&DISCOUNTED_SUMM=100&signature=afc947f610eba380df6d0e441b03ddad

Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <order_id>27</order_id>
  </data>
</response>

Поиск улицы в базе

Метод: POST

Название запроса: street_search

Параметры:

Параметр Тип Описание
Обязательные параметры
PHONE Строка, <= 16 символов Номер телефона
CALL_ID Целое ИД звонка
VOICE_STREET Строка, <= 60 символов Название улицы или пункта, полученное через преобразование голоса в текст
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
CALL_ID Целое ИД звонка
PHONE Строка, <= 16 символов Номер телефона
STREET_FOUND 0 или 1 (false или true) Признак того, что улица найдена
STREET_NAME Строка, <= 60 символов Наименование улицы или пункта, найденное в базе данных


Пример:

Запрос:
POST https://ip:port/tm_tapi/1.0/street_search 
Content-Type: application/x-www-form-urlencoded
Content-Length: 175

PHONE=89058770593&CALL_ID=56&VOICE_STREET=пушкинск&FIND_STREET=0&API_FIND_STREET=&NUM_HOUSE=&signat
ure=9204a53e0f4842bb623c3a5f7683520a

Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
  <data>
    <CALL_ID>56</CALL_ID>
    <PHONE>89058770593</PHONE>
    <FIND_STREET>1</FIND_STREET>
    <API_FIND_STREET>Пушкинская</API_FIND_STREET>
  </data>
</response>

Смена состояния заказа по результату автодозвона

Метод: POST

Название запроса: set_request_state

Параметры:

Параметр Тип Описание
Обязательные параметры
STATE_ID Целое Cостояние заказа до отзвона
PHONE_TYPE 0..2 Признак, что звонили 1- клиенту, 0 – водителю, 2 -диспетчеру
ORDER_ID Целое ИД заказа
STATE Целое (0, 1, 2, 3, 4, 5) Состояние отзвона (0 – начальное, 1 — в процессе, 2 — успешно, 3 — занято, 4 — нет ответа, 5 — ошибка)
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды: нет

Возвращаемые данные в случае успешного выполнения запроса: нет

Настройки смены состояний заказа с использованием автодозвона задаются в карточке состояний заказа.

Пример:

Запрос:
POST https://ip:port/tm_tapi/1.0/set_request_state 
Content-Type: application/x-www-form-urlencoded
Content-Length: 71

state_id=7&phone_type=1&order_id=50&state=4&signature=0eb50db401d3540e038fde68eb260333

Ответ:

<response>
   <code>0</code>
   <descr>OK</descr>
</response>

Соединить клиента и водителя

Метод: POST

Название запроса: connect_client_and_driver

Параметры:

Параметр Тип Описание
Обязательные параметры
order_id Целое ИД заказа
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды:

Код Описание
100 Не найден заказ с таким ИД
103 В заказе нет водителя
104 У водителя не определен телефон

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/connect_client_and_driver 
Content-Type: application/x-www-form-urlencoded
Content-Length: 53

order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4

Ответ:

<response>
   <code>0</code>
   <descr>OK</descr>
</response>

Количество свободных экипажей на линии

Метод: GET

Название запроса: get_free_crews_count

Параметры:

Параметр Тип Описание
Обязательные параметры
signature Строка Поле для проверки секретного ключа
Необязательные параметры
crew_group_id Целое ИД группы экипажа предполагаемого заказа
uds_id Целое ИД службы ЕДС предполагаемого заказа

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
COUNT Целое Количество свободных экипажей на линии

Пример:

Запрос:
GET https://ip:port/tm_tapi/1.0/get_free_crews_count?
crew_group_id=1&uds_id=1&signature=88ca2091061c3e90123275f2c5df55a6 
Content-Type: application/x-www-form-urlencoded
Ответ:
<response>
<code>0</code>
<descr>OK</descr>
<data>
<COUNT>5</COUNT>
</data>
</response>

Запрос пользователя по логину софтфона

Метод: GET

Название запроса: get_user_by_sip_login

Параметры:

Параметр Тип Описание
Обязательные параметры
signature Строка Поле для проверки секретного ключа
login Строка Логин SIP-аккаунта

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
ID Целое ИД пользователя, который использует указанный логин SIP-аккаунта софтфона в данный момент
NAME Строка Имя пользователя, который использует указанный логин SIP-аккаунта софтфона в данный момент

Пример:

Запрос:
GET https://ip:port/tm_tapi/1.0/get_user_by_sip_login?
login=LOGIN&signature=9b06455cdfe933e7af12a35a70e9b1c6 
Content-Type: application/x-www-form-urlencoded
Ответ:
<response>
<code>0</code>
<descr>OK</descr>
<data>
<ID>1</ID>
<NAME>ADMINISTRATOR</NAME>
</data>
</response>

Установить режим «Перерыв» для линий софтфона

Метод: POST

Название запроса: set_sip_account_dnd_mode

Параметры:

Параметр Тип Описание
Обязательные параметры
dnd Строка 0 или 1
user_login Строка Логин пользователя ТМ
lines Строка Список линий, разделенных символом «|»
signature Строка Поле для проверки секретного ключа

Специальные возвращаемые коды:

Код Описание
100 Пользователь с таким логином или линиями не найден.

Возвращаемые данные в случае успешного выполнения запроса: нет

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/set_sip_account_dnd_mode 
Content-Type: application/x-www-form-urlencoded
Content-Length: 66

dnd=1&user_login=USER&lines=101%7C102&signature=3e8107e0c044e55d983db1fbed82fd8c

Ответ:

<response>
  <code>0</code>
  <descr>OK</descr>
</response>

Запрос телефонов водителя по позывному экипажа

Метод: GET

Название запроса: get_driver_phones_by_crew_code

Параметры:

Параметр Тип Описание
Обязательные параметры
crew_code Строка Позывной экипажа


Специальные возвращаемые коды:

Код Описание
100 Водитель не найден

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
mobile_phone Строка Основной телефон водителя
home_phone Строка Неосновной телефон водителя

Пример:

Запрос:

GET https://ip:port/tm_tapi/1.0/get_driver_phones_by_crew_code?
crew_code=CODE&signature=6f03bc45d3aa17f7738672180a3ee5de 
Content-Type: application/x-www-form-urlencoded

Ответ:

<response>
<code>0</code>
<descr>OK</descr>
<data>
<mobile_phone>123456789</mobile_phone>
<home_phone>987654321</home_phone>
</data>
</response>

Запрос информации о ключе защиты

Метод: GET

Название запроса: get_key_info

Параметры: нет.

Специальные возвращаемые коды: нет.

Возвращаемые данные в случае успешного выполнения запроса:

Параметр Тип Описание
company_name Строка Наименование организации
company_id Целое ИД организации
tm_server_license_count Целое Количество лицензий для TMServer
tm_license_count Целое Количество лицензий для TM2
tm_terminal_license_count Целое Количество лицензий для терминала
tm_driver_server_license_count Целое Количество лицензий для TMDriverServer
tm_driver_license_count Целое Количество лицензий для водителей
tm_sms_server_license_count Целое Количество лицензий для TMSMSServer

Пример:

Запрос:
GET https://ip:port/tm_tapi/1.0/get_key_info 
Content-Type: application/x-www-form-urlencoded

signature=6f03bc45d3aa17f7738672180a3ee5de

Ответ:

<response>
<code>0</code>
<descr>OK</descr>
<data>
company_name>ООО БИТ-Мастер</company_name>
<company_id>000</company_id>
<tm_server_license_count>1</tm_server_license_count>
<tm_license_count>10</tm_license_count>
<tm_terminal_license_count>1</tm_terminal_license_count>
<tm_driver_server_license_count>1</tm_driver_server_license_count>
<tm_driver_license_count>30</tm_driver_license_count>
<tm_sms_server_license_count>1</tm_sms_server_license_count>
</data>
</response>

Пример формы для заказа такси

Download.png
Для скачивания Вы можете воспользоваться ссылкой:
http://files.bitmaster.ru/TM/forms/zakaz_taxi.zip

Приведенная форма является примером, на основе которого можно построить собственную форму для принятия интернет-заказов. Форму можно использовать либо в исходном варианте, либо применяя запросы TM API. Для того, чтобы данная форма функционировала, необходимо открыть файл в любом текстовом редакторе и указать корректные IP-адрес сервера Такси-Мастер, порт TM API и секретный ключ. Далее вам следует загрузить файл на хостинг.

Форма, представленная в примере, будет выглядеть следующим образом:

Картинка
Форма для заказа такси.jpg