API контрактов

В описании этой документации https://adm.pilot-gps.africa/  используется в качестве базового URL-адреса, вы можете использовать любой другой URL-адрес администратора.
 
Аутентификация
API использует токен для аутентификации.
Чтобы аутентифицировать запросы, включите токен в Authorization заголовок в качестве токена-носителя.
 
Для авторизации используются логин и пароль, которые вы используете для админки.
 
 
Заголовок
 
 
Authorization: Bearer <your_token>
 
 
Пример заголовка авторизации curl
 
 
curl --location --request POST 'https://adm.pilot-gps.africa/backend/app/contracts.php' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN' \
 
Конечные точки API
 
 
POST /contracts.php
Эта конечная точка позволяет вам управлять контрактами, выполняя различные операции, такие как остановка, запуск, обновление, аутентификация и создание токенов.
 
Параметры запроса.
 
Параметр
Тип
Required
Описание
car_group_charged
string
Optional
Числовой идентификатор арендуемого автомобиля
cid
string
Optional
Числовой идентификатор договора аренды.
driver_address
string
Optional
Адрес водителя, арендующего транспортное средство.
driver_birth_date
string
Optional
Дата рождения водителя, арендующего транспортное средство.
driver_country
string
Optional
Страна водителя, арендующего транспортное средство.
driver_email
string
Optional
Адрес электронной почты водителя, арендующего автомобиль.
driver_license
string
Optional
Номер водительского удостоверения.
driver_license_exp
string
Optional
Дата истечения срока действия водительских прав.
string
Required
Имя водителя, арендующего транспортное средство.
driver_passport
string
Optional
Номер паспорта водителя, арендующего транспортное средство.
driver_phone
string
Required
Номер телефона водителя, арендующего автомобиль.
driver_rating
int
Optional
Рейтинг водителя, арендующего автомобиль.
driver_sex
string
Optional
Пол водителя, арендующего транспортное средство (м — мужчина, ж — женщина).
end_location
object
Required
Место, где закончилась аренда. Объект с широтой, долготой или адресной строкой.
mileage_limit
int
Optional
Лимит пробега по договору аренды.
mva
int
Required
Числовой идентификатор арендуемого транспортного средства.
plate_number
int
Required
Номерной знак транспортного средства.
ra
int
Required
Числовой идентификатор договора аренды.
rate_code
string
Optional
Код ставки по договору аренды.
start_location
object
Required
Место, где началась аренда. Объект с широтой, долготой или адресной строкой
te_expected
int
Required
Ожидаемое время окончания аренды в формате временной метки Unix.
te_real
int
Optional
Фактическое время окончания аренды в формате временной метки Unix.
ts_expected
int
Required
Ожидаемое время начала аренды в формате временной метки Unix.
ts_real
int
Optional
Фактическое время начала аренды в формате временной метки Unix.
 
 
Запрос параметров cmd.
 
Код
Описание
generate_token
Сгенерировать токен для заголовка авторизации в запросе
начинать
Начать аренду автомобиля
обновлять
Обновить арендованный автомобиль
останавливаться
Остановить аренду автомобиля
 
 
Ответ будет содержать следующие поля:
 
Поле
Тип
Описание
код
integer
Код ответа
odo
string
Значение одометра
сообщение
string
Сообщение
 
 
Коды ответов:
 
1
Автомобиль не найден
2
Нечего обновлять
3
Договор аренды не найден
4
Ошибка аутентификации
5
Неизвестная ошибка
6
Нет прав
7
Модуль контракта не активен
8
Этот номер Ra использовал другую учетную запись
9
Автомобиль в аренде другой аккаунт
10
Автомобиль не в аренде
11
Неверный запрос
12
Неверный параметр местоположения
13
Этот RA используется в другом агенте
14
Сдал паспорт, но не передал имя
15
Сдал имя, но не прошел паспорт
16
Драйвер не найден
17
Другой водитель
18
Не найден контракт с номером RA
19
Этот контракт уже закончился
20
Автомобиль уже арендован
21
Другой автомобиль
 
 
Пример ответа JSON.
 
