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

Материал из TaxiMaster
Перейти к: навигация, поиск
м (Откат правок TechnicalWriter (обсуждение) к версии AnnaKurochkina)
Строка 7: Строка 7:
 
# Расширить возможности своей службы за счет популярного онлайн-сервиса Яндекс.Такси.   
 
# Расширить возможности своей службы за счет популярного онлайн-сервиса Яндекс.Такси.   
  
{{Warning|Все перечисленные функции работают в Такси-Мастер не ниже [[История изменений в программе Такси-Мастер#Такси-Мастер. Версия 2.7.0 от 25.05.2015|2.7.0 от 25.05.2015г]]. В более низких версиях программы часть функций может не поддерживаться.}}
+
{{Warning|Все перечисленные функции работают в Такси-Мастер не ниже [[История изменений в программе Такси-Мастер#Такси-Мастер. Версия 0.6.1 от 31.12.2014|0.6.1 от 31.12.2014г]]. В более низких версиях программы часть функций может не поддерживаться.}}
  
 
== Параметры TM API ==
 
== Параметры TM API ==
Строка 770: Строка 770:
 
|Дробное
 
|Дробное
 
|Долгота адреса
 
|Долгота адреса
|-
 
|• zone_id
 
|Целое
 
|ИД района
 
|-
 
|• parking_id
 
|Целое
 
|ИД стоянки
 
 
|-
 
|-
 
|source_time
 
|source_time
Строка 877: Строка 869:
 
|104
 
|104
 
|Клиент не найден
 
|Клиент не найден
|-
 
|105
 
|Район не найден
 
|-
 
|106
 
|Стоянка не найдена
 
 
|}
 
|}
  
Строка 916: Строка 902:
 
   "tariff_id":1,
 
   "tariff_id":1,
 
   "addresses":[
 
   "addresses":[
       {"address":"SOURCE","lat":56.896817,"lon":53.147830,"zone_id":1,"parking_id":1},
+
       {"address":"SOURCE","lat":56.896817,"lon":53.147830},
       {"address":"STOP1","lat":56.845452,"lon":53.226775,"zone_id":2,"parking_id":2},
+
       {"address":"STOP1","lat":56.845452,"lon":53.226775},
 
       {"address":"STOP2"},
 
       {"address":"STOP2"},
 
       {"address":"DESTINATION","lat":56.861230,"lon":53.241870}
 
       {"address":"DESTINATION","lat":56.861230,"lon":53.241870}
Строка 1028: Строка 1014:
 
|Строка
 
|Строка
 
|Список ИД услуг через точку с запятой, пример: «1;2;3»
 
|Список ИД услуг через точку с запятой, пример: «1;2;3»
 
Устарело. Рекомендуется использовать параметр order_params.
 
 
|-
 
|-
 
|order_params
 
|order_params
Строка 1123: Строка 1107:
 
</pre>
 
</pre>
  
=== Расчет суммы заказа 2 ===
+
=== Изменение состояния заказа ===
  
 
Метод: POST
 
Метод: POST
  
Название запроса: calc_order_cost2
+
Название запроса: change_order_state
 +
 
 +
Параметры:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1135: Строка 1121:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|tariff_id
+
|ORDER_ID
 
|Целое
 
|Целое
|ИД тарифа
+
|ИД заказа
 
|-
 
|-
Параметры:
+
|NEW_STATE
 +
|Целое
 +
|Новое состояние заказа
 +
|}
  
!colspan="3"|Необязательные параметры
+
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|source_time
+
|100
|ГГГГММДДччммсс
+
|Не найден заказ ИД=ORDER_ID
|Время подачи
 
 
|-
 
|-
|is_prior
+
|101
|true или false
+
|Не найдено состояние заказа ИД=NEW_STATE
|Предварительный заказ
 
 
|-
 
|-
|client_id
+
|102
|Целое
+
|Изменение состояния не соответствует необходимым условиям.
|ИД клиента
+
|}
|-
+
 
|discount_id
+
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|ORDER_ID
 
|Целое
 
|Целое
|ИД скидки
+
|ИД заказа
 
|-
 
|-
|disc_card_id
+
|NEW_STATE
 
|Целое
 
|Целое
|ИД дисконтной карты
+
|Новое состояние заказа
 +
|}
 +
 
 +
Пример:
 +
<pre>
 +
Запрос:
 +
 
 +
POST 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
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|source_zone_id
+
!colspan="3"|Обязательные параметры
|Целое
 
|ИД района подачи
 
 
|-
 
|-
|dest_zone_id
+
|crew_id
 
|Целое
 
|Целое
|ИД района назначения
+
|ИД экипажа
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|distance_city
+
|100
|Дробное
+
|Экипаж не найден
|Километраж по городу
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|distance_country
+
|crew_id
|Дробное
+
|Целое
|Километраж за городом
+
|ИД экипажа
 
|-
 
|-
|source_distance_country
+
|code
|Дробное
+
|Строка
|Километраж до подачи за городом
+
|Позывной экипажа
 
|-
 
|-
|is_country
+
|name
|true или false
+
|Строка
|Загородный заказ
+
|Наименование экипажа
 
|-
 
|-
|waiting_minutes
+
|driver_id
 
|Целое
 
|Целое
|Время ожидания посадки клиента в минутах
+
|ИД водителя
 
|-
 
|-
|is_hourly
+
|car_id
|true или false
+
|Целое
|Почасовой заказ
+
|ИД автомобиля
 
|-
 
|-
|hourly_minutes
+
|crew_group_id
 
|Целое
 
|Целое
|Длительность почасового заказа в минутах
+
|ИД группы экипажа
 
|-
 
|-
|is_prize
+
|crew_state_id
 +
|Целое
 +
|ИД состояния экипажа
 +
|-
 +
|online
 
|true или false
 
|true или false
|Призовой заказ
+
|Водитель подключен к серверу «Связи с водителями»
 +
|-
 +
|work_shift_sum
 +
|Дробное
 +
|Сумма, списываемая за смену
 +
|-
 +
|min_balance
 +
|Дробное
 +
|Минимальный баланс, при котором можно выйти на смену
 +
|-
 +
|common_priority
 +
|Целое
 +
|Общий приоритет
 
|-
 
|-
|back_way
+
|static_priority
|true или false
+
|Целое
|Обратный путь за городом
+
|Статический приоритет
 
|-
 
|-
|order_params
+
|dynamic_priority
|Массив
+
|Целое
|Массив параметров заказа
+
|Динамический приоритет
 
|-
 
|-
|&bull;
+
|order_change_id
 
|Целое
 
|Целое
|ИД параметра заказа
+
|Индивидуальная сдача с заказа
 +
|-
 +
|has_light_house
 +
|true или false
 +
|Шашка
 
|-
 
|-
|cashless
+
|has_label
 
|true или false
 
|true или false
|Признак безналичного заказа
+
|Наклейка
 
|-
 
|-
|stops
+
|order_params
 
|Массив
 
|Массив
|Список остановок
+
|Массив параметров заказа экипажа
 
|-
 
|-
|&bull; zone_id
+
|&bull;
 
|Целое
 
|Целое
|ИД района остановки
+
|ИД параметра заказа
 
|}
 
|}
  
Специальные возвращаемые коды:
+
Пример:
{|
+
 
!Код
+
<pre>
!Описание
+
Запрос:
|-
+
 
|100
+
GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1 HTTP/1.1
|Тариф не найден
+
Signature: <...>
|-
+
Ответ:
|101
 
|Ошибка при расчете по тарифу
 
|-
 
|102
 
|Скидка не найдена
 
|-
 
|103
 
|Клиент не найден
 
|-
 
|104
 
|Район подачи не найден
 
|-
 
|105
 
|Район назначения не найден
 
|-
 
|106
 
|Дисконтная карта не найдена
 
|-
 
|107
 
|Район остановки не найден
 
|}
 
  
Возвращаемые данные в случае успешного выполнения запроса:
+
{
{|
+
  "code":0,
!Параметр
+
  "descr":"OK",
!Тип
+
  "data":{
!Описание
+
    "crew_id":1,
|-
+
    "code":"123",
|sum
+
    "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
 +
 
 +
Параметры: нет
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|info
+
! colspan="3" | Обязательные параметры
 +
|-
 +
|crews_info
 
|Массив
 
|Массив
|Дополнительная информация по расчету суммы заказа
+
|Массив экипажей на линии
 +
|-
 +
|&bull; crew_id
 +
|Целое
 +
|ИД экипажа
 
|-
 
|-
| &bull; comment
+
|&bull; code
 
|Строка
 
|Строка
|Описание позиции дополнительной информации по расчету суммы заказа
+
|Позывной экипажа
 
|-
 
|-
| &bull; sum
+
|&bull; name
 
|Строка
 
|Строка
|Сумма позиции дополнительной информации по расчету суммы заказа
+
|Наименование экипажа
|}
+
|-
 
+
|&bull; driver_id
Пример:
+
|Целое
 
+
|ИД водителя
<pre>
+
|-
Запрос:
+
|&bull; car_id
 
+
|Целое
GET https://ip:port/common_api/1.0/calc_order_cost2 HTTP/1.1
+
|ИД автомобиля
Signature: <...>
+
|-
Content-Type: application/json
+
|&bull; crew_group_id
Content-Length: <...>
+
|Целое
{
+
|ИД группы экипажа
  "tariff_id":1,
+
|-
  "source_time":"20140415172811",
+
|&bull; crew_state_id
  "is_prior":false,
+
|Целое
  "client_id":1,
+
|ИД состояния экипажа
  "discount_id":1,
+
|-
  "disc_card_id":1,
+
|&bull; online
  "source_zone_id":1,
+
|true или false
  "dest_zone_id":2,
+
|Водитель подключен к серверу «Связи с водителями»
  "distance_city":10,
+
|-
  "distance_country":20,
+
|&bull; work_shift_sum
  "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
 
      },
 
      {
 
        "zone_id": 2
 
      }
 
  ]
 
}
 
Ответ:
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
    "sum":1000,
 
    "info":[
 
      {
 
        "comment":"SUM1",
 
        "sum":"100"
 
      },
 
      {
 
        "comment":"SUM2",
 
        "sum":"200"
 
      }
 
    ]
 
  }
 
}
 
</pre>
 
 
 
 
 
=== Изменение состояния заказа ===
 
 
 
Метод: POST
 
 
 
Название запроса: change_order_state
 
 
 
Параметры:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|&bull; min_balance
 +
|Дробное
 +
|Минимальный баланс, при котором можно выйти на смену
 
|-
 
|-
|ORDER_ID
+
|&bull; common_priority
 
|Целое
 
|Целое
|ИД заказа
+
|Общий приоритет
 
|-
 
|-
|NEW_STATE
+
|&bull; static_priority
 
|Целое
 
|Целое
|Новое состояние заказа
+
|Статический приоритет
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|&bull; dynamic_priority
|Не найден заказ ИД=ORDER_ID
+
|Целое
 +
|Динамический приоритет
 
|-
 
|-
|101
+
|&bull; order_change_id
|Не найдено состояние заказа ИД=NEW_STATE
+
|Целое
 +
|Индивидуальная сдача с заказа
 +
|-
 +
|&bull; has_light_house
 +
|true или false
 +
|Шашка
 +
|-
 +
|&bull; has_label
 +
|true или false
 +
|Наклейка
 
|-
 
|-
|102
+
|&bull; has_label
|Изменение состояния не соответствует необходимым условиям.
+
|true или false
|}
+
|Наклейка
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|ORDER_ID
+
|&bull; order_params
|Целое
+
|Массив
|ИД заказа
+
|Массив параметров заказа экипажа
 
|-
 
|-
|NEW_STATE
+
|&bull; order_params
 
|Целое
 
|Целое
|Новое состояние заказа
+
|ИД параметра заказа
 
|}
 
|}
  
 
Пример:
 
Пример:
 +
 
<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_cost?order_id=6&new_state=4 HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
  
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "order_id":6,
+
     "crews_info":[
    "new_state":4
+
      {
   }
+
        "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,
 +
        "order_change_id":0,
 +
        "has_light_house":false,
 +
        "has_label":false,
 +
        "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,
 +
        "order_change_id":0,
 +
        "has_light_house":false,
 +
        "has_label":true,
 +
        "order_params":[]
 +
      }
 +
    ]
 +
   }
 +
}
 
</pre>
 
</pre>
  
=== Запрос информации об экипажах ===
+
=== Запрос информации о водителе ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_crew_info
+
Название запроса: get_driver_info
  
 
Параметры:
 
Параметры:
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 1424: Строка 1492:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|crew_id
+
|driver_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД водителя
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|need_photo
 +
|true или false
 +
|Нужна ли фотография водителя
 
|}
 
|}
  
Строка 1435: Строка 1509:
 
|-
 
|-
 
|100
 
|100
|Экипаж не найден
+
|Водитель не найден
 
|}
 
|}
  
Возвращаемые данные в случае успешного выполнения запроса:
+
Возвращаемые параметры в случае успешного выполнения запроса:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1444: Строка 1518:
 
!Описание
 
!Описание
 
|-
 
|-
|crew_id
+
|driver_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД водителя
|-
 
|code
 
|Строка
 
|Позывной экипажа
 
 
|-
 
|-
 
|name
 
|name
 
|Строка
 
|Строка
|Наименование экипажа
+
|ФИО водителя
 
|-
 
|-
|driver_id
+
|birthday
|Целое
+
|ДД.ММ.ГГГГ
|ИД водителя
+
|День рождения водителя
 
|-
 
|-
 
|car_id
 
|car_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД основного автомобиля водителя
 +
|-
 +
|license
 +
|Строка
 +
|Удостоверение водителя
 
|-
 
|-
|crew_group_id
+
|home_phone
|Целое
+
|Строка
|ИД группы экипажа
+
|Домашний телефон водителя
 
|-
 
|-
|crew_state_id
+
|mobile_phone
|Целое
+
|Строка
|ИД состояния экипажа
+
|Мобильный телефон водителя
 
|-
 
|-
|online
+
|is_locked
 
|true или false
 
|true или false
|Водитель подключен к серверу «Связи с водителями»
+
|Водитель заблокирован
 
|-
 
|-
|work_shift_sum
+
|is_dismissed
|Дробное
+
|true или false
|Сумма, списываемая за смену
+
|Водитель уволен
 
|-
 
|-
|min_balance
+
|driver_photo
|Дробное
+
|Base64
|Минимальный баланс, при котором можно выйти на смену
+
|Фото водителя (только если need_photo = true)
|-
 
|common_priority
 
|Целое
 
|Общий приоритет
 
|-
 
|static_priority
 
|Целое
 
|Статический приоритет
 
|-
 
|dynamic_priority
 
|Целое
 
|Динамический приоритет
 
|-
 
|order_change_id
 
|Целое
 
|Индивидуальная сдача с заказа
 
|-
 
|has_light_house
 
|true или false
 
|Шашка
 
|-
 
|has_label
 
|true или false
 
|Наклейка
 
|-
 
|order_params
 
|Массив
 
|Массив параметров заказа экипажа
 
|-
 
|&bull;
 
|Целое
 
|ИД параметра заказа
 
 
|}
 
|}
  
Строка 1520: Строка 1562:
  
 
<pre>
 
<pre>
Запрос:  
+
Запрос:
  
GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1 HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_driver_info?driver_id=1&need_photo=false HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 +
 
Ответ:
 
Ответ:
  
Строка 1530: Строка 1573:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "crew_id":1,
 
    "code":"123",
 
    "name":"CREW_NAME",
 
 
     "driver_id":1,
 
     "driver_id":1,
 +
    "name":"DRIVER_NAME",
 +
    "birthday":"01.01.1980",
 
     "car_id":1,
 
     "car_id":1,
     "crew_group_id":1,
+
     "license":"1234567890",
    "crew_state_id":3,
+
     "home_phone":"123456",
    "online":true
+
     "mobile_phone":"+79123456789",
    "work_shift_sum":0,
+
     "is_locked":false,
     "min_balance":10,
+
     "is_dismissed":false
    "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>
 
</pre>
  
=== Запрос информации об экипажах на линии ===
+
 
 +
=== Запрос списка водителей ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_crews_info
+
Название запроса: get_drivers_info
 +
 
 +
Параметры:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
!colspan="3"|Небязательные параметры
 +
|-
 +
|locked_drivers
 +
|true или false
 +
|Включить в ответ запроса заблокированных водителей (по умолчанию false)
 +
|-
 +
|dismissed_drivers
 +
|true или false
 +
|Включить в ответ запроса уволенных водителей (по умолчанию false)
 +
|}
  
Параметры: нет
 
  
 
Специальные возвращаемые коды: нет
 
Специальные возвращаемые коды: нет
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1569: Строка 1619:
 
!Описание
 
!Описание
 
|-
 
|-
! colspan="3" | Обязательные параметры
+
|drivers_info
|-
 
|crews_info
 
 
|Массив
 
|Массив
|Массив экипажей на линии
+
|Массив не удаленных водителей
 
|-
 
|-
|&bull; crew_id
+
|&bull; driver_id
 
|Целое
 
|Целое
|ИД экипажа
+
|ИД водителя
 
|-
 
|-
|&bull; code
+
|&bull; name
 
|Строка
 
|Строка
|Позывной экипажа
+
|ФИО водителя
 
|-
 
|-
|&bull; name
+
|&bull; balance
|Строка
+
|Дробное
|Наименование экипажа
+
|Баланс водителя
 
|-
 
|-
|&bull; driver_id
+
|&bull; birthday
|Целое
+
|ДД.ММ.ГГГГ
|ИД водителя
+
|День рождения водителя
 
|-
 
|-
 
|&bull; car_id
 
|&bull; car_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД основного автомобиля водителя
 +
|-
 +
|&bull; license
 +
|Строка
 +
|Удостоверение водителя
 
|-
 
|-
|&bull; crew_group_id
+
|&bull; home_phone
|Целое
+
|Строка
|ИД группы экипажа
+
|Домашний телефон водителя
 
|-
 
|-
|&bull; crew_state_id
+
|&bull; mobile_phone
|Целое
+
|Строка
|ИД состояния экипажа
+
|Мобильный телефон водителя
 
|-
 
|-
|&bull; online
+
|&bull; is_locked
 
|true или false
 
|true или false
|Водитель подключен к серверу «Связи с водителями»
+
|Водитель заблокирован
 
|-
 
|-
|&bull; work_shift_sum
+
|&bull; is_dismissed
|Дробное
+
|true или false
|Сумма, списываемая за смену
+
|Водитель уволен
 
|-
 
|-
|&bull; min_balance
+
|&bull; order_params
|Дробное
 
|Минимальный баланс, при котором можно выйти на смену
 
|-
 
|&bull; common_priority
 
|Целое
 
|Общий приоритет
 
|-
 
|&bull; static_priority
 
|Целое
 
|Статический приоритет
 
|-
 
|&bull; dynamic_priority
 
|Целое
 
|Динамический приоритет
 
|-
 
|&bull; order_change_id
 
|Целое
 
|Индивидуальная сдача с заказа
 
|-
 
|&bull; has_light_house
 
|true или false
 
|Шашка
 
|-
 
|&bull; has_label
 
|true или false
 
|Наклейка
 
|-
 
|&bull; has_label
 
|true или false
 
|Наклейка
 
|-
 
|&bull; order_params
 
 
|Массив
 
|Массив
|Массив параметров заказа экипажа
+
|Массив параметров заказа водителя
 
|-
 
|-
|&bull; order_params
+
|&bull;
 
|Целое
 
|Целое
 
|ИД параметра заказа
 
|ИД параметра заказа
Строка 1655: Строка 1675:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
GET https://ip:port/common_api/1.0/get_crews_info HTTP/1.1
+
 
 +
GET https://ip:port/common_api/1.0/get_drivers_info HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 +
locked_drivers=true&dismissed_drivers=true
 +
  
 
Ответ:
 
Ответ:
 +
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "crews_info":[
+
     "drivers_info":[
 
       {
 
       {
        "crew_id":1,
 
        "code":"123",
 
        "name":"CREW_NAME1",
 
 
         "driver_id":1,
 
         "driver_id":1,
         "car_id":1,
+
         "name":"DRIVER_NAME1",
         "crew_group_id":1,
+
         "balance":100.00,
         "crew_state_id":3
+
         "birthday":"01.01.1980",
        "online":true,
+
         "car_id":1,
         "work_shift_sum":0,
+
         "license":"1234567890",
         "min_balance":10,
+
         "home_phone":"123456",
         "common_priority":10,
+
         "mobile_phone":"+79123456788",
        "static_priority":10,
+
         "is_locked":false,
         "dynamic_priority":0,
+
         "is_dismissed":false,
        "order_change_id":0,
+
         "order_params":[3,4]
         "has_light_house":false,
 
         "has_label":false,
 
         "order_params":[
 
          1,
 
          5,
 
        ]
 
 
       },
 
       },
 
       {
 
       {
         "crew_id":12,
+
         "driver_id":2,
         "code":"777",
+
         "name":"DRIVER_NAME2",
         "name":"CREW_NAME2",
+
         "balance":-50.00,
         "driver_id":12,
+
         "birthday":"01.01.1980",
        "car_id":12,
+
         "car_id":2,
         "crew_group_id":2
+
         "license":"1234567899",
        "crew_state_id":1,
+
         "home_phone":"123457",
        "online":false,
+
         "mobile_phone":"+79123456789",
         "work_shift_sum":0,
+
         "is_locked":true,
        "min_balance":10,
+
         "is_dismissed":true,
         "common_priority":15,
+
         "order_params":[5,6]
        "static_priority":15,
+
       }
         "dynamic_priority":0,
+
     ]
        "order_change_id":0,
 
         "has_light_house":false,
 
         "has_label":true,
 
         "order_params":[]
 
       }
 
     ]
 
 
   }
 
   }
 
}
 
}
 +
 
</pre>
 
</pre>
  
=== Запрос информации о водителе ===
+
=== Запрос информации об автомобиле ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_driver_info
+
Название запроса: get_car_info
  
 
Параметры:
 
Параметры:
Строка 1724: Строка 1735:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|driver_id
+
|car_id
 
|Целое
 
|Целое
|ИД водителя
+
|ИД автомобиля
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
Строка 1732: Строка 1743:
 
|need_photo
 
|need_photo
 
|true или false
 
|true или false
|Нужна ли фотография водителя
+
|Нужна ли фотография автомобиля
 
|}
 
|}
  
Строка 1741: Строка 1752:
 
|-
 
|-
 
|100
 
|100
|Водитель не найден
+
|Автомобиль не найден
 
|}
 
|}
  
Возвращаемые параметры в случае успешного выполнения запроса:
+
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 1750: Строка 1761:
 
!Описание
 
!Описание
 
|-
 
|-
|driver_id
+
|car_id
 
|Целое
 
|Целое
|ИД водителя
+
|ИД автомобиля
 +
|-
 +
|code
 +
|Строка
 +
|Позывной автомобиля
 
|-
 
|-
 
|name
 
|name
 
|Строка
 
|Строка
|ФИО водителя
+
|Наименование автомобиля
 
|-
 
|-
|balance
+
|gos_number 
|Дробное
+
|Строка
|Баланс водителя
+
|Государственный номер автомобиля
 
