5.4 KiB
5.4 KiB
Обращение к API облака
Базовые URL
| Стенд | URL |
|---|---|
| dev | https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc |
| test | https://lk-api-gateway-test.ngcloud.ru/api/v1/svc |
| prod | https://lk-api-gateway.ngcloud.ru/api/v1/svc |
Аутентификация
Bearer-токен в заголовке: Authorization: Bearer <TOKEN>
Токены лежат в secrets/:
secrets/dev.tokensecrets/test.tokensecrets/prod.token
⚠️ ОБЯЗАТЕЛЬНО: User-Agent
Без User-Agent: Mozilla/5.0 вернёт Forbidden! DDoS-Guard блокирует curl по умолчанию.
Примеры curl
URL="https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc"
TOKEN=$(tr -d '\n' < secrets/dev.token)
UA="Mozilla/5.0"
# Список сервисов
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/services | jq '.results[] | {svcId, svc}'
# Детали сервиса (все операции)
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/services/90 | jq '.svc.operations[] | {svcOperationId, operation}'
# Полные параметры операции (valueList, dataDescriptor, isModifiable)
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/instanceOperations/default/19 | jq '.svcOperation.cfsParams[]'
Получение параметров сервиса (как в YAML-генераторе)
3 шага:
URL="https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc"
TOKEN=$(tr -d '\n' < secrets/dev.token)
UA="Mozilla/5.0"
# Шаг 1: найти svcId по имени
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/services | jq '.results[] | select(.svc == "PostgreSQL") | .svcId'
# Шаг 2: найти svcOperationId для операции "create"
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/services/90 | jq '.svc.operations[] | select(.operation == "create") | .svcOperationId'
# Шаг 3: получить параметры (с valueList, dataDescriptor)
curl -s --max-time 10 -H "Authorization: Bearer $TOKEN" -H "User-Agent: $UA" $URL/instanceOperations/default/19 | jq '.svcOperation.cfsParams[]'
Ключевые эндпоинты
| Метод | Путь | Назначение |
|---|---|---|
| GET | /services |
Список сервисов |
| GET | /services/{svcId} |
Детали + операции |
| GET | /instances |
Инстансы пользователя |
| GET | /instanceOperations/default/{svcOperationId} |
Полные параметры (valueList, dataDescriptor, isModifiable) |
Эндпоинты (полный список)
| Метод | Путь | Назначение |
|---|---|---|
| GET | /services |
Список сервисов |
| GET | /services/{svcId} |
Детали + операции |
| GET | /instances?pageSize=200&page=N |
Инстансы (пагинация!) |
| GET | /instanceOperations/default/{svcOperationId} |
Полные параметры (valueList, dataDescriptor, isModifiable) |
| POST | /instances |
Создать инстанс → Location: instanceUid |
| POST | /instanceOperations |
Создать операцию → Location: opUid |
| POST | /instanceOperationCfsParams |
Задать параметр операции |
| POST | /instanceOperations/{opUid}/run |
Запустить операцию (обязательно!) |
Поток CREATE
См. подробный документ: api-create-flow.md
1. GET /services/{svcId} → svcOperationId для "create"
2. GET /instanceOperations/default/{svcOpId} → параметры
3. POST /instances → instanceUid (из Location)
4. POST /instanceOperations → opUid (из Location)
5. POST /instanceOperationCfsParams (×N) → задать параметры
6. POST /instanceOperations/{opUid}/run → ЗАПУСК
7. GET /instances?pageSize=200 (поллинг) → ждать running
⚠️ Важно
/instanceOperations/default/{id}даёт полные параметры (valueList, dataDescriptor, isModifiable)/serviceOperation/{id}даёт базовые параметры (без valueList и dataDescriptor) — НЕ использовать- Все параметры
--max-time 10обязательны — чтобы не висло - Токен без переносов строк:
tr -d '\n' - UUID в Location — uppercase (не lowercase как в БД)
- displayName должен быть уникальным — добавлять timestamp
/runобязателен! Без него операция не стартует (auto-start только в UI)- Array параметры — JSON-строка:
"[\"test\"]", не голый массив - Все paramValue — строки: даже числа и булевы
- Пустое тело =
{}: никогда не слатьnull(DDoS-Guard режет) - Пагинация: инстансов может быть >200, проверять page=1, page=2...
- DDoS-Guard: с локальной машины может не работать, curl через ВМ 213 (
ssh naeel@5.172.178.213)