Описание протокола API для обмена заказами
Содержание
1. Версии
- 13.02.2020 - версия протокола 1.3
- 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 заказа в системе СЛУЖБЫ