|-
 
|-
|birthday
+
|color
|ДД.ММ.ГГГГ
 
|День рождения водителя
 
|-
 
|car_id
 
|Целое
 
|ИД основного автомобиля водителя
 
|-
 
|license
 
 
|Строка
 
|Строка
|Удостоверение водителя
+
|Цвет автомобиля
 
|-
 
|-
|home_phone
+
|mark
 
|Строка
 
|Строка
|Домашний телефон водителя
+
|Марка автомобиля
 +
|-
 +
|model
 +
|Строка
 +
|Модель автомобиля
 
|-
 
|-
|mobile_phone
+
|short_name
 
|Строка
 
|Строка
|Мобильный телефон водителя
+
|Краткое название автомобиля
 +
|-
 +
|production_year
 +
|Целое
 +
|Год выпуска автомобиля
 
|-
 
|-
 
|is_locked
 
|is_locked
 
|true или false
 
|true или false
|Водитель заблокирован
+
|Автомобиль заблокирован
|-
 
|is_dismissed
 
|true или false
 
|Водитель уволен
 
|-
 
|driver_photo
 
|Base64
 
|Фото водителя (только если need_photo = true)
 
 
|-
 
|-
 
|order_params
 
|order_params
|Массив  
+
|Массив
|Массив параметров заказа водителя
+
|Массив параметров заказа автомобиля
 
|-
 
|-
 
|&bull;
 
|&bull;
 
|Целое
 
|Целое
 
|ИД параметра заказа
 
|ИД параметра заказа
 +
|-
 +
|car_photo
 +
|Base64
 +
|Фото автомобиля (только если need_photo = true)
 
|}
 
|}
  
Строка 1808: Строка 1819:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_driver_info?driver_id=1&need_photo=false HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false HTTP/1.1
 
Signature: <...>
 
Signature: <...>
  
Строка 1817: Строка 1828:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "driver_id":1,
 
    "name":"DRIVER_NAME",
 
    "balance":100,
 
    "birthday":"01.01.1980",
 
 
     "car_id":1,
 
     "car_id":1,
     "license":"1234567890",
+
     "code":"123",
     "home_phone":"123456",
+
     "name":"CAR_NAME",
     "mobile_phone":"+79123456789",
+
     "gos_number":"a123bc",
 +
    "color":"COLOR",
 +
    "mark":"MARK",
 +
    "model":"MODEL",
 +
    "short_name":"SHORT_NAME",
 +
    "production_year":2000,
 
     "is_locked":false,
 
     "is_locked":false,
    "is_dismissed":false,
+
     "order_params":[1,2]
     "order_params":[3,4]
 
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
=== Запрос списка водителей ===
+
 
 +
=== Запрос списка автомобилей ===
 +
 
 
Метод: GET
 
Метод: GET
  
Название запроса: get_drivers_info
+
Название запроса: get_cars_info
  
 
Параметры:
 
Параметры:
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Небязательные параметры
+
!colspan="3"|Необязательные параметры
 
|-
 
|-
|locked_drivers
+
|locked_cars
 
|true или false
 
|true или false
|Включить в ответ запроса заблокированных водителей (по умолчанию false)
+
|Включить в ответ заблокированных автомобилей (по умолчанию false)
|-
 
|dismissed_drivers
 
|true или false
 
|Включить в ответ запроса уволенных водителей (по умолчанию false)
 
 
|}
 
|}
  
Строка 1859: Строка 1868:
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
  
 +
Параметры:
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|drivers_info
+
|cars_info
 
|Массив
 
|Массив
|Массив не удаленных водителей
+
|Массив автомобилей
 
|-
 
|-
|&bull; driver_id
+
|&bull; car_id
 
|Целое
 
|Целое
|ИД водителя
+
|ИД автомобиля
 +
|-
 +
|&bull; code
 +
|Строка
 +
|Позывной автомобиля
 
|-
 
|-
 
|&bull; name
 
|&bull; name
 
|Строка
 
|Строка
|ФИО водителя
+
|Наименование автомобиля
 
|-
 
|-
|&bull; balance
+
|&bull; gos_number
|Дробное
+
|Строка
|Баланс водителя
+
|Гос. номер автомобиля
 
|-
 
|-
|&bull; birthday
+
|&bull; color
|ДД.ММ.ГГГГ
+
|Строка
|День рождения водителя
+
|Цвет автомобиля
|-
 
|&bull; car_id
 
|Целое
 
|ИД основного автомобиля водителя
 
 
|-
 
|-
|&bull; license
+
|&bull; mark
 
|Строка
 
|Строка
|Удостоверение водителя
+
|Марка автомобиля
 
|-
 
|-
|&bull; home_phone
+
|&bull; model
 
|Строка
 
|Строка
|Домашний телефон водителя
+
|Модель автомобиля
 
|-
 
|-
|&bull; mobile_phone
+
|&bull; short_name
 
|Строка
 
|Строка
|Мобильный телефон водителя
+
|Краткое название автомобиля
 +
|-
 +
|&bull; production_year
 +
|Целое
 +
|Год выпуска автомобиля
 
|-
 
|-
 
|&bull; is_locked
 
|&bull; is_locked
 
|true или false
 
|true или false
|Водитель заблокирован
+
|Автомобиль заблокирован
|-
 
|&bull; is_dismissed
 
|true или false
 
|Водитель уволен
 
 
|-
 
|-
 
|&bull; order_params
 
|&bull; order_params
 
|Массив
 
|Массив
|Массив параметров заказа водителя
+
|Массив параметров заказа автомобиля
 
|-
 
|-
|&bull;
+
|&bull;  
 
|Целое
 
|Целое
 
|ИД параметра заказа
 
|ИД параметра заказа
Строка 1920: Строка 1930:
  
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_drivers_info HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
 
Signature: <...>
 
Signature: <...>
locked_drivers=true&dismissed_drivers=true
+
locked_cars=true
  
  
Строка 1934: Строка 1943:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "drivers_info":[
+
  "cars_info":[
      {
+
    {
        "driver_id":1,
+
      "car_id":1,
        "name":"DRIVER_NAME1",
+
      "code":"111",
        "balance":100.00,
+
      "name":"CAR_1",
        "birthday":"01.01.1980",
+
      "gos_number":"111111",
        "car_id":1,
+
      "color":"COLOR_1",
        "license":"1234567890",
+
      "mark":"MARK_1",
        "home_phone":"123456",
+
      "model":"MODEL_1",
        "mobile_phone":"+79123456788",
+
      "short_name":"SHORT_NAME_1",
        "is_locked":false,
+
      "production_year":2000,
        "is_dismissed":false,
+
      "is_locked":false,
        "order_params":[3,4]
+
      "order_params":[1,2]
      },
+
    },
      {
+
    {
        "driver_id":2,
+
      "car_id":2,
        "name":"DRIVER_NAME2",
+
      "code":"222",
        "balance":-50.00,
+
      "name":"CAR_2",
        "birthday":"01.01.1980",
+
      "gos_number":"222222",
        "car_id":2,
+
      "color":"COLOR_2",
        "license":"1234567899",
+
      "mark":"MARK_2",
        "home_phone":"123457",
+
      "model":"MODEL_2",
        "mobile_phone":"+79123456789",
+
      "short_name":"SHORT_NAME_2",
        "is_locked":true,
+
      "production_year":2000,
        "is_dismissed":true,
+
      "is_locked":false,
        "order_params":[5,6]
+
      "order_params":[3,4]
      }
+
    }
    ]
+
  ]
 
   }
 
   }
 
}
 
}
Строка 1967: Строка 1976:
 
</pre>
 
</pre>
  
=== Запрос информации об автомобиле ===
+
=== Запрос координат экипажей ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_car_info
+
Название запроса: get_crews_coords
  
 
Параметры:
 
Параметры:
Строка 1978: Строка 1987:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!colspan="3"|Необязательные параметры
 
|-
 
|-
|car_id
+
|crew_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД экипажа, по которому нужно вернуть координаты. Если не задано, то будут возвращены координаты всех экипажей на линии.
|-
+
|}
!colspan="3"|Необязательные параметры
 
|-
 
|need_photo
 
|true или false
 
|Нужна ли фотография автомобиля
 
|}
 
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 1997: Строка 2000:
 
|-
 
|-
 
|100
 
|100
|Автомобиль не найден
+
|Координаты не найдены
 
|}
 
|}
  
Строка 2006: Строка 2009:
 
!Описание
 
!Описание
 
|-
 
|-
|car_id
+
|crews_coords
 +
|Массив
 +
|Список координат экипажей
 +
|-
 +
|&bull; crew_id
 
|Целое
 
|Целое
|ИД автомобиля
+
|ИД экипажа
 
|-
 
|-
|code
+
|&bull; crew_code
 
|Строка
 
|Строка
|Позывной автомобиля
+
|Позывной экипажа
 
|-
 
|-
|name
+
|&bull; coords_time
|Строка
+
|ГГГГММДДччммсс
|Наименование автомобиля
+
|Время получения координат
 
|-
 
|-
|gos_number 
+
|&bull; lat
|Строка
+
|Дробное
|Государственный номер автомобиля
+
|Долгота
 
|-
 
|-
|color
+
|&bull; lon
|Строка
+
|Дробное
|Цвет автомобиля
+
|Широта
 
|-
 
|-
|mark
+
|&bull; state_kind
 
|Строка
 
|Строка
|Марка автомобиля
+
|Тип состояния экипажа. Может принимать значения:
|-
+
• "not_available" — экипаж не на линии
|model
+
 
|Строка
+
• "waiting" — экипаж свободен, ожидает заказы
|Модель автомобиля
+
 
|-
+
• "on_order" — экипаж на заказе
|short_name
+
 
|Строка
+
• "on_break" — экипаж на перерыве
|Краткое название автомобиля
 
|-
 
|production_year
 
|Целое
 
|Год выпуска автомобиля
 
|-
 
|is_locked
 
|true или false
 
|Автомобиль заблокирован
 
|-
 
|order_params
 
|Массив
 
|Массив параметров заказа автомобиля
 
|-
 
|&bull;
 
|Целое
 
|ИД параметра заказа
 
|-
 
|car_photo
 
|Base64
 
|Фото автомобиля (только если need_photo = true)
 
 
|}
 
|}
  
Строка 2062: Строка 2048:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
 
+
GET https://ip:port/common_api/1.0/get_crews_coords HTTP/1.1
GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false HTTP/1.1
 
 
Signature: <...>
 
Signature: <...>
  
Строка 2073: Строка 2059:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "car_id":1,
+
     "crews_coords":[
    "code":"123",
+
      {
    "name":"CAR_NAME",
+
        "crew_id":1,
    "gos_number":"a123bc",
+
        "crew_code":"111",
    "color":"COLOR",
+
        "coords_time":"20120101101010",
    "mark":"MARK",
+
        "lat":11.111111,
    "model":"MODEL",
+
        "lon":22.222222,
    "short_name":"SHORT_NAME",
+
        "state_kind":"waiting"
    "production_year":2000,
+
    },
    "is_locked":false,
+
    {
    "order_params":[1,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 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
  
Название запроса: get_cars_info
+
Название запроса: get_addresses_like
  
 
Параметры:
 
Параметры:
 +
 
{|
 
{|
 
!Параметры
 
!Параметры
Строка 2101: Строка 2117:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
! colspan="3"|Обязательные параметры
 +
|-
 +
|get_streets
 +
|true или false
 +
|Искать улицы
 
|-
 
|-
|locked_cars
+
|get_houses
 
|true или false
 
|true или false
|Включить в ответ заблокированных автомобилей (по умолчанию false)
+
|Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
|}
+
|-
 
+
|get_points
 
+
|true или false
Специальные возвращаемые коды: нет
+
|Искать пункты.
 +
|-
 +
|street
 +
|Строка
 +
|Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|house
 +
|Строка
 +
|Часть номера дома. Нужно только если get_houses = true.
 +
|-
 +
|max_addresses_count
 +
|Целое
 +
|Максимальное количество адресов в ответе
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Подходящие адреса не найдены
 +
|}
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Параметры:
 
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|cars_info
+
|addresses
 
|Массив
 
|Массив
|Массив автомобилей
+
|Список подходящих адресов
 
|-
 
|-
|&bull; car_id
+
|&bull; street
|Целое
+
|Строка
|ИД автомобиля
+
|Название улицы или пункта
 
|-
 
|-
|&bull; code
+
|&bull; house
 
|Строка
 
|Строка
|Позывной автомобиля
+
|Номер дома
 
|-
 
|-
|&bull; name
+
|&bull; kind
 
|Строка
 
|Строка
|Наименование автомобиля
+
|Тип адреса. Может принимать значения:
 +
• "street" — улица
 +
 
 +
• "house" — дом
 +
 
 +
• "point" — пункт
 
|-
 
|-
|&bull; gos_number
+
|&bull; comment
 
|Строка
 
|Строка
|Гос. номер автомобиля
+
|Комментарий
|-
 
|&bull; color
 
|Строка
 
|Цвет автомобиля
 
|-
 
|&bull; mark
 
|Строка
 
|Марка автомобиля
 
|-
 
|&bull; model
 
|Строка
 
|Модель автомобиля
 
|-
 
|&bull; short_name
 
|Строка
 
|Краткое название автомобиля
 
|-
 
|&bull; production_year
 
|Целое
 
|Год выпуска автомобиля
 
|-
 
|&bull; is_locked
 
|true или false
 
|Автомобиль заблокирован
 
|-
 
|&bull; order_params
 
|Массив
 
|Массив параметров заказа автомобиля
 
|-
 
|&bull;
 
|Целое
 
|ИД параметра заказа
 
 
|}
 
|}
  
Строка 2175: Строка 2190:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=true&get_points=true&
 +
get_houses=false&street=STREE HTTP/1.1
 
Signature: <...>
 
Signature: <...>
locked_cars=true
 
 
  
 
Ответ:
 
Ответ:
Строка 2188: Строка 2203:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
  "cars_info":[
+
    "addresses":[
    {
+
      {
      "car_id":1,
+
        "street":"STREET1",
      "code":"111",
+
        "house":"",
      "name":"CAR_1",
+
        "kind":"street",
      "gos_number":"111111",
+
        "comment":""
      "color":"COLOR_1",
+
       },
       "mark":"MARK_1",
+
       {
       "model":"MODEL_1",
+
        "street":"STREET2",
      "short_name":"SHORT_NAME_1",
+
        "house":"",
      "production_year":2000,
+
        "kind":"street",
      "is_locked":false,
+
        "comment":""
      "order_params":[1,2]
+
       },
    },
+
       {
    {
+
        "street":"POINT_STREET1",
      "car_id":2,
+
        "house":"",
      "code":"222",
+
        "kind":"point",
      "name":"CAR_2",
+
        "comment":"Point at street STREET1"
       "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>
+
Запрос:
  
=== Запрос координат экипажей ===
+
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",
 +
        "house":"1",
 +
        "kind":"house",
 +
        "comment":""
 +
      },
 +
      {
 +
        "street":"STREET1",
 +
        "house":"10",
 +
        "kind":"house",
 +
        "comment":""
 +
      },
 +
      {
 +
        "street":"STREET1",
 +
        "house":"11",
 +
        "kind":"house",
 +
        "comment":""
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Анализ маршрута ===
 
Метод: GET
 
Метод: GET
  
Название запроса: get_crews_coords
+
Название запроса: analyze_route
  
 
Параметры:
 
Параметры:
 +
 
{|
 
{|
 
!Параметры
 
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 +
|-
 +
!colspan="3"|Обязательные параметры
 +
|-
 +
|source
 +
|Строка
 +
|Адрес подачи
 +
|-
 +
|dest
 +
|Строка
 +
|Адрес назначения
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
 
|-
 
|-
|crew_id
+
|source_lon
|Целое
+
|Дробное
|ИД экипажа, по которому нужно вернуть координаты. Если не задано, то будут возвращены координаты всех экипажей на линии.
+
|Долгота адреса подачи
 +
|-
 +
|source_lat
 +
|Дробное
 +
|Широта адреса подачи
 +
|-
 +
|dest_lon
 +
|Дробное
 +
|Долгота адреса назначения
 +
|-
 +
|dest_lat
 +
|Дробное
 +
|Широта адреса назначения
 
|}
 
|}
 +
 +
 +
Параметр source не является обязательным к заполнению, если заданы source_lon и source_lat.
 +
 +
Параметр dest не является обязательным к заполнению, если заданы dest_lon и dest_lat.
 +
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 2245: Строка 2315:
 
|-
 
|-
 
|100
 
|100
|Координаты не найдены
+
|Адрес подачи не распознан
 +
|-
 +
|101
 +
|Адрес назначения не распознан
 +
|-
 +
|102
 +
|Маршрут не распознан
 
|}
 
|}
  
Строка 2254: Строка 2330:
 
!Описание
 
!Описание
 
|-
 
|-
|crews_coords
+
|source_lat 
|Массив
+
|Дробное
|Список координат экипажей
+
|Широта адреса подачи
 
|-
 
|-
|&bull; crew_id
+
|source_lon 
|Целое
+
|Дробное
|ИД экипажа
+
|Долгота адреса подачи
 
|-
 
|-
|&bull; crew_code
+
|source_zone_id 
|Строка
+
|Целое
|Позывной экипажа
+
|ИД района подачи
 
|-
 
|-
|&bull; coords_time
+
|dest_lat
|ГГГГММДДччммсс
+
|Дробное
|Время получения координат
+
|Широта адреса назначения
 +
|-
 +
|dest_lon 
 +
|Дробное
 +
|Долгота адреса назначения
 +
|-
 +
|dest_zone_id 
 +
|Целое
 +
|ИД района назначения
 
|-
 
|-
|&bull; lat
+
|city_dist 
 
|Дробное
 
|Дробное
|Долгота
+
|Километраж по городу
 
|-
 
|-
|&bull; lon
+
|country_dist 
 
|Дробное
 
|Дробное
|Широта
+
|Километраж за городом
 
|-
 
|-
|&bull; state_kind
+
|source_country_dist 
|Строка
+
|Дробное
|Тип состояния экипажа. Может принимать значения:
+
|Километраж до адреса подачи, если адрес подачи за городом
• "not_available" — экипаж не на линии
 
 
 
• "waiting" — экипаж свободен, ожидает заказы
 
 
 
• "on_order" — экипаж на заказе
 
 
 
• "on_break" — экипаж на перерыве
 
 
|}
 
|}
  
Строка 2293: Строка 2370:
  
 
<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_crews_coords HTTP/1.1
+
53.153044&source_lat=56.893301&dest_lon=53.218103&dest_lat=56.869759 HTTP/1.1
 
Signature: <...>
 
Signature: <...>
  
Строка 2304: Строка 2382:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "crews_coords":[
+
     "source_lat":11.111111,
      {
+
    "source_lon":22.222222,
        "crew_id":1,
+
    "source_zone_id":1,
        "crew_code":"111",
+
    "dest_lat":33.333333,
        "coords_time":"20120101101010",
+
    "dest_lon":44.444444,
        "lat":11.111111,
+
    "dest_zone_id":2,
        "lon":22.222222,
+
    "city_dist":1.1,
        "state_kind":"waiting"
+
    "country_dist":2.2,
    },
+
    "source_country_dist":3.3
    {
 
        "crew_id":2,
 
        "crew_code":"222",
 
        "coords_time":"20120101101010",
 
        "lat":33.333333,
 
        "lon":44.444444,
 
        "state_kind":"on_order"
 
      }
 
    ]
 
 
   }
 
   }
 
}
 
}
 +
</pre>
  
Запрос:
+
=== Анализ маршрута 2 ===
 
 
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
  
Название запроса: get_addresses_like
+
Название запроса: analyze_route2
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
! colspan="3"|Обязательные параметры
+
!colspan="3"|Обязательные параметры
 
|-
 
|-
|get_streets
+
|addresses
|true или false
+
|Массив
|Искать улицы
+
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
 
|-
 
|-
|get_points
+
|&bull; address
|true или false
 
|Искать пункты
 
|-
 
|get_houses
 
|true или false
 
|Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
 
|-
 
|street
 
 
|Строка
 
|Строка
|Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
+
|Адрес подачи
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|&bull; lat
 +
|Дробное
 +
|Широта адреса
 
|-
 
|-
|house
+
|&bull; lon
|Строка
+
|Дробное
|Часть номера дома. Нужно только если get_houses = true.
+
|Долгота адреса
|-
 
|max_addresses_count
 
|Целое
 
|Максимальное количество адресов в ответе
 
 
|}
 
|}
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
 +
 
{|
 
{|
 
!Код
 
!Код
Строка 2397: Строка 2434:
 
|-
 
|-
 
|100
 
|100
|Подходящие адреса не найдены
+
|Маршрут не распознан
 
|}
 
|}
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
{|
 
{|
!Параметр
+
!Параметры
 
!Тип
 
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|addresses
+
|Addresses
 
|Массив
 
|Массив
|Список подходящих адресов
+
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
 
|-
 
|-
|&bull; street
+
|&bull; lat
|Строка
+
|Дробное
|Название улицы или пункта
+
|Широта адреса
 
|-
 
|-
|&bull; house
+
|&bull; lon
|Строка
+
|Дробное
|Номер дома
+
|Долгота адреса
 
|-
 
|-
|&bull; kind
+
|&bull; zone_id
|Строка
+
|Целое
|Тип адреса. Может принимать значения:
+
|Район адреса
• "street" — улица
 
 
 
• "house" — дом
 
 
 
• "point" — пункт
 
 
|-
 
|-
|&bull; comment
+
|&bull; parking_id
|Строка
+
|Целое
|Комментарий
+
|Стоянка адреса
 
|-
 
|-
|&bull; coords
+
|city_dist
|Массив
+
|Дробное
|Координаты дома или пункта
+
|Километраж по городу
 
|-
 
|-
|&bull;  &loz; lat
+
|country_dist
 
|Дробное
 
|Дробное
|Широта
+
|Километраж за городом
 
|-
 
|-
|&bull;  &loz; lon
+
|source_country_dist
 
|Дробное
 
|Дробное
|Долгота
+
|Километраж до адреса подачи, если адрес подачи за городом.
 
|}
 
|}
  
Строка 2450: Строка 2483:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_addresses_like?get_streets=true&get_points=true&
+
POST /common_api/1.0/analyze_route2 HTTP/1.1
get_houses=false&street=STREE HTTP/1.1
+
Host: ip:port
 +
Keep-Alive: 300
 +
Connection: keep-alive
 +
Content-Type: application/json
 +
Content-Length: 243
 
Signature: <...>
 
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}]}
 +
  
 
Ответ:
 
