JSON-RPC
Протокол взаимодействия с сервером LigaTaxi.
Протокол основан на json-rpc v2
http://www.jsonrpc.org/specification поверх HTTP
Тип авторизации: Basic
Протокол JSON-RPC
API Endpoint
: https://<api_key_name>:<api_key>@api-<client_domain>/rpc
api_key_name
- Название API ключа
api_key
- API ключ
client_domain
- доменное имя присвоенное клиенту (например demo-msk.ligataxi.com
)
Примечание: поля не имеющие значения по умолчанию являются обязательными
Протокол
Заказы
Создание заказа
method: order.create
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
company_id | int | id компании | |
type_id | int | Тип (вид) заказа | |
price | float | null | Стоимость заказа (если просчитан) |
contragent_id | int | null | id безналичного клиента |
client_id | int | null | id клиента |
phone | str | null | Контактный номер телефона (в международном формате, без +) |
car_type_id | int | id типа автомобиля | |
tariff_id | int | null | id тарифа |
car_extras | int[] | null | Список id дополнительных опций автомобиля |
driver_extras | int[] | null | Список id требований к водителю |
pickup_time | Date | Время подачи автомобиля | |
discount_price | float | 0.0 | Скидка (фиксированная сумма) |
discount_percent | float | 0.0 | Скидка (процент от суммы) |
discount_driver_compensation | float | 0.0 | Процент от скидки компенсируемый водителю |
loyalty_rule_id | int | null | id правила лояльности |
promo_code_id | int | null | id записи промокода |
auto_dispatch | bool | Автораспределение | |
comment | str | null | Комментарий для водителя |
notes | str | null | Заметки для оператора |
distance | int | null | Расстояние поездки (если заказ просчитан), метры |
path | LatLng[] | null | Маршрут просчета |
pickup_address | Address | Адрес вызова | |
destinations | Address[] | null | Адреса назначений |
driver_id | int | null | Выдать заказ водителю |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id нового заказа |
{
"jsonrpc":"2.0",
"method":"order.create",
"params":{
"company_id":1,
"type_id":5,
"price":620,
"phone":"380503555204",
"car_type_id":6,
"tariff_id":38,
"pickup_time":"2016-05-08T01:40:00",
"discount_price":0.0,
"discount_percent":0.0,
"discount_driver_compensation":0.0,
"auto_dispatch":true,
"notes":"Прим. для оператора",
"comment":"Социалка: тестовый заказ! Бабуля - божий одуванчик...",
"distance":10100,
"pickup_address":{
"locality_id":34,
"street":"улица Седова",
"building":"13",
"latlng":{
"lat":59.897781,
"lng":30.405951
}
},
"destinations":[
{
"locality_id":34,
"street":"Невский проспект",
"building":"64",
"latlng":{
"lat":59.933911,
"lng":30.340419
}
},
{
"locality_id":34,
"street":"Богатырский проспект",
"building":"60к1",
"latlng":{
"lat":60.007101,
"lng":30.204827
}
}
]
},
"id":100505
}
{
"jsonrpc":"2.0",
"id":100505,
"result":{
"order_id":150
}
}
Редактирование заказа
method: order.update
Примечание: при редактировании передаются только поля которые были реально изменены.
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа | |
company_id | int | id компании | |
type_id | int | Тип (вид) заказа | |
price | float | null | Стоимость заказа (если просчитан) |
contragent_id | int | null | id безналичного клиента |
client_id | int | null | id клиента |
phone | str | null | Контактный номер телефона |
type_id | int | id типа заказа | |
car_type_id | int | id типа автомобиля | |
tariff_id | int | null | id тарифа |
car_extras | int[] | null | Список id дополнительных опций автомобиля |
driver_extras | list[] | null | Спикок id требований к водителю |
pickup_time | int | timestamp подачи автомобил | |
discount_price | float | null | Скидка (фиксированная сумма) |
discount_price_percent | float | null | Скидка (процент от суммы) |
auto_dispatch | bool | Автораспределение | |
comment | str | null | Комментарий |
notes | str | null | Заметки оператора |
distance | int | null | Расстояние поездки (если заказ просчитан), метры |
path | LatLng[] | null | Маршрут просчета |
pickup_address | Address | Адрес вызова | |
destinations | Address[] | null | Адреса назначений |
driver_id | int | null | Выдать заказ водителю |
Изменить статус заказа
method: order.state
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа | |
state | int | Новый статус заказа |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
{
"jsonrpc”:"2.0”,
"method”:"order.state”,
"params”:{
"order_id”:12344,
"state”:2
},
"id”:100500
}
{
"jsonrpc":"2.0",
"result":{
"status":1,
} "id":100500
}
Изменить способ распределения
method: order.dispatch_method.set
ВНИМАНИЕ. Изменение способа распределения возможно только на не закрытых и не отмененных заказах, у которых отсутствует текущий метод распределения
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа | |
dispatch_method | int | null | Доступные значение 100 - Внешнее приложение, null - вернуть управление системе |
Отменить заказ
method: order.cancel
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа | |
cancel_reason_id | int | id причины снятия заказа |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
Просчитать стоимость поездки
method: order.tariff.calculate
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
tariff_id | int | null | id тарифа |
type_id | int | id типа заказа | |
car_type_id | int | id типа автомобиля | |
pickup_time | Date | Дата/время подачи | |
path | LatLng[] | Маршрут поездки | |
distance | int | Расстояние поездки, м | |
driver_extras | int[] | null | Опции водителя |
car_extras | int[] | null | Опции автомобиля |
via_points | LatLng[] | Набор точек, через которые проходит маршрут | |
driving_time | float | Время в пути | |
discount_price | float | 0.0 | Скидка (фиксированная сумма) |
discount_percent | float | 0.0 | Скидка (процент от суммы) |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
tariff_id | int | id тарифа | |
price | float | Стоимость поездки |
Список заказов
method: order.list
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
filters | str[] | null | Список фильтров |
sort | str | null | Название поля, по которому сортировать |
limit | int | 50 | |
offset | int | 0 |
Ответ сервера: Заказ[]
Завершить заказ
method: order.done
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа | |
payments | Payment[] | Оплаты |
Payment
Поле | Тип данных | Default | Описание |
---|---|---|---|
type_id | int | id типа оплаты | |
price | int | Сумма | |
check_number | String | null | Номер чека |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
Восстановление заказа
method: order.restore
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id заказа |
Ответ сервера:
Поле | Тип данных | Default | Описание |
---|---|---|---|
Поиск правил системы лояльности для клиента
method: client.loyalty
Запрос клиента:
Поле | Тип данных | Default | Описание |
company_id | int | id заказа | |
client_id | int | id клиента | |
order_type | int | id типа заказа |
Ответ сервера: Правила системы лояльности[]
Правило системы лояльности:
Поле | Тип данных | Описание |
id | int | id правил |
name | string | название правила |
discount_price | float | фиксированная скидка |
discount_percent | float | скидка в процентах |
driver_compensation | float | сколько процентов от скидки компенсировать водителю |
Смены
Открытие смены водителя
method: driver.session.create
Запрос клиента:
Поле | Тип данных | Default | Описание |
driver_id | int | id водителя | |
car_id | int | null | id автомобиля |
Ответ сервера: DriverSession
{
"jsonrpc":"2.0",
"method":"driver.session.create",
"params":{
"driver_id":12344,
"car_id":null
},
"id":100500
}
{
“jsonrpc":“2.0",
“result":{
“id":100500,
"company_id":100500,
"call_sign":100500,
"state":100500,
"car_type":100500,
"coords":{
“lat":100.500,
"lng":100.500
},
"speed":100500
},
“id":100500
}
Закрытие смены водителя
method: driver.session.destroy
Запрос клиента:
Поле | Тип данных | Default | Описание |
driver_id | int | id водителя |
Ответ сервера:
Поле | Тип данных | Default | Описание |
status | int | 1 - Успешно | |
session_id | int | null | id закрытой смены |
{
“jsonrpc":“2.0",
“method":“driver.session.destroy",
“params":{
“driver_id":12344,
},
“id":100500
}
{
“jsonrpc":“2.0",
“result":{
“status":1,
“session_id":123
} “id":100500
}
Список смен водителей
method: driver.session.list
Запрос клиента:
Поле | Тип данных | Default | Описание |
driver_id | int | null |
Ответ сервера: DriverSession[]
{
“jsonrpc":“2.0",
“method":“driver.session.list",
“params":{
},
“id":100500
}
{
“jsonrpc":“2.0",
“result":[
{
“id":100500,
"company_id":100500,
"call_sign":100500,
"state":100500,
"car_type":100500,
"coords":{
“lat":100.500,
"lng":100.500
},
"speed":100500
}
],
“id":100500
}
Рабочее пространство оператора
Отправить уведомление
method: workspace.toast.send
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
operator_id | int | ||
type | str | Доступные значения info|error|success | |
title | str | null | Заголовок |
message | str | Сообщение | |
timeout | int | Длительность показа в секундах.
0 - показывать пока не закроют |
На внешней АТС снята трубка
method: workspace.pbx.answered
Запрос клиента:
Поле | Тип данных | Default | Описание |
---|---|---|---|
operator_id | int | ID оператора (пользователя) | |
phone_number | str | Номер телефона в международном формате без “+” | |
company_id | int | null | ID компании |
order_type_id | int | null | ID типа заказа |
car_type_id | int | null | ID типа автомобиля |
tariff_id | int | null | ID тарифа |
Типы данных
Address
Поле | Тип данных | Default | Описание |
---|---|---|---|
locality_id | int | id населенного пункта | |
street | str | Название улицы | |
building | str | null | Номер дома |
comment | str | null | Комментарий к адресу |
latlng | LatLng | Координаты адреса | |
parking_id | int | null | id парковки |
DriverSession
Поле | Тип данных | Default | Описание |
---|---|---|---|
driver_id | int | Id водителя | |
company_id | int | Id компании водителя | |
call_sign | int | Позывной водителя | |
state | int | Статус водителя | |
car_type | int | Тип автомобиля водителя | |
location | DriverLocation | null | Текущее местоположение водителя |
speed | int | 0 | Скорость водителя km/h |
online | bool | Водитель подключен к серверу |
LatLng
Поле | Тип данных | Default | Описание |
---|---|---|---|
lat | float | Широта | |
lng | float | Долгота |
DriverLocation
Поле | Тип данных | Default | Описание |
---|---|---|---|
coords | LatLng | Координаты водителя | |
time | Date | Время получения координат | |
speed | float | 0 | Скорость водителя km/h |
bearing | float | 0 | Направление движения |
Date
YYYY-MM-DDThh:mm:ss
Заказ
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_id | int | id Заказа | |
company_id | int | id компании | |
type_id | int | Тип (вид) заказа | |
price | float | null | Стоимость заказа (если просчитан) |
contragent_id | int | null | id безналичного клиента |
client_id | int | null | id клиента |
phone | str | null | Контактный номер телефона |
car_type_id | int | id типа автомобиля | |
tariff_id | int | id тарифа | |
car_extras | int | null | Список id дополнительных опций автомобиля |
driver_extras | list | null | Спикок id требований к водителю |
pickup_time | Date | Время подачи автомобиля | |
create_time | Date | Время создания заказа | |
accept_time | Date | null | Времня принятия заказа водителем |
wait_client_time | Date | null | Время отбивки статуса “на месте” |
with_client_time | Date | null | Время отбивки статуса “По маршруту |
discount_price | float | 0.0 | Скида (фиксированная сумма) |
discount_percent | float | 0.0 | Скида (процент от суммы) |
loyalty_rule_id | int | null | id правила лояльности |
promo_code_id | int | null | id записи промокода |
auto_dispatch | bool | Автораспределение | |
comment | str | null | Комментарий |
notes | str | null | Заметки оператора |
distance | int | null | Расстояние поездки (если заказ просчитан), метры |
pickup_address | Address | Адрес вызова | |
destinations | Address[] | null | Адреса назначений |
driver_id | int | null | Выдать заказ водителю |
dispatch_method | int | null | Текущий метод распределения |
dispatch_state | int | Статуc распределения | |
client_notifications | Notification[] | Оповещения клиента | |
done_price | int | Сумма оплат |
Оповещение клиента
Поле | Тип данных | Default | Описание |
---|---|---|---|
order_state | int | Статус заказа | |
state | State | Статус оповещения клиента |
Статус оповещения клиента
Код | Описание |
---|---|
0 | Дозвон начат |
1 | Дозвон успешен. Сообщение прослушано |
2 | Дозвон успешен. Сообщение не прослушано |
3 | Дозвон не успешен. Занято |
4 | Линия недоступна |
5 | Дозвон не успешен. Абонент не отвечает |
6 | SMS доставлено |
7 | SMS не доставлено |
8 | SMS отправлено |