<!-- TITLE: API биржи --> # Глоссарий - **Биржа** - это сервис, для обмена заказами, как между организациями такси, так и организациями смежных направлений. * Обмен на бирже подразумевает операцию *купли-продажи* заказов. [Продажа](#продажа-заказа) может быть с нулевой стоимостью. * Не накладывает территориальных ограничений. Можно использовать в любой стране. - **Участник биржи** - организация, выразившая согласие с условиями сервиса и предоставившая информацию о себе достаточную для заполнения *биржевого профиля*. - **API биржи** - [http://api.exchange.cloudtaxi.ru](https://exchange.cloudtaxi.ru). Набор HTTP методов и HTTP уведомлений реализующих схему обмена заказами. - **Контрольная панель, Панель управления биржи** - [веб-приложение](https://exchange.cloudtaxi.ru), для контроля и наблюдения, участником биржи за процессами, связанными с обменом заказов. Доступ к панели управления возможен только для зарегистрированных участников биржи с *персональным сертификатом доступа*. - **Биржевой профиль, Профиль участника биржи** - формальное представление участника биржи во внутренней структуре. Профиль участника заполняется технической поддержкой компании СКАТ если участник заранее предоставил достаточную информацию, либо самим участником биржи в **контрольной панели.** - **Баланс участника биржи** - участник биржи должен иметь внутренний счет в той валюте, в которой, происходит обмен. Покупка заказов возможна только при положительном балансе. Продажа возможна независимо от состояния баланса. - **Продавец заказа** - *Организация, Участник биржи, Биржевой профиль, Служба* - все эти сущности могут быть названы продавцами заказов в зависимости от контекста. Роль продавца - установка стоимости заказов, настройка распределения по участникам, отправка заказа на биржу. После исполнения заказа *баланс* соответствующего *биржевого профиля* будет пополнен на указанную стоимость. - **Исполнитель заказа** - *Организация, Участник биржи, Биржевой профиль, Служба, Водитель* - все эти сущности могут быть названы исполнителями заказов в зависимости от контекста. Роль исполнителя - установка условий покупки, указание доверенных источников, покупка и исполнение заказа. - **Сервер** - Сервис способный общаться с биржей согласно *API биржи* в двухстороннем формате. - **Служба** - Логическая единица *сервера*, позволяющая группировать и таргетировать заказы. Заказ на бирже может быть передан только от имени какой-то службы в другую службу. - **Комиссия биржи** - Биржа забирает определенный размер комиссии за **каждую** операцию *покупки/продажи* между её *участниками*. Размер комиссии не регулируется данным документом. - **Персональный сертификат доступа** - PKCS#12 сертификат для установки в браузер. Служит для идентификации *участника биржи* в *контрольной панели*. Выдается технической поддержкой компании СКАТ. Биржа доверяет только сертификатам издателя "SKAT root certification authority (CA)" и его промежуточным центрам сертификации. <br/><br/> # Сценарии **Условные обозначения** `>>>` - направление запроса<br/> `Server >>> Exchange` - Сервер оправляет запрос на биржу<br/> `Server <<< Exchange` - Биржа отправлет запрос на сервер<br/> ## Авторизация Server >>> Exchange : POST /session В ответ биржа вернет токен, который не имеет срока действия, но привязан к серверу, для которого он выдан. На другом сервере этот токен использовать невозможно. ## Продажа заказа **Регистрация заказа на бирже** После авторизации, сервер продавца может отправлять заказ на биржу. У заказа обязательно должны быть указаны координаты начала маршрута. Server >>> Exchange : POST /order Биржа в ответ вернет внутренний ID заказа и поставит его в очередь обработки. Если с заказом "всё хорошо", то биржа отправит уведомление на сервер, о том, что заказ успешно зарегистрирован: Server <<< Exchange : POST /on/order/registered иначе, она отправит уведомление о невозможности регистрации данного заказа <pre style="color:#ffa9a9"><code>Server <<< Exchange : POST /on/order/refused</code></pre><br/> **О заказе уведомлены другие участники** После успешной регистрации заказа, биржа начнет уведомлять всех заинтересованных участников рассылая им уведомления на `/on/order/received`. После того как она завершит этот процесс на сервер продавца придет новое уведомление Server <<< Exchange : POST /on/order/accepted Теперь остается ждать, когда один из водителей не примет заказ<br/><br/> **Заказ в исполнении** Когда кто-то берёт заказ на бирже в исполнение, она отправляет уведомление: Server <<< Exchange : POST /on/order/taken Внутри уведомления будут переданы данные о водителе. Продавец должен уведомить(СМС, телефония, push...) пассажира, что на его заказ назначен водитель. Дальше биржа будет присылать изменения статуса заказа Server <<< Exchange : POST /on/order/updated И в заключении, когда заказ будет выполнен, биржа отправит: Server <<< Exchange : POST /on/order/completed <br/><br/> # Статусы заказов - **0 - NOT_REGISTERED** - Заказ сохранен в базе данных, но еще не обработан сервером; - **1 - SENT_TO_DRIVER** - Заказ был отправлен водителю; - **2 - CONFIRMED** - Водитель подтвердил заказ; - **3 - AWAITING_CLIENT** - Водитель ожидает клиента; - **4 - IN_PROCESS** - Заказ в исполнении; - **5 - RECEIVED_BY_DRIVER** - Водитель получил заказ; - **7 - AWAITING_CLIENT_LONG** - Водитель ожидает клиента. Время бесплатного ожидания уже истекло; - **8 - FREE_LONG** - Заказ остается свободным (не был взят в исполнение ни одним водителем) слишком долго; - **9 - FREE** - Свободный заказ. Любой водитель может взять его в исполнение; - **10 - CONFIRMED_CLIENT_NOTIFIED** - Клиент был уведомлен что заказ взят водителем; - **11 - AWAITING_CLIENT_NOTIFIED** - Клиент был уведомлен что его ожидает водитель; - **16 - NO_REPLY** - Клиент не отвечает на звонки. Требуется действие диспетчера; - **19 - CANCELLED_BY_CLIENT** - Заказ был отменен клиентом. Требуется действие диспетчера; - **51 - PREORDER_ATTACHED** - Предварительный заказ закреплен за водителем; - **87 - AWAITING_PAYMENT** - Поездка завершена, но платеж еще не поступил. (Безналичная оплата); - **88 - REJECTED_BY_DRIVER** Заказ был отклонен водителем. Требуется действите диспетчера; - **89 - AWAITING_COMPLETION** - Поездка завершена. Требуется действие диспетчера; - **91 - DONE_REMOVED** - Заказ был удален из обработки; - **92 - DONE_NOT_PAID** - Заказ был удален из обработки с причиной "Клиент не оплатил"; - **93 - DONE_NO_CARS** - Заказ был удален из обработки с причиной "Нет машин"; - **94 - DONE_CALL_FAILED** - Заказ был удален из обработки с причиной "Клиент не отвечает на звонки"; - **95 - DONE_CANCELLED** - Заказ был удален из обработки с причиной "Клиент отказался"; - **95 - DONE_OPERATOR_REJECTED** - Заказ был удален из обработки с причиной "Диспетчер отменил заказ"; - **99 - DONE_DRIVER_REJECTED** - Заказ был удален из обработки с причиной "Водитель отменил заказ"; - **100 - DONE_SUCCESSFUL** - Заказ завершен успешно и удален из обработки; <br/><br/> # Разрешенные переходы статусов <b>Псевдостатусы</b> NOT_DONE = [0..89] DONE = [90..100] DONE_NOT_SUCCESSFUL = [90..99] <b>Разрешенные переходы</b> **_Например_**: _заказ из статуса 0 (NOT_REGISTERED) может перейти в SENT_TO_DRIVER, ORDER_ON_RADIO, PREORDER_FREE а также во FREE, DONE_REMOVED, DONE_NOT_PAID, DONE_NO_CARS, DONE_CALL_FAILED, DONE_CANCELLED, DONE_OPERATOR_REJECTED, DONE_DRIVER_REJECTED, DONE_SUCCESSFUL как псевдостатус NOT_DONE_ NOT_REGISTERED: [], SENT_TO_DRIVER: [NOT_REGISTERED, FREE, FREE_LONG, REJECTED_BY_DRIVER], CONFIRMED: [SENT_TO_DRIVER, RECEIVED_BY_DRIVER], AWAITING_CLIENT: [ CONFIRMED, BOUND, CONFIRMED_CLIENT_NOTIFIED, PREORDER_ATTACHED, PREORDER_ATTACHED_NOTIFIED, PREORDER_CONFIRM_SUCCESSFUL ], IN_PROCESS: [ AWAITING_CLIENT, AWAITING_CLIENT_NOTIFIED, AWAITING_CLIENT_LONG, CONFIRMED, BOUND, CONFIRMED_CLIENT_NOTIFIED ], RECEIVED_BY_DRIVER: [SENT_TO_DRIVER], AWAITING_CLIENT_LONG: [AWAITING_CLIENT_NOTIFIED], FREE_LONG: [FREE], FREE: NOT_DONE, CONFIRMED_CLIENT_NOTIFIED: [CONFIRMED], AWAITING_CLIENT_NOTIFIED: [AWAITING_CLIENT], ORDER_ON_RADIO: [NOT_REGISTERED, FREE, FREE_LONG], PREORDER_FREE: [NOT_REGISTERED, PREORDER_ATTACHED, PREORDER_ATTACHED_NOTIFIED, PREORDER_CONFIRM_REQUESTED, PREORDER_CONFIRM_SUCCESSFUL, PREORDER_CLIENT_CANCELLED, PREORDER_CONFIRM_REJECTED, PREORDER_CONFIRM_TIMEOUT], PREORDER_ATTACHED: [PREORDER_FREE], PREORDER_ATTACHED_NOTIFIED: [PREORDER_ATTACHED], PREORDER_CLIENT_CANCELLED: [PREORDER_FREE, PREORDER_ATTACHED, PREORDER_ATTACHED_NOTIFIED, PREORDER_CONFIRM_SUCCESSFUL, PREORDER_CONFIRM_REQUESTED, PREORDER_CONFIRM_REJECTED, PREORDER_CONFIRM_TIMEOUT], PREORDER_CONFIRM_REJECTED: [PREORDER_CONFIRM_REQUESTED], PREORDER_CONFIRM_TIMEOUT: [PREORDER_CONFIRM_REQUESTED], PREORDER_CONFIRM_SUCCESSFUL: [PREORDER_CONFIRM_REQUESTED], PREORDER_CONFIRM_REQUESTED: [PREORDER_ATTACHED, PREORDER_ATTACHED_NOTIFIED], BOUND: [FREE, FREE_LONG], AWAITING_PAYMENT: [IN_PROCESS], DONE_REMOVED: NOT_DONE, DONE_NOT_PAID: NOT_DONE, DONE_NO_CARS: NOT_DONE, DONE_CALL_FAILED: NOT_DONE, DONE_CANCELLED: NOT_DONE, DONE_OPERATOR_REJECTED: NOT_DONE, DONE_DRIVER_REJECTED: NOT_DONE, DONE_SUCCESSFUL: NOT_DONE ## Info ### get /drivers/:id Данные о водителе **Parameters** * **`String` id:** Уникальный идентификатор водителя (id) **Response** * **`Object` data:** * **`Object` data.driver:** Данные водителя * **`String` data.driver.id:** Уникальный идентификатор водителя (id) * **`String` data.driver.callSign:** Позывной (уникален внутри одногосервера) * **`String` data.driver.name:** Полное имя (имя, отчество, фамилия) * **`String` data.driver.phone:** Телефон * **`String` data.driver.registrationNumber:** Регистрационный номер автомобиля * **`String` data.driver.brand:** Марка автомобиля * **`String` data.driver.model:** Модель автомобиля * **`String` data.driver.modelCode:** Код модели автомобиля * **`String` data.driver.color:** Цвет автомобиля * **`String` data.driver.colorCode:** Код цвета автомобиля * **`String` data.driver.carage:** Год выпуска автомобиля * **`String` data.driver.connectBy:** Метод подключения водителя * **`Integer` data.driver.carClass:** Класс автомобиля * **`Integer[]` data.driver.options:** Список опций ### get /drivers/classes Классы автомобилей **Response** * **`Object` data:** * **`Object[]` data.classes:** Классы автомобилей * **`String` data.classes.id:** Уникальный идентификатор класса * **`Object` data.classes.name:** Название класса(ключ - язык, значение - текст) * **`Object[]` data.classes.cars:** Информация об автомобилях данного класса * **`Object[]` data.classes.cars.brand:** Марка автомобиля * **`Object[]` data.classes.cars.model:** Модель автомобиля * **`Object[]` data.classes.cars.year:** Год выпуска автомобиля ### get /drivers/options Опции автомобиля **Response** * **`Object` data:** * **`Object[]` data.options:** Опции автомобиля * **`String` data.options.id:** Уникальный идентификатор опции * **`String` data.options.name:** Название опции * **`String` data.options.type:** Тип опции('general', 'extra') * **`String` data.options.access:** Доступ(Набор значений через '|': 'all', 'driver', 'admin', 'operator') ### post /drivers Список водителей **Parameters** * **`json` .:** Параметры фильтрации. JSON в виде синтаксиса waterline передается внутри тела запроса. Информация о синтаксисе: https://github.com/balderdashy/waterline-docs/blob/master/queries/query-language.md **Response** * **`Object` data:** * **`Object[]` data.drivers:** Список водителей * **`String` data.drivers.id:** Уникальный идентификатор водителя (id) * **`String` data.drivers.callSign:** Позывной (уникален внутри одногосервера) * **`String` data.drivers.name:** Полное имя (имя, отчество, фамилия) * **`String` data.drivers.phone:** Телефон * **`String` data.drivers.registrationNumber:** Регистрационный номер автомобиля * **`String` data.drivers.brand:** Марка автомобиля * **`String` data.drivers.model:** Модель автомобиля * **`String` data.drivers.modelCode:** Код модели автомобиля * **`String` data.drivers.color:** Цвет автомобиля * **`String` data.drivers.colorCode:** Код цвета автомобиля * **`String` data.drivers.carage:** Год выпуска автомобиля * **`String` data.drivers.connectBy:** Метод подключения водителя * **`Integer` data.drivers.carClass:** Класс автомобиля * **`Integer[]` data.drivers.options:** Список опций ### get /profiles Список участников биржи **Response** * **`Object` data:** * **`Object[]` data.profiles:** Список профилей * **`String` data.profiles.id:** Уникальный идентификатор участника * **`String` data.profiles.name:** Имя участника * **`String` data.profiles.details:** Информация об участнике * **`String` data.profiles.email:** Адрес электронной почты компании * **`String` data.profiles.phone:** Номер телефона диспетчерской таксопарка * **`Object` data.profiles.country:** Страна * **`Object` data.profiles.country.name:** Название * **`String` data.profiles.country.name.en:** Название на русском * **`String` data.profiles.country.name.ru:** Название на английском языке * **`Object` data.profiles.location:** Местоположение * **`Object` data.profiles.location.name:** Название * **`String` data.profiles.location.name.en:** Название на русском * **`String` data.profiles.location.name.ru:** Название на английском языке * **`Float` data.profiles.location.lat:** Широта * **`Float` data.profiles.location.lon:** Долгота * **`Object` data.profiles.currency:** Валюта * **`Object` data.profiles.code:** Код по стандарту ISO 4217 (например RUB) ### post /driver/update Обновить состояние водителя на бирже **Parameters** * **`Object` meta:** * **`String` meta.token:** авторизационный билет * **`Object` data:** * **`String` data.id:** Биржевой идентификатор водителя-исполнителя заказа * **`Object` data.attributes:** данные о водителе * **`Object` data.attributes.callSign:** позывной * **`Object` data.attributes.latitude:** текущая координата - широта * **`Object` data.attributes.longitude:** текущая координата - долгота * **`Object` data.attributes.status:** статус исполняемого заказа * **`Object` data.attributes.speed:** текущая скорость * **`Object` data.attributes.bearing:** азимут **Error** * **BadRequest:** <ul> <li>Запрос сформирован с ошибками. Возможно вы пытаетесь обновить поля не разрешенные для модификации.</li> </ul> * **Unauthorized:** Неавторизированный доступ * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр ## Main ### post session Регистрация сессии **Parameters** * **`Object` data:** * **`String` data.key:** <ul> <li>ключ клиента биржи</li> </ul> **Response** * **`Object` data:** * **`String` data.token:** сессионный билет доступа к бирже * **`String` data.slaves:** вторичные адреса биржи, к ним тоже можно отправлять запросы * **`String` data.trusted:** список адресов которым должно быть обеспечено доверие со стороны клиента, участника биржи **Error** * **461:** Not Acceptable HTTP Method - метод HTTP запроса не применим для текущей операции ## Order ### post order/cancel Отменить заказ **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`Integer` data.status:** Статус, с которым отменился заказ * **`String` data.reason:** Текстовое описание причины отмены заказа **Response** * **`Object` data:** * **`Integer` data.id:** Идентификатор заказа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** Заказ либо не зарегистрирован на бирже, либо уже отозван ### post order/complete Завершить заказ **Parameters** * **`Object` data:** * **`String` data.id:** Идентификатор заказа * **`String` data.attributes:** * **`String` data.attributes.fare:** Итоговая стоимость заказа * **`String` data.attributes.distance:** дистанция пройденная водителем во время выполнения заказа(в метрах) * **`Object` data.attributes.time:** * **`Object` data.attributes.time.completed:** Время завершения заказа(таймстамп) * **`Object` data.attributes.time.standing:** Общее время стоянки водителя во время выполнения заказа * **`Object` data.attributes.time.waiting:** Общее время ожидания водителя во время выполнения заказа **Response** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа **Error** * **461:** Not Acceptable HTTP Method Метод HTTP запроса не применим для текущей операции ### post order/get Получить информацию о заказе **Parameters** * **`Object` data:** * **`String` data.id:** Идентификатор заказа. Если передан данный параметр, то data содержит один объект * **`String` data.orders:** Массив идентификаторов заказа. Если передан данный параметр, то data содержит массив объектов **Response** * **`Object` data:** результат * **`String` data.type:** тип данных(&quot;order&quot;) * **`Object` data.attributes:** данные о заказе * **`Object` data.attributes.client:** данные о клиенте * **`String` data.attributes.client.phone:** номер телефона * **`String` data.attributes.client.name:** имя клиента * **`Object` data.attributes.from:** информация о начале маршрута * **`String` data.attributes.from.street:** улица * **`String` data.attributes.from.house:** дом * **`String` data.attributes.from.porch:** подъезд * **`Float` data.attributes.from.latitude:** координата широты * **`Float` data.attributes.from.longitude:** координата долготы * **`Object` data.attributes.to:** конечная точка маршрута * **`String` data.attributes.to.street:** улица * **`String` data.attributes.to.house:** дом * **`String` data.attributes.to.porch:** подъезд * **`Float` data.attributes.to.latitude:** координата широты * **`Float` data.attributes.to.longitude:** координата долготы * **`Object` data.attributes.time:** информация о времени * **`ISODateString` data.attributes.time.registered:** время регистрации заказа * **`Integer` data.attributes.carClass:** Идентификатор класса авто * **`Float` data.attributes.fare:** стоимость заказа * **`String` data.attributes.note:** примечание к заказу * **`Object` data.attributes.tariff:** правила расчета стоимости - тариф * **`String` data.attributes.tariff.name:** наименование тарифа * **`String` data.attributes.tariff.minFare:** минимальная стоимость заказа * **`String` data.attributes.tariff.farePerKm:** стоимоcть километра * **`String` data.attributes.tariff.secondFarePerKm:** стоимоcть километра - вторая * **`String` data.attributes.tariff.secondFareStart:** начало действия второй стоимости километра (км) * **`String` data.attributes.tariff.skipFirstKm:** не считать первые километры * **`String` data.attributes.tariff.timeUnitSize:** единица времени(в минутах) * **`String` data.attributes.tariff.timeUnitFare:** стоимость единицы времени * **`String` data.attributes.tariff.freeTime:** не считать первые единицы времени * **`String` data.attributes.tariff.markupRatio:** наценочный коэффициент в процентах * **`String` data.attributes.tariff.stationaryFare:** стоимость одной минуты стоянки * **`String` data.attributes.tariff.freeStationaryTime:** не считать первые минуты стоянки * **`String` data.attributes.tariff.enableAutoStationaryFare:** автоматически включать стоянку * **`String` data.attributes.tariff.freeWaitingTime:** время бесплатного ожидания (мин) * **`String` data.attributes.tariff.waitingRate:** стоимость ожидания (стоимость одной минуты) * **`String` data.attributes.tariff.changeoverSpeed:** порог стоянки (км/ч) * **`String` data.attributes.tariff.trafficLightPause:** светофорная пауза * **`String` data.attributes.tariff.roundTo:** округлять до * **`Integer` data.attributes.tariff.roundType:** тип округления(-1 - всегда вниз, 0 - по правилам арифметики, 1 - всегда вверх) * **`String` data.attributes.tariff.pickUp:** посадка * **`String` data.attributes.tariff.roundFareRealtime:** округлять цену сразу * **`String` data.attributes.tariff.showMinFare:** показывать минималку * **`Object` data.attributes.service:** Информация о службе-авторе заказа * **`Object` data.attributes.service.id:** Идентификатор службы в системе автора * **`Array` data.attributes.service.extras:** Доп услуги * **`String` data.attributes.service.extras.name:** Имя услуги * **`String` data.attributes.service.extras.shortName:** Сокращение для водителя * **`Float` data.attributes.service.extras.price:** Стоимость услуги * **`Array` data.attributes.service.extras.options:** Список опций, привязанных к данной услуге * **`Array` data.attributes.service.extras.count:** Количество. Если не передано - 1 * **`Array` data.attributes.waypoints:** Промежуточные точки заказа * **`String` data.attributes.waypoints.publicPlace:** Название публичного места промежуточной точки * **`String` data.attributes.waypoints.house:** Номер дома промежуточной точки * **`String` data.attributes.waypoints.street:** Название улицы промежуточной точки * **`String` data.attributes.waypoints.lat:** Широта промежуточной точки * **`String` data.attributes.waypoints.lon:** Долгота промежуточной точки * **`String` data.id:** Биржевой идентификатор заказа **Error** * **461:** Not Acceptable HTTP Method Метод HTTP запроса не применим для текущей операции ### post order Зарегистрировать заказ **Parameters** * **`Object` meta:** * **`String` meta.token:** авторизационный билет * **`Object` data:** * **`String` data.id:** исходный идентификатор существующего заказа * **`String` data.type:** тип данных(&quot;order&quot;) * **`Object` data.attributes:** данные о заказе * **`Object` data.attributes.client:** данные о клиенте * **`String` data.attributes.client.phone:** номер телефона * **`String` data.attributes.client.name:** имя клиента * **`Object` data.attributes.from:** информация о начале маршрута * **`String` data.attributes.from.street:** улица * **`String` data.attributes.from.house:** дом * **`String` data.attributes.from.porch:** подъезд * **`Float` data.attributes.from.latitude:** координата широты * **`Float` data.attributes.from.longitude:** координата долготы * **`Object` data.attributes.to:** конечная точка маршрута * **`String` data.attributes.to.street:** улица * **`String` data.attributes.to.house:** дом * **`String` data.attributes.to.porch:** подъезд * **`Float` data.attributes.to.latitude:** координата широты * **`Float` data.attributes.to.longitude:** координата долготы * **`Object` data.attributes.time:** информация о времени * **`ISODateString` data.attributes.time.registered:** время регистрации заказа * **`Integer` data.attributes.carClass:** Идентификатор класса авто * **`Float` data.attributes.fare:** стоимость заказа * **`String` data.attributes.note:** примечание к заказу * **`Object` data.attributes.tariff:** правила расчета стоимости - тариф * **`String` data.attributes.tariff.name:** наименование тарифа * **`String` data.attributes.tariff.minFare:** минимальная стоимость заказа * **`String` data.attributes.tariff.farePerKm:** стоимоcть километра * **`String` data.attributes.tariff.secondFarePerKm:** стоимоcть километра - вторая * **`String` data.attributes.tariff.secondFareStart:** начало действия второй стоимости километра (км) * **`String` data.attributes.tariff.skipFirstKm:** не считать первые километры * **`String` data.attributes.tariff.timeUnitSize:** единица времени(в минутах) * **`String` data.attributes.tariff.timeUnitFare:** стоимость единицы времени * **`String` data.attributes.tariff.freeTime:** не считать первые единицы времени * **`String` data.attributes.tariff.markupRatio:** наценочный коэффициент в процентах * **`String` data.attributes.tariff.stationaryFare:** стоимость одной минуты стоянки * **`String` data.attributes.tariff.freeStationaryTime:** не считать первые минуты стоянки * **`String` data.attributes.tariff.enableAutoStationaryFare:** автоматически включать стоянку * **`String` data.attributes.tariff.freeWaitingTime:** время бесплатного ожидания (мин) * **`String` data.attributes.tariff.waitingRate:** стоимость ожидания (стоимость одной минуты) * **`String` data.attributes.tariff.changeoverSpeed:** порог стоянки (км/ч) * **`String` data.attributes.tariff.trafficLightPause:** светофорная пауза * **`String` data.attributes.tariff.roundTo:** округлять до * **`Integer` data.attributes.tariff.roundType:** тип округления(-1 - всегда вниз, 0 - по правилам арифметики, 1 - всегда вверх) * **`String` data.attributes.tariff.pickUp:** посадка * **`String` data.attributes.tariff.roundFareRealtime:** округлять цену сразу * **`String` data.attributes.tariff.showMinFare:** показывать минималку * **`Object` data.attributes.service:** Информация о службе-авторе заказа * **`Object` data.attributes.service.id:** Идентификатор службы в системе автора * **`Array` data.attributes.service.extras:** Доп услуги * **`String` data.attributes.service.extras.name:** Имя услуги * **`String` data.attributes.service.extras.shortName:** Сокращение для водителя * **`Float` data.attributes.service.extras.price:** Стоимость услуги * **`Array` data.attributes.service.extras.options:** Список опций, привязанных к данной услуге * **`Array` data.attributes.service.extras.count:** Количество. Если не передано - 1 * **`Array` data.attributes.waypoints:** Промежуточные точки заказа * **`String` data.attributes.waypoints.publicPlace:** Название публичного места промежуточной точки * **`String` data.attributes.waypoints.house:** Номер дома промежуточной точки * **`String` data.attributes.waypoints.street:** Название улицы промежуточной точки * **`String` data.attributes.waypoints.lat:** Широта промежуточной точки * **`String` data.attributes.waypoints.lon:** Долгота промежуточной точки **Response** * **`Object` data:** * **`String` data.id:** присвоенный идентификатор заказа в системе биржи * **`String` data.orderId:** исходный идентификатор заказа в системе СКАТ **Error** * **401:** Unauthorized - неавторизированный доступ * **461:** Method not allowed - когда метод HTTP запроса не применим для текущей операции * **462:** Empty request - пустой запрос * **465:** Type error - тип значения не соответсвует ожидаемому ### post order/revoke Отозвать заказ **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа **Response** * **`Object` data:** * **`Integer` data.id:** Идентификатор заказа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** Заказ либо не зарегистрирован на бирже, либо уже отозван ### post order/rejectdriver Снять водителя с заказа **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`String` data.reason:** Причина отказа исполнителя от выполнения заказа. Только при вызове метода исполнителем. **Response** * **`Object` data:** * **`Integer` data.id:** Идентификатор заказа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **Not:** acceptable Невозможно выполнить операцию с этим заказом * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** Заказ либо не зарегистрирован на бирже, либо уже отозван ### post order/take Взять заказ в исполнение **Parameters** * **`Object` data:** * **`String` data.id:** Идентификатор заказа * **`String` data.orderId:** Идентификатор заказа в системе исполнителя * **`Object` data.attributes:** * **`Object` data.attributes.time:** * **`Integer` data.attributes.time.arrival:** Время подъезда установленное водителем(в минутах) * **`Object` data.attributes.executor:** Исполнитель заказа * **`String` data.attributes.executor.callSign:** Позывной водителя * **`String` data.attributes.executor.phone:** номер телефона водителя * **`String` data.attributes.executor.registrationNumber:** Регистрационный номер автомобиля * **`String` data.attributes.executor.brand:** Марка автомобиля * **`String` data.attributes.executor.model:** Модель автомобиля * **`String` data.attributes.executor.color:** Цвет автомобиля * **`String` data.attributes.executor.autoAge:** Год выпуска автомобиля * **`String` data.attributes.executor.modelCode:** Код модели автомобиля(имя файла с названием авто в СКАТ) * **`String` data.attributes.executor.colorCode:** Код цвета автомобиля(имя файла с цветом авто в СКАТ) * **`String` data.attributes.executor.serviceName:** Служба, к которой привязан водитель * **`String` data.attributes.executor.latitude:** Текущая координата: широта * **`String` data.attributes.executor.longitude:** Текущая координата: долгота * **`String` data.attributes.executor.speed:** Текущая скорость * **`String` data.attributes.executor.bearing:** Азимут **Response** * **`Object` data:** * **`Integer` data.id:** идентификатор заказа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post order/update Обновить заказ **Parameters** * **`Object` data:** * **`String` data.id:** Идентификатор заказа * **`Object` data.attributes:** данные о заказе * **`Integer` data.attributes.status:** Новый статус заказа * **`Object` data.attributes.client:** данные о клиенте * **`String` data.attributes.client.phone:** номер телефона * **`String` data.attributes.client.name:** имя клиента * **`Object` data.attributes.from:** информация о начале маршрута * **`String` data.attributes.from.street:** улица * **`String` data.attributes.from.house:** дом * **`String` data.attributes.from.porch:** подъезд * **`Float` data.attributes.from.latitude:** координата широты * **`Float` data.attributes.from.longitude:** координата долготы * **`Object` data.attributes.to:** конечная точка маршрута * **`String` data.attributes.to.street:** улица * **`String` data.attributes.to.house:** дом * **`String` data.attributes.to.porch:** подъезд * **`Float` data.attributes.to.latitude:** координата широты * **`Float` data.attributes.to.longitude:** координата долготы * **`Object` data.attributes.time:** информация о времени * **`ISODateString` data.attributes.time.registered:** время регистрации заказа * **`Integer` data.attributes.carClass:** Идентификатор класса авто * **`Float` data.attributes.fare:** стоимость заказа * **`String` data.attributes.note:** примечание к заказу * **`Object` data.attributes.tariff:** правила расчета стоимости - тариф * **`String` data.attributes.tariff.name:** наименование тарифа * **`String` data.attributes.tariff.minFare:** минимальная стоимость заказа * **`String` data.attributes.tariff.farePerKm:** стоимоcть километра * **`String` data.attributes.tariff.secondFarePerKm:** стоимоcть километра - вторая * **`String` data.attributes.tariff.secondFareStart:** начало действия второй стоимости километра (км) * **`String` data.attributes.tariff.skipFirstKm:** не считать первые километры * **`String` data.attributes.tariff.timeUnitSize:** единица времени(в минутах) * **`String` data.attributes.tariff.timeUnitFare:** стоимость единицы времени * **`String` data.attributes.tariff.freeTime:** не считать первые единицы времени * **`String` data.attributes.tariff.markupRatio:** наценочный коэффициент в процентах * **`String` data.attributes.tariff.stationaryFare:** стоимость одной минуты стоянки * **`String` data.attributes.tariff.freeStationaryTime:** не считать первые минуты стоянки * **`String` data.attributes.tariff.enableAutoStationaryFare:** автоматически включать стоянку * **`String` data.attributes.tariff.freeWaitingTime:** время бесплатного ожидания (мин) * **`String` data.attributes.tariff.waitingRate:** стоимость ожидания (стоимость одной минуты) * **`String` data.attributes.tariff.changeoverSpeed:** порог стоянки (км/ч) * **`String` data.attributes.tariff.trafficLightPause:** светофорная пауза * **`String` data.attributes.tariff.roundTo:** округлять до * **`Integer` data.attributes.tariff.roundType:** тип округления(-1 - всегда вниз, 0 - по правилам арифметики, 1 - всегда вверх) * **`String` data.attributes.tariff.pickUp:** посадка * **`String` data.attributes.tariff.roundFareRealtime:** округлять цену сразу * **`String` data.attributes.tariff.showMinFare:** показывать минималку * **`Object` data.attributes.service:** Информация о службе-авторе заказа * **`Object` data.attributes.service.id:** Идентификатор службы в системе автора * **`Array` data.attributes.service.extras:** Доп услуги * **`String` data.attributes.service.extras.name:** Имя услуги * **`String` data.attributes.service.extras.shortName:** Сокращение для водителя * **`Float` data.attributes.service.extras.price:** Стоимость услуги * **`Array` data.attributes.service.extras.options:** Список опций, привязанных к данной услуге * **`Array` data.attributes.service.extras.count:** Количество. Если не передано - 1 * **`Array` data.attributes.waypoints:** Промежуточные точки заказа * **`String` data.attributes.waypoints.publicPlace:** Название публичного места промежуточной точки * **`String` data.attributes.waypoints.house:** Номер дома промежуточной точки * **`String` data.attributes.waypoints.street:** Название улицы промежуточной точки * **`String` data.attributes.waypoints.lat:** Широта промежуточной точки * **`String` data.attributes.waypoints.lon:** Долгота промежуточной точки **Response** * **`Object` order:** обновленный заказ **Error** * **461:** Not Acceptable HTTP Method - метод HTTP запроса не применим для текущей операции * **400:** BadRequest - Запрос сформирован с ошибками. Возможно вы пытаетесь обновить поля не разрешенные для модификации. ## Server ### get / Проверка соединения **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### get /driver Водитель **Parameters** * **`String` callsign:** Позывной запрашиваемого водителя **Response** * **`Object` data:** * **`Object[]` data.drivers:** Список водителе * **`String` data.driver.id:** Уникальный идентификатор водителя (id) * **`String` data.driver.callSign:** Позывной (уникален внутри одногосервера) * **`String` data.driver.name:** Полное имя (имя, отчество, фамилия) * **`String` data.driver.phone:** Телефон * **`String` data.driver.registrationNumber:** Регистрационный номер автомобиля * **`String` data.driver.brand:** Марка автомобиля * **`String` data.driver.model:** Модель автомобиля * **`String` data.driver.modelCode:** Код модели автомобиля * **`String` data.driver.color:** Цвет автомобиля * **`String` data.driver.colorCode:** Код цвета автомобиля * **`String` data.driver.carage:** Год выпуска автомобиля * **`String` data.driver.connectBy:** Метод подключения водителя * **`Integer` data.driver.carClass:** Класс автомобиля * **`Integer[]` data.driver.options:** Список опций **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /drivers Список водителей **Parameters** * **`Integer` limit:** Максимальное кол-во водителей, которое будет получено(по-умолчанию: 100) * **`Integer` skip:** Кол-во пропущенных водителей * **`Boolean` all:** Вернуть всех водителей **Response** * **`Object` data:** * **`Object[]` data.drivers:** Список водителей * **`String` data.drivers.id:** Уникальный идентификатор водителя (id) * **`String` data.drivers.callSign:** Позывной (уникален внутри одногосервера) * **`String` data.drivers.name:** Полное имя (имя, отчество, фамилия) * **`String` data.drivers.phone:** Телефон * **`String` data.drivers.registrationNumber:** Регистрационный номер автомобиля * **`String` data.drivers.brand:** Марка автомобиля * **`String` data.drivers.model:** Модель автомобиля * **`String` data.drivers.modelCode:** Код модели автомобиля * **`String` data.drivers.color:** Цвет автомобиля * **`String` data.drivers.colorCode:** Код цвета автомобиля * **`String` data.drivers.carage:** Год выпуска автомобиля * **`String` data.drivers.connectBy:** Метод подключения водителя * **`Integer` data.drivers.carClass:** Класс автомобиля * **`Integer[]` data.drivers.options:** Список опций **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/accepted Заказ отправлен участникам **Parameters** * **`Object` data:** * **`Integer` data.orderId:** Локальный идентификатор заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом ### post /on/order/cancelled Отмена заказа **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`String` data.status:** Статус, с которым был отменен заказ(см. статусы заказов СКАТ) * **`String` data.reason:** Текстовое описание причины отмены заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/completed Завершение заказа биржевым водителем **Parameters** * **`Object` data:** * **`String` data.id:** Идентификатор заказа * **`String` data.attributes:** * **`String` data.attributes.fare:** Итоговая стоимость заказа * **`String` data.attributes.distance:** дистанция пройденная водителем во время выполнения заказа(в метрах) * **`Object` data.attributes.time:** * **`Object` data.attributes.time.completed:** Время завершения заказа(таймстамп) * **`Object` data.attributes.time.standing:** Общее время стоянки водителя во время выполнения заказа * **`Object` data.attributes.time.waiting:** Общее время ожидания водителя во время выполнения заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/received Получение нового заказа от биржи **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`String` data.type:** тип данных(&quot;order&quot;) * **`Object` data.attributes:** данные о заказе * **`Object` data.attributes.client:** данные о клиенте * **`String` data.attributes.client.phone:** номер телефона * **`String` data.attributes.client.name:** имя клиента * **`Object` data.attributes.from:** информация о начале маршрута * **`String` data.attributes.from.street:** улица * **`String` data.attributes.from.house:** дом * **`String` data.attributes.from.porch:** подъезд * **`Float` data.attributes.from.latitude:** координата широты * **`Float` data.attributes.from.longitude:** координата долготы * **`Object` data.attributes.to:** конечная точка маршрута * **`String` data.attributes.to.street:** улица * **`String` data.attributes.to.house:** дом * **`String` data.attributes.to.porch:** подъезд * **`Float` data.attributes.to.latitude:** координата широты * **`Float` data.attributes.to.longitude:** координата долготы * **`Object` data.attributes.time:** информация о времени * **`ISODateString` data.attributes.time.registered:** время регистрации заказа * **`Integer` data.attributes.carClass:** Идентификатор класса авто * **`Float` data.attributes.fare:** стоимость заказа * **`String` data.attributes.note:** примечание к заказу * **`Object` data.attributes.tariff:** правила расчета стоимости - тариф * **`String` data.attributes.tariff.name:** наименование тарифа * **`String` data.attributes.tariff.minFare:** минимальная стоимость заказа * **`String` data.attributes.tariff.farePerKm:** стоимоcть километра * **`String` data.attributes.tariff.secondFarePerKm:** стоимоcть километра - вторая * **`String` data.attributes.tariff.secondFareStart:** начало действия второй стоимости километра (км) * **`String` data.attributes.tariff.skipFirstKm:** не считать первые километры * **`String` data.attributes.tariff.timeUnitSize:** единица времени(в минутах) * **`String` data.attributes.tariff.timeUnitFare:** стоимость единицы времени * **`String` data.attributes.tariff.freeTime:** не считать первые единицы времени * **`String` data.attributes.tariff.markupRatio:** наценочный коэффициент в процентах * **`String` data.attributes.tariff.stationaryFare:** стоимость одной минуты стоянки * **`String` data.attributes.tariff.freeStationaryTime:** не считать первые минуты стоянки * **`String` data.attributes.tariff.enableAutoStationaryFare:** автоматически включать стоянку * **`String` data.attributes.tariff.freeWaitingTime:** время бесплатного ожидания (мин) * **`String` data.attributes.tariff.waitingRate:** стоимость ожидания (стоимость одной минуты) * **`String` data.attributes.tariff.changeoverSpeed:** порог стоянки (км/ч) * **`String` data.attributes.tariff.trafficLightPause:** светофорная пауза * **`String` data.attributes.tariff.roundTo:** округлять до * **`Integer` data.attributes.tariff.roundType:** тип округления(-1 - всегда вниз, 0 - по правилам арифметики, 1 - всегда вверх) * **`String` data.attributes.tariff.pickUp:** посадка * **`String` data.attributes.tariff.roundFareRealtime:** округлять цену сразу * **`String` data.attributes.tariff.showMinFare:** показывать минималку * **`Object` data.attributes.service:** Информация о службе-авторе заказа * **`Object` data.attributes.service.id:** Идентификатор службы в системе автора * **`Array` data.attributes.service.extras:** Доп услуги * **`String` data.attributes.service.extras.name:** Имя услуги * **`String` data.attributes.service.extras.shortName:** Сокращение для водителя * **`Float` data.attributes.service.extras.price:** Стоимость услуги * **`Array` data.attributes.service.extras.options:** Список опций, привязанных к данной услуге * **`Array` data.attributes.service.extras.count:** Количество. Если не передано - 1 * **`Array` data.attributes.waypoints:** Промежуточные точки заказа * **`String` data.attributes.waypoints.publicPlace:** Название публичного места промежуточной точки * **`String` data.attributes.waypoints.house:** Номер дома промежуточной точки * **`String` data.attributes.waypoints.street:** Название улицы промежуточной точки * **`String` data.attributes.waypoints.lat:** Широта промежуточной точки * **`String` data.attributes.waypoints.lon:** Долгота промежуточной точки **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/refused Отказ принятия заказа в обработку **Parameters** * **`Object` data:** * **`Integer` data.orderId:** Локальный идентификатор заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **No:** executor services found - Не найдено ни одной службы для исполнения заказа ### post /on/order/registered Принятие заказа в обработку **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`Integer` data.orderId:** Локальный идентификатор заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/rejectdriver Снятие водителя с заказа **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`String` data.reason:** Текстовое описание причины отказа от заказа(только для случая 1) **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/restore Восстановление заказа **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`Object` data.attributes:** * **`Object` data.attributes.client:** * **`Object` data.attributes.client.phone:** Номер телефона * **`Object` data.attributes.client.name:** Имя клиента **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/revoked Отзыв заказа биржей **Parameters** * **`Object` data:** * **`Integer` data.id:** Биржевой идентификатор заказа **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/taken Взятие заказа водителем **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`String` data.orderId:** Идентификатор заказа в системе исполнителя * **`Object` data.attributes:** * **`Object` data.attributes.time:** * **`Integer` data.attributes.time.arrival:** Время подъезда установленное водителем * **`Object` data.attributes.executor:** Исполнитель заказа * **`String` data.attributes.executor.callSign:** Позывной водителя * **`String` data.attributes.executor.phone:** номер телефона водителя * **`String` data.attributes.executor.registrationNumber:** Регистрационный номер автомобиля * **`String` data.attributes.executor.brand:** Марка автомобиля * **`String` data.attributes.executor.model:** Модель автомобиля * **`String` data.attributes.executor.color:** Цвет автомобиля * **`String` data.attributes.executor.autoAge:** Год выпуска автомобиля * **`String` data.attributes.executor.modelCode:** Код модели автомобиля(имя файла с названием авто в СКАТ). Полный список здесь: http://docs.exchange.cloudtaxi.ru/models * **`String` data.attributes.executor.colorCode:** Код цвета автомобиля(имя файла с цветом авто в СКАТ). Полный список здесь: http://docs.exchange.cloudtaxi.ru/colors * **`String` data.attributes.executor.serviceName:** Служба, к которой привязан водитель * **`String` data.attributes.executor.latitude:** Текущая координата: широта * **`String` data.attributes.executor.longitude:** Текущая координата: долгота * **`String` data.attributes.executor.speed:** Текущая скорость * **`String` data.attributes.executor.bearing:** Азимут **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/order/updated Обновление заказа **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор заказа * **`Object` data.attributes:** данные о заказе * **`Integer` data.attributes.status:** Новый статус заказа * **`Object` data.attributes.client:** данные о клиенте * **`String` data.attributes.client.phone:** номер телефона * **`String` data.attributes.client.name:** имя клиента * **`Object` data.attributes.from:** информация о начале маршрута * **`String` data.attributes.from.street:** улица * **`String` data.attributes.from.house:** дом * **`String` data.attributes.from.porch:** подъезд * **`Float` data.attributes.from.latitude:** координата широты * **`Float` data.attributes.from.longitude:** координата долготы * **`Object` data.attributes.to:** конечная точка маршрута * **`String` data.attributes.to.street:** улица * **`String` data.attributes.to.house:** дом * **`String` data.attributes.to.porch:** подъезд * **`Float` data.attributes.to.latitude:** координата широты * **`Float` data.attributes.to.longitude:** координата долготы * **`Object` data.attributes.time:** информация о времени * **`ISODateString` data.attributes.time.registered:** время регистрации заказа * **`Integer` data.attributes.carClass:** Идентификатор класса авто * **`Float` data.attributes.fare:** стоимость заказа * **`String` data.attributes.note:** примечание к заказу * **`Object` data.attributes.tariff:** правила расчета стоимости - тариф * **`String` data.attributes.tariff.name:** наименование тарифа * **`String` data.attributes.tariff.minFare:** минимальная стоимость заказа * **`String` data.attributes.tariff.farePerKm:** стоимоcть километра * **`String` data.attributes.tariff.secondFarePerKm:** стоимоcть километра - вторая * **`String` data.attributes.tariff.secondFareStart:** начало действия второй стоимости километра (км) * **`String` data.attributes.tariff.skipFirstKm:** не считать первые километры * **`String` data.attributes.tariff.timeUnitSize:** единица времени(в минутах) * **`String` data.attributes.tariff.timeUnitFare:** стоимость единицы времени * **`String` data.attributes.tariff.freeTime:** не считать первые единицы времени * **`String` data.attributes.tariff.markupRatio:** наценочный коэффициент в процентах * **`String` data.attributes.tariff.stationaryFare:** стоимость одной минуты стоянки * **`String` data.attributes.tariff.freeStationaryTime:** не считать первые минуты стоянки * **`String` data.attributes.tariff.enableAutoStationaryFare:** автоматически включать стоянку * **`String` data.attributes.tariff.freeWaitingTime:** время бесплатного ожидания (мин) * **`String` data.attributes.tariff.waitingRate:** стоимость ожидания (стоимость одной минуты) * **`String` data.attributes.tariff.changeoverSpeed:** порог стоянки (км/ч) * **`String` data.attributes.tariff.trafficLightPause:** светофорная пауза * **`String` data.attributes.tariff.roundTo:** округлять до * **`Integer` data.attributes.tariff.roundType:** тип округления(-1 - всегда вниз, 0 - по правилам арифметики, 1 - всегда вверх) * **`String` data.attributes.tariff.pickUp:** посадка * **`String` data.attributes.tariff.roundFareRealtime:** округлять цену сразу * **`String` data.attributes.tariff.showMinFare:** показывать минималку * **`Object` data.attributes.service:** Информация о службе-авторе заказа * **`Object` data.attributes.service.id:** Идентификатор службы в системе автора * **`Array` data.attributes.service.extras:** Доп услуги * **`String` data.attributes.service.extras.name:** Имя услуги * **`String` data.attributes.service.extras.shortName:** Сокращение для водителя * **`Float` data.attributes.service.extras.price:** Стоимость услуги * **`Array` data.attributes.service.extras.options:** Список опций, привязанных к данной услуге * **`Array` data.attributes.service.extras.count:** Количество. Если не передано - 1 * **`Array` data.attributes.waypoints:** Промежуточные точки заказа * **`String` data.attributes.waypoints.publicPlace:** Название публичного места промежуточной точки * **`String` data.attributes.waypoints.house:** Номер дома промежуточной точки * **`String` data.attributes.waypoints.street:** Название улицы промежуточной точки * **`String` data.attributes.waypoints.lat:** Широта промежуточной точки * **`String` data.attributes.waypoints.lon:** Долгота промежуточной точки **Response** * **`Object` meta:** * **`String` meta.vendor:** Идентификатор автора сервера * **`Integer` meta.status:** HTTP-Статус ответа **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### get /services Список служб **Response** * **`Object` data:** * **`Array` data.services:** * **`Integer` data.services.id:** Идентификатор службы * **`String` data.services.name:** Имя службы * **`String` data.services.description:** Описание службы **Error** * **Unauthorized:** Неавторизированный доступ * **Forbidden:** Операция недоступна * **MethodNotAllowed:** Метод HTTP запроса не применим для текущей операции * **NoRequiredFieldSet:** В теле запроса отсутствует обязательный параметр * **TypeError:** Передан параметр с неправильным типом * **Gone:** На заказе уже установлен исполнитель ### post /on/driver/update Состояние водителя обновлено **Parameters** * **`Object` data:** * **`String` data.id:** Биржевой идентификатор водителя-исполнителя заказа * **`Object` data.attributes:** данные о водителе * **`Object` data.attributes.callSign:** позывной * **`Object` data.attributes.latitude:** текущая координата - широта * **`Object` data.attributes.longitude:** текущая координата - долгота * **`Object` data.attributes.status:** статус исполняемого заказа * **`Object` data.attributes.speed:** текущая скорость * **`Object` data.attributes.bearing:** азимут ## Version ### get version Получить версию API **Response** * **`Object` jsonapi:** * **`String` jsonapi.version:** версия API