Управление контрактами аренды

Этот API предоставляет возможности для управления контрактами аренды транспортных средств. С помощью этого API можно выполнять запуск, обновление, остановку аренды, а также аутентификацию и генерацию токенов для авторизации.

Авторизация

Для использования API необходимо пройти аутентификацию с помощью Bearer токена.

Получение токена для авторизации

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

Пример авторизации

Запрос на генерацию токена:
curl --location --request GET 'https://<admin_address>/backend/app/contracts.php' \
--header 'Content-Type: application/json' \
--data-raw '{
    "cmd": "generate_token",
    "login": "YOUR_LOGIN_FOR_ADMIN_PANEL",
    "password": "YOUR_PASSWORD_FOR_ADMIN_PANEL"
}'
Пример ответа:
{
    "code": 0,
    "odo": "0",
    "message": "007898667a1b5711682399ea38a84f61"
}
В ответе вы получите токен. Используйте его в заголовке Authorization для дальнейших запросов.
Пример заголовка:
Authorization: Bearer 007898667a1b5711682399ea38a84f61
 

Основные команды

Для выполнения операций, нужно указать параметр cmd, который определяет, какую операцию вы хотите выполнить.
  • generate_token — получить токен для авторизации
  • start — начать аренду автомобиля
  • update — обновить данные аренды
  • stop — остановить аренду автомобиля
     

Параметры запроса

Все параметры передаются в формате JSON
  Параметр
  Тип
  Обязательный
  Описание
  mva
  int
  Да
  Числовой идентификатор арендованного транспортного средства
  ra
  int
  Да
  Номер договора аренды
  plate_number
  string
  Да
  Номерной знак автомобиля
  driver_name
  string
  Да
  Имя водителя, который арендует ТС
  driver_phone
  string
  Да
  Телефон водителя
  driver_passport
  string
  Нет
  Паспорт водителя
  driver_address
  string
  Нет
  Адрес водителя
  driver_license
  string
  Нет
  Номер водительских прав
  driver_license_exp
  string
  Нет
  Срок действия прав
  driver_email
  string
  Нет
  Email водителя
  driver_birth_date
  string
  Нет
  Дата рождения водителя
  driver_sex
  string
  Нет
  Пол (m или f)
  driver_country
  string
  Нет
  Страна водителя
  driver_rating
  int
  Нет
  Рейтинг водителя
  ts_expected
  int
  Да
  Ожидаемое время начала аренды (Unix timestamp)
  te_expected
  int
  Да
  Ожидаемое время окончания аренды (Unix timestamp)
  ts_real
  int
  Нет
  Фактическое время начала аренды (Unix timestamp)
  te_real
  int
  Нет
  Фактическое время окончания (Unix timestamp)
  start_location
  object
  Да
  Место начала аренды (с широтой, долготой или адресной строкой — lat, lon, address)
  end_location
  object
  Да
  Место окончания аренды (lat, lon или address)
  rate_code
  string
  Нет
  Код ставки аренды по договору
  car_group_charged
  string
  Нет
  Группа автомобиля
  checkout_branch
  string
  Нет
  Отделение выдачи
  mileage_limit
  int
  Нет
  Лимит пробега
  cid
  string
  Нет
  Идентификатор клиента, водителя, арендующего транспортное средство
 

Примеры запросов

Запуск аренды

curl --location --request POST 'https://<admin_address>/backend/app/contracts.php' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 007898667a1b5711682399ea38a84f61' \
--data-raw '{
    "cmd": "start",
    "mva": 111,
    "ra": 67890,
    "plate_number": "ABC123",
    "driver_name": "John Doe",
    "driver_phone": "123-456-7890",
    "ts_expected": 1644927600,
    "te_expected": 1644981600,
    "start_location": { "lat": 40.712776, "lon": -74.005974 },
    "car_group_charged": "Economy"
}'
Ответ
{
    "code": 0,
    "odo": "1233",
    "message": "Success"
}
В ответ возвращается:
code — код ответа
odo — значение одометра
message — текстовое сообщение о результате запроса
 

Обновление аренды

curl --location --request POST 'https://<admin_address>/backend/app/contracts.php' \
--header 'Authorization: Bearer 007898667a1b5711682399ea38a84f61' \
--header 'Content-Type: application/json' \
--data-raw '{
    "cmd": "update",
    "ra": 67890,
    "plate_number": "ABC123",
    "driver_name": "John Doe",
    "driver_phone": "123-456-7890",
    "mileage_limit": 2000
}'
Ответ
{
    "code": 0,
    "odo": "1208607",
    "message": "Success"
}
 

Остановка аренды

curl --location --request POST 'https://<admin_address>/backend/app/contracts.php' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
    "cmd": "stop",
    "ra": 67890,
    "driver_rating": 4,
    "end_location": {"address": "Ilino 2c"}
}'
Ответ
{
    "code": 0,
    "odo": "1208607",
    "message": "Success"
}
 

Коды ответа и ошибок

0 — операция успешна
1 — автомобиль не найден
2 — нет изменений для обновления
3 — договор аренды не найден
4 — ошибка аутентификации
5 — неизвестная ошибка
6 — нет прав для выполнения операции
7 — модуль контрактов не активен
8 — этот номер договора аренды уже используется другой учётной записью
9 — автомобиль арендован другой учётной записью
10 — автомобиль не арендован
11 — некорректный запрос
12 — неверный параметр местоположения
13 — этот  номер договора аренды используется другим агентом
14 — паспорт был передан, но не указано имя водителя
15 — имя водителя было передано, но не указан паспорт
16 — водитель не найден по предоставленным данным
17 — данные водителя не совпадают с ранее сохранёнными
18 — договор аренды с данным номером не найден
19 — этот договор аренды уже завершён
20 — автомобиль уже арендован
21 — водитель указан неверно
22 — существующий договор был закрыт, создан новый
500 — внутренняя ошибка сервера