Описание протокола API для обмена заказами
Содержание
1. Версии
- 03.10.2019 - версия протокола 1.2
- 12.07.2019 - версия протокола 1.1
- 24.10.2018 - версия протокола 1.0
2. Определение терминов
- СЛУЖБА - сервис "Резидент Такси", принимающий и передающий информацию о заказах и статусах их обработки
- КЛИЕНТ - сервис партнера "Резидент Такси", передающий и принимающий информацию о заказах и статусах их обработки
3. Общие положения
Ключ API передается в HTTP-заголовке параметром X-API-KEY.
Пример заголовка:
GET /api/tariffs/ HTTP/1.1 User-Agent: Fiddler Host: rezidenttaxi.loc Content-Length: 0 X-API-KEY: EB65D37B-F4C6-45C9-EBB8-16F19A0CCBF1
- URL обратного запроса для передачи статусов заказов
- URL запроса для передачи заказов
- URL запроса для отмены заказов
То есть, если СЛУЖБЕ не удалось доставить запрос об изменении статуса заказа КЛИЕНТУ, то повторы не делаются.
4. Запросы к СЛУЖБЕ
4.1. Получить список доступных тарифов
GET /api/tariffs/ Получить список доступных тарифов
{ "status": "success", "message": "Список доступных тарифов сформирован", "tariffs": [ { "id": "0a59d65bc8724be1b33077b2b5b605f3", "description": "Тестовый тариф" } ] }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
-
tariffs - Список доступных тарифов
- id - Идентификатор тарифа
- description - Описание тарифа
4.2. Отправить заказ на исполнение
POST /api/orders/add/ Отправить заказ на исполнение
{ "externalId": "test_5bc84f4a2b5dv", "clientName": "Иван", "clientPhone": "79285001011", "feedTime": "2018-10-23T09:53:00", "comment": "Тестовый комментарий", "autoClass": 1, "payType": 0, "tariffCost": 58000, "passengersNumber": 3, "pointStart": { "city": "Москва", "street": "Тверская", "home": "15", "latitude": 55.761710, "longitude": 37.608246, "comment": "Комментарий к точке старта" }, "routePoints": [ { "city": "Москва", "street": "Большой Каретный переулок", "home": "21с1", "latitude": 55.773172, "longitude": 37.615965, "comment": "Комментарий к конечной точке" } ], "comission": 2.5, "comissionType": "percent", "services": { "baby_chair": true } }
- externalId - ID заказа в системе КЛИЕНТА
- clientName - Имя клиента
- clientPhone - Телефон клиента
Телефон клиента clientPhone может не передаваться при создании.
В этом случае, в ответе на запрос обновления статуса DriverAssigned должен быть указан параметр clientPhone с номером телефона клиента.
- feedTime - Дата и время подачи по Гринвичу в формате ISO 8601
- comment - Комментарий к заказу
-
autoClass - Класс автомобиля
- 0 - Стандарт
- 1 - Комфорт
- 2 - Бизнес
- 3 - Универсал
- 4 - Минивэн
- 5 - Микроавтобус
-
payType - Форма оплаты
- 0 - Наличная
- 1 - Безналичная
- 2 - Карта
- tariffId - Идентификатор тарифа
- tariffCost - Цена заказа в минимальных единицах валюты
Передается либо фиксированная стоимость заказа tariffCost либо идентификатор доступного тарифа tariffId.
- passengersNumber - Количество пассажиров
-
pointStart - Точка отправления
- city - Населенный пункт
- street - Улица
- home - Дом
- building - Корпус
- structure - Строение
- entrance - Подъезд
- latitude - Широта
- longitude - Долгота
- comment - Комментарий к точке маршрута
-
routePoints - Дополнительные точки маршрута (кроме точки отправления)
Структура каждой точки аналогична структуре точки отправления - comission - Фиксированная сумма или процент комиссии
-
comissionType - Тип комиссии
- fix - сумма
- percent - процент
При наличии комиссии по заказу необходимо передать оба параметра comission и comissionType.
-
services - Дополнительные услуги
- baby_chair - детское кресло
- true
- false
services - не обязательный атрибут.
{ "status": "success", "message": "Заказ создан", "id": 82019 }
{ "status": "error", "message": "Отсутствуют обязательные параметры заказа" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- id - ID заказа в системе СЛУЖБЫ
4.3. Отменить заказ
POST /api/orders/cancel/ Отменить заказ
4.3.1. Отменить заказ по ID заказа в системе СЛУЖБЫ
{ "id": 82023 }
- id - ID заказа в системе СЛУЖБЫ
{ "status": "success", "message": "Заказ отменен", "externalId": "test_5bc84f4a2b5dv", "id": 82019 }
{ "status": "error", "message": "Заказ выполняется" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- externalId - ID заказа в системе КЛИЕНТА
- id - ID заказа в системе СЛУЖБЫ
4.3.2. Отменить заказ по ID заказа в системе КЛИЕНТА
{ "externalId": "test_5bc84f4a2b5dv" }
- externalId - ID заказа в системе КЛИЕНТА
{ "status": "success", "message": "Заказ отменен", "externalId": "test_5bc84f4a2b5dv", "id": 82019 }
{ "status": "error", "message": "Заказ выполняется" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- externalId - ID заказа в системе КЛИЕНТА
- id - ID заказа в системе СЛУЖБЫ
4.4. Обновление статуса заказа
POST /api/orders/status/ Обновление статуса заказа
{ "id": "test_5bcdd17c8e542", "externalId": 82019, "costPay": 35000, "message": "Заказ выполнен", "status": "Finished", "driverInfo": { "name": "Василий Уткин", "phone": "79280010203" }, "carInfo": { "model": "Mazda", "color": "серо-бурый", "number": "М528965" } }
- id - ID заказа в системе КЛИЕНТА
- externalId - ID заказа в системе СЛУЖБЫ
- costPay - Сумма поездки в минимальных единицах валюты
Поле Сумма поездки обязательна к передаче со стаусом Finished.
-
status - Статус заказа
- New - Водитель не назначен
- DriverAssigned - Водитель назначен
- DriverMoved - Водитель выехал
- DriverArrived - Водитель на месте
- Phoned - Отзвонились
- Riding - Исполняется
- Finished - Выполнен
- CanceledDriver - Отменен водителем
- CanceledCustomer - Отменен клиентом
- Expired - Просрочен
- message - Комментарий
-
driverInfo - Информация о водителе
- name - ФИО
- phone - Телефон
-
carInfo - Информация о автомобиле
- mark - Марка
- model - Модель
- color - Цвет
- number - Гос. номер
Поля Информация о водителе и Информация о автомобиле обязательны к передаче со стаусами
- DriverAssigned
- DriverMoved
- DriverArrived
- Phoned
- Riding
{ "status": "success", "message": "Статус заказа установлен" }
{ "status": "error", "message": "Не обнаружен заказ с указанным ID" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
4.5. Изменение данных заказа
POST /api/orders/edit/ Изменение данных заказа
{ "id": 82023, "payType": 1 }
- id - ID заказа в системе КЛИЕНТА
-
payType - Форма оплаты
- 0 - Наличная
- 1 - Безналичная
- 2 - Карта
{ "status": "success", "message": "Успешно изменена форма оплаты заказа", "id": 82019 }
{ "status": "error", "message": "Указанная форма оплаты совпадает с текущей формой оплаты заказа" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
5. Запросы к КЛИЕНТУ
5.1. Обновление статуса заказа
POST URL обратного запроса для передачи статусов заказов Обновление статуса заказа
{ "id": 82019, "externalId": "test_5bcdd17c8e542", "costPay": 35000, "message": "Заказ выполнен", "status": "Finished", "driverInfo": { "name": "Василий Уткин", "phone": "79280010203" }, "carInfo": { "model": "Mazda", "color": "серо-бурый", "number": "М528965" }, "fleetInfo": { "name": "Твой перевозчик", "inn": "123456789012", "phone": "79280010203", "orderId": "c096bc08-52e5-430f-9ad8-5161e00f01ae" } }
- id - ID заказа в системе СЛУЖБЫ
- externalId - ID заказа в системе КЛИЕНТА
- costPay - Сумма поездки в минимальных единицах валюты
Поле Сумма поездки обязательна к передаче со стаусом Finished.
-
status - Статус заказа
- New - Водитель не назначен
- DriverAssigned - Водитель назначен
- DriverMoved - Водитель выехал
- DriverArrived - Водитель на месте
- Phoned - Отзвонились
- Riding - Исполняется
- Finished - Выполнен
- CanceledDriver - Отменен водителем
- CanceledCustomer - Отменен клиентом
- Expired - Просрочен
- message - Комментарий
-
driverInfo - Информация о водителе
- name - ФИО
- phone - Телефон
-
carInfo - Информация о автомобиле
- mark - Марка
- model - Модель
- color - Цвет
- number - Гос. номер
-
fleetInfo - Информация о службе, исполняющей заказ
- name - Наименование
- inn - ИНН
- phone - Телефон
- orderId - ID заказа в системе партнерской службы
Поля Информация о водителе и Информация о автомобиле обязательны к передаче со стаусами
- DriverAssigned
- DriverMoved
- DriverArrived
- Phoned
- Riding
Поля Информация о службе, исполняющей заказ обязательны к передаче со стаусами
- DriverAssigned
{ "status": "success", "message": "Статус заказа установлен" }
{ "status": "error", "message": "Не обнаружен заказ с указанным ID" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
5.2. Обновление координат водителя по заказу
POST URL обратного запроса для передачи координат водителя по заказу Обновление координат водителя по заказу
{ "id": "test_5bcdd17c8e542", "externalId": 82019, "latitude": 55.69909, "longitude": 37.56722, "direction": 270, "speed": 50 }
- id - ID заказа в системе СЛУЖБЫ
- externalId - ID заказа в системе КЛИЕНТА
- latitude - Широта
- longitude - Долгота
- direction - Направление движения в градусах. (Направление на север – 0 градусов)
- speed - Скорость в км/ч
{ "status": "success", "message": "Координаты водителя приняты" }
{ "status": "error", "message": "Не обнаружен заказ с указанным ID" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
5.3. Отправить заказ на исполнение
POST URL запроса для передачи заказов Отправить заказ на исполнение
{ "externalId": "test_5bc84f4a2b5dv", "clientName": "Иван", "clientPhone": "79285001011", "feedTime": "2018-10-23T09:53:00", "comment": "Тестовый комментарий", "autoClass": 1, "payType": 0, "tariffCost": 58000, "passengersNumber": 3, "pointStart": { "city": "Москва", "street": "Тверская", "home": "15", "latitude": 55.761710, "longitude": 37.608246, "comment": "Комментарий к точке старта" }, "routePoints": [ { "city": "Москва", "street": "Большой Каретный переулок", "home": "21с1", "latitude": 55.773172, "longitude": 37.615965, "comment": "Комментарий к конечной точке" } ], "comission": 2.5, "comissionType": "percent", "services": { "baby_chair": true } }
- id - ID заказа в системе СЛУЖБЫ
- externalId - ID заказа в системе КЛИЕНТА
{ "status": "success", "message": "Заказ создан", "id": 82019 }
{ "status": "error", "message": "Отсутствуют обязательные параметры заказа" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- id - ID заказа в системе КЛИЕНТА
5.4. Отменить заказ
POST URL запроса для отмены заказов Отменить заказ
{ "id": 82023 }
- id - ID заказа в системе КЛИЕНТА
{ "status": "success", "message": "Заказ отменен", "externalId": "test_5bc84f4a2b5dv", "id": 82019 }
{ "status": "error", "message": "Заказ выполняется" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- id - ID заказа в системе КЛИЕНТА
5.5. Изменение атрибутов заказа
POST URL запроса для изменения заказов Изменить заказ
{ "id": "82019", "externalId": "test_5bc84f4a2b5dv", "clientPhone": "79285001011", "feedTime": "2018-10-23T09:53:00", "comment": "Тестовый комментарий", "payType": 0, "tariffCost": 58000, "pointStart": { "city": "Москва", "street": "Тверская", "home": "15", "latitude": 55.761710, "longitude": 37.608246, "comment": "Комментарий к точке старта" }, "routePoints": [ { "city": "Москва", "street": "Большой Каретный переулок", "home": "21с1", "latitude": 55.773172, "longitude": 37.615965, "comment": "Комментарий к точке маршрута" } ], "services": { "baby_chair": true } }
- id - ID заказа в системе СЛУЖБЫ
- externalId - ID заказа в системе КЛИЕНТА
- clientPhone - Телефон клиента
- feedTime - Дата и время подачи по Гринвичу в формате ISO 8601
- comment - Комментарий к заказу
-
payType - Форма оплаты
- 0 - Наличная
- 1 - Безналичная
- 2 - Карта
- tariffCost - Цена заказа в минимальных единицах валюты
-
pointStart - Точка отправления
- city - Населенный пункт
- street - Улица
- home - Дом
- latitude - Широта
- longitude - Долгота
- comment - Комментарий к точке маршрута
-
routePoints - Дополнительные точки маршрута (кроме точки отправления)
Структура каждой точки аналогична структуре точки отправления -
services - Дополнительные услуги
- baby_chair - детское кресло
- true
- false
{ "status": "success", "message": "Заказ изменен", "externalId": "test_5bc84f4a2b5dv", "id": 82019 }
{ "status": "error", "message": "Ошибка изменения заказа" }
- status - Статус выполнения запроса
- message - Сообщение о результате выполнения запроса или ошибке
- externalId - ID заказа в системе КЛИЕНТА
- id - ID заказа в системе СЛУЖБЫ