1
0
forked from BRT/arc
arc/docs/api/task.md
slava afbf3a3afb 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 09:30:59 +07:00

182 lines
4.0 KiB
Markdown
Raw 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.

# 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()`.