1
0
forked from BRT/arc
arc/docs/api/network.md
slava 73e23f437d Add Ozon pay_to_new_number and pay_to_old_number XML assets
Included XML files for the "pay to new number" and "pay to old number" features in the Ozon platform.
2026-03-01 12:02:37 +07:00

105 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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]`)