{
    "code": 2,
    "odo": "1208607",
    "message": "Nothing to update"
}
 
 
Ошибки.
В случае ошибок API вернет 500 код состояния вместе с сообщением JSON, содержащим строковое описание ошибки.
Здесь вы можете просмотреть API через файл swagger. 
В качестве интерфейса этот файл swager можно запустить например здесь:
https://editor.swagger.io/?_ga=2.32283837.2078627632.1681127699-1612985961.1680523574
 
 
Авторизация.
Для авторизации нам необходимо сгенерировать токен, чтобы использовать его в дальнейшем в заголовке запроса.
Подготовьте имя пользователя и пароль, которые вы используете для входа в панель администратора.
 
Пример авторизации.
curl --location --request GET 'https://adm.pilot-gps.africa/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"
}
 
В ответе на интересующую вас строку под ключом «сообщение» используйте эту строку как заголовок для последующих запросов.
 
Начать аренду.
 
Запрос:
curl --location --request POST 'https://adm.pilot-gps.africa/backend/app/contracts.php' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 0adc8ab35b7fc549155d28a872b2463f' \
--header 'Cookie: PHPSESSID=ksv22b2961qr3t5kpjuio2p6jh' \
--data-raw '{
    "cmd": "start", // required
    "mva": 111, // required
    "ra": 67890, // required
    "plate_number": "plateNumber", // required
    "driver_name": "John Doe", // required
    "driver_passport": "ABC123", // optional
    "driver_phone": "123-456-7890", // required
    "driver_address": "123 Main St", // optional
    "driver_license": "XYZ789", // optional
    "driver_license_exp": "2024-12-31", // optional
    "driver_email": "johndoe@example.com", // optional
    "driver_birth_date": "1985-01-01", // optional
    "driver_sex": "m", // optional
    "driver_country": "USA", // optional
    "driver_rating": 4, // optional
    "ts_real": 1644924000, // optional
    "ts_expected": 1644927600, // required
    "te_expected": 1644981600, // required
    "start_location": { // optional
        "lat": 40.712776,
        "lon": -74.005974
    },
    "cid": "C12345", // optional
    "rate_code": "R123", // optional
    "car_group_charged": "Economy", // required
    "checkout_branch": "ABC123", // optional
    "mileage_limit": 1000 // optional
}'
 
 
Ответ.
 
{
    "code": 0,
    "odo": "1233",
    "message": "Success"
}
 
 
Обновить аренду.
 
curl --location --request POST 'https://adm.pilot-gps.africa/backend/app/contracts.php' \
--header 'Authorization: Bearer 0adc8ab35b7fc549155d28a872b2463f' \
--header 'Content-Type: application/json' \
--header 'Cookie: PHPSESSID=ksv22b2961qr3t5kpjuio2p6jh' \
--data-raw '{
    "cmd": "update",  // required
    "mva": 111,  // optional
    "ra": 67890,  // required
    "plate_number": "plateNumber", // required
    "driver_name": "John Doe", // optional
    "driver_passport": "ABC123", // optional
    "driver_phone": "123-456-7890", // optional
    "driver_address": "123 Main St", // optional
    "driver_license": "XYZ789", // optional
    "driver_license_exp": "2024-12-31", // optional
    "driver_email": "johndoe@example.com", // optional
    "driver_birth_date": "1985-01-01", // optional
    "driver_sex": "m", // optional
    "driver_country": "USA", // optional
    "driver_rating": 2, // optional
    "ts_real": 1644924000, // optional
    "ts_expected": 1644927600, // optional
    "te_expected": 1644981600, // optional
    "start_location": { // optional
        "lat": 40.712776,
        "lon": -74.005974
    },
    "cid": "C123456", // optional
    "rate_code": "R123", // optional
    "car_group_charged": "Economy", // optional
    "checkout_branch": "ABC123", // optional
    "mileage_limit": 2000 // optional
}'
 
Отчет - Аренда обновления.
 
{
    "code": 0,
    "odo": "1208607",
    "message": "Success"
}
 
 
Остановить аренду.
 
Запрос:
curl --location --request POST 'https://adm.pilot-gps.africa/backend/app/contracts.php' \
--header 'Authorization: Bearer 0adc8ab35b7fc549155d28a872b2463f' \
--header 'Content-Type: application/json' \
--header 'Cookie: PHPSESSID=ksv22b2961qr3t5kpjuio2p6jh' \
--data-raw '{
    "cmd": "stop",  // required
    "ra": 67890,  // required
    "driver_rating": 4, // optional
    "end_location": { // optional
        "address": "Ilino 2c"
    }
}'
 
Ответ - Остановить ответ об аренде.
 
{
    "code": 0,
    "odo": "1208607",
    "message": "Success"
}