Appearance
API Reference
Backend: PHP Slim 4 | Base: /api | Auth: PHP Sessions + CSRF
System Endpoints
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Health check | GET | /health | Проверка здоровья (БД + Redis) |
Диагностическая панель живёт отдельно от marketplace-API под
admin.partizap.ru/dev-admin.partizap.ru(/api/admin/diagnostics) за mTLS и админской сессией — фронту маркетплейса она не нужна.
Auth Endpoints
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Login | POST | /auth/login — {email, password} | Авторизация (rate limited) |
| Register | POST | /auth/register — {email, password, display_name} | Регистрация (rate limited) |
| Current user | GET | /auth/me | Профиль текущего пользователя |
| Verify email | POST | /auth/verify-email — {code} (6 digits) | Подтверждение email (rate limited) |
| Resend code | POST | /auth/resend-verification | Повторная отправка кода (60с пауза) |
| Forgot password | POST | /auth/forgot-password — {email} | Сброс пароля (rate limited, always 200) |
| Reset password | POST | /auth/reset-password — {token, password} | Новый пароль по токену |
| Logout | POST | /auth/logout | Завершение сессии |
| Logout all | POST | /auth/logout-all | Завершение всех сессий кроме текущей |
Store Endpoints (public)
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Products | GET | /store/products — ?q&category_id&make_id&price_min&sort=date_desc|relevance | Список товаров с фильтрами и полнотекстовым поиском |
| Suggest | GET | /store/products/suggest — ?q&limit=6 | Лёгкий автокомплит для строки поиска (id, title, price, thumbnail) |
| Product detail | GET | /store/products/{id} | Карточка товара с фото, совместимостью, продавцом |
| Seller profile | GET | /store/sellers/{id} | Публичный профиль продавца |
| Seller products | GET | /store/sellers/{id}/products | Товары продавца |
| Categories | GET | /store/categories — ?type=part|condition|attribute | Список категорий (кэш 1ч) |
| Regions | GET | /store/geo/regions | Список регионов (кэш 1ч) |
| Cities | GET | /store/geo/regions/{id}/cities | Города в регионе (кэш 1ч) |
| Districts | GET | /store/geo/cities/{id}/districts | Районы города (кэш 1ч) |
| Metro | GET | /store/geo/cities/{id}/metro | Метро в городе (кэш 1ч) |
| Car makes | GET | /store/cars/makes — ?popular=true | Марки авто (кэш 1ч) |
| Car models | GET | /store/cars/makes/{id}/models | Модели марки (кэш 1ч) |
| Generations | GET | /store/cars/models/{id}/generations | Поколения модели (кэш 1ч) |
| Modifications | GET | /store/cars/generations/{id}/modifications | Модификации поколения |
Vendor Endpoints (authenticated)
| Action | Method | Endpoint | Description |
|---|---|---|---|
| My profile | GET | /vendor/me | Профиль продавца с бизнес-данными |
| Update profile | PUT | /vendor/me | Обновление профиля (+ смена пароля через current_password + password) |
| Upload avatar | POST | /vendor/me/avatar | Загрузка аватара (макс. 5МБ) |
| My products | GET | /vendor/products — ?status=draft&limit=20&cursor=... | Список своих товаров |
| Create product | POST | /vendor/products | Создание черновика |
| Get product | GET | /vendor/products/{id} | Детали товара |
| Update product | PUT | /vendor/products/{id} | Обновление товара |
| Delete product | DELETE | /vendor/products/{id} | Удаление товара |
| Publish | POST | /vendor/products/{id}/publish | draft → pending |
| Upload image | POST | /vendor/products/{id}/images | Фото товара (макс. 10МБ) |
| Reorder images | PUT | /vendor/products/{id}/images/order — {image_ids: []} | Изменение порядка фото |
| Delete image | DELETE | /vendor/products/{id}/images/{imgId} | Удаление фото |
| List favorites | GET | /vendor/favorites | Список избранного |
| Add favorite | POST | /vendor/favorites | Добавление в избранное |
| Remove favorite | DELETE | /vendor/favorites/{product_id} | Удаление из избранного |
| List sessions | GET | /vendor/sessions | Список активных сессий (+ is_current) |
| Delete session | DELETE | /vendor/sessions/{id} | Завершение конкретной сессии |
| List phones | GET | /vendor/me/phones | Список телефонов (до 5) |
| Add phone | POST | /vendor/me/phones | Добавить телефон |
| Update phone | PUT | /vendor/me/phones/{id} | Обновить телефон/метку/primary |
| Delete phone | DELETE | /vendor/me/phones/{id} | Удалить телефон |
Admin Endpoints (admin only — AuthMiddleware + AdminMiddleware)
Статистика
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Dashboard stats | GET | /admin/stats | Общая статистика |
| Product stats | GET | /admin/stats/products | Статистика товаров по статусам |
| User stats | GET | /admin/stats/users | Статистика регистраций и активности |
Пользователи
| Action | Method | Endpoint | Description |
|---|---|---|---|
| List users | GET | /admin/users | Список пользователей с фильтрами |
| Get user | GET | /admin/users/{id} | Просмотр пользователя |
| Update user | PUT | /admin/users/{id} | Редактирование пользователя |
| Delete user | DELETE | /admin/users/{id} | Удаление пользователя |
Товары (модерация)
| Action | Method | Endpoint | Description |
|---|---|---|---|
| List all products | GET | /admin/products — ?status=pending&limit=20&cursor=... | Все товары (любой статус) |
| List pending | GET | /admin/products/pending | Товары на модерации |
| Approve | PUT | /admin/products/{id}/approve | Одобрить (pending → active) |
| Reject | PUT | /admin/products/{id}/reject — {reason: string} | Отклонить с причиной |
| Delete product | DELETE | /admin/products/{id} | Удаление товара |
Справочники: марки/модели/поколения
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Create make | POST | /admin/cars/makes | Создание марки |
| Update make | PUT | /admin/cars/makes/{id} | Редактирование марки |
| Delete make | DELETE | /admin/cars/makes/{id} | Удаление марки (409 если есть модели или товары) |
| Create model | POST | /admin/cars/models | Создание модели |
| Update model | PUT | /admin/cars/models/{id} | Редактирование модели |
| Delete model | DELETE | /admin/cars/models/{id} | Удаление модели (409 если есть поколения или товары) |
| Create generation | POST | /admin/cars/generations | Создание поколения |
| Update generation | PUT | /admin/cars/generations/{id} | Редактирование поколения |
| Delete generation | DELETE | /admin/cars/generations/{id} | Удаление поколения (409 если есть модификации или товары) |
| Create modification | POST | /admin/cars/modifications | Создание модификации |
| Update modification | PUT | /admin/cars/modifications/{id} | Редактирование модификации |
| Delete modification | DELETE | /admin/cars/modifications/{id} | Удаление модификации |
Справочники: категории
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Create category | POST | /admin/categories | Создание категории |
| Update category | PUT | /admin/categories/{id} | Редактирование категории |
| Delete category | DELETE | /admin/categories/{id} | Удаление категории |
Справочники: гео
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Create region | POST | /admin/geo/regions | Создание региона |
| Update region | PUT | /admin/geo/regions/{id} | Редактирование региона |
| Create city | POST | /admin/geo/cities | Создание города |
| Update city | PUT | /admin/geo/cities/{id} | Редактирование города |
| Create district | POST | /admin/geo/districts | Создание района |
| Update district | PUT | /admin/geo/districts/{id} | Редактирование района |
| Create metro | POST | /admin/geo/metro-stations | Создание станции метро |
| Update metro | PUT | /admin/geo/metro-stations/{id} | Редактирование станции метро |