Ответ:
Строка 2462: Строка 2504:
 
     "addresses":[
 
     "addresses":[
 
       {
 
       {
         "street":"STREET1",
+
         "lat":11.111111,
         "house":"",
+
         "lon":22.222222,
         "kind":"street",
+
         "zone_id":1,
        "comment":""
+
         "parking_id":1
        "coords":{
 
        "lat":0,
 
         "lon":0
 
        }
 
 
       },
 
       },
 
       {
 
       {
        "street":"STREET2",
+
         "lat":33.333333,
        "house":"",
+
         "lon":44.444444,
        "kind":"street",
+
         "zone_id":2,
        "comment":""
+
         "parking_id":2
        "coords":{
 
         "lat":0,
 
         "lon":0
 
        }
 
      },
 
      {
 
        "street":"POINT_STREET1",
 
        "house":"",
 
        "kind":"point",
 
         "comment":"Point at street STREET1"
 
        "coords":{
 
        "lat":53.224656,
 
         "lon":56.842521
 
        }
 
 
       }
 
       }
     ]
+
     ],
 +
    "city_dist":0,
 +
    "country_dist":2.647,
 +
    "source_country_dist":3.412
 
   }
 
   }
 
}
 
}
  
Запрос:
+
</pre>
  
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",
 
        "house":"1",
 
        "kind":"house",
 
        "comment":""
 
      },
 
      {
 
        "street":"STREET1",
 
        "house":"10",
 
        "kind":"house",
 
        "comment":""
 
      },
 
      {
 
        "street":"STREET1",
 
        "house":"11",
 
        "kind":"house",
 
        "comment":""
 
      }
 
    ]
 
  }
 
}
 
</pre>
 
  
=== Анализ маршрута ===
 
 
Метод: GET
 
Метод: GET
  
Название запроса: analyze_route
+
Название запроса: get_order_state
  
 
Параметры:
 
Параметры:
Строка 2545: Строка 2539:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|source
+
|order_id 
|Строка
+
|Целое
|Адрес подачи
+
|ИД заказа
|-
 
|dest
 
|Строка
 
|Адрес назначения
 
|-
 
!colspan="3"|Необязательные параметры
 
|-
 
|source_lon
 
|Дробное
 
|Долгота адреса подачи
 
|-
 
|source_lat
 
|Дробное
 
|Широта адреса подачи
 
|-
 
|dest_lon
 
|Дробное
 
|Долгота адреса назначения
 
|-
 
|dest_lat
 
|Дробное
 
|Широта адреса назначения
 
 
|}
 
|}
 
 
Параметр source не является обязательным к заполнению, если заданы source_lon и source_lat.
 
 
Параметр dest не является обязательным к заполнению, если заданы dest_lon и dest_lat.
 
 
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 2584: Строка 2550:
 
|-
 
|-
 
|100
 
|100
|Адрес подачи не распознан
+
|Заказ не найден
|-
 
|101
 
|Адрес назначения не распознан
 
|-
 
|102
 
|Маршрут не распознан
 
 
|}
 
|}
  
Строка 2599: Строка 2559:
 
!Описание
 
!Описание
 
|-
 
|-
|source_lat  
+
|order_id  
|Дробное
+
|Целое
|Широта адреса подачи
+
|ИД заказа
 
|-
 
|-
|source_lon 
+
|state_id  
|Дробное
 
|Долгота адреса подачи
 
|-
 
|source_zone_id  
 
 
|Целое  
 
|Целое  
|ИД района подачи
+
|ИД состояния заказа
 
|-
 
|-
|dest_lat
+
|state_kind
|Дробное
+
|Строка
|Широта адреса назначения
+
|Тип состояния заказа. Может принимать значения:
 +
 
 +
• "new_order" — новый заказ
 +
 
 +
• "driver_assigned" — водитель назначен
 +
 
 +
• "car_at_place" — машина подъехала на место
 +
 
 +
• "client_inside" — клиент в машине
 +
 
 +
• "finished" — заказ успешно завершен
 +
 
 +
• "aborted" — заказ прекращен
 
|-
 
|-
|dest_lon  
+
|crew_id  
|Дробное
+
|Целое
|Долгота адреса назначения
+
|ИД экипажа
 
|-
 
|-
|dest_zone_id 
+
|prior_crew_id
 
|Целое  
 
|Целое  
|ИД района назначения
+
|ИД предварительного экипажа
 
|-
 
|-
|city_dist  
+
|driver_id  
|Дробное
+
|Целое
|Километраж по городу
+
|ИД водителя
 
|-
 
|-
|country_dist  
+
|car_id  
|Дробное
+
|Целое
|Километраж за городом
+
|ИД автомобиля
 
|-
 
|-
|source_country_dist 
+
|start_time
|Дробное
+
|ГГГГММДДччммсс
|Километраж до адреса подачи, если адрес подачи за городом
+
|Время создания заказа
|}
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
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 HTTP/1.1
 
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
 
  }
 
}
 
</pre>
 
 
 
=== Анализ маршрута 2 ===
 
 
 
Метод: POST
 
 
 
Название запроса: analyze_route2
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|source_time
 +
|ГГГГММДДччммсс
 +
|Время подачи
 
|-
 
|-
|get_full_route_coords
+
|finish_time
|true или false
+
|ГГГГММДДччммсс
|Возвращать координаты точек полного маршрута.
+
|Время завершения заказа
 
|-
 
|-
|addresses
+
|source 
|Массив
 
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
 
|-
 
|&bull; address
 
 
|Строка
 
|Строка
 
|Адрес подачи
 
|Адрес подачи
 
|-
 
|-
|&bull; lat
+
|destination
|Дробное
+
|Строка
|Широта адреса
+
|Адрес назначения
 
|-
 
|-
|&bull; lon
+
|passenger
|Дробное
+
|Строка
|Долгота адреса
+
|Пассажир
|}
 
 
 
Специальные возвращаемые коды:
 
 
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|phone
|Маршрут не распознан
+
|Строка
|}
+
|Номер телефона
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
{|
 
!Параметры
 
!Тип
 
!Описание
 
 
|-
 
|-
|Addresses
+
|client_id
|Массив
+
|Целое
|Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
+
|ИД клиента
 
|-
 
|-
|&bull; lat
+
|order_crew_group_id
|Дробное
+
|Целое
|Широта адреса
+
|ИД группы экипажей, которая указана в заказе
 
|-
 
|-
|&bull; lon
+
|tariff_id
|Дробное
 
|Долгота адреса
 
|-
 
|&bull; zone_id
 
 
|Целое
 
|Целое
|Район адреса
+
|ИД тарифа
 
|-
 
|-
|&bull; parking_id
+
|car_mark
|Целое
+
|Строка
|Стоянка адреса
+
|Марка автомобиля
 
|-
 
|-
|city_dist
+
|car_model
|Дробное
+
|Строка
|Километраж по городу
+
|Модель автомобиля
 
|-
 
|-
|country_dist
+
|car_color
|Дробное
+
|Строка
|Километраж за городом
+
|Цвет автомобиля
 
|-
 
|-
|source_country_dist
+
|car_number
|Дробное
+
|Строка
|Километраж до адреса подачи, если адрес подачи за городом.
+
|Государственный номер автомобиля
 
|-
 
|-
|full_route_coords
+
|crew_coords
 
|Массив
 
|Массив
|Массив координат точек маршрута.
+
|Координаты экипажа
 
|-
 
|-
 
|&bull; lat
 
|&bull; lat
 
|Дробное
 
|Дробное
|Широта точки
+
|Широта
 
|-
 
|-
 
|&bull; lon
 
|&bull; lon
 
|Дробное
 
|Дробное
|Долгота точки
+
|Долгота
 
|}
 
|}
  
Строка 2765: Строка 2671:
  
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
 
+
GET https://ip:port/common_api/1.0/get_order_state?order_id=1 HTTP/1.1
POST /common_api/1.0/analyze_route2 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":{
    "addresses":[
+
    "order_id":1,
      {
+
    "state_id":12,
        "lat":11.111111,
+
    "state_kind":"car_at_place",
        "lon":22.222222,
+
    "crew_id":1,
        "zone_id":1,
+
    "prior_crew_id":0,
        "parking_id":1
+
    "driver_id":2,
      },
+
    "car_id":3,
      {
+
    "start_time":"20130117125641",
        "lat":33.333333,
+
    "source_time":"20130117132617",
        "lon":44.444444,
+
    "finish_time":"20130117130343",
        "zone_id":2,
+
    "source":"1",
        "parking_id":2
+
    "destination":"2",
      }
+
    "passenger":"Слепаков",
    ],
+
    "phone":"8800",
    "city_dist":0,
+
    "client_id":1,
    "country_dist":2.647,
+
    "order_crew_group_id":1,
    "source_country_dist":3.412,
+
    "tariff_id":1,
    "full_route_coords":[
+
    "car_mark":"Ауди",
      {
+
    "car_model":"Q7",
        "lat":55.833603,
+
    "car_color":"черный",
        "lon":37.515537
+
    "car_number":"А777АА",
      },
+
    "crew_coords": {
      {
+
      "lat": 56.833981,
        "lat":55.832855,
+
      "lon": 53.220249
        "lon":37.516315
+
    }
      },
 
      {
 
        "lat":55.833405,
 
        "lon":37.51799
 
      },
 
      ...
 
    ]
 
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
=== Запрос информации о состоянии заказа ===
+
=== Создание задачи СМС серверу ===
  
Метод: GET
+
Метод: POST
  
Название запроса: get_order_state
+
Название запроса: send_sms
  
 
Параметры:
 
Параметры:
Строка 2839: Строка 2723:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|order_id 
+
|phone
|Целое
+
|Строка, <= 16 символов
|ИД заказа
+
|Номер телефона
 +
|-
 +
|message
 +
|Строка
 +
|Текст СМС
 
|}
 
|}
  
Специальные возвращаемые коды:
+
Специальные возвращаемые коды: нет
{|
+
 
!Код
+
Возвращаемые данные в случае успешного выполнения запроса: нет
!Описание
 
|-
 
|100
 
|Заказ не найден
 
|}
 
  
Возвращаемые данные в случае успешного выполнения запроса:
+
Пример:
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
|order_id 
 
|Целое
 
|ИД заказа
 
|-
 
|state_id 
 
|Целое
 
|ИД состояния заказа
 
|-
 
|state_kind
 
|Строка
 
|Тип состояния заказа. Может принимать значения:
 
  
• "new_order" — новый заказ
+
<pre>
 +
Запрос:
  
• "driver_assigned" — водитель назначен
+
POST /common_api/1.0/send_sms HTTP/1.1
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 33
  
• "car_at_place" — машина подъехала на место
+
Signature: <...>
  
• "client_inside" — клиент в машине
+
message=SMSText&phone=89050057216
  
• "finished" — заказ успешно завершен
+
Ответ:
  
"aborted" — заказ прекращен
+
{
|-
+
  "code":0,
|crew_id 
+
  "descr":"OK",
|Целое
+
  "data":{}
|ИД экипажа
+
}
 +
</pre>
 +
 
 +
=== Проверка авторизации ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: check_authorization
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 
|-
 
|-
|prior_crew_id
+
!colspan="3"|Обязательные параметры
|Целое
 
|ИД предварительного экипажа
 
 
|-
 
|-
|driver_id 
+
|login
|Целое
+
|Строка, <= 60 символов
|ИД водителя
+
|Логин
 
|-
 
|-
|car_id 
+
|password
|Целое
+
|Строка, <= 60 символов
|ИД автомобиля
+
|Пароль
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|start_time
+
|100
|ГГГГММДДччммсс
+
|Не найден клиент с логином LOGIN и/или неверный пароль
|Время создания заказа
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|source_time
+
|client_id  
|ГГГГММДДччммсс
 
|Время подачи
 
|-
 
|finish_time
 
|ГГГГММДДччммсс
 
|Время завершения заказа
 
|-
 
|source 
 
|Строка
 
|Адрес подачи
 
|-
 
|destination
 
|Строка
 
|Адрес назначения
 
|-
 
|passenger
 
|Строка
 
|Пассажир
 
|-
 
|phone
 
|Строка
 
|Номер телефона
 
|-
 
|client_id
 
 
|Целое
 
|Целое
 
|ИД клиента
 
|ИД клиента
|-
+
|}
|order_crew_group_id
+
 
|Целое
+
Пример:
|ИД группы экипажей, которая указана в заказе
+
 
|-
+
<pre>
|tariff_id
+
Запрос:
|Целое
+
 
|ИД тарифа
+
GET https://ip:port/common_api/1.0/check_authorization?login=LOGIN&password=PASSWORD HTTP/1.1
|-
+
 
|car_mark
+
Signature: <...>
|Строка
+
 
|Марка автомобиля
+
Ответ:
|-
+
 
|car_model
+
{
|Строка
+
  "code":0,
|Модель автомобиля
+
  "descr":"OK",
|-
+
  "data":{
|car_color
+
    "client_id":131
|Строка
+
}
|Цвет автомобиля
+
}
|-
+
</pre>
|car_number
+
 
|Строка
+
=== Регистрация клиента ===
|Государственный номер автомобиля
 
|-
 
|confirmed
 
|Строка
 
|Состояние подтвержденности заказа водителем или оператором.
 
  
Может принимать значения:
+
Метод: POST
  
• "not_confirmed" — не подтверждено
+
Название запроса: register_client
  
• "confirmed_by_driver" — заказ принят водителем
+
Параметры:
  
• "confirmed_by_oper" — заказ подтвержден оператором
+
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 
|-
 
|-
|crew_coords
+
!colspan="3"|Обязательные параметры
|Массив
 
|Координаты экипажа
 
 
|-
 
|-
|&bull; lat
+
|name
|Дробное
+
|Строка, <= 60 символов
|Широта
+
|ФИО
 
|-
 
|-
|&bull; lon
+
|login
|Дробное
+
|Строка, <= 60 символов
|Долгота
+
|Логин
 +
|-
 +
|password
 +
|Строка, <= 60 символов
 +
|Пароль
 +
|-
 +
|phones
 +
|Строка
 +
|Номера телефонов (через запятую)
 +
|-
 +
!colspan="4"|Необязательные параметры
 
|-
 
|-
|order_params
+
|address
|Массив
+
|Строка
|Массив параметров заказа экипажа
+
|Домашний адрес
 
|-
 
|-
|&bull;
+
|birthday
|Целое
+
|ДД.ММ.ГГГГ
|ИД параметра заказа
+
|Дата рождения
 
|-
 
|-
|creation_way
+
|gender
 
|Строка
 
|Строка
|Способ создания заказа. Может принимать значения:
+
|Пол. Может принимать значения:  
 +
• "male" -  мужской
  
• "operator" — заказ создан оператором
+
• "female" - женский
 +
|-
 +
|client_group
 +
|Целое
 +
|Группа клиента
 +
|}
  
• "sms" — заказ создан через смс
+
Специальные возвращаемые коды:
 
+
{|
• "market" — заказ из биржи
+
!Код
 
+
!Описание
• "common_api" — заказ создан через api
+
|-
 
+
|100
• "t_api" — заказ создан через api
+
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 
+
|-
• "taxophone" — заказ создан из таксофона
+
|101
 
+
|Клиент с логином=LOGIN уже существует
• "driver" — заказ создан водителем
+
|}
 
+
 
• "daily_order" — ежедневный заказ
+
Возвращаемые данные в случае успешного выполнения запроса:
 
+
{|
• "unknown" — неизвестный
+
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД созданного клиента
 
|}
 
|}
  
Строка 3014: Строка 2902:
 
<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/create_order HTTP/1.1
 
Signature: <...>
 
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=5
 +
 
Ответ:
 
Ответ:
 +
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "order_id":1,
+
     "client_id":140
    "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АА",
 
    "confirmed":"confirmed_by_oper",
 
    "crew_coords": {
 
      "lat": 56.833981,
 
      "lon": 53.220249
 
    },
 
    "order_params":[
 
    1,
 
    2,
 
    5
 
    ],
 
    "creation_way":"operator"
 
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
=== Создание задачи СМС серверу ===
+
=== Запрос информации по клиенту ===
  
Метод: POST
+
Метод: GET
  
Название запроса: send_sms
+
Название запроса: get_client_info
  
 
Параметры:
 
Параметры:
Строка 3072: Строка 2935:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|phone
+
|client_id
|Строка, <= 16 символов
+
|Целое
|Номер телефона
+
|ИД клиента
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|message
+
|100
|Строка
+
|Не найден клиент ИД=CLIENT_ID
|Текст СМС
 
 
|}
 
|}
  
Специальные возвращаемые коды: нет
+
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
|name
 +
|Строка
 +
|ФИО
 +
|-
 +
|number
 +
|Строка
 +
|Номер договора
 +
|-
 +
|address
 +
|Строка
 +
|Домашний адрес
 +
|-
 +
|gender
 +
|Строка
 +
|Пол. Может принимать значения:
  
Возвращаемые данные в случае успешного выполнения запроса: нет
+
• "male" -  мужской
  
Пример:
+
• "female" - женский
 
+
|-
<pre>
+
|birthday
 +
|ДД.ММ.ГГГГ
 +
|Дата рождения
 +
|-
 +
|phones 
 +
|Строка
 +
|Номера телефонов (через запятую)
 +
|-
 +
|balance
 +
|Дробное
 +
|Баланс
 +
|-
 +
|bonus_balance
 +
|Дробное
 +
|Бонусный баланс
 +
|-
 +
|login 
 +
|Строка
 +
|Логин
 +
|-
 +
|password
 +
|Строка
 +
|Пароль
 +
|-
 +
|client_group_id
 +
|Целое
 +
|ИД группы клиента
 +
|}
 +
 
 +
Пример:
 +
 
 +
<pre>
 
Запрос:
 
Запрос:
  
POST /common_api/1.0/send_sms HTTP/1.1
+
GET https://ip:port/common_api/1.0/get_client_info?client_id=140 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 33
 
  
 
Signature: <...>
 
Signature: <...>
 
message=SMSText&phone=89050057216
 
  
 
Ответ:
 
Ответ:
Строка 3103: Строка 3022:
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{}
+
   "data":{
}
+
    "client_id":140,
</pre>
+
    "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>
  
Метод: GET
+
=== Изменение информации по клиенту ===
 +
 
 +
Метод: POST
  
Название запроса: check_authorization
+
Название запроса: update_client_info
  
 
Параметры:
 
Параметры:
Строка 3122: Строка 3057:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|login  
+
|client_id
 +
|Целое
 +
|ИД клиента
 +
|-
 +
!colspan="3"|Необязательные параметры
 +
|-
 +
|name
 +
|Строка, <= 60 символов
 +
|ФИО
 +
|-
 +
|login
 
|Строка, <= 60 символов
 
|Строка, <= 60 символов
 
|Логин
 
|Логин
Строка 3129: Строка 3074:
 
|Строка, <= 60 символов
 
|Строка, <= 60 символов
 
|Пароль
 
|Пароль
|}
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|phones
|Не найден клиент с логином LOGIN и/или неверный пароль
+
|Строка
|}
+
|Номера телефонов (через запятую)
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|client_id
+
|address
 +
|Строка
 +
|Домашний адрес
 +
|-
 +
|birthday
 +
|ДД.ММ.ГГГГ
 +
|Дата рождения
 +
|-
 +
|gender
 +
|Строка
 +
|Пол. Может принимать значения:
 +
• "male" -  мужской
 +
 
 +
• "female" - женский
 +
|-
 +
|client_group_id
 
|Целое
 
|Целое
|ИД клиента
+
|ИД группы клиента
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Клиент с номером телефона=PHONE уже существует
 +
|-
 +
|101
 +
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
 +
|-
 +
|102
 +
|Клиент с логином=LOGIN уже существует
 +
|-
 +
|103
 +
|Группа клиента с ИД=CLIENT_GROUP_ID не найдена
 
|}
 
|}
 +
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
  
 
Пример:
 
Пример:
Строка 3156: Строка 3124:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/check_authorization?login=LOGIN&password=PASSWORD HTTP/1.1
+
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
 +
Signature: <...>
 +
Content-Type: application/x-www-form-urlencoded
 +
Content-Length: 118
  
Signature: <...>
+
client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=m
 +
ale&address=ADDRESS&client_group_id=3
  
 
Ответ:
 
Ответ:
  
 
{
 
{
  "code":0,
+
"code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{
+
   "data":{}
    "client_id":131
 
}
 
 
}
 
}
 
</pre>
 
</pre>
  
=== Регистрация клиента ===
+
=== Запрос текущих заказов ===
  
Метод: POST
+
Метод: GET
  
Название запроса: register_client
+
Название запроса: get_current_orders
  
 
Параметры:
 
Параметры:
Строка 3186: Строка 3156:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|name
+
|client_id
|Строка, <= 60 символов
+
|Целое
|ФИО
+
|ИД клиента (может отсутствовать, если phone заполнен)
 
|-
 
|-
|login
+
|phone
|Строка, <= 60 символов
+
|Строка, <= 16 символов
|Логин
+
|Телефон клиента (может отсутствовать, если client_id заполнен)
|-
 
|password
 
|Строка, <= 60 символов
 
|Пароль
 
|-
 
|phones
 
|Строка
 
|Номера телефонов (через запятую)
 
|-
 
!colspan="4"|Необязательные параметры
 
|-
 
|address
 
|Строка
 
|Домашний адрес
 
|-
 
|birthday
 
|ДД.ММ.ГГГГ
 
|Дата рождения
 
|-
 
|gender
 
|Строка
 
|Пол. Может принимать значения:
 
• "male" -  мужской
 
 
 
• "female" - женский
 
 
|}
 
|}
  
Строка 3226: Строка 3171:
 
|-
 
|-
 
|100
 
|100
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
+
|Не найден клиент ИД=CLIENT_ID
|-
 
|101
 
|Клиент с логином=LOGIN уже существует
 
 
|}
 
|}
  
Строка 3238: Строка 3180:
 
!Описание
 
!Описание
 
|-
 
|-
|client_id
+
|id
 
|Целое
 
|Целое
|ИД созданного клиента
+
|ИД заказа
|}
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
 
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
 
 
 
Ответ:
 
 
 
{
 
  "code":0,
 
  "descr":"OK",
 
  "data":{
 
    "client_id":140
 
  }
 
}
 
</pre>
 
 
 
=== Запрос информации по клиенту ===
 
 
 
Метод: GET
 
 
 
Название запроса: get_client_info
 
 
 
Параметры:
 
 
 
{|
 
!Параметры
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|state_id
 +
|Целое
 +
|ИД состояния заказа
 
|-
 
|-
|client_id
+
|start_time
|Целое
+
|ГГГГММДДччммсс
|ИД клиента
+
|Дата создания заказа
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|source_time
|Не найден клиент ИД=CLIENT_ID
+
|ГГГГММДДччммсс
|}
+
|Время подачи
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|client_id
+
|source 
|Целое
 
|ИД клиента
 
|-
 
|name
 
 
|Строка
 
|Строка
|ФИО
+
|Адрес подачи
 
|-
 
|-
|number
+
|destination 
 
|Строка
 
|Строка
|Номер договора
+
|Адрес назначения
 
|-
 
|-
|address
+
|passenger
 
|Строка
 
|Строка
|Домашний адрес
+
|Пассажир
 
|-
 
|-
|gender
+
|crew_id
|Строка
+
|Целое
|Пол. Может принимать значения:
+
|ИД экипажа
 
 
• "male" -  мужской
 
 
 
• "female" - женский
 
 
|-
 
|-
|birthday
+
|prior_crew_id
|ДД.ММ.ГГГГ
+
|Целое
|Дата рождения
+
|ИД предварительного экипажа
 
|-
 
|-
|phones 
+
|driver_id
|Строка
+
|Целое
|Номера телефонов (через запятую)
+
|ИД водителя
 
