API клиентов

Сервера для подключения

Прод

wss://91.234.35.253:5011

Дев

wss://94.158.82.4:5011

Формат API

Формат API основан на протоколе JSON-RPC 2.0 (с небольшими собственными доработками) https://www.jsonrpc.org/specification

id - произвольное строковое значение, которое передаёт клиент в запросе, чтобы идентифицировать по нему ответ от сервера. id всегда возвращается обратно в ответе, кроме случаев, если это не ответ от сервера, а уведомление.

Дополнительно можно передать в запросе параметр meta, содержащий объект с любыми данными. Параметр meta всегда возвращается обратно с теми данными, которые передал клиент.

В отличие от стандарта протокола JSON-RPC 2.0, данный протокол во всех ответах возвращает параметр method для упрощения логирования и разработки клиентской части.

Если ответ возвращается без ошибки, то результат запроса отображается в параметре result.

Если ответ возвращает ошибку, то вместо result приходит параметр error вида:

{
    "error": {
        "code": 100,
        "message": "Undefined error",
        "data": "Apocalypse"
    }
}

В опциональном параметре data может быть дополнительная информация.

Завершение чата

Чат может находиться в четырёх состояниях, которые указываются через параметр complete_stage в запросах групп чатов

Состояния 2 и 3 нужно больше для диспетчерской, потому что завершённый чат у клиента удаляется.

Возможны два варианта завершения чата:

Завершить можно только персональный чат.

Запросы

Регистрация

В общем случае порядок получения токена такой:

  1. Регистрация по SMS.

    Для тестирования можно использовать номер телефона 999 9999999. При авторизации с этим номером сервер не проверяет пароль, поэтому можно вводить любые цифры.

    Частая ошибка при разработке клиентского приложения возникает, если брать номер телефона из маски, в которой в начале подставляется 380. Тогда на сервер отправляется 099 9999999, и для сервера это становится не тестовым номером, а обычным. Не допускайте такую ошибку!

  2. Регистрация по звонку.

Регистрация. Запросить временную сигнатуру

Авторизация: не обязательна

Запрос

