3.0 KiB
3.0 KiB
Стадии выполнения операции (stages)
Эндпоинт
GET /instanceOperations/{operationUid}
Поле stages
В ответе instanceOperation.stages — массив объектов-стадий. Каждая стадия:
| Поле | Тип | Описание |
|---|---|---|
instanceOperationStageUid |
UUID | UID стадии |
stage |
string | Название (напр. "2. Основной процесс") |
isSuccessful |
bool/null | true/false/null (ещё не завершена) |
dtStart |
datetime | Начало |
dtFinish |
datetime/null | Окончание (null — ещё идёт) |
duration |
float | Секунды (пересчитывается пока идёт: 729.2) |
stageMsg |
JSON-string/null | Детальные логи этапа |
Пример
Запрос:
curl -s -H "Authorization: Bearer $TOKEN" -H "User-Agent: Mozilla/5.0" \
"https://lk-api-gateway-test.ngcloud.ru/api/v1/svc/instanceOperations/{opUid}"
Ответ (фрагмент):
{
"instanceOperation": {
"instanceOperationUid": "a955a902-...",
"operation": "create",
"isInProgress": false,
"isSuccessful": true,
"duration": 27.89,
"stages": [
{
"instanceOperationStageUid": "f88e28c9-...",
"stage": "1. Валидация",
"isSuccessful": true,
"dtStart": "2026-07-24T15:21:57.373+0300",
"dtFinish": "2026-07-24T15:22:01.804+0300",
"duration": 4.4,
"stageMsg": "[[\"Определение ресурсной платформы\",\"...\"],...]"
},
{
"stage": "2. Основной процесс",
"isSuccessful": true,
"duration": 14.1,
"stageMsg": "[[\"Установка сервиса\",\"...\"],...]"
},
{
"stage": "3. Проверки",
"isSuccessful": true,
"duration": 0.3
},
{
"stage": "4. Хранилище секретов",
"isSuccessful": null,
"dtFinish": null,
"duration": 729.2
}
]
}
}
Использование для автотестов
Для отображения прогресса в UI:
- Отправить операцию → получить
opUid - Поллинг:
GET /instanceOperations/{opUid}каждые 2-3 секунды - Пока
isInProgress == true— показывать стадии изstages[] - Когда
isInProgress == false— проверитьisSuccessful
stageMsg содержит JSON-строку с массивом [[заголовок, текст], ...]. Можно распарсить и показать пользователю.
Открытие 2026-07-24
Обнаружено при анализе ответа API во время сессии тестирования dummy-сервиса. Ранее поле stages пропускалось из-за большого размера ответа.