|-
 
|-
|balance
+
|car_id
|Дробное
+
|Целое
|Баланс
+
|ИД автомобиля
 
|-
 
|-
|bonus_balance
+
|phone
|Дробное
+
|Строка
|Бонусный баланс
+
|Номер телефона
 
|-
 
|-
|login 
+
|client_id
|Строка
+
|Целое
|Логин
+
|ИД клиента
 
|-
 
|-
|password
+
|tariff_id
|Строка
+
|Целое
|Пароль
+
|ИД тарифа
 
|-
 
|-
|client_group_id
+
|order_crew_group_id
 
|Целое
 
|Целое
|ИД группы клиента
+
|ИД группы экипажей, которая указана в заказе
 
|}
 
|}
  
Строка 3357: Строка 3245:
 
<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_client_info?client_id=140 HTTP/1.1
 
 
 
 
Signature: <...>
 
Signature: <...>
 
 
Ответ:
 
Ответ:
 
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
     "client_id":140,
+
     "orders":[
    "name":"Васильев Артём",
+
      {
    "number":"000140",
+
        "id":20648,
    "address":"Бутово,45",
+
        "state_id":44,
    "gender":"male",
+
        "start_time":"20130204181111",
    "birthday":"18.02.1993",
+
        "source_time":"20130204181111",
    "phones":"[
+
        "source":"1-й пр-т \/Москва\/,",
       "88",
+
        "destination":"12-й мкр,",
      "99"
+
        "passenger":"маша",
    ]",
+
        "crew_id":0,
    "balance":2985,
+
        "prior_crew_id":0,
    "bonus_balance":85,
+
        "driver_id":0,
    "login":"artem",
+
        "car_id":0,
    "password":"vasilev",
+
        "phone":"18",
    "client_group_id":1
+
        "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,
 +
        "prior_crew_id":1,
 +
        "driver_id":1,
 +
        "car_id":1,
 +
        "phone":"18",
 +
        "client_id":140,
 +
        "tariff_id":2,
 +
        "order_crew_group_id":2
 +
      }
 +
    ]
 
   }
 
   }
 
}
 
}
 
</pre>
 
</pre>
  
=== Изменение информации по клиенту ===
+
=== Запрос выполненных заказов ===
  
Метод: POST
+
Метод: GET
  
Название запроса: update_client_info
+
Название запроса: get_finished_orders
  
 
Параметры:
 
Параметры:
Строка 3404: Строка 3309:
 
|client_id
 
|client_id
 
|Целое
 
|Целое
|ИД клиента
+
|ИД клиента (может отсутствовать, если phone заполнен)
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|phone
 +
|Строка, <= 16 символов
 +
|Телефон клиента (может отсутствовать, если client_id заполнен)
 
|-
 
|-
|name
+
|start_time
|Строка, <= 60 символов
+
|ГГГГММДДччммсс
|ФИО
+
|Начало периода
 
|-
 
|-
|login
+
|finish_time
|Строка, <= 60 символов
+
|ГГГГММДДччммсс
|Логин
+
|Конец периода
|-
 
|password
 
|Строка, <= 60 символов
 
|Пароль
 
|-
 
|phones
 
|Строка
 
|Номера телефонов (через запятую)
 
|-
 
|address
 
|Строка
 
|Домашний адрес
 
|-
 
|birthday
 
|ДД.ММ.ГГГГ
 
|Дата рождения
 
|-
 
|gender
 
|Строка
 
|Пол. Может принимать значения:
 
• "male" -  мужской
 
 
 
• "female" - женский
 
|-
 
|client_group_id
 
|Целое
 
|ИД группы клиента
 
 
|}
 
|}
  
Строка 3450: Строка 3330:
 
|-
 
|-
 
|100
 
|100
|Клиент с номером телефона=PHONE уже существует
+
|Не найден клиент ИД=CLIENT_ID
 +
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|101
+
|id
|Клиент с ИД=ID имеет такой же номер телефона=PHONE
+
|Целое
 +
|ИД заказа
 +
|-
 +
|state_id
 +
|Целое
 +
|ИД состояния заказа
 +
|-
 +
|start_time
 +
|ГГГГММДДччммсс
 +
|Время создания заказа
 +
|-
 +
|source_time
 +
|ГГГГММДДччммсс
 +
|Время подачи
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Время завершения заказа
 +
|-
 +
|source 
 +
|Строка
 +
|Адрес подачи
 
|-
 
|-
|102
+
|destination 
|Клиент с логином=LOGIN уже существует
+
|Строка
 +
|Адрес назначения
 
|-
 
|-
|103
+
|passenger
|Группа клиента с ИД=CLIENT_GROUP_ID не найдена
+
|Строка
|}
+
|Пассажир
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
 
Signature: <...>
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 118
 
 
 
client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=m
 
ale&address=ADDRESS&client_group_id=3
 
 
 
Ответ:
 
 
 
{
 
"code":0,
 
  "descr":"OK",
 
  "data":{}
 
}
 
</pre>
 
 
 
=== Запрос текущих заказов ===
 
 
 
Метод: GET
 
 
 
Название запроса: get_current_orders
 
 
 
Параметры:
 
 
 
{|
 
!Параметры
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|sum
 +
|Дробное
 +
|Стоимость заказа без учета скидок (наценок)
 
|-
 
|-
|client_id
+
|total_sum
|Целое
+
|Дробное
|ИД клиента (может отсутствовать, если phone заполнен)
+
|Итоговая стоимость заказа
 
|-
 
|-
|phone
+
|cash_sum
|Строка, <= 16 символов
+
|Дробное
|Телефон клиента (может отсутствовать, если client_id заполнен)
+
|Заплачено наличными
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|cashless_sum
|Не найден клиент ИД=CLIENT_ID
+
|Дробное
|}
+
|Заплачено с безналичного счета клиента
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|id
+
|bonus_sum
|Целое
+
|Дробное
|ИД заказа
+
|Заплачено с бонусного счета клиента
 
|-
 
|-
|state_id
+
|bank_card_sum
|Целое
+
|Дробное
|ИД состояния заказа
+
|Заплачено банковской картой
|-
 
|start_time
 
|ГГГГММДДччммсс
 
|Дата создания заказа
 
|-
 
|source_time
 
|ГГГГММДДччммсс
 
|Время подачи
 
|-
 
|source 
 
|Строка
 
|Адрес подачи
 
|-
 
|destination 
 
|Строка
 
|Адрес назначения
 
|-
 
|passenger
 
|Строка
 
|Пассажир
 
 
|-
 
|-
 
|crew_id
 
|crew_id
Строка 3584: Строка 3426:
 
|Целое
 
|Целое
 
|ИД группы экипажей, которая указана в заказе
 
|ИД группы экипажей, которая указана в заказе
|-
 
|creation_way
 
|Строка
 
|Способ создания заказа. Может принимать значения:
 
 
• "operator" — заказ создан оператором
 
 
• "sms" — заказ создан через смс
 
 
• "market" — заказ из биржи
 
 
• "common_api" — заказ создан через api
 
 
• "t_api" — заказ создан через api
 
 
• "taxophone" — заказ создан из таксофона
 
 
• "driver" — заказ создан водителем
 
 
• "daily_order" — ежедневный заказ
 
 
• "unknown" — неизвестный
 
 
|}
 
|}
  
Строка 3612: Строка 3432:
 
<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_finished_orders?client_id=140&phone= HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 
Ответ:
 
Ответ:
Строка 3621: Строка 3441:
 
     "orders":[
 
     "orders":[
 
       {
 
       {
         "id":20648,
+
         "id":20651,
         "state_id":44,
+
         "state_id":34,
         "start_time":"20130204181111",
+
        "source_time":"20130205110812",
         "source_time":"20130204181111",
+
         "start_time":"20130205110812",
         "source":"1-й пр-т \/Москва\/,",
+
         "finish_time":"20130205115618",
         "destination":"12-й мкр,",
+
         "source":"прпроп",
         "passenger":"маша",
+
        "destination":"рррррр",
         "crew_id":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,
 
         "prior_crew_id":0,
         "driver_id":0,
+
         "driver_id":4,
         "car_id":0,
+
         "car_id":6,
         "phone":"18",
+
         "phone":"111111",
 
         "client_id":140,
 
         "client_id":140,
 
         "tariff_id":1,
 
         "tariff_id":1,
Строка 3638: Строка 3465:
 
       },
 
       },
 
       {
 
       {
         "id":20670,
+
         "id":20669,
         "state_id":45,
+
         "state_id":34,
         "start_time":"20130207153022",
+
        "source_time":"20130205130500",
         "source_time":"20130207153022",
+
         "start_time":"20130205130500",
         "source":"11-й мкр,",
+
         "finish_time":"20130205134511",
         "destination":"1-й пр-т \/Москва\/,",
+
         "source":"1",
         "passenger":"саша",
+
        "destination":"2",
         "crew_id":1,
+
        "passenger":"маша",
         "prior_crew_id":1,
+
        "sum":454,
         "driver_id":1,
+
         "total_sum":500,
         "car_id":1,
+
        "cash_sum":0,
         "phone":"18",
+
        "cashless_sum":500,
 +
         "bonus_sum":0,
 +
        "bank_card_sum":0,
 +
         "crew_id":6,
 +
         "prior_crew_id":0,
 +
         "driver_id":4,
 +
         "car_id":6,
 +
         "phone":"222222",
 
         "client_id":140,
 
         "client_id":140,
 
         "tariff_id":2,
 
         "tariff_id":2,
 
         "order_crew_group_id":2
 
         "order_crew_group_id":2
        "creation_way":"operator"
 
 
       }
 
       }
 
     ]
 
     ]
Строка 3660: Строка 3493:
 
</pre>
 
</pre>
  
=== Запрос выполненных заказов ===
+
=== Проведение операции по клиенту ===
  
Метод: GET
+
Метод: POST
  
Название запроса: get_finished_orders
+
Название запроса: create_client_operation
  
 
Параметры:
 
Параметры:
Строка 3677: Строка 3510:
 
|client_id
 
|client_id
 
|Целое
 
|Целое
|ИД клиента (может отсутствовать, если phone заполнен)
+
|ИД клиента
 
|-
 
|-
|phone
+
|sum
|Строка, <= 16 символов
+
|Дробное
|Телефон клиента (может отсутствовать, если client_id заполнен)
+
|Сумма
 
|-
 
|-
|start_time
+
|oper_type
|ГГГГММДДччммсс
+
|Целое
|Начало периода
+
|Тип операции:
 +
• "receipt" - приход
 +
 
 +
• "expense" - расход
 
|-
 
|-
|finish_time
+
|pay_type
|ГГГГММДДччммсс
+
|Целое
|Конец периода
+
|Тип оплаты:
|}
+
• "cash" - наличный
  
Специальные возвращаемые коды:
+
• "nocash" - безналичный
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
!colspan="3"|Необязательные параметры
 +
|-
 +
|oper_time
 +
|ГГГГММДДччммсс
 +
|Время создания операции
 +
|-
 +
|comment
 +
|Строка
 +
|Комментарий
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 
|Не найден клиент ИД=CLIENT_ID
 
|Не найден клиент ИД=CLIENT_ID
 
|}
 
|}
Строка 3707: Строка 3556:
 
!Описание
 
!Описание
 
|-
 
|-
|id
+
|oper_id
 
|Целое
 
|Целое
|ИД заказа
+
|ИД операции
|-
+
|}
|state_id
+
 
|Целое
+
Пример:
|ИД состояния заказа
+
 
|-
+
<pre>
|start_time
+
Запрос:
|ГГГГММДДччммсс
+
 
|Время создания заказа
+
POST https://ip:port/common_api/1.0/create_client_operation HTTP/1.1
|-
+
Signature: <...>
|source_time
+
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
|finish_time
+
 
|ГГГГММДДччммсс
+
Ответ:
|Время завершения заказа
+
 
 +
{
 +
  "code":0,
 +
  "descr":"OK",
 +
  "data":{
 +
    "oper_id":31
 +
 
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Запрос операций по клиенту ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_client_operations
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметры
 +
!Тип
 +
!Описание
 
|-
 
|-
|source 
+
!colspan="3"|Обязательные параметры
|Строка
 
|Адрес подачи
 
 
|-
 
|-
|source_lat
+
|client_id
|Дробное
+
|Целое
|Широта адреса подачи
+
|ИД клиента (обязателен, если phone отсутствует)
 
|-
 
|-
|source_lon 
+
|phone
|Дробное
+
|Целое
|Долгота адреса подачи
+
|Телефон клиента (обязателен, если client_id отсутствует)
 
|-
 
|-
|destination 
+
|start_time
|Строка
+
|ГГГГММДДччммсс
|Адрес назначения
+
|Начало периода
 
|-
 
|-
|destination_lat
+
|finish_time
|Дробное
+
|ГГГГММДДччммсс
|Широта адреса назначения
+
|Конец периода
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|destination_lon 
+
|100
|Дробное
+
|Не найден клиент ИД=CLIENT_ID
|Долгота адреса назначения
+
|}
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|stops
+
|oper_id
|Массив
+
|Целое
|Массив адресов остановок
+
|ИД операции
 
|-
 
|-
|&bull; address
+
|oper_time
|Строка
+
|ГГГГММДДччммсс
|Адрес остановки
+
|Время создания операции
 
|-
 
|-
|&bull; lat
+
|sum
 
|Дробное
 
|Дробное
|Широта адреса остановки
+
|Сумма
 
|-
 
|-
|&bull; lon
+
|order_id
|Дробное
+
|Целое
|Долгота адреса остановки
+
|Заказ, связанный с операцией
 
|-
 
|-
|passenger
+
|oper_type
|Строка
+
|Целое
|Пассажир
+
|Тип операции:
 +
• "receipt" - приход
 +
 
 +
• "expense" - расход
 
|-
 
|-
|sum
+
|pay_type
|Дробное
+
|Целое
|Стоимость заказа без учета скидок (наценок)
+
|Тип оплаты:
 +
• "cash" - наличный
 +
 
 +
• "nocash" - безналичный
 
|-
 
|-
|total_sum
+
|name
|Дробное
+
|Строка
|Итоговая стоимость заказа
+
|Наименование
 
|-
 
|-
|cash_sum
+
|comment
|Дробное
 
|Заплачено наличными
 
|-
 
|cashless_sum
 
|Дробное
 
|Заплачено с безналичного счета клиента
 
|-
 
|bonus_sum
 
|Дробное
 
|Заплачено с бонусного счета клиента
 
|-
 
|bank_card_sum
 
|Дробное
 
|Заплачено банковской картой
 
|-
 
|crew_id
 
|Целое
 
|ИД экипажа
 
|-
 
|prior_crew_id
 
|Целое
 
|ИД предварительного экипажа
 
|-
 
|driver_id
 
|Целое
 
|ИД водителя
 
|-
 
|car_id
 
|Целое
 
|ИД автомобиля
 
|-
 
|phone
 
 
|Строка
 
|Строка
|Номер телефона
+
|Комментарий
|-
+
|}
|client_id
+
 
|Целое
+
Пример:
|ИД клиента
 
|-
 
|tariff_id
 
|Целое
 
|ИД тарифа
 
|-
 
|order_crew_group_id
 
|Целое
 
|ИД группы экипажей, которая указана в заказе
 
|-
 
|creation_way
 
|Строка
 
|Способ создания заказа. Может принимать значения:
 
  
• "operator" — заказ создан оператором
+
<pre>
 +
Запрос:
  
• "sms" — заказ создан через смс
+
GET
  
• "market" — заказ из биржи
+
GET https://ip:port/common_api/1.0/get_client_operations?
 +
client_id=112&start_time=20130201092112&finish_time=20130221092112 HTTP/1.1
  
• "common_api" — заказ создан через api
+
Signature: <...>
  
• "t_api" — заказ создан через api
+
Ответ:
 
 
• "taxophone" — заказ создан из таксофона
 
 
 
• "driver" — заказ создан водителем
 
 
 
• "daily_order" — ежедневный заказ
 
 
 
• "unknown" — неизвестный
 
|}
 
 
 
Пример:
 
  
<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":[
+
     "operations":[
 
       {
 
       {
         "id":20651,
+
         "oper_id":112,
         "state_id":34,
+
         "oper_time":"20130219091328",
        "source_time":"20130205110812",
+
         "sum":"21,8",
        "start_time":"20130205110812",
+
         "order_id":11800,
        "finish_time":"20130205115618",
+
         "oper_type":"receipt",
        "source":"прпроп",
+
         "pay_type":"cash",
        "source_lat":42.9806060791016,
+
         "name":"Пополнение счета",
        "source_lon":47.4614906311035,
+
         "comment":"Комментарий"
        "destination":"рррррр",
+
       },
        "destination_lat":55.6898765563965,
 
        "destination_lon":37.6890335083008,
 
        "stops":[
 
          {
 
            "address":"ввввв",
 
            "lat":55.6792640686035,
 
            "lon":37.5807800292969
 
          },
 
          {
 
            "address":"ааааа",
 
            "lat":55.6731262207031,
 
            "lon":37.6959686279297
 
          },
 
          {
 
            "address":"ппппп",
 
            "lat":55.678165435791,
 
            "lon":37.6913642883301
 
          }
 
        ],
 
        "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,
+
         "oper_id":112,
         "state_id":34,
+
         "oper_time":"20130220112245",
        "source_time":"20130205130500",
+
         "sum":"4500",
        "start_time":"20130205130500",
+
         "order_id":11801,
        "finish_time":"20130205134511",
+
         "oper_type":"receipt",
        "source":"1",
+
         "pay_type":"cash",
        "destination":"2",
+
         "name":"Пополнение счета",
        "passenger":"маша",
+
         "comment":"Комментарий"
         "sum":454,
 
        "total_sum":500,
 
        "cash_sum":0,
 
        "cashless_sum":500,
 
        "bonus_sum":0,
 
        "bank_card_sum":0,
 
         "crew_id":6,
 
         "prior_crew_id":0,
 
        "driver_id":4,
 
         "car_id":6,
 
        "phone":"222222",
 
         "client_id":140,
 
        "tariff_id":2,
 
         "order_crew_group_id":2
 
        "creation_way":"operator"
 
 
       }
 
       }
 
     ]
 
     ]
Строка 3937: Строка 3715:
 
</pre>
 
</pre>
  
=== Проведение операции по клиенту ===
+
 
 +
=== Проведение операции по водителю ===
  
 
Метод: POST
 
Метод: POST
  
Название запроса: create_client_operation
+
Название запроса: create_driver_operation
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 3952: Строка 3731:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|driver_id
 
|Целое
 
|Целое
|ИД клиента
+
|ИД водителя
 
|-
 
|-
|sum
+
|oper_sum
 
|Дробное
 
|Дробное
 
|Сумма
 
|Сумма
 
|-
 
|-
 
|oper_type
 
|oper_type
|Целое
+
|Строка
|Тип операции:  
+
|Тип операции: receipt - приход, expense - расход.
• "receipt" - приход
 
 
 
• "expense" - расход
 
 
|-
 
|-
 
!colspan="3"|Необязательные параметры
 
!colspan="3"|Необязательные параметры
 +
|-
 +
|name
 +
|Строка
 +
|Наименование операции
 
|-
 
|-
 
|oper_time
 
|oper_time
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Время создания операции
+
|Время создания операции (если не задано, текущее)
 
|-
 
|-
 
|comment
 
|comment
 
|Строка
 
|Строка
 
|Комментарий
 
|Комментарий
|-
 
|pay_type
 
|Целое
 
|Тип оплаты:
 
• "cash" - наличный
 
 
• "nocash" - безналичный
 
|-
 
|bonus_oper
 
|true или false
 
|Операция по бонусному счёту
 
 
|}
 
|}
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
 +
 
{|
 
{|
 
!Код
 
!Код
Строка 3995: Строка 3765:
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Водитель не найден ИД=DRIVER_ID
 
|}
 
|}
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 4008: Строка 3779:
 
|ИД операции
 
|ИД операции
 
|}
 
|}
 +
  
 
Пример:
 
Пример:
  
 
<pre>
 
<pre>
 +
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_client_operation HTTP/1.1
+
POST https://ip:port/common_api/1.0/create_driver_operation HTTP/1.1
 
Signature: <...>
 
Signature: <...>
Content-Type: application/x-www-form-urlencoded
+
Content-Type: application/json
 
Content-Length: 99
 
Content-Length: 99
  
client_id=112&oper_time=20130221100719&oper_sum=300&oper_type=receipt&pay_type=cash&comment=COMMENT&bonus_oper=true
+
{
 +
  "driver_id": 1,
 +
  "oper_sum": 10.00,
 +
  "oper_type": "receipt",
 +
  "name": "Пополнение счета",
 +
  "oper_time": "20141210100719",
 +
  "comment": "Комментарий к операции"
 +
}
  
 
Ответ:
 
Ответ:
  
 
{
 
{
  "code":0,
+
  "code":0,
  "descr":"OK",
+
  "descr":"OK",
  "data":{
+
  "data":{
    "oper_id":31
+
  "oper_id":31
 +
  }
 +
}
  
  }
 
}
 
 
</pre>
 
</pre>
  
=== Запрос операций по клиенту ===
+
 
 +
=== Запрос операций по водителю ===
  
 
Метод: GET
 
Метод: GET
  
Название запроса: get_client_operations
+
Название запроса: get_driver_operations
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметры
+
!Параметр
 
!Тип
 
!Тип
 
!Описание
 
!Описание
Строка 4048: Строка 3829:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|client_id
+
|driver_id
 
|Целое
 
|Целое
|ИД клиента (обязателен, если phone отсутствует)
+
|ИД водителя
|-
 
|phone
 
|Целое
 
|Телефон клиента (обязателен, если client_id отсутствует)
 
 
|-
 
|-
 
|start_time
 
|start_time
Строка 4064: Строка 3841:
 
|Конец периода
 
|Конец периода
 
|}
 
|}
 +
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 4071: Строка 3849:
 
|-
 
|-
 
|100
 
|100
|Не найден клиент ИД=CLIENT_ID
+
|Не найден водитель ИД=DRIVER_ID
 
|}
 
|}
 +
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
Строка 4099: Строка 3878:
 
|Целое
 
|Целое
 
|Тип операции:
 
|Тип операции:
• "receipt" - приход
+
•"receipt" - приход
 
+
•"expense" - расход
• "expense" - расход
 
|-
 
|pay_type
 
|Целое
 
|Тип оплаты:
 
• "cash" - наличный
 
 
 
• "nocash" - безналичный
 
 
|-
 
|-
 
|name
 
|name
Строка 4124: Строка 3895:
 
Запрос:
 
Запрос:
  
GET
+
GET https://ip:port/common_api/1.0/get_driver_operations?
 
+
driver_id=112&start_time=20130201092112&finish_time=20130221092112 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: <...>
  
Строка 4144: Строка 3912:
 
         "order_id":11800,
 
         "order_id":11800,
 
         "oper_type":"receipt",
 
         "oper_type":"receipt",
        "pay_type":"cash",
+
         "name":"DRIVER_OPERATION_1",
         "name":"Пополнение счета",
