feat(api): add live collection contract endpoints

This commit is contained in:
Mikhail Chusavitin
2026-02-04 09:54:48 +03:00
parent 5a982d7ca8
commit aa3c82d9ba
4 changed files with 227 additions and 2 deletions

View File

@@ -92,6 +92,9 @@ open http://localhost:8080
```
POST /api/upload # Загрузить архив
POST /api/collect # Создать задачу live-сбора (контракт-заглушка)
GET /api/collect/{id} # Получить статус задачи live-сбора
POST /api/collect/{id}/cancel # Отменить задачу live-сбора
GET /api/status # Получить статус парсинга
GET /api/parsers # Получить список доступных парсеров
GET /api/events # Получить список событий
@@ -106,6 +109,53 @@ DELETE /api/clear # Очистить загруженные данны
POST /api/shutdown # Завершить работу приложения
```
### Контракты live-сбора (`/api/collect`)
`POST /api/collect` принимает JSON:
```json
{
"host": "bmc01.example.local",
"protocol": "redfish",
"port": 443,
"username": "admin",
"auth_type": "password",
"password": "secret",
"tls_mode": "strict"
}
```
- Обязательные поля: `host`, `protocol`, `port`, `username`, `auth_type`, `tls_mode`
- `protocol`: `redfish` или `ipmi`
- `auth_type`: `password` или `token`
- `tls_mode`: `strict` или `insecure`
- При `auth_type=password` обязателен `password`, при `auth_type=token``token`
Ответ `202 Accepted`:
```json
{
"job_id": "job_a1b2c3d4e5f6g7h8",
"status": "queued",
"message": "Collection job accepted",
"created_at": "2026-02-04T10:15:20Z"
}
```
`GET /api/collect/{id}` возвращает `200 OK` со статусом задачи:
```json
{
"job_id": "job_a1b2c3d4e5f6g7h8",
"status": "queued",
"progress": 0,
"logs": ["Job queued"],
"updated_at": "2026-02-04T10:15:20Z"
}
```
`POST /api/collect/{id}/cancel` возвращает `200 OK` и переводит задачу в `canceled` (контрактно, без реального backend-сбора на этом этапе).
## Структура проекта
```