JSON-RPC

Материал из База знаний ligataxi
Перейти к: навигация, поиск

Протокол взаимодействия с сервером 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 отправлено