+
         "comment":"DRIVER_OPERATION_COMMENT_1"
         "comment":"Комментарий"
 
 
       },
 
       },
 
       {
 
       {
Строка 4154: Строка 3921:
 
         "order_id":11801,
 
         "order_id":11801,
 
         "oper_type":"receipt",
 
         "oper_type":"receipt",
        "pay_type":"cash",
+
         "name":"DRIVER_OPERATION_2",
         "name":"Пополнение счета",
+
         "comment":"DRIVER_OPERATION_COMMENT_2"
         "comment":"Комментарий"
 
 
       }
 
       }
 
     ]
 
     ]
Строка 4163: Строка 3929:
 
</pre>
 
</pre>
  
 
+
=== Задание координат экипажей ===
=== Проведение операции по водителю ===
 
 
 
 
Метод: POST
 
Метод: POST
  
Название запроса: create_driver_operation
+
Название запроса: set_crews_coords
 
 
Параметры:
 
  
 +
Параметры в формате JSON:
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 4177: Строка 3940:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!Обязательные параметры
 +
|-
 +
|crew_coords
 +
|Массив
 +
|Массив координат экипажей
 +
|-
 +
|&bull; crew_id
 +
|Целое
 +
|ИД экипажа
 
|-
 
|-
|driver_id
+
|&bull; gps_id
 
|Целое
 
|Целое
|ИД водителя
+
|GPS идентификатор (если не задан ИД экипажа)
 
|-
 
|-
|oper_sum
+
|&bull; lat
 
|Дробное
 
|Дробное
|Сумма
+
|Широта
 
|-
 
|-
|oper_type
+
|&bull; lon
|Строка
+
|Дробное
|Тип операции: receipt - приход, expense - расход.
+
|Долгота
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
!Необязательные параметры
 
|-
 
|-
|name
+
|speed
|Строка
+
|Дробное
|Наименование операции
+
|Скорость
|-
+
|}
|oper_time
 
|ГГГГММДДччммсс
 
|Время создания операции (если не задано, текущее)
 
|-
 
|comment
 
|Строка
 
|Комментарий
 
|}
 
  
Специальные возвращаемые коды:
 
  
{|
+
Специальные возвращаемые коды: нет
!Код
 
!Описание
 
|-
 
|100
 
|Водитель не найден ИД=DRIVER_ID
 
|}
 
  
Возвращаемые данные в случае успешного выполнения запроса:
+
Возвращаемые данные в случае успешного выполнения запроса: нет
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
|oper_id
 
|Целое
 
|ИД операции
 
|}
 
  
  
Строка 4232: Строка 3978:
  
 
<pre>
 
<pre>
 
 
Запрос:
 
Запрос:
  
POST https://ip:port/common_api/1.0/create_driver_operation HTTP/1.1
+
POST https://ip:port/common_api/1.0/set_crews_coords HTTP/1.1
 
Signature: <...>
 
Signature: <...>
 
Content-Type: application/json
 
Content-Type: application/json
Content-Length: 99
+
Content-Length: 109
  
{
+
{"crews_coords":[{"crew_id":1,"lat":11.111111,"lon":22.222222},
  "driver_id": 1,
+
{"gps_id":2,"lat":33.333333,"lon":44.444444}]}
  "oper_sum": 10.00,
 
  "oper_type": "receipt",
 
  "name": "Пополнение счета",
 
  "oper_time": "20141210100719",
 
  "comment": "Комментарий к операции"
 
}
 
  
 
Ответ:
 
Ответ:
  
 
{
 
{
  "code":0,
+
  "code":0,
  "descr":"OK",
+
  "descr":"OK",
  "data":{
+
  "data":{}
  "oper_id":31
 
  }
 
 
}
 
}
 
 
</pre>
 
</pre>
  
 
+
=== Анализ телефона ===
=== Запрос операций по водителю ===
 
  
 
Метод: GET
 
Метод: GET
  
Название запроса: get_driver_operations
+
Название запроса: analyze_phone
  
 
Параметры:
 
Параметры:
 
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 4275: Строка 4009:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!Обязательные параметры
 +
|-
 +
|phone
 +
|Строка
 +
|Номер телефона
 +
|-
 +
!Необязательные параметры
 +
|-
 +
|search_in_drivers_mobile
 +
|true или false
 +
|Искать среди мобильных телефонов водителей
 
|-
 
|-
|driver_id
+
|search_in_drivers_home
|Целое
+
|true или false
|ИД водителя
+
|Искать среди домашних телефонов водителей
 
|-
 
|-
|start_time
+
|search_in_clients
|ГГГГММДДччммсс
+
|true или false
|Начало периода
+
|Искать среди телефонов клиентов
 
|-
 
|-
|finish_time
+
|search_in_phones
|ГГГГММДДччммсс
+
|true или false
|Конец периода
+
|Искать в справочнике телефонов
 
|}
 
|}
  
 +
 +
Если параметры search_in_drivers_mobile, search_in_drivers_home, search_in_clients, search_in_phones не заданы, то поиск телефона будет происходить во всех справочниках.
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 4297: Строка 4043:
 
|-
 
|-
 
|100
 
|100
|Не найден водитель ИД=DRIVER_ID
+
|Телефон не найден
 
|}
 
|}
 
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
Строка 4307: Строка 4052:
 
!Описание
 
!Описание
 
|-
 
|-
|oper_id
+
|phone_type
 +
|Строка
 +
|Может принимать значения: «driver_mobile», «driver_home», «client», «phone».
 +
|-
 +
|id
 
|Целое
 
|Целое
|ИД операции
+
|ИД водителя, клиента, телефона из справочника.
|-
 
|oper_time
 
|ГГГГММДДччммсс
 
|Время создания операции
 
|-
 
|sum
 
|Дробное
 
|Сумма
 
|-
 
|order_id
 
|Целое
 
|Заказ, связанный с операцией
 
|-
 
|oper_type
 
|Целое
 
|Тип операции:
 
•"receipt" - приход
 
•"expense" - расход
 
|-
 
|name
 
|Строка
 
|Наименование
 
|-
 
|comment
 
|Строка
 
|Комментарий
 
 
|}
 
|}
 +
  
 
Пример:
 
Пример:
Строка 4343: Строка 4067:
 
Запрос:
 
Запрос:
  
GET https://ip:port/common_api/1.0/get_driver_operations?
+
GET /common_api/1.0/analyze_phone?
driver_id=112&start_time=20130201092112&finish_time=20130221092112 HTTP/1.1
+
phone=89501234567&search_in_drivers_mobile=true&search_in_drivers_home=true&search_in_clients=true&
Signature: <...>
+
search_in_phones=true HTTP/1.1
 +
 
 +
Host: 127.0.0.1:8089
 +
Keep-Alive: 300
 +
Connection: keep-alive
 +
Signature: 4285286a446064353f4a951b721c54f7
  
 
Ответ:
 
Ответ:
Строка 4353: Строка 4082:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
    "operations":[
+
  "phone_type":"client",
      {
+
  "id":1
        "oper_id":112,
+
  }
        "oper_time":"20130219091328",
+
}
        "sum":"21,8",
+
 
        "order_id":11800,
 
        "oper_type":"receipt",
 
        "name":"DRIVER_OPERATION_1",
 
        "comment":"DRIVER_OPERATION_COMMENT_1"
 
      },
 
      {
 
        "oper_id":112,
 
        "oper_time":"20130220112245",
 
        "sum":"4500",
 
        "order_id":11801,
 
        "oper_type":"receipt",
 
        "name":"DRIVER_OPERATION_2",
 
        "comment":"DRIVER_OPERATION_COMMENT_2"
 
      }
 
    ]
 
  }
 
}
 
 
</pre>
 
</pre>
  
=== Задание координат экипажей ===
+
 
 +
=== Показать сообщение в ТМ ===
 +
 
 
Метод: POST
 
Метод: POST
  
Название запроса: set_crews_coords
+
Название запроса: show_tm_message
 +
 
 +
Параметры:
  
Параметры в формате JSON:
 
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 4390: Строка 4105:
 
!Обязательные параметры
 
!Обязательные параметры
 
|-
 
|-
|crew_coords
+
|text
|Массив
+
|Строка
|Массив координат экипажей
+
|Текст сообщения
 +
|-
 +
!Необязательные параметры
 
|-
 
|-
|&bull; crew_id
+
|header
|Целое
+
|Строка
|ИД экипажа
+
|Заголовок сообщения
 
|-
 
|-
|&bull; gps_id
+
|timeout
 
|Целое
 
|Целое
|GPS идентификатор (если не задан ИД экипажа)
+
|Скрывать сообщение через, сек. (0 — не скрывать)
 
|-
 
|-
|&bull; lat
+
|users
|Дробное
+
|Массив
|Широта
+
|Массив пользователей (если не указаны — отправлять всем)
 
|-
 
|-
|&bull; lon
+
|&bull;  
|Дробное
+
|Целое
|Долгота
+
|ИД пользователя
|-
 
!Необязательные параметры
 
|-
 
|speed
 
|Дробное
 
|Скорость
 
 
|}
 
|}
  
  
Специальные возвращаемые коды: нет
+
Специальные возвращаемые коды:
 +
 
 +
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Пользователи для отправки сообщения не найдены
 +
|}
  
Возвращаемые данные в случае успешного выполнения запроса: нет
 
  
 +
Возвращаемые данные в случае успешного выполнения запроса: нет.
  
 
Пример:
 
Пример:
 +
<pre>
  
<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
  
POST https://ip:port/common_api/1.0/set_crews_coords HTTP/1.1
+
{
Signature: <...>
+
  "text": "Текст сообщения",
Content-Type: application/json
+
  "users": [
Content-Length: 109
+
      1,
 +
      2,
 +
      3
 +
  ],
 +
  "header": "Заголовок",
 +
  "timeout": 12
 +
}
  
{"crews_coords":[{"crew_id":1,"lat":11.111111,"lon":22.222222},
 
{"gps_id":2,"lat":33.333333,"lon":44.444444}]}
 
  
 
Ответ:
 
Ответ:
Строка 4443: Строка 4171:
 
   "data":{}
 
   "data":{}
 
}
 
}
 +
 
</pre>
 
</pre>
=== Изменение информации по заказу ===
 
Метод: POST
 
  
Название запроса: update_order
+
 
 +
=== Запрос списка купленных смен водителей ===
 +
 
 +
Метод: GET
 +
 
 +
Название запроса: get_driver_shifts
  
 
Параметры:
 
Параметры:
Строка 4456: Строка 4188:
 
!Описание
 
!Описание
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
!Обязательные параметры
 
|-
 
|-
|order_id
+
|start_time
|Целое
+
|ГГГГММДДччммсс
|ИД заказа
+
|Начало периода
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода
 
|-
 
|-
|phone
+
!Необязательные параметры
|Строка, <= 16 символов
 
|Номер телефона
 
 
|-
 
|-
|source_time
+
|driver_id
|ГГГГММДДччммсс
+
|Целое
|Время подачи
+
|ИД водителя
 
|-
 
|-
|is_prior
+
|new_shifts
 
|true или false
 
|true или false
|Предварительный заказ
+
|Включить в ответ новые смены (по умолчанию true)
 
|-
 
|-
|customer
+
|in_work_shifts
|Строка
+
|true или false
|Заказчик
+
|Включить в ответ смены в работе (по умолчанию true)
 
|-
 
|-
|passenger
+
|finished_shifts
|Строка
+
|true или false
|Пассажир
+
|Включить в ответ выполненные смены (по умолчанию true)
 
|-
 
|-
|comment
+
|failed_shifts
|Строка
+
|true или false
|Комментарий
+
|Включить в ответ неуспешно завершенные смены (по умолчанию true)
 
|-
 
|-
|crew_group_id
+
|returned_shifts
|Целое
+
|true или false
|ИД группы экипажей
+
|Включить в ответ возвращенные смены (по умолчанию false)
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|client_id
+
|shifts
|Целое
+
|Массив
|ИД клиента
+
|Массив купленных смен
 
|-
 
|-
|uds_id
+
|&bull; shift_id
|Целое
+
|Целое  
|ИД службы ЕДС
+
|ИД купленной смены
 
|-
 
|-
|tariff_id
+
|&bull; driver_id
|Целое
+
|Целое  
|ИД тариф
+
|ИД водителя
 
|-
 
|-
|addresses
+
|&bull;driver_name
|Массив
+
|Строка
|Массив адресов. Первый элемент — адрес
+
|ФИО водителя
подачи(обязательно), последний — адрес назначения,
 
между ними — остановки.
 
 
|-
 
|-
|&bull; address
+
|&bull; plan_shift_id
 
|Строка
 
|Строка
|Адрес подачи
+
|ИД запланированной смены
 
|-
 
|-
|&bull; lat
+
|&bull; plan_shift_name
|Дробное
+
|Строка
|Широта адреса
+
|Наименование запланированной смены
 
|-
 
|-
|&bull; lon
+
|&bull; plan_shift_cost
|Дробное
+
|Дробное  
|Долгота адреса
+
|Цена смены
 
|-
 
|-
|order_params
+
|&bull; plan_shift_type
|Массив
+
|Строка
|Массив параметров заказа
+
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
 
|-
 
|-
|&bull;
+
|&bull; plan_shift_start_time
|Целое
+
|ГГГГММДДччммсс
|ИД параметра заказа
+
|План-начало смены (для срочных)
 
|-
 
|-
|cost_order
+
|&bull; plan_shift_finish_time
|Дробное
+
|ГГГГММДДччммсс
|Сумма заказа
+
|План-конец смены (для срочных)
 
|-
 
|-
|state_id
+
|&bull; plan_shift_length
|Целое
+
|Целое  
|ИД состояния заказа
+
|План продолжительность смены, ч. (для бессрочных)
 
|-
 
|-
|discount_id
+
|&bull; plan_shift_crew_group_id
|Целое
+
|Целое  
|ИД скидки
+
|ИД группы экипажей, которые могут купить смену
 
|-
 
|-
|auto_select_discount
+
|&bull; shift_state
|true или false
+
|Строка
|Автоматически подобрать скидку, если не указана явно
+
|Состояние смены («new» - новая, «in_work» - в работе, «finished» - завершена успешно, «failed» - завершена неуспешно)
 
|-
 
|-
|auto_select_tariff
+
|&bull; buy_time
|true или false
+
|ГГГГММДДччммсс
|Автоматически подобрать тариф, если не указан явно
+
|Время продажи смены водителю
 
|-
 
|-
|auto_recalc_cost
+
|&bull; is_returned
|true или false
+
|true или false  
|Автоматически пересчитать сумму заказа
+
|Признак возвращенной смены
 
|-
 
|-
|auto_update_order_params
+
|&bull; return_time
|true или false
+
|ГГГГММДДччммсс
|Автоматически обновить параметры заказа по клиенту и группе клиента
+
|Время возврата смены
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
 
|-
 
|-
|100
+
|&bull; orders_count
|Заказ не найден
+
|Целое
 +
|Количество заказов, выполненных водителем за смену
 
|-
 
|-
|101
+
|&bull; orders_sum
|Состояние заказа не найдено
+
|Дробное
 +
|Сумма заказов, выполненных водителем за смену
 
|-
 
|-
|102
+
|&bull; fact_length
|Тариф не найден
+
|Дробное
|-
+
|Фактическая продолжительность смены, ч.
|103
 
|Скидка не найдена
 
|-
 
|104
 
|Группа экипажа не найдена
 
|-
 
|105
 
|Служба не найдена
 
|-
 
|106
 
|Клиент не найден
 
|-
 
|107
 
|Изменение состояния не соответствует необходимым условиям
 
 
|}
 
|}
 
Возвращаемые данные в случае успешного выполнения запроса: нет.
 
  
 
Пример:
 
Пример:
  
 
<pre>
 
<pre>
POST https://ip:port/common_api/1.0/update_order HTTP/1.1
+
Запрос:
 +
 
 +
GET https://ip:port/common_api/1.0/get_driver_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
 
Signature: <...>
 
Signature: <...>
Content-Type: application/json
 
Content-Length: 208
 
  
{
+
 
  "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
 
}
 
 
Ответ:
 
Ответ:
 +
 
{
 
{
 
   "code":0,
 
   "code":0,
 
   "descr":"OK",
 
   "descr":"OK",
   "data":{}
+
   "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>
 
</pre>
  
=== Анализ телефона ===
+
 
 +
=== Запрос списка запланированных смен водителей ===
  
 
Метод: GET
 
Метод: GET
  
Название запроса: analyze_phone
+
Название запроса: get_driver_plan_shifts
  
 
Параметры:
 
Параметры:
 +
 
{|
 
{|
 
!Параметр
 
!Параметр
Строка 4646: Строка 4388:
 
!Обязательные параметры
 
!Обязательные параметры
 
|-
 
|-
|phone
+
|start_time
|Строка
+
|ГГГГММДДччммсс
|Номер телефона
+
|Начало периода (если включаем в ответ срочные смены)
 +
|-
 +
|finish_time
 +
|ГГГГММДДччммсс
 +
|Конец периода (если включаем в ответ срочные смены)
 
|-
 
|-
 
!Необязательные параметры
 
!Необязательные параметры
 
|-
 
|-
|search_in_drivers_mobile
+
|limited_shifts
|true или false
+
|true или false  
|Искать среди мобильных телефонов водителей
+
|Включить в ответ срочные смены (по умолчанию true)
 
|-
 
|-
|search_in_drivers_home
+
|unlimited_shifts
|true или false
+
|true или false  
|Искать среди домашних телефонов водителей
+
|Включить в ответ бессрочные смены (по умолчанию true)
|-
 
|search_in_clients
 
|true или false
 
|Искать среди телефонов клиентов
 
|-
 
|search_in_phones
 
|true или false
 
|Искать в справочнике телефонов
 
 
|}
 
|}
  
 
+
Специальные возвращаемые коды: нет
Если параметры search_in_drivers_mobile, search_in_drivers_home, search_in_clients, search_in_phones не заданы, то поиск телефона будет происходить во всех справочниках.
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
|-
 
|100
 
|Телефон не найден
 
|}
 
  
 
Возвращаемые данные в случае успешного выполнения запроса:
 
Возвращаемые данные в случае успешного выполнения запроса:
Строка 4687: Строка 4415:
 
!Описание
 
!Описание
 
|-
 
|-
|phone_type
+
|plan_shifts
|Строка
+
|Массив
|Может принимать значения: «driver_mobile», «driver_home», «client», «phone».
+
|Массив запланированных смен
 
|-
 
|-
|id
+
|&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; max_sell_count
 +
|Целое
 +
|Максимальное количество продаж смены
 +
|-
 +
|&bull; sold_count
 +
|Целое
 +
|Количество продаж смены
 
|}
 
|}
 
  
 
Пример:
 
Пример:
Строка 4702: Строка 4469:
 
Запрос:
 
Запрос:
  
GET /common_api/1.0/analyze_phone?
+
GET https://ip:port/common_api/1.0/get_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
phone=89501234567&search_in_drivers_mobile=true&search_in_drivers_home=true&search_in_clients=true&
+
Signature: <...>
search_in_phones=true HTTP/1.1
+
 
 
 
Host: 127.0.0.1:8089
 
Keep-Alive: 300
 
Connection: keep-alive
 
Signature: 4285286a446064353f4a951b721c54f7
 
  
 
Ответ:
 
Ответ:
Строка 4717: Строка 4479:
 
   "descr":"OK",
 
   "descr":"OK",
 
   "data":{
 
   "data":{
  "phone_type":"client",
+
    "plan_shifts":[
  "id":1
+
      {
  }
+
        "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>
 
</pre>
  
  
=== Показать сообщение в ТМ ===
+
=== Продажа смены водителю ===
  
 
Метод: POST
 
Метод: POST
  
Название запроса: show_tm_message
+
Название запроса: driver_buy_shift
  
 
Параметры:
 
Параметры:
Строка 4740: Строка 4527:
 
!Обязательные параметры
 
!Обязательные параметры
 
|-
 
|-
|text
+
|crew_id
|Строка
+
|Целое
|Текст сообщения
+
|ИД экипажа
 
|-
 
|-
!Необязательные параметры
+
|plan_shift_id
|-
+
|Целое  
|header
+
|ИД запланированной смены
|Строка
 
|Заголовок сообщения
 
|-
 
|timeout
 
|Целое
 
|Скрывать сообщение через, сек. (0 — не скрывать)
 
|-
 
|users
 
|Массив
 
|Массив пользователей (если не указаны — отправлять всем)
 
|-
 
|&bull;
 
|Целое
 
|ИД пользователя
 
 
|}
 
|}
 
  
 
Специальные возвращаемые коды:
 
Специальные возвращаемые коды:
Строка 4770: Строка 4542:
 
!Описание
 
!Описание
 
|-
 
|-
|100
+
|100  
|Пользователи для отправки сообщения не найдены
+
|Запланированная смена не найдена
 +
|-
 +
|101
 +
|Экипаж не найден
 +
|-
 +
|102
 +
|Водитель не найден
 +
|-
 +
|103
 +
|Недостаточно денег на счете водителя
 +
|-
 +
|104
 +
|Водитель уволен либо заблокирован
 +
|-
 +
|105
 +
|Запланированная смена устарела
 +
|-
 +
|106
 +
|Не подходит группа экипажа
 +
|-
 +
|107
 +
|Превышено максимальное число покупок смены
 +
|-
 +
|108
 +
|Повторная покупка смены
 
|}
 
|}
  
Строка 4778: Строка 4574:
  
 
Пример:
 
Пример:
 +
 
<pre>
 
<pre>
 +
Запрос:
  
Запрос:
+
POST https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
POST /common_api/1.0/show_tm_message HTTP/1.1
+
Signature: <...>
Host: 127.0.0.1:8089
+
Content-Type: application/x-www-form-urlencoded
Keep-Alive: 300
+
Content-Length: 25
Connection: keep-alive
+
crew_id=1&plan_shift_id=1
Signature: 4285286a446064353f4a951b721c54f7
 
 
 
{
 
  "text": "Текст сообщения",
 
  "users": [
 
      1,
 
      2,
 
      3
 
  ],
 
  "header": "Заголовок",
 
  "timeout": 12
 
}
 
  
  
Строка 4806: Строка 4592:
 
   "data":{}
 
   "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 HTTP/1.1
 
</pre>
 
</pre>
  
 +
Для получения данных из БД используются запросы типа GET. Для записи данных в БД используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI.
  
=== Запрос списка купленных смен водителей ===
+
Пример:
  
Метод: GET
+
<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>
  
Название запроса: get_driver_shifts
+
В запросе типа 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>
|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)
 
|}
 
  
Специальные возвращаемые коды: нет
+
В любом запросе обязательно с другими полями должно передаваться поле 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>
 +
 +
Существуют общие для всех запросов коды результатов:
 
