# Task API [← Главная](../index.md) Управление задачами: получение очереди, добавление задач, отправка результатов. --- ## GET `/api/v1/task/get_tasks` 🔒 Получить список задач в очереди для текущего профиля. **Ответ:** ```json { "success": true, "data": [ { "bank_name": "ozon", "material_id": 42, "type": "FETCH_PROFILE", "body": {} }, { "bank_name": "birbank", "material_id": 7, "type": "FETCH_TRANSACTIONS", "body": {} }, { "bank_name": "ozon", "material_id": 5, "type": "CREATE_TRANSACTION", "body": { "amount": 1000, "currency": 643, "type": "bank", "bank_participator_id": "string", "extra": {} } } ] } ``` **Типы задач:** | `type` | Описание | `body` | |--------|----------|--------| | `FETCH_PROFILE` | Получить баланс и данные аккаунта | пустой `{}` | | `FETCH_TRANSACTIONS` | Получить историю транзакций | пустой `{}` | | `CREATE_TRANSACTION` | Выполнить перевод | `CreateTransactionBody` | **`CreateTransactionBody`:** ```json { "amount": 1000, "currency": 643, "type": "bank", "bank_participator_id": "string", "extra": {} } ``` - `currency` — ISO 4217 numeric код валюты (643 = RUB, 840 = USD, 944 = AZN, 410 = KRW) - `type` — `"bank"` или `"top-up"` --- ## POST `/api/v1/task/task_result` 🔒 Отправить результат выполненной задачи. Тело запроса зависит от типа задачи (discriminator — поле `type`). ### FETCH_PROFILE ```json { "type": "FETCH_PROFILE", "material_id": 42, "bank_name": "ozon", "data": { "bank_account_id": "string", "currency": 643, "amount": 15000, "extra": {} } } ``` ### FETCH_TRANSACTIONS ```json { "type": "FETCH_TRANSACTIONS", "material_id": 7, "bank_name": "birbank", "data": [ { "bank_transaction_id": "string", "amount": 500, "currency": 944, "transaction_type": "bank", "bank_participator_id": "string", "status": "completed", "extra": {}, "created_at": "2024-01-01T12:00:00" } ] } ``` ### CREATE_TRANSACTION ```json { "type": "CREATE_TRANSACTION", "material_id": 5, "bank_name": "ozon", "data": { "bank_transaction_id": "string", "amount": 1000, "currency": 643, "transaction_type": "bank", "bank_participator_id": "string", "status": "completed", "extra": {} } } ``` **`TransactionStatusEnum`:** `"progress"` | `"completed"` | `"declined"` --- ## POST `/api/v1/task/add_task` Добавить задачу в очередь (вызывается внешней системой, не клиентом). --- ## POST `/api/v1/task/add_bank` Зарегистрировать банк с webhook-URL. **Query параметры:** | Параметр | Тип | Описание | |----------|-----|----------| | `bank_name` | string | Название банка | | `webhook_url` | uri | URL для уведомлений | --- ## Ошибка выполнения задачи Если задача не может быть выполнена (аккаунт не найден, скрипт упал), в поле `data` передаётся: ```json { "type": "FETCH_PROFILE", "material_id": 42, "bank_name": "ozon", "data": { "status": "error", "description": "Account not found for material_id: 42" } } ``` --- ## Связь с кодом проекта | API | Метод в коде | |-----|-------------| | `GET /api/v1/task/get_tasks` | `NetworkService::getTasks()` | | `POST /api/v1/task/task_result` | `NetworkService::postTaskResult()` | Хелпер в `EventHandler`: `sendTaskResult(type, materialId, bankName, data)` — создаёт `NetworkService` в отдельном потоке и вызывает `postTaskResult()`.