{
    "method": "client.signUp",
    "params": {
        "company_id": 3,
        "identifier": "0992134665",
        "name": "Вован",
        "mode": "sms"
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "client.signUp",
    "result": {
        "signature": "{5a8188a4-e420-490f-a45f-da8cf90c05a6}"
    },
    "id": "42"
}

Выдается временная сигнатура сроком действия 5 мин. Если в течение 5 минут её не использовать, то нужно заново отправлять запрос client.signUp.

Регистрация. Запросить токен

Авторизация: не обязательна

Используется при регистрации через SMS.

Запрос

{
    "method": "client.getToken",
    "params": {
        "signature": "{99da0746-c214-4321-aae3-2e1fa0d07c1f}",
        "password": 623427
    },
    "id": "42"
}

Параметры

Ответ

{
    "id": "42",
    "method": "client.getToken",
    "result": {
        "isNew": true,
        "token": "b008321a6a124f95f5950f6f14758fa3"
    }
}

Параметры

Регистрация. Уведомление о выдаче токена

Авторизация: не обязательна

Придёт после оформления подписки с типом token после того, как клиент подтвердит номер телефона ответом на звонок.

Запрос

{
    "method": "client.token",
    "params": {
        "token": "fcb0634c272604a26b162ddda9e88418"
    }
}

Авторизация

Авторизация. Залогиниться

Авторизация: не обязательна

Запрос

{
    "method": "client.auth",
    "params": {
        "token": "fcb0634c272604a26b162ddda9e88418",
        "versions": {
            "app": "1.3.3",
            "os": "Android api:29; Android version:10; Model:xiaomi lavender Redmi Note 7; Operator:KYIVSTAR;"
        }
    },
    "id": "42"
}

Ответ

{
    "method": "client.auth",
    "id": "42"
}

Авторизация. Разлогиниться

Авторизация: обязательна

Запрос

{
    "method": "client.logout",
    "id": "42"
}

Ответ

{
    "method": "client.logout",
    "id": "42"
}

События

События. Подписаться

Авторизация: обязательна (кроме события "token")

ВАЖНО!!!

Сервер не сохраняет подписки после обрыва коннекта. В случае реконнекта нужно заново отправить все текущие подписки.

Запрос

{
    "method": "client.subscribe",
    "params": {
        "type": "driversOnline",
        "data": {параметры}
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "client.subscribe",
    "id": "42"
}

События. Отписаться

Авторизация: обязательна (кроме события "token")

Запрос

{
    "method": "client.unsubscribe",
    "params": {
        "type": "driversOnline"
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "client.unsubscribe",
    "id": "42"
}

Компании

Компании. Список

Авторизация: не обязательна

Запрос

{
    "method": "company.getList",
    "id": "42"
}

Ответ

{
    "method": "company.getList",
    "result": [
        {
            "id": 4,
            "name": "Боярка",
            "translate": []
        },
        {
            "id": 3,
            "name": "Киев",
            "translate": [
                {
                    "lang": "ru",
                    "name": "Киев"
                },
                {
                    "lang": "uk",
                    "name": "Київ"
                },
                {
                    "lang": "en",
                    "name": "Kyiv"
                }
            ]
        }
    ],
    "id": "42"
}

Здесь и в дальнейшем, если в запросе есть параметр translate, то это варианты переводов названий на другие языки. При отсутствии подходящего перевода под нужную локацию брать обычный name, а при наличии - name из translate.

Компании. Поменять

Авторизация: обязательна

Запрос

{
    "method": "client.changeCompany",
    "params": {
        "company_id": 4
    },
    "id": "42"
}

Ответ

{
    "id": "42",
    "method": "client.changeCompany"
}

Параметры

Типы заказов

Авторизация: не обязательна

Запрос

{
    "method": "orderType.getList",
    "params": {
        "company_id": 3
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "orderType.getList",
    "result": [
        {
            "id": 5,
            "is_default": false,
            "name": "Драйвер",
            "car_seats": 70,
            "icon_number": 6,
            "order": 5,
            "translate": []
        },
        {
            "id": 4,
            "is_default": false,
            "name": "Стандарт",
            "car_seats": 3,
            "icon_number": 1,
            "order": 1,
            "translate": [
                {
                    "lang": "ru",
                    "name": "Стандарт"
                },
                {
                    "lang": "en",
                    "name": "Standart"
                },
                {
                    "lang": "uk",
                    "name": "Стандарт"
                }
            ]
        },
        {
            "id": 3,
            "is_default": true,
            "name": "Комфорт",
            "car_seats": 2,
            "icon_number": 3,
            "order": 3,
            "translate": []
        }
    ],
    "id": "42"
}

Параметры

Маршрут

Маршрут. Стоимость

Авторизация: не обязательна

Запрос

{
    "method": "orderType.getCost",
    "params": {
        "id": 4,
        "order_id": 5050,
        "time": 1607455200000,
        "route": [
            {
                "latitude": 50.4839,
                "longitude": 30.3745
            },
            {
                "latitude": 50.4188,
                "longitude": 30.4211
            }
        ]
    },
    "id": "42"
}

Параметры

Ответ

{
    "id": "42",
    "method": "orderType.getCost",
    "result": {
        "coefficient": 1.09,
        "coefficient_parts": {
            "companyCoefficient": 1.09,
            "companyLoadCoefficient": 0,
            "orderTypeCoefficient": 1,
            "orderTypeCoefficientUsage": 0
        },
        "cost": 155,
        "debt": 0
    }
}

Параметры

Коды ошибок

Пример:

{
    "error": {
        "code": 602,
        "data": "{\"company_id\":3}",
        "message": "Feed not from company"
    },
    "id": "42",
    "method": "orderType.getCost"
}

Маршрут. Точки

Авторизация: обязательна

Запрос

{
    "method": "order.getRoute",
    "params": {
        "waypoints": [
            {
                "latitude": 50.4839,
                "longitude": 30.3745
            },
            {
                "latitude": 50.4188,
                "longitude": 30.4211
            }
        ]
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.getRoute",
    "result": [
        {
            "latitude": 50.484707,
            "longitude": 30.373426
        },
        {
            "latitude": 50.48674,
            "longitude": 30.374617
        },
        {
            "latitude": 50.486972,
            "longitude": 30.374716
        },
        {
            "latitude": 50.487117,
            "longitude": 30.374809
        },
        {
            "latitude": 50.487173,
            "longitude": 30.374867
        },
        {
            "latitude": 50.487308,
            "longitude": 30.375096
        },
        {
            "latitude": 50.487384,
            "longitude": 30.375373
        },
        {
            "latitude": 50.41847,
            "longitude": 30.423042
        },
        {
            "latitude": 50.418525,
            "longitude": 30.42249
        }
    ],
    "id": "42"
}

Заказы

Заказы. Список

Авторизация: обязательна

Запрос

{
    "method": "order.getList",
    "params": {
        "last_date": 1535960279456,
        "filter": 1
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.getList",
    "result": [
        {
            "car": {
                "body_type": "Лимузин",
                "brand": "Cadillac",
                "color": "Фиолетовый",
                "color_rgb_code":"#800080",
                "identifier": "AE 452551",
                "logo": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABi2lDQ1BHSU1QIGJ1aWx0LWluIHNSR0IAACiRfZE9SMNQ",
                "model": "Lanos",
                "year": 2029
            },
            "add_payment":33,
            "cash": false,
            "company_id":3,
            "company_name":"Боярка",
            "date": 1542890831683,
            "driver": {
                "first_name": "Вован",
                "id": 185,
                "last_name": "Щербатый",
                "middle_name": "Сидорович",
                "sign": "Vovan",
                "phone": "0991234567",
                "rating": 4.1
            },
            "driver_rating": 0,
            "feed_time": 1536742800000,
            "id": 65,
            "note": "Чтоб машина была малинового цвета",
            "order_type_id": 4,
            "order_type_name": "Стандарт",
            "payment_type": 0,
            "services": ["2","4"],
            "sum": 50,
            "use_bonuses": false,
            "wait_sum": 15,
            "waypoints": [
                {
                    "city": "Киев",
                    "house": "7",
                    "latitude": 50.4188,
                    "longitude": 30.4211,
                    "note": "",
                    "number": 2,
                    "porch": "",
                    "street": "Подольская"
                },
                {
                    "city": "Киев",
                    "house": "14",
                    "latitude": 50.4839,
                    "longitude": 30.3745,
                    "note": "",
                    "number": 1,
                    "porch": "",
                    "street": "Крещатик"
                }
            ],
            "waypoints_approve_status": 1
        }
    ],
    "id": "42"
}

Параметры

В списке будут только те заказы, которые не спрятаны у клиентов в запросе order.hide.

Заказы. Спрятать

Авторизация: обязательна

Спрятать заказы, чтобы они не приходили в запросе order.getList.

Запрос

{
    "method": "order.hide",
    "params": {
        "id": [
            75,
            12,
            32
        ]
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.hide",
    "id": "42"
}

Заказы. Создать

Авторизация: обязательна

Запрос

{
    "method": "order.create",
    "params": {
        "source": "mobile-android",
        "waypoints": [
            {
                "city": "Боярка",
                "street": "Садовая",
                "house": "1",
                "porch": "1",
                "latitude": 50.3177,
                "longitude": 30.298,
                "note": "Фора"
            },
            {
                "city": "Боярка",
                "street": "Магистральная",
                "house": "2",
                "porch": "1",
                "latitude": 50.3451,
                "longitude": 30.2809,
                "note": "Эпицентр"
            }
        ],
        "order_type_id": 6,
        "feed_time": 1773225477568,
        "use_bonuses": true,
        "services": [
            2,
            4
        ],
        "add_payment": 50,
        "cost": 155,
        "coefficient": 1.1,
        "coefficient_parts": {
            "companyCoefficient": 1.1,
            "companyLoadCoefficient": 0,
            "orderTypeCoefficient": 1,
            "orderTypeCoefficientUsage": 0
        },
        "note": "Пустой багажник",
        "card_id": 2,
        "card_pin": 698
    },
    "id": "42"
}

Параметры

В случае использования банковской карты сервером дополнительно отправляется запрос на платёжный сервер Fondy. При этом предварительно создаётся заказ со статусом 50.

Коды ошибок

Пример

{
    "error": {
        "code": 800,
        "data": "Order status: declined",
        "message": "Fondy server error"
    },
    "id": "42",
    "method": "order.create"
}

После отправки таких ошибок клиенту предварительно созданный заказ удаляется.

Ответ

{
    "method": "order.create",
    "result": {
        "id": 75
    },
    "id": "42"
}

Заказы. Отменить

Авторизация: обязательна

Запрос

{
    "method": "order.cancel",
    "params": {
        "id": 75
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.cancel",
    "id": "42"
}

Заказы. Обновить дополнительный платёж

Запрос

{
    "method": "order.updateAddPayment",
    "params": {
        "id": 3896,
        "add_payment": 33
    },
    "id": "42"
}

Ответ

{
    "method": "order.updateAddPayment",
    "id": "42"
}

Заказы. Обновить дополнительные услуги

Запрос

{
    "method": "order.updateServices",
    "params": {
        "id": 5075,
        "services": [
            2,
            3
        ]
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.updateServices",
    "id": "42"
}

Коды ошибок

Заказы. Обновить маршрут

Авторизация: обязательна

Запрос можно делать только в статусе 2400 и выше. Отправлять нужно все адреса, кроме первого.

Запрос

{
    "method": "order.updateWaypoints",
    "params": {
        "id": 5047,
        "cost": 120,
        "waypoints": [
            {
                "city": "Боярка",
                "street": "Садовая",
                "house": "1",
                "porch": "1",
                "latitude": 50.3177,
                "longitude": 30.298,
                "note": "Фора"
            },
            {
                "city": "Боярка",
                "street": "Магистральная",
                "house": "2",
                "porch": "1",
                "latitude": 50.3451,
                "longitude": 30.2809,
                "note": "Эпицентр"
            }
        ]
    },
    "id": "42"
}

Ответ

{
    "method": "order.updateWaypoints",
    "id": "42"
}

Коды ошибок:

Заказы. Уведомление об утверждении маршрута

Авторизация: обязательна

Запрос

{
    "method": "order.waypointsApproved",
    "params": {
        "approved": false,
        "id": 5047
    }
}

Заказы. Получить статус утверждения маршрута

Авторизация: обязательна

Получение статуса утверждения маршрута на тот случай, если было пропущено уведомление order.waypointsApproved. Выполнять запрос имеет смысл при реконнекте или загрузке заказа на экран, если он в статусе 2400 или больше, и были отправлены адреса для утверждения.

Запрос

{
    "method": "order.getWaypointsApproveStatus",
    "params": {
        "id": 5047
    },
    "id": "42"
}

Ответ

{
    "id": "42",
    "method": "order.getWaypointsApproveStatus",
    "result": {
        "status": 1
    }
}

Параметры

Заказы. Уведомление об изменении статуса

Авторизация: обязательна

Будет приходить после оформления подписки с типом orderStatus каждый раз, когда меняется статус любого из заказов, указанных в подписке. Если указанного id нет в базе, оно будет проигнорировано.

Запрос

{
    "method": "order.status",
    "params": {
        "code": 500,
        "description": "Searching driver",
        "id": 67
    }
}

Список статусов

Заказы. Уведомление о платном ожидании

Авторизация: обязательна

Запрос

{
    "method": "order.paidWaiting",
    "params": {
        "id": 5033,
        "state": 1,
        "wait_sum": 15
    }
}

Параметры

Заказы. Уведомление о завершении

Авторизация: обязательна

Запрос

{
    "method": "order.completed",
    "params": {
        "code": 1060,
        "id": 1547,
        "name": "Отсутствует свободная машина"
    }
}

Параметры

Заказы. Сообщить о прибытии машины

Авторизация: обязательна

Запрос

{
    "method": "order.clientNotified",
    "params": {
        "id": 75
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.clientNotified",
    "id": "42"
}

Заказы. Данные о водителе

Авторизация: обязательна

Получить данные о водителе, выполняющем заказ. Доступно, начиная со статуса 1500, требует авторизованного подключения.

Запрос

{
    "method": "order.getDriver",
    "params": {
        "id": 75
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "order.getDriver",
    "result": {
        "arrival_time":1660213439107,
        "car": {
            "body_type": "Лимузин",
            "brand": "Cadillac",
            "color": "Фиолетовый",
            "color_rgb_code":"#800080",
            "identifier": "AE 452551",
            "logo": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABi2lDQ1BHSU1QIGJ1aWx0LWluIHNSR0IAACiRfZE9SMNQ",
            "model": "Lanos",
            "year": 2029
        },
        "driver": {
            "first_name": "Вован",
            "id": 185,
            "last_name": "Щербатый",
            "middle_name": "Сидорович",
            "sign": "Vovan",
            "phone": "0991234567",
            "rating": 4.1,
            "photo":"/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAAD"
        }
    },
    "id": "42"
}

Параметры

Заказы. Статистика по заказу

Авторизация: обязательна

Запрос

{
    "method": "order.getStat",
    "params": {
        "id": 3152
    },
    "id": "42"
}

Параметры

Ответ

{
    "id": "42",
    "method": "order.getStat",
    "result": {
        "sum": 45.6,
        "set_taxi": 12,
        "min_trip": 7.9,
        "start_sum": 5,
        "wait_sum": 15,
        "distance": 2.3,
        "bonuses": 20,
        "coefficient": 1.15,
        "total_amount": {
            "amt_km_free_on_move_to_client": 0,
            "amt_tm_up_time_free_on_move_to_client": 0,
            "amt_free_km": 0,
            "amt_free_tm_up_time": 0,
            "amt_free_tm_down_time": 0,
            "amt_km": 0,
            "amt_km_on_return": 0,
            "amt_km_on_move_to_client": 0,
            "amt_km_on_move_penalty": 0,
            "amt_tm_wait_on_start": 0,
            "amt_tm_on_up_time": 0,
            "amt_tm_on_downtime": 0,
            "amt_tm_on_downtime_common": 0,
            "price_tm_on_downtime": 0,
            "amt_tm_on_up_time_return": 0,
            "amt_tm_on_downtime_return": 0,
            "amt_tm_on_downtime_common_return": 0,
            "price_tm_on_downtime_return": 0,
            "amt_tm_on_up_time_on_move_to_client": 0,
            "amt_tm_on_downtime_on_move_to_client": 0,
            "amt_tm_on_up_time_penalty": 0,
            "amt_tm_on_downtime_penalty": 0,
            "amt_penalty_drv_after_accepted": 0
        },
        "zone_amount": [
            {
                "rst_id_zone": 7,
                "zone_name": "Кладбище",
                "amt_km_free_on_move_to_client": 0,
                "amt_tm_up_time_free_on_move_to_client": 0,
                "amt_free_km": 0,
                "amt_free_tm_up_time": 0,
                "amt_free_tm_down_time": 0,
                "amt_km": 0,
                "amt_km_on_return": 0,
                "amt_km_on_move_to_client": 0,
                "amt_km_on_move_penalty": 0,
                "amt_tm_wait_on_start": 0,
                "amt_tm_on_up_time": 0,
                "amt_tm_on_downtime": 0,
                "amt_tm_on_downtime_common": 0,
                "amt_tm_on_up_time_return": 0,
                "amt_tm_on_downtime_return": 0,
                "amt_tm_on_downtime_common_return": 0,
                "amt_tm_on_up_time_on_move_to_client": 0,
                "amt_tm_on_downtime_on_move_to_client": 0,
                "amt_tm_on_up_time_penalty": 0,
                "amt_tm_on_downtime_penalty": 0,
                "amt_penalty_drv_after_accepted": 0,
                "sum_km": 0,
                "sum_km_on_return": 0,
                "sum_km_on_move_to_client": 0,
                "sum_km_on_move_penalty": 0,
                "sum_tm_wait_on_start": 0,
                "sum_tm_on_up_time": 0,
                "sum_tm_on_downtime": 0,
                "price_tm_on_downtime": 0,
                "sum_tm_on_up_time_return": 0,
                "sum_tm_on_downtime_return": 0,
                "price_tm_on_downtime_return": 0,
                "sum_tm_on_up_time_on_move_to_client": 0,
                "sum_tm_on_downtime_on_move_to_client": 0,
                "sum_tm_on_up_time_penalty": 0,
                "sum_tm_on_downtime_penalty": 0,
                "sum_penalty_drv_after_accepted": 0,
                "set_taxi": 0,
                "start_sum": 0,
                "min_trip": 0
            },
            {
                "rst_id_zone": 9,
                "zone_name": "Морг",
                "amt_km_free_on_move_to_client": 0,
                "amt_tm_up_time_free_on_move_to_client": 0,
                "amt_free_km": 0,
                "amt_free_tm_up_time": 0,
                "amt_free_tm_down_time": 0,
                "amt_km": 0,
                "amt_km_on_return": 0,
                "amt_km_on_move_to_client": 0,
                "amt_km_on_move_penalty": 0,
                "amt_tm_wait_on_start": 0,
                "amt_tm_on_up_time": 0,
                "amt_tm_on_downtime": 0,
                "amt_tm_on_downtime_common": 0,
                "amt_tm_on_up_time_return": 0,
                "amt_tm_on_downtime_return": 0,
                "amt_tm_on_downtime_common_return": 0,
                "amt_tm_on_up_time_on_move_to_client": 0,
                "amt_tm_on_downtime_on_move_to_client": 0,
                "amt_tm_on_up_time_penalty": 0,
                "amt_tm_on_downtime_penalty": 0,
                "amt_penalty_drv_after_accepted": 0,
                "sum_km": 0,
                "sum_km_on_return": 0,
                "sum_km_on_move_to_client": 0,
                "sum_km_on_move_penalty": 0,
                "sum_tm_wait_on_start": 0,
                "sum_tm_on_up_time": 0,
                "sum_tm_on_downtime": 0,
                "price_tm_on_downtime": 0,
                "sum_tm_on_up_time_return": 0,
                "sum_tm_on_downtime_return": 0,
                "price_tm_on_downtime_return": 0,
                "sum_tm_on_up_time_on_move_to_client": 0,
                "sum_tm_on_downtime_on_move_to_client": 0,
                "sum_tm_on_up_time_penalty": 0,
                "sum_tm_on_downtime_penalty": 0,
                "sum_penalty_drv_after_accepted": 0,
                "set_taxi": 0,
                "start_sum": 0,
                "min_trip": 0
            }
        ],
        "waypoints": [
            {
                "city": "Боярка",
                "house": "40",
                "porch": "",
                "street": "Белогородская"
            },
            {
                "city": "Боярка",
                "house": "1",
                "porch": "",
                "street": "Амбулаторная"
            }
        ]
    }
}

Заказы. Расчётная стоимость

Авторизация: обязательна

Запрос

{
    "method": "order.getCalculateCost",
    "params": {
        "id": 3944
    },
    "id": "42"
}

Параметры

Ответ

{
    "id": "42",
    "method": "order.getCalculateCost",
    "result": {
        "additional_sum": 100,
        "calculate_cost": 59.8513
    }
}

Позвонить оператору

Авторизация: обязательна

Запрос

{
    "method": "operator.call",
    "id": "42"
}

Ответ

{
    "method": "operator.call",
    "id": "42"
}

Клиенты

Клиенты. Профиль

Клиенты. Профиль. Получить

Авторизация: обязательна

Запрос

{
    "method": "client.getProfile",
    "id": "42"
}

Ответ

{
    "method": "client.getProfile",
    "result": {
        "id": 18,
        "birthday": "",
        "bonuses": 120,
        "first_name": "Варфоломей",
        "last_name": "",
        "middle_name": "",
        "sex": 0,
        "fcm_token":"",
    },
    "id": "42"
}

Параметры

Клиенты. Профиль. Обновить

Авторизация: обязательна

Запрос

{
    "method": "client.updateProfile",
    "params": {
        "identifier": "0991234567",
        "birthday": "01.01.2029",
        "first_name": "Варфоломей",
        "middle_name": "Маркович",
        "last_name": "",
        "sex": 0,
        "fcm_token":""
    },
    "id": "42"
}

Параметры

Все необязательные.

Ответ:

{
    "method": "client.updateProfile",
    "id": "42"
}

Клиенты. Фото

Клиенты. Фото. Отправить

Авторизация: обязательна

Запрос

{
    "method": "client.sendPhoto",
    "params": {
        "photo": "OlxSHIOciplYaG4wKOopWO4GnfdUetStADt0pDQhJ5bp2p3y809wewm0baYYyBTzkDrUikYw1CpxvdCuQLuFSqTxSAfKT74pxIVPeiIBxnJpOCpwQKQ7j1"
    },
    "id": "42"
}

Параметры

Если фото уже было отправлено раньше, то оно будет перезатёрто новым.

Ответ

{
    "method": "client.sendPhoto",
    "id": "42"
}

Клиенты. Фото. Получить

Авторизация: обязательна

Запрос

{
    "method": "client.getPhoto",
    "id": "42"
}

Ответ

{
    "method": "client.getPhoto",
    "result": {
        "photo": "OlxSHIOciplYaG4wKOopWO4GnfdUetStADt0pDQhJ5bp2p3y809wewm0baYYyBTzkDrUikYw1CpxvdCuQLuFSqTxSAfKT74pxIVPeiIBxnJpOCpwQKQ7j1"
    },
    "id": "42"
}

Клиенты. Получить лог бонусов

Авторизация: обязательна

Запрос

{
    "method": "client.getBonusLog",
    "params": {
        "last_date": 1616450400000
    },
    "id": "42"
}

Параметры:

Ответ

{
    "id": "42",
    "method": "client.getBonusLog",
    "result": [
        {
            "bonuses": 50,
            "cause": 1,
            "create_time": 1616408176171,
            "order_id": 2709,
            "value": 25
        },
        {
            "bonuses": 5,
            "cause": 0,
            "create_time": 1616406095424,
            "order_id": 2707,
            "value": 5
        }
    ]
}

Параметры

Водители

Водители. Позвонить

Авторизация: обязательна

Запрос

{
    "method": "driver.call",
    "params": {
        "id": 181
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "driver.call",
    "id": "42"
}

Водители. Поставить рейтинг

Авторизация: обязательна

Запрос

{
    "method": "driver.setRating",
    "params": {
        "id": 181,
        "order_id": 210,
        "rating": 2,
        "note": "Мудак"
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "driver.setRating",
    "id": "42"
}

Коды ошибок

Водители. Список игнора

Cписок водителей, запрещённых для назначения на заказы.

Водители. Список игнора. Изменить

Авторизация: обязательна

Добавить водителя в список игнора или удалить из него.

Запрос

{
    "method": "driver.ignore",
    "params": {
        "id": 181,
        "ignore": true
    },
    "id": "42"
}

Параметры

Ответ:

{
    "method": "driver.ignore",
    "id": "42"
}

Водители. Список игнора. Получить

Авторизация: обязательна

Запрос

{
    "method": "driver.getIgnoreList",
    "id": "42"
}

Ответ

{
    "method": "driver.getIgnoreList",
    "result": [
        {
            "id": 181,
            "code": "operator"
        },
        {
            "id": 229,
            "code": "client"
        }
    ],
    "id": "42"
}

Параметры

Водители. Местонахождение

Водители. Местонахождение. Получить

Авторизация: обязательна

Запрос

{
    "method": "driver.getLocation",
    "params": {
        "id": 181
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "driver.getLocation",
    "result": {
        "course": 0,
        "latitude": 50.4,
        "longitude": 30.3904
    },
    "id": "42"
}

Водители. Местонахождение. Уведомление о машинах в радиусе

Авторизация: обязательна

После оформления подписки с типом driversOnline каждые 10 сек будет приходить список водителей в радиусе 2 км. В случае отсутствия водителей в заданном радиусе список всё равно будет приходить, но пустой.

Запрос

{
    "method": "driver.online",
    "params": {
        "drivers": [
            {
                "course": 0,
                "latitude": 50.421726,
                "longitude": 30.369667,
                "sign": "2130",
                "status": 1000
            }
        ]
    }
}

Водители. Местонахождение. Уведомление о выбранной машине

Авторизация: обязательна

После оформления подписки с типом driverPos будет приходить уведомление каждый раз, когда у водителя изменяются координаты или статус.

Запрос

{
    "method": "driver.position",
    "params": {
        "course": 0,
        "latitude": 50.421726,
        "longitude": 30.369667,
        "sign": "2130",
        "status": 1000
    }
}

Дополнительные услуги

Авторизация: обязательна

Запрос

{
    "method": "service.getList",
    "id": "42"
}

Ответ

{
    "method": "service.getList",
    "result": [
        {
            "abs_sum": 250,
            "id": 4,
            "name": "Ведро котов в салоне",
            "relative_sum": 0.8,
            "translate": []
        },
        {
            "abs_sum": 40,
            "id": 3,
            "name": "Молчаливый водитель",
            "relative_sum": 0.15,
            "translate": []
        },
        {
            "abs_sum": 100,
            "id": 2,
            "name": "Курить в салоне",
            "relative_sum": 0.7,
            "translate": [
                {
                    "lang": "ru",
                    "name": "Курить в салоне"
                },
                {
                    "lang": "uk",
                    "name": "Курити у салонi"
                }
            ]
        }
    ],
    "id": "42"
}

Параметры

abs_sum и relative_sum складываются по формуле: полная сумма = стоимость поездки * (1 + relative_sum) + abs_sum

Адреса подачи

Адреса подачи. Список

Авторизация: обязательна

Запрос

{
    "method": "feed.getList",
    "id": "42"
}

Ответ

{
    "method": "feed.getList",
    "result": [
        {
            "id": 23,
            "city": "Мухосранск",
            "street": "Ленина",
            "house": "2б",
            "housing": 3,
            "porch": 9,
            "latitude": 50.4188,
            "longitude": 30.4211
        },
        {
            "id": 24,
            "city": "Киев",
            "street": "Крещатик",
            "house": "42",
            "latitude": 50.4188,
            "longitude": 30.4211
        }
    ],
    "id": "42"
}

Параметры

housing и porch в ответе могут отсутствовать

Адреса подачи. Создать

Авторизация: обязательнам

Запрос

{
    "method": "feed.create",
    "params": {
        "city": "Мухосранск",
        "street": "Ленина",
        "house": "2б",
        "housing": 3,
        "porch": 9,
        "latitude": 50.4188,
        "longitude": 30.4211
    },
    "id": "42"
}

Параметры

Все параметры необязательные (ни на что не влияют)

Ответ

{
    "method": "feed.create",
    "result": {
        "id": 16
    },
    "id": "42"
}

Адреса подачи. Удалить

Авторизация: обязательна

Запрос

{
    "method": "feed.remove",
    "params": {
        "id": 16
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "feed.remove",
    "id": "42"
}

Адреса подачи. Обновить

Авторизация: обязательна

Запрос

{
    "method": "feed.update",
    "params": {
        "id": 16,
        "city": "Мухосранск",
        "street": "Ленина",
        "house": "2б",
        "housing": 3,
        "porch": 9,
        "latitude": 50.4188,
        "longitude": 30.4211
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "feed.update",
    "id": "42"
}

Безналичные карты

Безналичные карты. Корпоративная

Авторизация: обязательна

Запрос

{
    "method": "card.getInfo",
    "params": {
        "serie": 999,
        "number": 2,
        "pin": 267
    },
    "id": "42"
}

Параметры

Все обязательные.

Ответ

{
    "method": "card.getInfo",
    "result": {
        "balance":2904.91,
        "enabled": true,
        "id": 2,
        "order_type_id": 4,
        "use_bonuses": false
    },
    "id": "42"
}

Безналичные карты. Банковская

Безналичные карты. Банковская. Аккаунт Fondy

Авторизация: обязательна

Запрос

{
    "method": "bankCard.getFondyAccount",
    "id": "42"
}

Ответ

{
    "method": "bankCard.getFondyAccount",
    "result": {
        "login": "1433359",
        "password": "QMWBRUkJzhDJ4E1v5o0YCZykoHc5S5qI"
    },
    "id": "42"
}

Безналичные карты. Банковская. Список

Авторизация: обязательна

Запрос

{
    "method": "bankCard.getList",
    "id": "42"
}

Ответ

{
    "method": "bankCard.getList",
    "result": [
        {
            "id": 24,
            "mask": "444455XXXXXX1111",
            "token": "a41087ed7ce6d8a3e659549d0e1978393ddc266",
            "selected": true
        },
        {
            "id": 29,
            "mask": "444455XXXXXX6666",
            "token": "15c146efea24b702319e47e340fa4b3ab21b9d33",
            "selected": false
        }
    ],
    "id": "42"
}

Параметры

Безналичные карты. Банковская. Создать

Авторизация: обязательна

Запрос

{
    "method": "bankCard.create",
    "params": {
        "mask": "444455XXXXXX1111",
        "token": "a41087ed7ce6d8a3e659549d0e1978393ddc266"
    },
    "id": "42"
}

Параметры

Все обязательные.

Ответ

{
    "method": "bankCard.create",
    "result": {
        "id": 10
    },
    "id": "42"
}

Безналичные карты. Банковская. Удалить

Авторизация: обязательна

Запрос

{
    "method": "bankCard.remove",
    "params": {
        "id": 12
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "bankCard.remove",
    "id": "42"
}

Безналичные карты. Банковская. Выбрать для оплат

Авторизация: обязательна

Запрос

{
    "method": "bankCard.select",
    "params": {
        "id": 5
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "bankCard.select",
    "id": "42"
}

Безналичные карты. Банковская. Включить оплату

Авторизация: обязательна

Использовать текущую банковскую карту, установленную запросом bankCard.select, для безналичной оплаты заказа

Запрос

{
    "method": "bankCard.use",
    "params": {
        "value": true
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "bankCard.use",
    "id": "42"
}

Безналичные карты. Банковская. Верифицировать

Авторизация: обязательна

Используется для тестирования сервера.

Запрос

{
    "method": "bankCard.verify",
    "params": {
        "order_id": 102
    },
    "id": "42"
}

Ответ

{
    "method": "bankCard.verify",
    "result": {
        "checkout_url": "https://api.fondy.eu/api/checkout?token=2faf77de97b41bacbe5ebe7454f8b6f2c5279212"
    },
    "id": "42"
}

Чат

Чат. Группы

Чат. Группы. Уведомление о создании

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.created",
    "params": {
        "destination_type": "common",
        "id": 3,
        "name": "Поздравления",
        "order_id": 1,
        "recipient": 0
    }
}

Параметры

Чат. Группы. Уведомление об обновлении

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.updated",
    "params": {
        "id": 3,
        "name": "Поздравления",
        "complete_stage": 0
    }
}

Чат. Группы. Уведомление об удалении

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.removed",
    "params": {
        "id": 3
    }
}

Чат. Группы. Синхронизация

Авторизация: обязательна

Выполнять нужно при запуске приложения и каждом реконнекте

Запрос

{
    "method": "chatGroup.sync",
    "params": {
        "current": [
            9,
            15
        ],
        "time": 1571748153000
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chatGroup.sync",
    "result": {
        "changed": [
            {
                "id": 14,
                "name": "Поздравления",
                "complete_stage": 0,
                "destination_type": "common",
                "order_id": 1,
                "recipient": 0
            },
            {
                "id": 18,
                "name": "График работ",
                "complete_stage": 0,
                "destination_type": "group",
                "order_id": 1,
                "recipient": 0
            }
        ],
        "removed": [
            13,
            17
        ]
    },
    "id": "42"
}

Параметры

Чат. Группы. Завершить

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.complete",
    "params": {
        "id": 24,
        "note": "И так сойдёт",
        "resolved": true
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chatGroup.complete",
    "id": "42"
}

Чат. Группы. Продолжить

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.continue",
    "params": {
        "id": 24
    },
    "id": "42"
}

Ответ

{
    "method": "chatGroup.continue",
    "id": "42"
}

Чат. Группы. Создать для заказа

Авторизация: обязательна

Запрос

{
    "method": "chatGroup.create",
    "params": {
        "order_id": 120,
        "recipient": 1
    },
    "id": "42"
}

Ответ

{
    "id": "42",
    "method": "chatGroup.create",
    "result": {
        "destination_type": "personal",
        "id": 276,
        "name": "Чат №276"
    }
}

Чат. Сообщения

Чат. Сообщения. Уведомление о создании

Авторизация: обязательна

Запрос

{
    "method": "chat.created",
    "params": {
        "group_id": 14,
        "id": 38,
        "is_sys": false,
        "message": "Мы поднимаем тарифы на ВСЁ!!!",
        "sender": "user",
        "user_sign": "Олеся_12"
    }
}

Параметры

Чат. Сообщения. Уведомление об удалении

Авторизация: обязательна

Запрос

{
    "method": "chat.removed",
    "params": {
        "id": 38
    }
}

Чат. Сообщения. Синхронизация

Авторизация: обязательна

Выполнять нужно при запуске приложения и каждом реконнекте

Запрос

{
    "method": "chat.sync",
    "params": {
        "time": 1577829600000
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chat.sync",
    "result": {
        "changed": [
            {
                "group_id": 11,
                "id": 2,
                "is_readed": false,
                "is_sys": false,
                "message": "Превед",
                "sender": "user",
                "time": 1584952905941,
                "user_sign": "Олеся_12"
            },
            {
                "group_id": 14,
                "id": 8,
                "is_readed": false,
                "is_sys": false,
                "message": "Мы поднимаем тарифы на ВСЁ!!!",
                "sender": "user",
                "time": 1584955200278,
                "user_sign": ""
            }
        ],
        "removed": [
            55,
            64,
        ]
    },
    "id": "42"
}

Параметры

Чат. Сообщения. Прочитать

Авторизация: обязательна

Запрос

{
    "method": "chat.read",
    "params": {
        "id": 67
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chat.read",
    "id": "42"
}

Чат. Сообщения. Ответить

Авторизация: обязательна

Запрос

{
    "method": "chat.reply",
    "params": {
        "id": 24
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chat.reply",
    "id": "42",
    "result": {
        "group_id": 32
    }
}

Параметры

Чат. Сообщения. Создать

Авторизация: обязательна

Запрос

{
    "method": "chat.create",
    "params": {
        "group_id": 24,
        "message": "Привет, Мир!"
    },
    "id": "42"
}

Параметры

Ответ

{
    "method": "chat.create",
    "id": "42",
    "result": {
        "id": 32
    }
}