{|
 
{|
!Параметр
+
! Код
!Тип
+
! Описание
!Описание
 
 
|-
 
|-
|shifts
+
|0
|Массив
+
|Успешное выполнение запроса
|Массив купленных смен
 
 
|-
 
|-
|&bull; shift_id
+
|1
|Целое
+
|Неизвестная ошибка
|ИД купленной смены
 
 
|-
 
|-
|&bull; driver_id
+
|2
|Целое
+
|Неизвестный тип API
|ИД водителя
 
 
|-
 
|-
|&bull;driver_name
+
|3
|Строка
+
|API отключено в настройках модуля TM API в Такси-Мастер
|ФИО водителя
 
 
|-
 
|-
|&bull; plan_shift_id
+
|4
|Строка
+
|Не совпадает секретный ключ
|ИД запланированной смены
+
|-
 +
|5
 +
|Неподдерживаемая версия API
 
|-
 
|-
|&bull; plan_shift_name
+
|6
|Строка
+
|Неизвестное название запроса
|Наименование запланированной смены
 
 
|-
 
|-
|&bull; plan_shift_cost
+
|7
|Дробное
+
|Неверный тип запроса GET
|Цена смены
 
 
|-
 
|-
|&bull; plan_shift_type
+
|8
|Строка
+
|Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
|Тип смены («limited» - срочная, «unlimited» - бессрочная)
 
 
|-
 
|-
|&bull; plan_shift_start_time
+
|9
|ГГГГММДДччммсс
+
|Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
|План-начало смены (для срочных)
 
 
|-
 
|-
|&bull; plan_shift_finish_time
+
|10
|ГГГГММДДччммсс
+
|Внутренняя ошибка обработки запроса
|План-конец смены (для срочных)
+
|}
 +
 
 +
=== Описание запросов ===
 +
 
 +
==== Запрос информации по номеру телефона ====
 +
Метод: GET
 +
 
 +
Название запроса: get_info_by_phone
 +
 
 +
Параметры:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|&bull; plan_shift_length
+
!colspan="3"|Обязательные параметры
|Целое
 
|План продолжительность смены, ч. (для бессрочных)
 
 
|-
 
|-
|&bull; plan_shift_crew_group_id
+
|PHONE
|Целое
+
|Строка, <= 16 символов
|ИД группы экипажей, которые могут купить смену
+
|Номер телефона
 +
|-
 +
|FIELDS
 +
|Строка
 +
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
 
|-
 
|-
|&bull; shift_state
+
|signature
 
|Строка  
 
|Строка  
|Состояние смены («new» - новая, «in_work» - в работе, «finished» - завершена успешно, «failed» - завершена неуспешно)
+
|Поле для проверки секретного ключа.
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|&bull; buy_time
+
|PHONE_TYPE
|ГГГГММДДччммсс
+
|Целое
|Время продажи смены водителю
+
|Тип телефона звонящего
 +
(1 - если звонит водитель; 2 - если звонит физическое лицо; 3 - если звонит юридическое лицо; 4 - если звонит номер из справочника Телефоны; 0 - неизвестный номер)
 
|-
 
|-
|&bull; is_returned
+
|PHONE_TO_DIAL
|true или false
+
|Строка, <= 16 символов
|Признак возвращенной смены
+
|Номер телефона для отзвона по заказу
 
|-
 
|-
|&bull; return_time
+
|CREW_ID
|ГГГГММДДччммсс
 
|Время возврата смены
 
|-
 
|&bull; orders_count
 
 
|Целое  
 
|Целое  
|Количество заказов, выполненных водителем за смену
+
|ИД экипажа
 
|-
 
|-
|&bull; orders_sum
+
|IS_PRIOR
|Дробное
+
|true или false
|Сумма заказов, выполненных водителем за смену
+
|Признак предварительного заказа
 
|-
 
|-
|&bull; fact_length
+
|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
Пример:
+
|Строка
 
+
|Сумма заказа с учетом всех скидок
<pre>
+
|-
Запрос:
+
|CREW_GROUP_ID
 
+
|Целое
GET https://ip:port/common_api/1.0/get_driver_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
+
|ИД группы экипажа
Signature: <...>
+
|-
 
+
|CLIENT_BALANCE
 
+
|Дробное
Ответ:
+
|Баланс клиента
 
+
|-
{
+
|DRIVER_TIMECOUNT
  "code":0,
+
|Целое
  "descr":"OK",
+
|Время пути водителя до адреса подачи (в минутах)
  "data":{
+
|-
    "shifts":[
+
|SOURCE_TIMECOUNT
      {
+
|Целое
        "shift_id":1,
+
|Время оставшееся до подачи (в минутах)
        "driver_id":1,
+
|-
        "driver_name":"DRIVER_1",
+
|SOUND_COLOR
        "plan_shift_id":1,
+
|Строка
        "plan_shift_name":"PLAN_SHIFT_1",
+
|Запись с информацией о цвете
        "plan_shift_cost":100,
+
|-
        "plan_shift_type":"limited",
+
|SOUND_MARK
        "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
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!Обязательные параметры
+
|GOSNUMBER
 +
|Строка
 +
|Государственный номер автомобиля
 
|-
 
|-
|start_time
+
|CAR_COLOR
|ГГГГММДДччммсс
+
|Строка
|Начало периода (если включаем в ответ срочные смены)
+
|Цвет автомобиля
 
|-
 
|-
|finish_time
+
|CAR_MARK
|ГГГГММДДччммсс
+
|Строка
|Конец периода (если включаем в ответ срочные смены)
+
|Марка автомобиля
 
|-
 
|-
!Необязательные параметры
+
|ORDER_COORDS
 +
|Строка
 +
|Координаты места подачи
 
|-
 
|-
|limited_shifts
+
|CREW_COORDS
|true или false
+
|Строка
|Включить в ответ срочные смены (по умолчанию true)
+
|Координаты назначенного экипажа
 
|-
 
|-
|unlimited_shifts
+
|MARKET_TYPE
|true или false
+
|Целое
|Включить в ответ бессрочные смены (по умолчанию true)
+
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
|}
 
 
 
Специальные возвращаемые коды: нет
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|plan_shifts
+
|ORDERS_COUNT
|Массив
+
|Целое
|Массив запланированных смен
+
|Для телефона клиента — количество текущих и предварительных заказов по телефону; для телефона водителя — количество текущих заказов, на которые назначен данный водитель
 
|-
 
|-
|&bull; plan_shift_id
+
|CLIENT_GROUP_ID
|Целое  
+
|Целое
|ИД запланированной смены
+
|ИД группы клиента
 
|-
 
|-
|&bull; plan_shift_name
+
|CLIENT_BONUS_BALANCE
|Строка
+
|Дробное
|Наименование запланированной смены
+
|Бонусный баланс клиента
 
|-
 
|-
|&bull; plan_shift_comment
+
|AD_LIGHTHOUSE
|Строка  
+
|Строка
|Комментарий запланированной смены
+
|Признак наличия шашек. Пустая строка – номер клиента или водителя без экипажа. 1 – есть шашки, 0 – нет шашек.
 
|-
 
|-
|&bull; plan_shift_cost
+
|CREW_STATE
|Дробное
+
|Целое
|Цена смены
+
|Состояние экипажа.
|-
 
|&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
 
|Целое
 
|Количество продаж смены
 
 
|}
 
|}
  
Строка 5103: Строка 4872:
 
<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_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
+
Ответ:
Signature: <...>
 
  
 
+
<response>
Ответ:
+
   <code>0</code>
 
+
   <descr>OK</descr>
{
+
   <data>
   "code":0,
+
     <PHONE_TYPE>0</PHONE_TYPE>
   "descr":"OK",
+
    <PHONE_TO_DIAL></PHONE_TO_DIAL>
   "data":{
+
    <CREW_ID>3</CREW_ID>
     "plan_shifts":[
+
     <ORDER_ID>6</ORDER_ID>
      {
+
   </data>
        "plan_shift_id":1,
+
</response>
        "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>
 
</pre>
  
 +
==== Запрос информации по ИД заказа ====
  
=== Продажа смены водителю ===
+
Метод: GET
  
Метод: POST
+
Название запроса: get_info_by_order_id
 
 
Название запроса: driver_buy_shift
 
  
 
Параметры:
 
Параметры:
  
 
{|
 
{|
!Параметр
+
!Параметр  
!Тип
+
!Тип  
 
!Описание
 
!Описание
 
|-
 
|-
!Обязательные параметры
+
|colspan="3"|Обязательные параметры
 
|-
 
|-
|crew_id
+
|ORDER_ID
 
|Целое  
 
|Целое  
|ИД экипажа
+
|ИД заказа
 +
|-
 +
|FIELDS
 +
|Строка
 +
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
 
|-
 
|-
|plan_shift_id
+
|signature
|Целое
+
|Строка
|ИД запланированной смены
+
|Поле для проверки секретного ключа
 
|}
 
|}
  
Специальные возвращаемые коды:
+
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
  
 
{|
 
{|
!Код
+
!Параметр
 +
!Тип
 
!Описание
 
!Описание
 
|-
 
|-
|100
+
|DRIVER_TIMECOUNT
|Запланированная смена не найдена
+
|Строка, <= 16 символов
 +
|Время до подачи в минутах, указанное водителем
 
|-
 
|-
|101
+
|SOUND_COLOR
|Экипаж не найден
+
|Строка
 +
|Запись с информацией о цвете
 
|-
 
|-
|102
+
|CAR_MARK
|Водитель не найден
+
|Строка
 +
|Марка автомобиля
 
|-
 
|-
|103
+
|CAR_COLOR
|Недостаточно денег на счете водителя
+
|Строка
 +
|Цвет автомобиля
 +
|-
 +
|GOSNUMBER
 +
|Строка
 +
|Государственный номер автомобиля
 +
|-
 +
|SOUND_MARK
 +
|Строка
 +
|Запись с информацией о марке автомобиля
 +
|-
 +
|CREW_GROUP_ID
 +
|Целое
 +
|ИД группы экипажа
 
|-
 
|-
|104
+
|IS_PRIOR
|Водитель уволен либо заблокирован
+
|true или false
 +
|Признак предварительного заказа
 
|-
 
|-
|105
+
|DISCOUNTEDSUMM
|Запланированная смена устарела
+
|Строка
 +
|Сумма заказа с учетом всех скидок
 
|-
 
|-
|106
+
|DRIVER_PHONE
|Не подходит группа экипажа
+
|Строка, <= 16 символов
 +
|Номер телефона водителя
 
|-
 
|-
|107
+
|CATEGORYID
|Превышено максимальное число покупок смены
+
|Целое
 +
|ИД категории телефона
 
|-
 
|-
|108
+
|SOURCE_TIMECOUNT
|Повторная покупка смены
+
|Целое
|}
+
|Время до подачи в минутах
 
 
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет.
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
POST https://ip:port/common_api/1.0/get_cars_info HTTP/1.1
 
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
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
!colspan="3"|Обязательные параметры
+
|ORDER_COORDS
 +
|Строка
 +
|Координаты места подачи
 
|-
 
|-
|phone
+
|CREW_COORDS
 
|Строка
 
|Строка
|Телефон
+
|Координаты назначенного экипажа
 
|-
 
|-
|rating
+
|ORDER_STATE
|Целое
+
|Целое  
|Рейтинг (от 1 до 5)
+
|ИД состояния заказа
 +
|-
 +
|MARKET_TYPE
 +
|Целое
 +
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
 
|-
 
|-
|text
+
|AD_LIGHTHOUSE
 
|Строка
 
|Строка
|Текстовый отзыв
+
|Признак наличия шашек (1 – шашки есть, 0 – шашек нет).
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|CREW_STATE
|-
 
|order_id
 
 
|Целое
 
|Целое
|ИД заказа
+
|Состояние экипажа.
 
|}
 
|}
  
Допускается указывать либо параметр rating либо text, либо оба параметра.
+
Пример:
  
Специальные возвращаемые коды: нет.
+
<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
 +
HTTP/1.1
  
Пример:
+
Ответ:
<pre>
 
Запрос:
 
POST /common_api/1.0/save_client_feed_back HTTP/1.1
 
Host: 127.0.0.1:8090
 
Keep-Alive: 300
 
Connection: keep-alive
 
Content-Type: application/json
 
Content-Length: 72
 
Signature: <...>
 
  
{
+
<response>
   "phone":"89123456789",
+
   <code>0</code>
   "rating":4,
+
   <descr>OK</descr>
   "text":"test feedback",
+
   <data>
  "order_id":100
+
    <DRIVER_SOURCETIME></DRIVER_SOURCETIME>
}
+
    <MARK></MARK>
Ответ:
+
    <COLOR></COLOR>
{
+
    <GOSNUMBER></GOSNUMBER>
  "code":0,
+
    <IS_PRIOR></IS_PRIOR>
  "descr":"OK",
+
    <MOBILE_PHONE></MOBILE_PHONE>
   "data":{}
+
    <SOURCE_TIME></SOURCE_TIME>
}
+
   </data>
 +
</response>
 
</pre>
 
</pre>
  
== Описание протокола TMTAPI Версия 1.0 ==
+
==== Смена состояния заказа ====
 +
Метод: POST
  
=== Общее описание протокола ===
+
Название запроса: change_order_state
  
==== Формат запроса ====
+
Параметры:
  
TM API принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TM API, должно идти название API (tm_tapi) и версия API.
+
{|
 
+
!Параметр
Пример:
+
!Тип
 
+
!Описание
<pre>
+
|-
GET https://ip:port/tm_tapi/1.0/get_info_by_phone HTTP/1.1
+
!colspan="3"|Обязательные параметры
</pre>
+
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД заказа
 +
|-
 +
|NEED_STATE
 +
|Целое
 +
|Новое состояние заказа
 +
|-
 +
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа
 +
|}
  
Для получения данных из БД используются запросы типа GET. Для записи данных в БД используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI.
+
Специальные возвращаемые коды:
  
Пример:
+
{|
 +
!Код
 +
!Описание
 +
|-
 +
|100
 +
|Заказ с таким ИД не найден
 +
|-
 +
|101
 +
|Изменение состояния не соответствует необходимым условиям
 +
|}
  
<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.
+
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|ORDER_ID
 +
|Целое
 +
|ИД созданного заказа
 +
|-
 +
|NEW_STATE
 +
|Целое
 +
|Новое состояние заказа
 +
|}
  
 
Пример:
 
Пример:
  
 
<pre>
 
<pre>
POST https://ip:port/tm_tapi/1.0/change_order_state HTTP/1.1
+
Запрос:
 +
 
 +
POST https://ip:port/tm_tapi/1.0/change_order_state HTTP/1.1  
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 71
 
Content-Length: 71
  
order_id=98798&need_state=12&signature=a204c50c7e48f0c6849a87485fe5e171
+
order_id=18561&need_state=14&signature=3e8107e0c044e55d983db1fbed82fd8c
</pre>
 
  
В любом запросе обязательно с другими полями должно передаваться поле signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMAPI в Такси-Мастер.
+
Ответ:
  
Пример:
+
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <ORDER_ID>18561</ORDER_ID>
 +
    <NEW_STATE>14</NEW_STATE>
 +
  </data>
 +
</response>
 +
</pre>
  
<pre>
+
==== Запись пути к файлу разговора в базу данных ====
Запрос:
 
GET https://ip:port/tm_tapi/1.0/get_info_by_phone?phone=89058800565&fields=PHONE_TYPE
 
&signature=ef17ea682d09e452af544a5758dba396 HTTP/1.1
 
  
Секретный ключ:
+
Метод: POST
321
 
  
Signature = MD5("phone=89058800565&fields=PHONE_TYPE" + "321") = ef17ea682d09e452af544a5758dba396
+
Название запроса: create_record_link
HTTP/1.1
 
</pre>
 
  
==== Формат ответа ====
+
Параметры:
TM API всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате XML. Общий вид возвращаемого результата:
 
  
<pre>
 
<response>
 
<code>Числовой код результата</code>
 
<descr>Строковое описание результата</descr>
 
<data>Дополнительная информация</data>
 
</response>
 
</pre>
 
 
Существуют общие для всех запросов коды результатов:
 
 
{|
 
{|
! Код
+
!Параметр
! Описание
+
!Тип
 +
!Описание
 
|-
 
|-
|0
+
!colspan="3"|Обязательные параметры
|Успешное выполнение запроса
 
 
|-
 
|-
|1
+
|RECORD_DATE
|Неизвестная ошибка
+
|ДДММГГГГччммсс
 +
|Дата записи
 
|-
 
|-
|2
+
|RECORD_LENGTH
|Неизвестный тип API
+
|Целое
 +
|Продолжительность записи (в секундах)
 
|-
 
|-
|3
+
|CALL_ID
|API отключено в настройках модуля TM API в Такси-Мастер
+
|Строка, <= 60 символов
 +
|ИД звонка (необязателен, если указан PHONE)
 
|-
 
|-
|4
+
|PHONE
|Не совпадает секретный ключ
+
|Строка, <= 16 символов
 +
|Номер телефона (необязателен, если указан CALL_ID)
 
|-
 
|-
|5
+
|FILE_PATH
|Неподдерживаемая версия API
+
|Строка, <=255 символов
 +
|Путь к файлу записи
 
|-
 
|-
|6
+
|CALL_TYPE
|Неизвестное название запроса
+
|0 или 1
 +
|0 — Исходящий, 1 — Входящий
 
|-
 
|-
|7
+
|signature
|Неверный тип запроса GET
+
|Строка
|-
+
|Поле для проверки секретного ключа
|8
 
|Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра)
 
|-
 
|9
 
|Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра)
 
|-
 
|10
 
|Внутренняя ошибка обработки запроса
 
 
|}
 
|}
  
=== Описание запросов ===
+
Специальные возвращаемые коды: нет.
  
==== Запрос информации по номеру телефона ====
+
Возвращаемые данные в случае успешного выполнения запроса
Метод: GET
 
  
Название запроса: get_info_by_phone
+
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 +
|-
 +
|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: 185
 +
 
 +
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
 +
 
 +
Ответ:
 +
<response>
 +
  <code>0</code>
 +
  <descr>OK</descr>
 +
  <data>
 +
    <RECORD_ID>25</RECORD_ID>
 +
  </data>
 +
</response>
 +
</pre>
 +
 
 +
==== Создать новый заказ ====
 +
 
 +
Метод: POST
 +
 
 +
Название запроса: make_new_order
  
 
Параметры:
 
Параметры:
Строка 5410: Строка 5199:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|PHONE
+
|PHONE  
 
|Строка, <= 16 символов  
 
|Строка, <= 16 символов  
 
|Номер телефона
 
|Номер телефона
 
|-
 
|-
|FIELDS
+
|ORDER_STATE_ID
|Строка
+
|Целое
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
+
|ИД состояния заказа
 
|-
 
|-
 
|signature  
 
|signature  
 
|Строка  
 
|Строка  
|Поле для проверки секретного ключа.
+
|Поле для проверки секретного ключа
|}
+
|-
 
+
!colspan="3"|Необязательные параметры
Специальные возвращаемые коды: нет
+
|-
 
+
|CREWGROUPID
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
+
|Целое
 
+
|ИД группы экипажа
{|
 
!Параметр
 
!Тип
 
!Описание
 
 
|-
 
|-
|PHONE_TYPE
+
|TARIF_ID
 
|Целое  
 
|Целое  
|Тип телефона звонящего
+
|ИД тарифа
(1 - если звонит водитель; 2 - если звонит физическое лицо; 3 - если звонит юридическое лицо; 4 - если звонит номер из справочника Телефоны; 0 - неизвестный номер)
 
 
|-
 
|-
|PHONE_TO_DIAL
+
|DISCOUNTEDSUMM
|Строка, <= 16 символов
+
|Дробное
|Номер телефона для отзвона по заказу
+
|Фиксированная сумма за заказ
 
|-
 
|-
|CREW_ID
+
|CUSTOMER
|Целое
+
|Строка, <=80 символов
|ИД экипажа
+
|Заказчик
 
|-
 
|-
|IS_PRIOR
+
|SOURCE
|true или false
+
|Строка, <=80 символов
|Признак предварительного заказа
+
|Адрес подачи
 
|-
 
|-
|ORDER_CLIENT_ID
+
|SOURCE_STREET
 
|Целое
 
|Целое
|ИД клиента из заказа
+
|ИД улицы подачи
 
|-
 
|-
|DRIVER_PHONE
+
|SOURCE_HOUSE
|Строка, <= 16 символов  
+
|Строка, <=10 символов
|Номер телефона водителя
+
|Дом подачи
|-
 
|CREW_SYSTEMSTATE
 
|Целое
 
|Состояние экипажа
 
 
|-
 
|-
|CLIENT_ID
+
|SOURCE_FLAT
|Целое
+
|Строка, <=10 символов
|ИД клиента
+
|Квартира подачи
 
|-
 
|-
|CLIENT_TYPE
+
|SOURCE_POINT
|Целое  
+
|Целое
|Тип клиента
+
|ИД пункта подачи
 
|-
 
|-
|CATEGORYID
+
|DESTINATION
|Целое
+
|Строка, <=80 символов
|ИД категории телефона
+
|Адрес назначения
 
|-
 
|-
|PHONE_SYSTEM_CATEGORY
+
|DESTINATION_STREET
|Целое  
+
|Целое
|Системное значение категории телефона (0 - обычный, 1 - черный, 2 - белый, 3 - серый)
+
|ИД улицы назначения
 
|-
 
|-
|ORDER_ID
+
|DESTINATION_HOUSE
|Целое
+
|Строка, <=10 символов
|ИД заказа
+
|Дом назначения
 
|-
 
|-
|DRIVER_ID
+
|DESTINATION_FLAT
|Целое
+
|Строка, <=10 символов
|ИД водителя
+
|Квартира назначения
 
|-
 
|-
|ORDER_STATE
+
|DESTINATION_POINT
|Целое  
+
|Целое
|Состояние заказа
+
|ИД пункта назначения
 
|-
 
|-
|DRIVER_REMAINDER
+
|CREWID
|Дробное
+
|Целое
|Баланс счета водителя
+
|ИД экипажа
 
|-
 
|-
|DISCOUNTEDSUMM
+
|SUMM
|Строка
+
|Дробное
|Сумма заказа с учетом всех скидок
+
|Стоимость заказа без учета скидок (наценок)
 +
|-
 +
|STARTUSER
 +
|Целое
 +
|Пользователь, создавший заказ
 
|-
 
|-
|CREW_GROUP_ID
+
|STARTTIME
|Целое
+
|ГГГГММДДччммсс
|ИД группы экипажа
+
|Дата создания заказа
 
|-
 
|-
|FIRST_CREW_GROUP_ID
+
|FINISHUSER
 
|Целое
 
|Целое
|ИД первой группы экипажа
+
|Пользователь, завершивший заказ
 
|-
 
|-
|CLIENT_BALANCE
+
|FINISHTIME
|Дробное
+
|ГГГГММДДччммсс
|Баланс клиента
+
|Дата завершения заказа
 
|-
 
|-
|DRIVER_TIMECOUNT
+
|SOURCE_ZONE
|Целое  
+
|Целое
|Время пути водителя до адреса подачи (в минутах)
+
|Район подачи
 
|-
 
|-
|SOURCE_TIMECOUNT
+
|DESTINATION_ZONE
|Целое  
+
|Целое
|Время оставшееся до подачи (в минутах)
+
|Район назначения
 
|-
 
|-
|SOUND_COLOR
+
|SOURCE_PARKING
|Строка
+
|Целое
|Запись с информацией о цвете
+
|Стоянка подачи
 
|-
 
|-
|SOUND_MARK
+
|DESTINATION_PARKING
|Строка
+
|Целое
|Запись с информацией о марке автомобиля
+
|Стоянка назначения
|-
 
|GOSNUMBER
 
|Строка
 
|Государственный номер автомобиля
 
 
|-
 
|-
|CAR_COLOR
+
|SOURCE_TIME
|Строка
+
|ГГГГММДДччммсс
|Цвет автомобиля
+
|Дата подачи
 
|-
 
|-
|CAR_MARK
+
|SOURCE_COUNTRY
|Строка
+
|0 или 1 (false или true)
|Марка автомобиля
+
|Признак междугороднего заказа
 
|-
 
|-
|ORDER_COORDS
+
|IS_PRIOR
|Строка
+
|0 или 1 (false или true)
|Координаты места подачи
+
|Признак предварительного заказа
 
|-
 
|-
|CREW_COORDS
+
|PRIZE
|Строка
+
|0 или 1 (false или true)
|Координаты назначенного экипажа
+
|Признак призового заказа
 
|-
 
|-
|MARKET_TYPE
+
|NOTE
|Целое
+
|Строка, <=80 символов
|Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
+
|Примечание
 
|-
 
|-
|ORDERS_COUNT
+
|BONUSPOINT
|Целое
+
|Дробное
|Для телефона клиента — количество текущих и предварительных заказов по телефону; для телефона водителя — количество текущих заказов, на которые назначен данный водитель
+
|Бонусные баллы, начисленные водителю за заказ
 
|-
 
|-
|CLIENT_GROUP_ID
+
|DISTANCE
|Целое
 
|ИД группы клиента
 
|-
 
|CLIENT_BONUS_BALANCE
 
 
|Дробное
 
|Дробное
|Бонусный баланс клиента
+
|Километраж по городу (в километрах)
 
|-
 
|-
|AD_LIGHTHOUSE
+
|HOURLY_LEN
|Строка
+
|Целое
|Признак наличия шашек. Пустая строка – номер клиента или водителя без экипажа. 1 – есть шашки, 0 – нет шашек.
+
|Длительность исполнения почасового заказа (в минутах)
 
|-
 
|-
|CREW_STATE
+
|HOURLY_START
 +
|ГГГГММДДччммсс
 +
|Дата начала отсчета при почасовом заказе
 +
|-
 +
|HOURLY_PAY
 +
|0 или 1 (false или true)
 +
|Признак почасового заказа
 +
|-
 +
|PHONE_TO_DIAL
 +
|Строка, <=16 символов
 +
|Номер телефона для отзвона по заказу
 +
|-
 +
|FROMBORDER
 +
|0 или 1 (false или true)
 +
|Признак заказа "с бордюра"
 +
|-
 +
|WAITING_START
 +
|ГГГГММДДччммсс
 +
|Дата начала ожидания заказчика водителем
 +
|-
 +
|WAITING_LENGTH
 +
|Целое
 +
|Общая длина периода ожидания заказчика водителем (в минутах)
 +
|-
 +
|BACKFREE
 
|Целое
 
|Целое
|Состояние экипажа.
+
|Признак применения скидки в 50% на обратный путь
 
|-
 
|-
|SOURCE_TIME
+
|INPUTTIME
 
|ГГГГММДДччммсс
 
|ГГГГММДДччммсс
|Дата и время подачи
+
|Дата принятия заказа (от даты создания заказа отличается тем, что может быть задана пользователем)
 
|-
 
|-
|DRV_SHIFT_START_TIME
+
|MONEY_RECEIVE
|ГГГГММДДччммсс
+
|0 или 1 (false или true)
|Начало фактической смены водителя
+
|Подтверждение принятия денег наличными
 +
|-
 +
|NOTIFY_BEFORE
 +
|Целое
 +
|Период времени, за который пользователь оповещается о наступлении даты подачи
 
|-
 
|-
|START_USER_SIP_ACCOUNTS
+
|WANTCREWID
|Строка
+
|Целое
|Список логинов SIP–аккаунтов пользователя, принявшего заказ
+
|ИД желаемого экипажа
 
|-
 
|-
|CREATION_WAY
+
|DISTANCE_COUNTRY
|Строка
+
|Дробное
|Способ создания заказа (operator, sms, market, common_api, t_api, taxophone, driver, daily_order, unknown)
+
|Километраж за границами города (в километрах)
|}
+
|-
 
+
|DISTANCE_CHECK
Пример:
+
|0 или 1 (false или true)
 
+
|Разрешение ручного ввода километража
<pre>
+
|-
Запрос:
+
|CLIENTID
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
+
|ИД постоянного клиента
 +
|-
 +
|INFRA_STATE
 +
|Целое
 +
|Состояние заявки в исходящей кампании колцентра INFRA (1 - заявка передана в исходящую компанию, 2 - отзвон успешно произведен, 3 - занято, 4 - не берут трубку)
 +
|-
 +
|INFRA_ORDER
 +
|Целое
 +
|INFRA-заказ (спец. поле для работы с колцентром компании Инфрател)
 +
|}
  
