ECOWHEELS API Documentation
Base URL: https://www.ecowheels.com.ua/api/v1/
Ця документація описує REST API сервісу ECOWHEELS.com.ua. API призначений для керування власними оголошеннями користувачів (перегляд, створення, редагування та видалення).
1. Аутентифікація та авторизація
API підтримує два способи авторизації:
1. Сесійна авторизація (через браузер)
Після входу до особистого кабінету користувача доступні всі GET-запити в рамках активної сесії.
2. Токен-авторизація (рекомендується)
Для виконання POST, PATCH, PUT, DELETE запитів потрібен токен.
1.1. Отримання токена
Endpoint:
POST /token/
Опис: Повертає токен доступу для API.
Тип даних: application/x-www-form-urlencoded (form-data)
| Поле | Тип | Обов'язково | Опис |
|---|---|---|---|
| username | string | так | Login корустувача |
| password | string | так | Пароль користувача |
Приклад запиту (Python):
import requests
data = {
'username': 'my_username',
'password': 'my_password'
}
response = requests.post('https://www.ecowheels.com.ua/api/v1/token/', data=data)
print(response.json())
Приклад відповіді:
{
"token": "82baeb8da637acf79e428943c64ae3b3b558b62e"
}
1.2. Використання токена
Токен необхідно передавати в заголовку Authorization:
Authorization: Token <your_token>
1.3. Відклик (видалення) токена
Endpoint:
POST /tokenrevoke/
або
GET /tokenrevoke/
Авторизація: Token
Опис: Видаляє поточний активний токен.
Заголовки:
Authorization: Token <your_token>
Приклад запиту (Python):
import requests
headers = {
'Authorization': 'Token 82baeb8da637acf79e428943c64ae3b3b558b62e'
}
response = requests.post('https://www.ecowheels.com.ua/api/v1/tokenrevoke/', headers=headers)
print(response.json())
Приклад видповіді:
{
"success": "token deleted"
}
2. Обмеження (Rate Limits)
Для авторизованих користувачів діють наступні ліміти:
| Операція | Ліміти |
|---|---|
| Перегляд обмежень | без обмежень |
| Додавання оголошень | 20 / доба |
| Редагування | 100 / доба |
| Видалення | без обмежень |
3. Оголошення (Tickers)
Всі операції з оголошеннями можливі лише для власних об’єктів користувача.
3.1. Отримання списку оголошень
Endpoint:
GET /tickers/
Авторизація: Token
Опис: Повертає список оголошень поточного користувача.
3.2. Отримання одного оголошення
Endpoint:
GET /tickers/{id}/
Авторизація: Token
| Параметр | Тип | Опис |
|---|---|---|
| id | int | Унікальний ідентифікатор оголошення |
3.3. Структура об'єкта оголошення
| Поле | Тип | Range | Опис |
|---|---|---|---|
| id | int | - | id оголошення (read-only) |
| wheel_exact | int | [1, 29] | Діаметр коліс (дюйми) |
| maximum_speed_exact | int | [1, 121] | Максимальна швидкість (км/г) |
| price | int | [1, 1 000 000] | Ціна (грн) |
| production_year | int | [2020, 2026] | Рік виробництва |
| mileage | int | [1, 1 000 000] | Пробіг (км) |
| vehicle_weight | int | [1, 200] | Вага (кг) |
| additional_info | string | 255 | Додаткова інформація |
| power | int | [1, 10000] | Потужність (Вт) |
| distance_reserve | int | [1, 1000] | Запас ходу (км) |
| prop_led | bool | - | LED дісплей |
| prop_offroad | bool | - | Для бездоріжжя |
| prop_2passengers | bool | - | Для 2-х пасажирів |
| prop_cargo | bool | - | Вантажний |
| prop_backlight | bool | - | LED-підсвітка |
| prop_app | bool | - | Мобільний додаток |
| prop_trunk | bool | - | Багажник |
| prop_bluetooth | bool | - | Bluetooth-колонка |
| prop_balance | bool | - | Самобалансуючий |
| prop_inclusive | bool | - | Для людей з обмеженими можливостями |
| foto1–foto5 | file | - | Фотографії |
| tech_condition | int | - | Технічний стан (довідник) |
| color | int | - | Колір (довідник) |
| vehiclemodel | int | - | Модель (довідник) |
| asgmt | int | - | Призначення (довідник) |
| maximum_load | int | - | Максимальне навантаження (довідник) |
| waterproof | int | - | Вологозахист (довідник) |
| origin_country | int | - | Країна виробництва (довідник) |
3.4. Додавання оголошення
Endpoint:
GET /tickers/
Авторизація: Token
Тип даних: multipart/form-data
Приклад запиту (Python):
import requests
headers = {
'Authorization': 'Token 82baeb8da637acf79e428943c64ae3b3b558b62e'
}
data = {
"wheel_exact": 18,
"maximum_speed_exact": 45,
"price": 42000,
"production_year": 2021,
"mileage": 5000,
"vehicle_weight": 100,
"additional_info": "Продам електросамокат Xiaomi 3 Lite 2021 р.в. Жовтий. Потужний (1500 Вт), запас ходу 42 км. ",
"power": 1500,
"distance_reserve": 42,
"prop_led": False,
"prop_offroad": False,
"prop_2passengers": True,
"prop_cargo": False,
"prop_backlight": True,
"prop_app": True,
"prop_trunk": True,
"prop_bluetooth": True,
"prop_balance": True,
"prop_inclusive": True,
"ticker_type": 1,
"tech_condition": 3,
"color": 9,
"vehiclemodel": 252,
"asgmt": 1,
"maximum_load": 1,
"waterproof": 4,
"origin_country": 8,
"status": 1,
}
files = {
'foto1': open('foto1.webp', 'rb'),
'foto2': open('foto2.webp', 'rb'),
'foto3': open('foto3.webp', 'rb'),
'foto4': open('foto4.webp', 'rb'),
'foto5': open('foto5.webp', 'rb')
}
response = requests.post('https://www.ecowheels.com.ua/api/v1/tickers/', headers=headers, data=data, files=files)
3.5. Редагування оголошення
Endpoint:
PATCH /tickers/{id}
Авторизація: Token
Тип даних: multipart/form-data або json
| Параметр | Тип | Опис |
|---|---|---|
| id | int | Унікальний ідентифікатор оголошення |
Приклад запиту (Python):
import requests
headers = {
'Authorization': 'Token 82baeb8da637acf79e428943c64ae3b3b558b62e'
}
data = {
"price": 15000,
"maximum_speed_exact": 23
}
response = requests.patch('https://www.ecowheels.com.ua/api/v1/tickers/82/', json=data, headers=headers)
3.6. Видалення оголошення
Endpoint:
DELETE /tickers/{id}
Авторизація: Token
| Параметр | Тип | Опис |
|---|---|---|
| id | int | Унікальний ідентифікатор оголошення |
Приклад запиту (Python):
import requests
headers = {
'Authorization': 'Token 82baeb8da637acf79e428943c64ae3b3b558b62e'
}
response = requests.delete('https://www.ecowheels.com.ua/api/v1/tickers/82/', headers=headers)
4. Профіль (Profile)
Endpoint:
GET /profile/
GET /tickers/{id}/profile/
Авторизація: Token
Опис: Повертає дані профілю поточного користувача.
5. Довідники
Опис: Довідкові дані доступні через GET‑запити.
- /tickers/tech_condition/
- /tickers/color/
- /tickers/vehiclemodel/
- /tickers/status/
- /tickers/asgmt/
- /tickers/maximum_load/
- /tickers/waterproof/
- /tickers/origin_country/
6. Інше
6.1. Час серверу
Endpoint:
GET /time/
Опис: повертає поточний серверний час.