Included XML files for the "pay to new number" and "pay to old number" features in the Ozon platform.
105 lines
4.7 KiB
Markdown
105 lines
4.7 KiB
Markdown
# 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 <access_token>` из `config.ini [common/access_token]`
|
||
- **Legacy** — поле `token` в multipart-теле (из `config.ini [common/token]`)
|