Ответ:
+
Специальные возвращаемые коды: нет
  
<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
 
 
 
Параметры:
 
  
 
{|
 
{|
Строка 5621: Строка 5414:
 
!Тип  
 
!Тип  
 
!Описание
 
!Описание
|-
 
!colspan="3"|Обязательные параметры
 
 
|-
 
|-
 
|ORDER_ID  
 
|ORDER_ID  
 
|Целое  
 
|Целое  
|ИД заказа
+
|ИД созданного заказа
|-
+
|}
|FIELDS
+
 
|Строка
+
Пример:
|Список полей, которые необходимо вернуть. Поля перечисляются через символ ''"-"''
+
 
|-
+
<pre>
|signature  
+
Запрос:
|Строка
+
 
|Поле для проверки секретного ключа
+
POST https://ip:port/tm_tapi/1.0/make_new_order HTTP/1.1
|}
+
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
  
Возвращаемые данные в случае успешного выполнения запроса: зависит от того какие поля были переданы в поле fields.
+
Параметры:
  
 
{|
 
{|
Строка 5646: Строка 5454:
 
!Описание
 
!Описание
 
|-
 
|-
|DRIVER_TIMECOUNT
+
!colspan="3"|Обязательные параметры
|Строка, <= 16 символов
 
|Время до подачи в минутах, указанное водителем
 
 
|-
 
|-
|SOUND_COLOR
+
|PHONE
|Строка  
+
|Строка, <= 16 символов
|Запись с информацией о цвете
+
|Номер телефона
 
|-
 
|-
|CAR_MARK
+
|CALL_ID
|Строка
+
|Целое
|Марка автомобиля
+
|ИД звонка
 
|-
 
|-
|CAR_COLOR
+
|VOICE_STREET
|Строка  
+
|Строка, <= 60 символов
|Цвет автомобиля
+
|Название улицы или пункта, полученное через преобразование голоса в текст
 
|-
 
|-
|GOSNUMBER
+
|signature
|Строка  
+
|Строка
|Государственный номер автомобиля
+
|Поле для проверки секретного ключа
 +
|}
 +
 
 +
Специальные возвращаемые коды: нет
 +
 
 +
Возвращаемые данные в случае успешного выполнения запроса:
 +
 
 +
{|
 +
!Параметр
 +
!Тип
 +
!Описание
 
|-
 
|-
|SOUND_MARK
+
|CALL_ID
|Строка
 
|Запись с информацией о марке автомобиля
 
|-
 
|CREW_GROUP_ID
 
 
|Целое  
 
|Целое  
|ИД группы экипажа
+
|ИД звонка
 
|-
 
|-
|FIRST_CREW_GROUP_ID
+
|PHONE
|Целое
+
|Строка, <= 16 символов
|ИД первой группы экипажа
+
|Номер телефона
 
|-
 
|-
|IS_PRIOR
+
|STREET_FOUND
|true или false  
+
|0 или 1 (false или true)
|Признак предварительного заказа
+
|Признак того, что улица найдена
 
|-
 
|-
|DISCOUNTEDSUMM
+
|STREET_NAME
|Строка
+
|Строка, <= 60 символов
|Сумма заказа с учетом всех скидок
+
|Наименование улицы или пункта, найденное в базе данных
|-
 
|DRIVER_PHONE
 
|Строка, <= 16 символов
 
|Номер телефона водителя
 
|-
 
|CATEGORYID
 
|Целое
 
|ИД категории телефона
 
|-
 
|SOURCE_TIMECOUNT
 
|Целое
 
|Время до подачи в минутах
 
|-
 
|ORDER_COORDS
 
|Строка
 
|Координаты места подачи
 
|-
 
|CREW_COORDS
 
|Строка
 
|Координаты назначенного экипажа
 
|-
 
|ORDER_STATE
 
|Целое
 
|ИД состояния заказа
 
|-
 
|MARKET_TYPE
 
|Целое
 
|Тип биржи заказов (2 — Яндекс, 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, unknown)
 
 
|}
 
|}
 +
  
 
Пример:
 
Пример:
Строка 5743: Строка 5504:
 
<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
  
GET https://ip:port/tm_tapi/1.0/get_info_by_order_id?order_id=60&fields=DRIVER_SOURCETIME-MARKCOLOR-
+
PHONE=89058770593&CALL_ID=56&VOICE_STREET=пушкинск&FIND_STREET=0&API_FIND_STREET=&NUM_HOUSE=&signat
GOSNUMBER-IS_PRIOR-MOBILE_PHONE-SOURCE_TIME&signature=fdcd04e570443b56176b83f44748dc23
+
ure=9204a53e0f4842bb623c3a5f7683520a
HTTP/1.1
 
  
 
Ответ:
 
Ответ:
Строка 5754: Строка 5517:
 
   <descr>OK</descr>
 
   <descr>OK</descr>
 
   <data>
 
   <data>
     <DRIVER_SOURCETIME></DRIVER_SOURCETIME>
+
     <CALL_ID>56</CALL_ID>
     <MARK></MARK>
+
     <PHONE>89058770593</PHONE>
     <COLOR></COLOR>
+
     <FIND_STREET>1</FIND_STREET>
     <GOSNUMBER></GOSNUMBER>
+
     <API_FIND_STREET>Пушкинская</API_FIND_STREET>
    <IS_PRIOR></IS_PRIOR>
 
    <MOBILE_PHONE></MOBILE_PHONE>
 
    <SOURCE_TIME>20140929134911</SOURCE_TIME>
 
 
   </data>
 
   </data>
 
</response>
 
</response>
 
</pre>
 
</pre>
  
==== Смена состояния заказа ====
+
==== Смена состояния заказа по результату автодозвона ====
 
Метод: POST
 
Метод: POST
  
Название запроса: change_order_state
+
Название запроса: set_request_state
  
 
Параметры:
 
Параметры:
Строка 5779: Строка 5539:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|ORDER_ID  
+
|STATE_ID
|Целое  
+
|Целое
 +
|Cостояние заказа до отзвона
 +
|-
 +
|PHONE_TYPE
 +
|0 или 1
 +
|Признак, указывающий кому был совершен звонок (0 - водителю, 1 - клиенту)
 +
|-
 +
|ORDER_ID
 +
|Целое
 
|ИД заказа
 
|ИД заказа
 
|-
 
|-
|NEED_STATE
+
|STATE
|Целое  
+
|Целое (2, 3, 4, 5)
|Новое состояние заказа
+
|Состояние отзвона
 
|-
 
|-
|signature  
+
|signature
|Строка  
+
|Строка
 
|Поле для проверки секретного ключа
 
|Поле для проверки секретного ключа
 
|}
 
|}
  
Специальные возвращаемые коды:
+
Специальные возвращаемые коды: нет
 
+
 
{|
+
Возвращаемые данные в случае успешного выполнения запроса: нет
!Код
+
 
!Описание
+
Настройки смены состояний заказа с использованием автодозвона задаются в карточке
|-
+
состояний заказа.
|100
 
|Заказ с таким ИД не найден
 
|-
 
|101
 
|Изменение состояния не соответствует необходимым условиям
 
|}
 
 
 
Возвращаемые данные в случае успешного выполнения запроса:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
|ORDER_ID
 
|Целое
 
|ИД созданного заказа
 
|-
 
|NEW_STATE
 
|Целое
 
|Новое состояние заказа
 
|}
 
  
 
Пример:
 
Пример:
Строка 5825: Строка 5571:
 
<pre>
 
<pre>
 
Запрос:
 
Запрос:
 
+
POST https://ip:port/tm_tapi/1.0/set_request_state HTTP/1.1
POST https://ip:port/tm_tapi/1.0/change_order_state HTTP/1.1  
 
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 71
 
Content-Length: 71
  
order_id=18561&need_state=14&signature=3e8107e0c044e55d983db1fbed82fd8c
+
state_id=7&phone_type=1&order_id=50&state=4&signature=0eb50db401d3540e038fde68eb260333
  
 
Ответ:
 
Ответ:
  
 
<response>
 
<response>
  <code>0</code>
+
  <code>0</code>
  <descr>OK</descr>
+
  <descr>OK</descr>
  <data>
 
    <ORDER_ID>18561</ORDER_ID>
 
    <NEW_STATE>14</NEW_STATE>
 
  </data>
 
 
</response>
 
</response>
 
</pre>
 
</pre>
  
==== Запись пути к файлу разговора в базу данных ====
+
==== Соединить клиента и водителя ====
 
 
 
Метод: POST
 
Метод: POST
  
Название запроса: create_record_link
+
Название запроса: connect_client_and_driver
  
 
Параметры:
 
Параметры:
Строка 5859: Строка 5599:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|RECORD_DATE
+
|order_id
|ДДММГГГГччммсс
+
|Целое
|Дата записи
+
|ИД заказа
 
|-
 
|-
|RECORD_LENGTH
+
|signature
|Целое
+
|Строка
|Продолжительность записи (в секундах)
 
|-
 
|CALL_ID
 
|Строка, <= 60 символов
 
|ИД звонка (необязателен, если указан PHONE)
 
|-
 
|PHONE
 
|Строка, <= 16 символов
 
|Номер телефона (необязателен, если указан CALL_ID)
 
|-
 
|FILE_PATH
 
|Строка, <=255 символов
 
|Путь к файлу записи
 
|-
 
|CALL_TYPE
 
|0 или 1
 
|0 — Исходящий, 1 — Входящий
 
|-
 
|signature  
 
|Строка  
 
 
|Поле для проверки секретного ключа
 
|Поле для проверки секретного ключа
 
|}
 
|}
  
Специальные возвращаемые коды: нет.
+
Специальные возвращаемые коды:
 
 
Возвращаемые данные в случае успешного выполнения запроса
 
 
 
 
{|
 
{|
!Параметр
+
!Код
!Тип
 
 
!Описание
 
!Описание
 
|-
 
|-
|RECORD_ID
+
|100
|Целое
+
|Не найден заказ с таким ИД
|ИД созданной записи
+
|-
 +
|102
 +
|Не найдена биржа заказа у данного заказа
 
|}
 
|}
 +
 +
Возвращаемые данные в случае успешного выполнения запроса: нет
  
 
Пример:
 
Пример:
Строка 5907: Строка 5627:
 
Запрос:
 
Запрос:
  
POST https://ip:port/tm_tapi/1.0/create_record_link HTTP/1.1
+
POST https://ip:port/tm_tapi/1.0/connect_client_and_driver HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
Content-Length: 185
+
Content-Length: 53
  
RECORD_DATE=20130122180949&RECORD_LENGTH=215&CALL_ID=12345&PHONE=8987564&FILE_PATH=d%3A%5Ctemp%5CTM
+
order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4
%5Ctrunk%5CSource%5CDevUtils%5CTMAPITest%5C&CALL_TYPE=1&signature=56851c4e8d2d4bb9ba615615f76ad7f7
 
  
 
Ответ:
 
Ответ:
 +
 
<response>
 
<response>
  <code>0</code>
+
  <code>102</code>
  <descr>OK</descr>
+
  <descr>Market not found by OrderId</descr>
  <data>
 
    <RECORD_ID>25</RECORD_ID>
 
  </data>
 
 
</response>
 
</response>
 +
 
</pre>
 
</pre>
  
==== Создать новый заказ ====
 
  
 +
==== Установить режим «Перерыв» для линий софтфона ====
 
Метод: POST
 
Метод: POST
  
Название запроса: make_new_order
+
Название запроса: set_sip_account_dnd_mode
  
 
Параметры:
 
Параметры:
Строка 5939: Строка 5657:
 
!colspan="3"|Обязательные параметры
 
!colspan="3"|Обязательные параметры
 
|-
 
|-
|PHONE
+
|dnd
|Строка, <= 16 символов
+
|Строка
|Номер телефона
+
|0 или 1
 
|-
 
|-
|ORDER_STATE_ID
+
|user_login
|Целое
+
|Строка
|ИД состояния заказа
+
|Логин пользователя ТМ
 
|-
 
|-
|signature
+
|lines
|Строка  
+
|Строка
|Поле для проверки секретного ключа
+
|<nowiki>Список линий, разделенных символом «|».</nowiki>
 
|-
 
|-
!colspan="3"|Необязательные параметры
+
|signature
 +
|Строка
 +
|Поле для проверки секретного ключа.
 +
|}
 +
 
 +
Специальные возвращаемые коды:
 +
{|
 +
!Код
 +
!Описание
 
|-
 
|-
|CREWGROUPID
+
|100
|Целое
+
|Пользователь с таким логином или линиями не найден.
|ИД группы экипажа
+
|}
|-
+
 
|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 HTTP/1.1
 
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/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
 
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 или 1
 
|Признак, указывающий кому был совершен звонок (0 - водителю, 1 - клиенту)
 
|-
 
|ORDER_ID
 
|Целое
 
|ИД заказа
 
|-
 
|STATE
 
|Целое (2, 3, 4, 5)
 
|Состояние отзвона
 
|-
 
|signature
 
|Строка
 
|Поле для проверки секретного ключа
 
|}
 
 
 
Специальные возвращаемые коды: нет
 
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет
 
 
 
Настройки смены состояний заказа с использованием автодозвона задаются в карточке
 
состояний заказа.
 
 
 
Пример:
 
 
 
<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
 
 
 
Ответ:
 
 
 
<response>
 
  <code>0</code>
 
  <descr>OK</descr>
 
</response>
 
</pre>
 
 
 
==== Соединить клиента и водителя ====
 
Метод: POST
 
 
 
Название запроса: connect_client_and_driver
 
 
 
Параметры:
 
 
 
{|
 
!Параметр
 
!Тип
 
!Описание
 
|-
 
!colspan="3"|Обязательные параметры
 
|-
 
|order_id
 
|Целое
 
|ИД заказа
 
|-
 
|signature
 
|Строка
 
|Поле для проверки секретного ключа
 
|}
 
 
 
Специальные возвращаемые коды:
 
{|
 
!Код
 
!Описание
 
|-
 
|100
 
|Не найден заказ с таким ИД
 
|-
 
|102
 
|Не найдена биржа заказа у данного заказа
 
|}
 
 
 
Возвращаемые данные в случае успешного выполнения запроса: нет
 
 
 
Пример:
 
 
 
<pre>
 
Запрос:
 
 
 
POST https://ip:port/tm_tapi/1.0/connect_client_and_driver HTTP/1.1
 
Content-Type: application/x-www-form-urlencoded
 
Content-Length: 53
 
 
 
order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4
 
 
 
Ответ:
 
 
 
<response>
 
  <code>102</code>
 
  <descr>Market not found by OrderId</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 HTTP/1.1
 
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 HTTP/1.1
 
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>
 
<pre>
Строка 6563: Строка 5715:
 
{|
 
{|
 
!Параметр  
 
!Параметр  
!Тип  
+
!Тип  
!Описание
+
!Описание
|-
+
|-
!colspan="3"|Обязательные параметры
+
!Обязательные параметры
 
|-
 
|-
 
|crew_code  
 
|crew_code  
Строка 6620: Строка 5772:
 
</response>
 
</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>
 
Запрос:
 
GET https://ip:port/tm_tapi/1.0/get_key_info HTTP/1.1
 
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>
 
 
</pre>
 
</pre>
  

Версия 17:05, 26 мая 2015

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

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

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

Содержание

Параметры TM API

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

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

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

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

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

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

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

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

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

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

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

  1. Установите флажок «Template-checkbox-off.png Включить прием терминальных платежей». Данная функция позволит отображать все платежные операции по приходу средств от водителей через терминалы в базе данных программы.
  2. В поле «Секретный ключ» укажите номер секретного ключа для работы с платежными системами и сверки платежей, который будет выслан вам в письме от менеджера. Секретный ключ - это определенный набор символов, необходимый для формирования подписи при передаче информации о платеже.
  3. В полях «Логин» и «Пароль» введите данные учетной записи на сайте http://term.bitmaster.ru.
  4. Кнопка «Задать всем водителям терминальный аккаунт по их ИД» служит для соединения TM API с сервером Такси-Мастер. В результате соединения записи о терминальных аккаунтах генерируются, заносятся (для тех водителей, у которых они отсутствуют) и обновляются (для тех водителей, у которых уже существуют терминальные аккаунты) в Такси-Мастер.
  5. Перезапустите Такси-Мастер и TMServer для запуска работы модуля.
Интересная информация
Обратите внимание, что для платежных систем также существует открытый и свободно распространяемый API, с помощью которого есть возможность связать Такси-Мастер и платежные системы. Обратитесь в отдел дополнительных услуг, написав на odu@bitmaster.ru, за получением кода для данного компонента системы.

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

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

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

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

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

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

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

POST https://ip:port/common_api/1.0/create_order HTTP/1.1
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 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMWeb в ТМ2. Пример:

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

Секретный ключ:
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 HTTP/1.1
Ответ:
{
"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 HTTP/1.1
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 HTTP/1.1
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 HTTP/1.1
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 HTTP/1.1
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 HTTP/1.1
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 HTTP/1.1
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 HTTP/1.1
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 Строка, <= 16 символов Номер телефона
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 Служба ЕДС не найдена

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

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

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_order HTTP/1.1
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

Параметры:

Параметр Тип Описание
Обязательные параметры
phone Строка, <= 16 символов Номер телефонам (необязателен, если client_id присутствует).
client_id Целое ИД клиента (необязателен, если phone присутствует).
addresses Массив Массив адресов. Первый элемент — адрес подачи(обязательно), последний — адрес назначения, между ними — остановки.
• address Строка Адрес подачи
• lat Дробное Широта адреса
• lon Дробное Долгота адреса
source_time ГГГГММДДччммсс Время подачи
Необязательные параметры
passenger Строка Пассажир
customer Строка Заказчик
comment Строка Комментарий
crew_group_id Целое ИД группы экипажей
uds_id Целое ИД службы ЕДС
tariff_id Целое ИД тарифа
is_prior true или false Предварительный заказ
services Массив Массив услуг. Устарело. Рекомендуется использовать параметр order_params.
Целое ИД услуги
crew_props Массив Массив признаков экипажей. Устарело. Рекомендуется использовать параметр order_params.
Целое ИД признака экипажа
order_params Массив Массив параметров заказа
Целое ИД параметра заказа
total_cost Дробное Сумма заказа
use_cashless true или false Оплата по возможности всей суммы заказа с безналичного счета клиента (насколько хватает средств на счете).
use_bonus true или false Оплата по возможности всей суммы заказа с бонусного счета клиента (насколько хватает средств на бонусном счете).
cashless_sum Дробное Фиксированная сумма оплаты заказа с безналичного счета клиента (не используется, если use_cashless = true).
bonus_sum Дробное Фиксированная сумма оплаты заказа с бонусного счета клиента (не используется, если use_bonus = true).

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

Код Описание
100 Заказ с такими параметрами уже создан
101 Тариф не найден
102 Группа экипажа не найдена
103 Служба ЕДС не найдена
104 Клиент не найден

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

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

Пример:

Запрос:
POST https://ip:port/common_api/1.0/create_order2 HTTP/1.1
Signature: <...>
Content-Type: application/json
Content-Length: 395
{
  "source_time":"20140415172811",
  "is_prior":false,
  "phone":"123456",
  "client_id":1,
  "customer":"CUSTOMER",
  "passenger":"PASSENGER",
  "comment":"COMMENT",
  "crew_group_id":1,
  "uds_id":1,
  "tariff_id":1,
  "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}
  ],
  "services":[1,2],
  "crew_props":[1],
  "order_params":[3,4],
  "total_cost":370,
  "use_cashless":false,
  "use_bonus":false,
  "cashless_sum":700,
  "bonus_sum":350
}

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

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

Метод: GET

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

Параметры:
Параметр Тип Описание
Обязательные параметры
tariff_id Целое ИД тарифа
Необязательные параметры
source_time ГГГГММДДччммсс Время подачи
is_prior true или false Предварительный заказ
client_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 Строка Список ИД параметров заказа через точку с запятой, пример: «1;2;3»
cashless true или false Признак безналичного заказа

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

Код Описание
100 Тариф не найден
101 Ошибка при расчете по тарифу
102 Скидка не найдена
103 Клиент не найден
104 Район подачи не найден
105 Район назначения не найден
106 Дисконтная карта не найдена

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

Параметр Тип Описание
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&discount_id=1&disc_card_id=1&sour
ce_zone_id=1&dest_zone_id=2&distance_city=10&distance_country=20&source_distance_country=5&is_count
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: <...>

Ответ:

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

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

Метод: POST

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

Параметры:

Параметр Тип Описание
Обязательные параметры
ORDER_ID Целое ИД заказа
NEW_STATE Целое Новое состояние заказа

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

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

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

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

Пример:

Запрос: 

POST 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
  }
} 

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

