Описание протокола 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 заказа в системе СЛУЖБЫ