diff --git a/DOCS/api-access.md b/DOCS/api-access.md new file mode 100644 index 0000000..243b2b7 --- /dev/null +++ b/DOCS/api-access.md @@ -0,0 +1,76 @@ +# Обращение к 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 ` + +Токены лежат в `secrets/`: +- `secrets/dev.token` +- `secrets/test.token` +- `secrets/prod.token` + +## ⚠️ ОБЯЗАТЕЛЬНО: User-Agent + +**Без `User-Agent: Mozilla/5.0` вернёт Forbidden!** DDoS-Guard блокирует curl по умолчанию. + +## Примеры curl + +```bash +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 шага: + +```bash +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) | +| POST | `/instances` | Создать инстанс | +| POST | `/instanceOperations` | Запустить операцию | + +## ⚠️ Важно + +- `/instanceOperations/default/{id}` даёт **полные** параметры (valueList, dataDescriptor, isModifiable) +- `/serviceOperation/{id}` даёт **базовые** параметры (без valueList и dataDescriptor) — НЕ использовать +- Все параметры `--max-time 10` обязательны — чтобы не висло +- Токен **без** переносов строк: `tr -d '\n'`