# NetworkService — полная карта API-вызовов [← Главная](../index.md) Все HTTP-вызовы, выполняемые приложением. Класс `NetworkService` (`services/net/NetworkService.h/cpp`). --- ## Аутентификация | Метод | Путь | Слот | Описание | |-------|------|------|----------| | POST | `/api/v1/auth/login` | `loginAndSetup()` | Вход по `api_key`, получение токенов | | POST | `/api/v1/auth/refresh_token` | `refreshToken()` (private) | Обновление access_token | Токены сохраняются в `config.ini`. Авто-рефреш за 30 минут до истечения — `scheduleNextRefresh()`. --- ## Desktop | Метод | Путь | Слот | Описание | |-------|------|------|----------| | POST | `/api/v1/desktop/` | `loginAndSetup()` | Создание desktop при первом запуске (если `desktop_id` не сохранён) | Ответ: сохраняет `desktop_id` и `profile_id` в `config.ini`. --- ## Device | Метод | Путь | Слот | Описание | |-------|------|------|----------| | POST | `/api/v1/device/` | `createDevice()` | Регистрация нового Android устройства | | PATCH | `/api/v1/device/{api_id}` | `updateDevice()` | Обновление статуса/батареи устройства | | POST | `/api/v1/device/add_screenshot/{api_id}` | `postDeviceScreenshot()` | Загрузка скриншота (`multipart/form-data`, `image/jpeg`) | `api_id` — UUID, получаемый при создании и сохраняемый в таблице `devices`. --- ## Profile / Material | Метод | Путь | Слот | Описание | |-------|------|------|----------| | POST | `/api/v1/profile/bank_profile` | `postBankProfile()` | Создать банк-профиль | | PATCH | `/api/v1/profile/bank_profile/{id}` | `patchBankProfile()` | Обновить банк-профиль | | POST | `/api/v1/profile/material` | `postMaterial()` | Создать материал (карту) | `postBankProfile` сохраняет `bank_profile_id` в таблице `applications`. `postMaterial` сохраняет `material_id` (UUID) в таблице `accounts`. --- ## Tasks | Метод | Путь | Слот | Auth | Описание | |-------|------|------|------|----------| | GET | `/api/v1/task/get_tasks` | `getTasks()` | Bearer | Получить очередь задач (поллинг каждые 5 сек) | | POST | `/api/v1/task/task_result` | `postTaskResult()` | Bearer | Отправить результат задачи | `getTasks()` — асинхронный (без QEventLoop), использует сигнал `tasksReceived(QJsonArray)`. `postTaskResult()` — вызывается из `sendTaskResult()` в `EventHandler` в отдельном QThread. --- ## Устаревшие эндпоинты (legacy) Используют старый `multipart/form-data` API с токеном в теле. Пути задаются в `config.ini` напрямую как полные URL. | Слот | Ключ в config.ini | Статус | |------|-------------------|--------| | `postEventStatus()` | `net/eventStatusUpdate` | ⚠️ устарел, используется в `updateEventThread` | | `postAppStatus()` | `net/appStatusUpdate` | используется при смене статуса приложения | | `insertTransactionData()` | `net/transactionInsert` | создание транзакции | | `updateTransactionData()` | `net/transactionUpdate` | обновление транзакции | | `getPayments()` | `net/paymentsGet` | ⚠️ старый поллинг задач (заменён на `getTasks`) | --- ## Конфигурация путей (`config.ini`) ```ini [net] apiBase = http://localhost:9999 pathAuthLogin = /api/v1/auth/login pathAuthRefresh = /api/v1/auth/refresh_token pathDesktopCreate = /api/v1/desktop/ pathDevice = /api/v1/device/ pathDeviceScreenshot = /api/v1/device/add_screenshot/ pathBankProfile = /api/v1/profile/bank_profile pathMaterial = /api/v1/profile/material pathGetTasks = /api/v1/task/get_tasks pathTaskResult = /api/v1/task/task_result ``` Если ключ отсутствует — используется значение по умолчанию (захардкожено в конструкторе `NetworkService`). --- ## Авторизация в запросах - **Bearer** — `Authorization: Bearer ` из `config.ini [common/access_token]` - **Legacy** — поле `token` в multipart-теле (из `config.ini [common/token]`)