Метод: GET

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

Параметры:

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

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

Код Описание
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 Целое Динамический приоритет
order_change_id Целое Индивидуальная сдача с заказа
has_light_house true или false Шашка
has_label true или false Наклейка
order_params Массив Массив параметров заказа экипажа
Целое ИД параметра заказа

Пример:

Запрос: 

GET https://ip:port/common_api/1.0/get_crew_info?crew_id=1 HTTP/1.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,
    "order_change_id":218,
    "has_light_house":false,
    "has_label":false,
    "order_params":[
      1,
      2,
    ]
  }
}

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

Метод: GET

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

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

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

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

Параметр Тип Описание
Обязательные параметры
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 Целое Динамический приоритет
• order_change_id Целое Индивидуальная сдача с заказа
• has_light_house true или false Шашка
• has_label true или false Наклейка
• has_label true или false Наклейка
• order_params Массив Массив параметров заказа экипажа
• order_params Целое ИД параметра заказа

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_crews_info HTTP/1.1
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,
        "order_change_id":0,
        "has_light_house":false,
        "has_label":false,
        "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,
        "order_change_id":0,
        "has_light_house":false,
        "has_label":true,
        "order_params":[]
      }
    ]
  }
}

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

Метод: GET

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

Параметры:

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

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

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

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

Параметр Тип Описание
driver_id Целое ИД водителя
name Строка ФИО водителя
birthday ДД.ММ.ГГГГ День рождения водителя
car_id Целое ИД основного автомобиля водителя
license Строка Удостоверение водителя
home_phone Строка Домашний телефон водителя
mobile_phone Строка Мобильный телефон водителя
is_locked true или false Водитель заблокирован
is_dismissed true или false Водитель уволен
driver_photo Base64 Фото водителя (только если need_photo = true)

Пример:

Запрос:

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

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "driver_id":1,
    "name":"DRIVER_NAME",
    "birthday":"01.01.1980",
    "car_id":1,
    "license":"1234567890",
    "home_phone":"123456",
    "mobile_phone":"+79123456789",
    "is_locked":false,
    "is_dismissed":false
  }
}


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

Метод: GET

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

Параметры:

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


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

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

Параметр Тип Описание
drivers_info Массив Массив не удаленных водителей
• driver_id Целое ИД водителя
• name Строка ФИО водителя
• balance Дробное Баланс водителя
• birthday ДД.ММ.ГГГГ День рождения водителя
• car_id Целое ИД основного автомобиля водителя
• license Строка Удостоверение водителя
• home_phone Строка Домашний телефон водителя
• mobile_phone Строка Мобильный телефон водителя
• is_locked true или false Водитель заблокирован
• is_dismissed true или false Водитель уволен
• order_params Массив Массив параметров заказа водителя
Целое ИД параметра заказа

Пример:


Запрос:

GET https://ip:port/common_api/1.0/get_drivers_info HTTP/1.1
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":"123456",
        "mobile_phone":"+79123456788",
        "is_locked":false,
        "is_dismissed":false,
        "order_params":[3,4]
      },
      {
        "driver_id":2,
        "name":"DRIVER_NAME2",
        "balance":-50.00,
        "birthday":"01.01.1980",
        "car_id":2,
        "license":"1234567899",
        "home_phone":"123457",
        "mobile_phone":"+79123456789",
        "is_locked":true,
        "is_dismissed":true,
        "order_params":[5,6]
      }
    ]
  }
}

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

Метод: GET

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

Параметры:

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

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

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

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

Параметр Тип Описание
car_id Целое ИД автомобиля
code Строка Позывной автомобиля
name Строка Наименование автомобиля
gos_number Строка Государственный номер автомобиля
color Строка Цвет автомобиля
mark Строка Марка автомобиля
model Строка Модель автомобиля
short_name Строка Краткое название автомобиля
production_year Целое Год выпуска автомобиля
is_locked true или false Автомобиль заблокирован
order_params Массив Массив параметров заказа автомобиля
Целое ИД параметра заказа
car_photo Base64 Фото автомобиля (только если need_photo = true)

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_car_info?car_id=1&need_photo=false HTTP/1.1
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]
  }
}


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

Метод: GET

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

Параметры:

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


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

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

Параметры:

Параметры Тип Описание
cars_info Массив Массив автомобилей
• car_id Целое ИД автомобиля
• code Строка Позывной автомобиля
• name Строка Наименование автомобиля
• gos_number Строка Гос. номер автомобиля
• color Строка Цвет автомобиля
• mark Строка Марка автомобиля
• model Строка Модель автомобиля
• short_name Строка Краткое название автомобиля
• production_year Целое Год выпуска автомобиля
• is_locked true или false Автомобиль заблокирован
• order_params Массив Массив параметров заказа автомобиля
Целое ИД параметра заказа

Пример:

Запрос:

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


Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
  "cars_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]
    },
    {
      "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]
    }
   ]
  }
}

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

Метод: GET

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

Параметры:

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

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

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

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

Параметр Тип Описание
crews_coords Массив Список координат экипажей
• crew_id Целое ИД экипажа
• crew_code Строка Позывной экипажа
• coords_time ГГГГММДДччммсс Время получения координат
• lat Дробное Долгота
• lon Дробное Широта
• state_kind Строка Тип состояния экипажа. Может принимать значения:

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

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

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

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

Пример:


Запрос:
GET https://ip:port/common_api/1.0/get_crews_coords 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"
     },
     {
        "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"
      }
    ]
  }
}

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

Метод: GET

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

Параметры:

Параметры Тип Описание
Обязательные параметры
get_streets true или false Искать улицы
get_houses true или false Искать дома. Не может быть равно true, если get_streets = true или get_points = true.
get_points true или false Искать пункты.
street Строка Часть названия улицы или пункта, если идет поиск улиц или пунктов, или полное название улицы, если идет поиск домов
Необязательные параметры
house Строка Часть номера дома. Нужно только если get_houses = true.
max_addresses_count Целое Максимальное количество адресов в ответе

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

Код Описание
100 Подходящие адреса не найдены

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

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

• "street" — улица

• "house" — дом

• "point" — пункт

• comment Строка Комментарий

Пример:


Запрос:

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

Ответ:

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

Запрос:

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",
        "house":"1",
        "kind":"house",
        "comment":""
      },
      {
        "street":"STREET1",
        "house":"10",
        "kind":"house",
        "comment":""
      },
      {
        "street":"STREET1",
        "house":"11",
        "kind":"house",
        "comment":""
      }
    ]
  }
}

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

Метод: 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 HTTP/1.1
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

Метод: GET

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

Параметры:

Параметр Тип Описание
Обязательные параметры
addresses Массив Массив адресов. Первый элемент — адрес подачи, последний — адрес назначения, между ними — остановки.
• address Строка Адрес подачи
• lat Дробное Широта адреса
• lon Дробное Долгота адреса

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

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

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

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

Пример:


Запрос:

POST /common_api/1.0/analyze_route2 HTTP/1.1
Host: ip:port
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/json
Content-Length: 243
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}]}


Ответ:

{
  "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
  }
}

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

Метод: GET

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

Параметры:

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

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

Код Описание
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 Целое ИД автомобиля
start_time ГГГГММДДччммсс Время создания заказа
source_time ГГГГММДДччммсс Время подачи
finish_time ГГГГММДДччммсс Время завершения заказа
source Строка Адрес подачи
destination Строка Адрес назначения
passenger Строка Пассажир
phone Строка Номер телефона
client_id Целое ИД клиента
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе
tariff_id Целое ИД тарифа
car_mark Строка Марка автомобиля
car_model Строка Модель автомобиля
car_color Строка Цвет автомобиля
car_number Строка Государственный номер автомобиля
crew_coords Массив Координаты экипажа
• lat Дробное Широта
• lon Дробное Долгота

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_order_state?order_id=1 HTTP/1.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,
    "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
    }
  }
}

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

Метод: POST

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

Параметры:

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

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

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

Пример:

Запрос:

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":{}
}

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

Метод: 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 HTTP/1.1

Signature: <...>

Ответ:

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

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

Метод: POST

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

Параметры:

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

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

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

client_group Целое Группа клиента

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

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

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

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

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_order HTTP/1.1
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=5

Ответ:

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

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

Метод: GET

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

Параметры:

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

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

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

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

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

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

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

birthday ДД.ММ.ГГГГ Дата рождения
phones Строка Номера телефонов (через запятую)
balance Дробное Баланс
bonus_balance Дробное Бонусный баланс
login Строка Логин
password Строка Пароль
client_group_id Целое ИД группы клиента

Пример:

Запрос:

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

Signature: <...>

Ответ:

{
  "code":0,
  "descr":"OK",
  "data":{
    "client_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
  }
}

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

Метод: POST

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

Параметры:

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

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

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

client_group_id Целое ИД группы клиента

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

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

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

Пример:

Запрос:

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

client_id=140&name=NAME&phones=88,99&login=LOGIN&password=PASSWORD&birthday=20140901000000&gender=m
ale&address=ADDRESS&client_group_id=3

Ответ:

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

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

Метод: GET

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

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента (может отсутствовать, если phone заполнен)
phone Строка, <= 16 символов Телефон клиента (может отсутствовать, если client_id заполнен)

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

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

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

Параметр Тип Описание
id Целое ИД заказа
state_id Целое ИД состояния заказа
start_time ГГГГММДДччммсс Дата создания заказа
source_time ГГГГММДДччммсс Время подачи
source Строка Адрес подачи
destination Строка Адрес назначения
passenger Строка Пассажир
crew_id Целое ИД экипажа
prior_crew_id Целое ИД предварительного экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
phone Строка Номер телефона
client_id Целое ИД клиента
tariff_id Целое ИД тарифа
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_current_orders?client_id=140&phone=18 HTTP/1.1
Signature: <...>
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "orders":[
      {
        "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,
        "prior_crew_id":1,
        "driver_id":1,
        "car_id":1,
        "phone":"18",
        "client_id":140,
        "tariff_id":2,
        "order_crew_group_id":2
      }
    ]
  }
}

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

Метод: GET

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

Параметры:

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

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

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

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

Параметр Тип Описание
id Целое ИД заказа
state_id Целое ИД состояния заказа
start_time ГГГГММДДччммсс Время создания заказа
source_time ГГГГММДДччммсс Время подачи
finish_time ГГГГММДДччммсс Время завершения заказа
source Строка Адрес подачи
destination Строка Адрес назначения
passenger Строка Пассажир
sum Дробное Стоимость заказа без учета скидок (наценок)
total_sum Дробное Итоговая стоимость заказа
cash_sum Дробное Заплачено наличными
cashless_sum Дробное Заплачено с безналичного счета клиента
bonus_sum Дробное Заплачено с бонусного счета клиента
bank_card_sum Дробное Заплачено банковской картой
crew_id Целое ИД экипажа
prior_crew_id Целое ИД предварительного экипажа
driver_id Целое ИД водителя
car_id Целое ИД автомобиля
phone Строка Номер телефона
client_id Целое ИД клиента
tariff_id Целое ИД тарифа
order_crew_group_id Целое ИД группы экипажей, которая указана в заказе

Пример:

Запрос:
GET https://ip:port/common_api/1.0/get_finished_orders?client_id=140&phone= HTTP/1.1
Signature: <...>
Ответ:
{
  "code":0,
  "descr":"OK",
  "data":{
    "orders":[
      {
        "id":20651,
        "state_id":34,
        "source_time":"20130205110812",
        "start_time":"20130205110812",
        "finish_time":"20130205115618",
        "source":"прпроп",
        "destination":"рррррр",
        "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,
        "state_id":34,
        "source_time":"20130205130500",
        "start_time":"20130205130500",
        "finish_time":"20130205134511",
        "source":"1",
        "destination":"2",
        "passenger":"маша",
        "sum":454,
        "total_sum":500,
        "cash_sum":0,
        "cashless_sum":500,
        "bonus_sum":0,
        "bank_card_sum":0,
        "crew_id":6,
        "prior_crew_id":0,
        "driver_id":4,
        "car_id":6,
        "phone":"222222",
        "client_id":140,
        "tariff_id":2,
        "order_crew_group_id":2
      }
    ]
  }
}

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

Метод: POST

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

Параметры:

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

• "receipt" - приход

• "expense" - расход

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

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

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

Необязательные параметры
oper_time ГГГГММДДччммсс Время создания операции
comment Строка Комментарий

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

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

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

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

Пример:

Запрос:

POST https://ip:port/common_api/1.0/create_client_operation HTTP/1.1
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

Ответ:

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

  }
}

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

Метод: GET

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

Параметры:

Параметры Тип Описание
Обязательные параметры
client_id Целое ИД клиента (обязателен, если phone отсутствует)
phone Целое Телефон клиента (обязателен, если client_id отсутствует)
start_time ГГГГММДДччммсс Начало периода
finish_time ГГГГММДДччммсс Конец периода

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

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

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

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

• "receipt" - приход

• "expense" - расход

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

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

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

name Строка Наименование
comment Строка Комментарий

Пример:

Запрос:

GET 

GET https://ip:port/common_api/1.0/get_client_operations?
client_id=112&start_time=20130201092112&finish_time=20130221092112 HTTP/1.1

Signature: <...>

Ответ:

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


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

Метод: POST

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

Параметры:

Параметр Тип Описание
Обязательные параметры
driver_id Целое ИД водителя
oper_sum Дробное Сумма
oper_type Строка Тип операции: receipt - приход, expense - расход.
Необязательные параметры
name Строка Наименование операции
oper_time ГГГГММДДччммсс Время создания операции (если не задано, текущее)
comment Строка Комментарий

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

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

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

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


Пример:


Запрос:

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

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

Ответ:

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


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

Метод: GET

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

Параметры:

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


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

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


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

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

•"receipt" - приход •"expense" - расход

name Строка Наименование
comment Строка Комментарий

Пример:

Запрос:

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

Ответ:

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

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

Метод: POST

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

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

Параметр Тип Описание
Обязательные параметры
crew_coords Массив Массив координат экипажей
• crew_id Целое ИД экипажа
• gps_id Целое GPS идентификатор (если не задан ИД экипажа)
• lat Дробное Широта
• lon Дробное Долгота
Необязательные параметры
speed Дробное Скорость


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

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


Пример:

Запрос:

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

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

Ответ:

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

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

Метод: GET

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

Параметры:

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


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

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

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

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

Параметр Тип Описание
phone_type Строка Может принимать значения: «driver_mobile», «driver_home», «client», «phone».
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 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
   }
}


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

Метод: POST

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

Параметры:

Параметр Тип Описание
Обязательные параметры
text Строка Текст сообщения
Необязательные параметры
header Строка Заголовок сообщения
timeout Целое Скрывать сообщение через, сек. (0 — не скрывать)
users Массив Массив пользователей (если не указаны — отправлять всем)
Целое ИД пользователя


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

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


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

Пример:


Запрос:
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":{}
}


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

Метод: 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 Целое ИД группы экипажей, которые могут купить смену
• 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 HTTP/1.1
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 Целое ИД группы экипажей, которые могут купить смену
• max_sell_count Целое Максимальное количество продаж смены
• sold_count Целое Количество продаж смены

Пример:

Запрос:

GET https://ip:port/common_api/1.0/get_driver_plan_shifts?start_time=20140101101010&finish_time=20140101202020 HTTP/1.1
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 Повторная покупка смены


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

Пример:

Запрос:

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


Ответ:

{
  "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 HTTP/1.1

Для получения данных из БД используются запросы типа 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 HTTP/1.1

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

Пример:

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

В любом запросе обязательно с другими полями должно передаваться поле signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMAPI в Такси-Мастер.

Пример:

Запрос:
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

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

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 - если звонит номер из справочника Телефоны; 0 - неизвестный номер)

PHONE_TO_DIAL Строка, <= 16 символов Номер телефона для отзвона по заказу
CREW_ID Целое ИД экипажа
IS_PRIOR true или false Признак предварительного заказа
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 Целое ИД группы экипажа
CLIENT_BALANCE Дробное Баланс клиента
DRIVER_TIMECOUNT Целое Время пути водителя до адреса подачи (в минутах)
SOURCE_TIMECOUNT Целое Время оставшееся до подачи (в минутах)
SOUND_COLOR Строка Запись с информацией о цвете
SOUND_MARK Строка Запись с информацией о марке автомобиля
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 Целое Состояние экипажа.

Пример:

Запрос:
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

Ответ:

<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>
  </data>
</response>

Запрос информации по ИД заказа

Метод: GET

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

Параметры:

Параметр Тип Описание
Обязательные параметры
ORDER_ID Целое ИД заказа
FIELDS Строка Список полей, которые необходимо вернуть. Поля перечисляются через символ "-"
signature Строка Поле для проверки секретного ключа

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

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

Параметр Тип Описание
DRIVER_TIMECOUNT Строка, <= 16 символов Время до подачи в минутах, указанное водителем
SOUND_COLOR Строка Запись с информацией о цвете
CAR_MARK Строка Марка автомобиля
CAR_COLOR Строка Цвет автомобиля
GOSNUMBER Строка Государственный номер автомобиля
SOUND_MARK Строка Запись с информацией о марке автомобиля
CREW_GROUP_ID Целое ИД группы экипажа
IS_PRIOR true или false Признак предварительного заказа
DISCOUNTEDSUMM Строка Сумма заказа с учетом всех скидок
DRIVER_PHONE Строка, <= 16 символов Номер телефона водителя
CATEGORYID Целое ИД категории телефона
SOURCE_TIMECOUNT Целое Время до подачи в минутах
ORDER_COORDS Строка Координаты места подачи
CREW_COORDS Строка Координаты назначенного экипажа
ORDER_STATE Целое ИД состояния заказа
MARKET_TYPE Целое Тип биржи заказов (2 — Яндекс, 3 — ЦОЗ).
AD_LIGHTHOUSE Строка Признак наличия шашек (1 – шашки есть, 0 – шашек нет).
CREW_STATE Целое Состояние экипажа.

Пример:

Запрос:

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
HTTP/1.1

Ответ:

<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></SOURCE_TIME>
  </data>
</response>

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

Метод: POST

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

Параметры:

Параметр Тип Описание
Обязательные параметры
ORDER_ID Целое ИД заказа
NEED_STATE Целое Новое состояние заказа
signature Строка Поле для проверки секретного ключа

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

Код Описание
100 Заказ с таким ИД не найден
101 Изменение состояния не соответствует необходимым условиям

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

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

Пример:

Запрос:

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=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

Параметры:

Параметр Тип Описание
Обязательные параметры
RECORD_DATE ДДММГГГГччммсс Дата записи
RECORD_LENGTH Целое Продолжительность записи (в секундах)
CALL_ID Строка, <= 60 символов ИД звонка (необязателен, если указан PHONE)
PHONE Строка, <= 16 символов Номер телефона (необязателен, если указан CALL_ID)
FILE_PATH Строка, <=255 символов Путь к файлу записи
CALL_TYPE 0 или 1 0 — Исходящий, 1 — Входящий
signature Строка Поле для проверки секретного ключа

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

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

Параметр Тип Описание
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: 185

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

Ответ:
<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 HTTP/1.1
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/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
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 или 1 Признак, указывающий кому был совершен звонок (0 - водителю, 1 - клиенту)
ORDER_ID Целое ИД заказа
STATE Целое (2, 3, 4, 5) Состояние отзвона
signature Строка Поле для проверки секретного ключа

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

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

Настройки смены состояний заказа с использованием автодозвона задаются в карточке состояний заказа.

Пример:

Запрос:
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

Ответ:

<response>
   <code>0</code>
   <descr>OK</descr>
</response>

Соединить клиента и водителя

Метод: POST

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

Параметры:

Параметр Тип Описание
Обязательные параметры
order_id Целое ИД заказа
signature Строка Поле для проверки секретного ключа

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

Код Описание
100 Не найден заказ с таким ИД
102 Не найдена биржа заказа у данного заказа

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

Пример:

Запрос:

POST https://ip:port/tm_tapi/1.0/connect_client_and_driver HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 53

order_id=13&signature=6a4b16da44a495b67eb7af11d51954d4

Ответ:

<response>
   <code>102</code>
   <descr>Market not found by OrderId</descr>
</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 HTTP/1.1
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 HTTP/1.1
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>

Пример формы для заказа такси

Download.png
Для скачивания Вы можете воспользоваться ссылкой:
http://files.bitmaster.ru/TM/forms/zakaz_taxi.zip

Приведенная форма является примером, на основе которого можно построить собственную форму для принятия интернет-заказов. Форму можно использовать либо в исходном варианте, либо применяя запросы TM API. Для того, чтобы данная форма функционировала, необходимо открыть файл в любом текстовом редакторе и указать корректные IP-адрес сервера Такси-Мастер, порт TM API и секретный ключ. Далее вам следует загрузить файл на хостинг.

Форма, представленная в примере, будет выглядеть следующим образом:

Картинка
Форма для заказа такси.jpg