{"name":"VK Cloud REST API","vendor":"VK","industry":"cloud","summary":"REST API облачной платформы VK Cloud: сервисы облачных серверов построены на OpenStack (Nova — виртуальные машины, Cinder — диски и снапшоты, Glance — образы, Manila — файловые хранилища) и дополнены сервисом резервного копирования Karboii. Доступ к API включается в настройках проекта; запросы авторизуются токеном Keystone. В этом файле — получение токена и адреса сервисов; методы самих сервисов описаны в спецификациях OpenStack.","docsUrl":"https://cloud.vk.ru/docs/en/tools-for-using-services/api/rest-api","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"poluchit-token-i-upravlyat-serverami","title":"Получить токен и управлять серверами через OpenStack API","summary":"Автоматизировать облачную инфраструктуру VK Cloud: получить токен Keystone и вызывать API виртуальных машин, дисков и образов.","steps":["Включи доступ к API в настройках проекта VK Cloud (раздел «Доступ по API») и возьми значения OS_USER_DOMAIN_NAME, OS_USERNAME, OS_PROJECT_ID и OS_REGION_NAME.","Получи токен: POST /v3/auth/tokens на хосте infra.mail.ru:5000 с логином, паролем и проектом в теле. Токен приходит не в теле, а в заголовке ответа x-subject-token.","Передавай токен в заголовке X-Auth-Token в запросах к сервисам: Nova (виртуальные машины) — https://infra.mail.ru:8774/v2.1, Cinder (диски) — https://public.infra.mail.ru:8776/v3/<project_id>, Glance (образы) — https://infra.mail.ru:9292.","Методы самих сервисов — стандартные OpenStack API: например, список серверов — /servers/detail у Nova. Ориентируйся на спецификации OpenStack соответствующей версии.","Токен живёт ограниченное время — при ответе 401 получи новый."],"code":"TOKEN=$(curl -si -X POST https://infra.mail.ru:5000/v3/auth/tokens \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"auth\": {\n        \"identity\": {\"methods\": [\"password\"], \"password\": {\"user\": {\n          \"domain\": {\"name\": \"<OS_USER_DOMAIN_NAME>\"}, \"name\": \"<OS_USERNAME>\", \"password\": \"<OS_PASSWORD>\"}}},\n        \"scope\": {\"project\": {\"id\": \"<OS_PROJECT_ID>\", \"region\": \"<OS_REGION_NAME>\"}}}}' \\\n  | grep -i '^x-subject-token' | cut -d' ' -f2 | tr -d '\\r')\n\n# Список виртуальных машин (Nova)\ncurl https://infra.mail.ru:8774/v2.1/servers/detail -H \"X-Auth-Token: $TOKEN\"","language":"bash","methods":["POST /v3/auth/tokens"]}],"baseUrls":[{"label":"Keystone (токены)","url":"https://infra.mail.ru:5000"},{"label":"Nova (виртуальные машины)","url":"https://infra.mail.ru:8774/v2.1"},{"label":"Cinder (диски и снапшоты)","url":"https://public.infra.mail.ru:8776/v3/<project_id>"},{"label":"Glance (образы ВМ)","url":"https://infra.mail.ru:9292"},{"label":"Karboii (резервные копии ВМ и БД)","url":"https://mcs.mail.ru/infra/karboii/v1"},{"label":"Manila (файловые хранилища)","url":"https://public.infra.mail.ru:8786/v2/<project_id>"},{"label":"Адреса","url":"<project_id>"}],"auth":{"type":"other","description":"Токен Keystone получают запросом `POST /v3/auth/tokens` с логином и паролем пользователя; токен возвращается в заголовке ответа `x-subject-token`. Доступ к API должен быть включён в настройках проекта.","example":""},"methods":[{"id":"POST /v3/auth/tokens","title":"Получение токена Keystone","httpMethod":"POST","path":"/v3/auth/tokens","description":"Хост `infra.mail.ru:5000`, заголовок `Content-Type: application/json`.\n\nТокен — в заголовке ответа `x-subject-token`.","params":[{"name":"auth.identity.methods","in":"body","type":"array","required":true,"description":"[\"password\"]"},{"name":"auth.identity.password.user.domain.name","in":"body","type":"string","required":true,"description":"Домен пользователя (OS_USER_DOMAIN_NAME)"},{"name":"auth.identity.password.user.name","in":"body","type":"string","required":true,"description":"Имя пользователя (OS_USERNAME)"},{"name":"auth.identity.password.user.password","in":"body","type":"string","required":true,"description":"Пароль (OS_PASSWORD)"},{"name":"auth.scope.project.id","in":"body","type":"string","required":true,"description":"ID проекта (OS_PROJECT_ID)"},{"name":"auth.scope.project.region","in":"body","type":"string","required":true,"description":"Регион (OS_REGION_NAME)"}],"requestExample":"{\n  \"auth\": {\n    \"identity\": {\n      \"methods\": [\"password\"],\n      \"password\": {\n        \"user\": {\n          \"domain\": { \"name\": \"<OS_USER_DOMAIN_NAME>\" },\n          \"name\": \"<OS_USERNAME>\",\n          \"password\": \"<OS_PASSWORD>\"\n        }\n      }\n    },\n    \"scope\": {\n      \"project\": {\n        \"id\": \"<OS_PROJECT_ID>\",\n        \"region\": \"<OS_REGION_NAME>\"\n      }\n    }\n  }\n}","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[],"limits":"","gotchas":["Значения `OS_*` берутся из настроек проекта (раздел «Доступ по API»).","Срок жизни токена виден в консоли при наведении на значок копирования; на открытой странице доступа по API токен перевыпускается автоматически раз в час.","Есть отдельные OpenAPI-спецификации для Anycast IP, сервисных аккаунтов, CDN, Cloud Backup и Billing (баланс проекта).","Для форматирования JSON-ответов в примерах документации используется утилита `jq`."],"slug":"vk-cloud","version":2,"updatedAt":"2026-10-24T17:05:39.016Z","sources":[{"title":"REST API VK Cloud","url":"https://cloud.vk.ru/docs/en/tools-for-using-services/api/rest-api","kind":"research","addedAt":"2026-10-14T18:42:43.785Z"},{"title":"Получение токена Keystone","url":"https://cloud.vk.ru/docs/en/tools-for-using-services/api/rest-api/case-keystone-token","kind":"research","addedAt":"2026-10-14T18:42:43.785Z"},{"title":"Эндпоинты API","url":"https://cloud.vk.ru/docs/en/tools-for-using-services/api/rest-api/endpoints","kind":"research","addedAt":"2026-10-14T18:42:43.785Z"},{"title":"Спецификации API","url":"https://cloud.vk.ru/docs/en/tools-for-using-services/api/api-spec","kind":"research","addedAt":"2026-10-14T18:42:43.785Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-14T18:42:43.785Z"},{"title":"scenarios-vk-cloud.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:28.699Z"}],"logoUrl":null}