Работа с API
Общая информация
API URL
Для доступа к API используйте URL вида https://domain.com/service/api_version/function/
.
Методы HTTP-запросов
VMmanager поддерживает методы GET, POST и DELETE.
Параметры POST-запроса
Чтобы передать параметры для POST-запроса, укажите их в теле запроса в формате JSON.
Формат ответа
Ответ на API-запросы приходит в виде JSON-объектов, например:
Сообщение об ошибке в JSON
Права доступа
Некоторые функции недоступны для внешних API-запросов. Запрос к таким функциям завершится с ошибкой 3001 Unauthorized:
Сообщение об ошибке
Как обрабатывать код 503
Если VMmanager длительное время неактивен, то он может быть приостановлен. В этом случае API-запросы завершаются с кодом 503. Повторяйте запросы, пока в ответ не будет получен другой код:
Пример реализации на Python 3
Фильтры в запросах
VMmanager поддерживает два вида GET-запросов:
информация об определённом элементе по его ID — в ответ будет получена информация только об указанном элементе. В ответе нет информации о связанных сущностях таких как IP-адрес, кластер или диск ВМ. Например:
Получить информацию о ВМ по ID
CODEполный список элементов определённого вида — в ответ будет получен полный список всех элементов указанного типа. Также в ответе есть информация о всех связанных сущностях. Например:
Получить информацию о всех ВМ
CODE
Рекомендуем запрашивать полный список элементов и применять к нему фильтры. Это позволит получать информацию о всех связанных сущностях.
Формат фильтров
Доступные фильтры:
- WHERE — аналогичен выражению WHERE в SQL. Поддерживает обработку логических операторов AND, OR, NOT. Параметры сравнения:
- EQ — равно;
- NE — не равно;
- GT — больше;
- GE — больше или равно;
- LT — меньше;
- LE — меньше или равно;
- CP — поиск значений по указанной маске. Аналогичен оператору LIKE в SQL;
- ORDERBY — сортировка по указанному параметру. Если не указана, то применяется сортировка по возрастанию ID. Возможный порядок:
- ASC — по возрастанию;
- DESC — по убыванию;
- LIMIT — вывод указанного диапазона отфильтрованных элементов. В качестве значений укажите два числа через запятую. Нумерация начинается с 0.
Правила оформления фильтра 
- перед первым фильтром ставьте символ
?
; - чтобы указать значения и параметры фильтра, используйте символ
=
; - помещайте текстовые значения в одинарные кавычки. Для числовых значений использование кавычек опционально;
- параметры, значения и логические операторы фильтра разделяйте пробелом или символом
%20
. В параметре curl используйте для разделения символ+
; - условия фильтра WHERE можно поместить в скобки;
- чтобы объединить условия, используйте логические операторы AND, OR и NOT;
- объединяйте несколько фильтров символом
&
; - при использовании оператора CP добавьте символ процента (
%25
) в начало и конец маски.Пример запроса
CODE
Примеры запросов с фильтрами
Получить кластер с ID 1
Получить задачу по ID в consul и имени
Получить список из 50 ВМ с убывающей сортировкой по имени
Способы авторизации
Авторизация обязательна для выполнения API-запросов в VMmanager.
Авторизация по токену
Чтобы получить токен авторизации, отправьте POST-запрос на URL вида
https://domain.com/auth/v4/public/token
.Тело запроса в JSON
CODEОбработайте ответ формата JSON:
Ответ при успешной авторизации
CODEОтвет при ошибке авторизации
CODEИспользуйте значение token в заголовке HTTP-запроса. Например:
Использование в curl
CODE
Если в течение 60 минут токен авторизации не использовался, он будет удалён. Чтобы получить токен с нужным временем жизни, отправьте POST-запрос на URL вида https://domain.com/auth/v4/token:
Тело запроса в JSON
Ответ будет содержать новый токен с заданным сроком действия.
Использование в curl
Изменение времени жизни токена и сессии
По умолчанию время жизни токена — 60 минут. Чтобы изменить этот параметр, отправьте POST-запрос на URL вида https://domain.com/auth/v4/setting/token_ttl
:
Тело запроса в JSON
Использование в curl
Вы также можете изменить время жизни сессии через интерфейс. Подробнее см. Время жизни сессии.
Сквозная авторизация по ключу
VMmanager поддерживает сквозную авторизацию пользователя с использованием логина и пароля администратора. Например, её можно использовать для авторизованного перехода из биллинговой системы в VMmanager или предоставления временного доступа пользователя к платформе. Время действия такого ключа — один час.
Отправьте POST-запрос на URL вида
https://domain.com/auth/v4/public/token
.Тело запроса в JSON
CODEИспользование в curl
CODEОбработайте ответ. Он может содержать сообщение об ошибке, либо JSON вида:
Ответ в JSON
CODEОтправьте POST-запрос для создания ключа:
Создать ключ для авторизации
CODEВ ответ будет получен JSON-объект вида:
Ответ в JSON
CODEОбратите внимание!
По этому ключу вы можете предоставить пользователю временный доступ к платформе. Для авторизации пользователю нужно открыть ссылку вида
https://domain.com/auth/key/<key>
Чтобы получить значение токена по временному ключу, отправьте POST-запрос:
Получить значение токена по ключу
CODEВ ответ будет получен JSON-объект вида:
Ответ в JSON
CODEИспользуйте значение токена в заголовке HTTP-запроса, например:
Использование в curl
CODEВ случае ошибки будет получено сообщение вида:
Ошибка при авторизации
CODE