API
API предназначен для управления виртуальной инфраструктурой посредством удаленных вызовов, минуя интерфейс панели управления. Основное назначение это автоматизация процессов разворачивания больших систем и управление ими. Так же API используется pеселлерами, работающими по схеме White Label для управления виртуальными машинами своих клиентов. API Дублирует абсолютно все функции, представленные в панели управления IMserver. Иначе говоря, с помощью API можно выполнить любую функцию предусмотренную системой, без каких-либо ограничений, однако в случае возникновения большого количества бессмысленных запросов доступ к API может быть ограничен.
Для удобства работы с API мы разработали ряд библиотек для различных языков программирования, что в значительной степени сокращает время интеграции API IMserver в существующие панели управления.
Использовать API может любой абонент зарегистрированный в системе. Никаких дополнительных действий для этого не требуется. Ограничений по вызовам API для абонентов в настоящий момент не предусмотрено.
Используя API, просим учитывать тот факт, что разработка системы активно продолжается и некоторые функции могут изменится.
SDK, библиотеки и интерфейсные модули
Perl:
Imserver.pm - Perl библиотека
Примеры использования.
PHP:
Imserver.php - PHP библиотека
Примеры использования.
Основное
URL API шлюза:
Разрешенные методы запросов "GET", "POST". Ответ от системы возвращается в формате JSON. Допускается использование JSON для передачи параметров вместо CGI. В этом случае JSON должен передаваться в CGI параметре json методом POST либо передаваться в request_body. Вызовы принимаются только с использованием https. Все передаваемые параметры являются чувствительными к регистру.
Обязательные поля:
cmd (string) команда. | Полный список команд и их описание приведен ниже. |
sess (string) сессия. | Авторизационная сессия. (См. раздел Авторизация). |
При выполнении команд последовательно над одним и тем же сервером, рекомендуем Вам, проверять статус сервера (функция get_servers_status) непосредственно перед выполнением команды, так как на выполнение некоторых процедур требуется длительное время. К примеру на клонирование сервера с большим объемом диска, может понадобится продолжительное время.
Пример запроса (включение сервера №333):
или
Пример ответа:
В случае возникновения ошибки при исполнении запроса в поле ответа будет указан статус исполнения "success" (true/false) и код ошибки в поле "data".
Пример ответа с ошибкой:
Авторизация
Получение авторизационной сессии:
Поля запроса:
cmd: login | |
loginUsername (string) | Логин (обязательное поле) |
loginPassword (string) | Пароль (обязательное поле) |
smskey(int) | Ключ полученный в SMS. |
passkey(int) | Passkey полученный с помощью "eToken PASS" брелока. |
sendkey(int) | Принимает значение 0 или 1. Признак необходимости отправить SMS с Ключом на мобильный номер. Если данный флаг передан не будет, отправки SMS не произойдет. Ключ можно запросить не чаще чем 1 раз в 30 секунд. |
Опция twofactorauth в режиме SMS: При вызове функции login и наличии верных параметров loginUsername и loginPassword понадобится SMS Ключ. Для его получения на связанный с данным аккаунтом телефонный номер необходимо передать параметр sendkey=1. При этом авторизации абонента не произойдет. В случае если будут верными переданы все параметры ( loginUsername, loginPassword, smskey ), то авторизация произойдет успешно. Время жизни smskey ограничено 15 минутами и 3мя попытками.
Опция twofactorauth в режиме eToken PASS: При вызове функции login и наличии верных параметров loginUsername и loginPassword понадобится Passkey. Для его получения необходимо воспользоваться связанным с этим аккаунтом брелком eToekn PASS и передать в поле passkey сгенерированный одноразовый passkey. В случае если будут верными переданы все параметры ( loginUsername, loginPassword, passkey), то авторизация произойдет успешно.
Пример:
В JSON ответе от сервера будет содержаться авторизационная сессия в поле sess либо ошибка с описанием причины. Сессия остается активной в течении суток после запроса. После получения ID сессии, можно использовать ее для отправки других команд.
Поля ответа:
success (true, false) | Статус выполнения команды |
sess (string) | Сессия для дальнейшей работы |
login (string) | логин пользователя. |