АPI документация¶
В этой статье
- Документация по API панели управления invapi.hostkey.ru
- Запросы API
- Формат примеров API
- Авторизация через API-ключ
- Работа с API-ключами через вызовы apikeys
- Авторизация
- PIN-коды
- Взаимодействие с биллингом
- Моментальные серверы
- Стоковые серверы
- Удаленный доступ
- Виртуальные серверы
- Управление сервером
- Управление питанием сервера
- Переустановка операционной системы на сервере (второй вариант)
- Сетевые операции
- Управление DNS-зонами
- Удаленные руки
- Теги оборудования
- Асинхронные действия
Документация по API панели управления invapi.hostkey.ru¶
В этой документации описан общий дизайн и принципы работы API, а также конкретные конечные точки. Также приведены примеры запросов к ним.
Информация
Панель управления invapi.hostkey.ru построена на основе этого API.
Основные возможности, доступные через вызовы API:
- Поиск серверов по IP, имени хоста, местоположению, тегам;
- Заказ моментальных и стоковых серверов стандартных конфигураций, доступных для использования от 15-20 минут после оформления заказа;
- Управление питанием: перезагрузка, включение и выключение оборудования, просмотр показателей датчиков и статуса питания;
- Управление сетевыми настройками: просмотр настроек сети, включение и выключение сетевых интерфейсов, блокировка и разблокировка IP-адресов. Настройка DNS;
- Переустановка операционной системы и ПО: полностью автоматизированная переустановка стандартных ОС: Centos, Ubuntu, Debian, and Windows Server. Поддержка ключей SSH, постустановочных задач, HTTP-вызовов, а также доустановка поверх программного обеспечения из маркетплейса;
- Доступ к IPMI: возможность получить доступ к серверу с помощью модуля IPMI, создать сквозную сеть с пользователем-администратором и управлять сервером напрямую через стандартный интерфейс DRAC или IPMI с помощью консоли HTML5 или Java;
- Доступ к консоли: простой доступ к HTML5 или Java консоли сервера без установки дополнительного ПО;
- Доступ к библиотеке ISO-файлов: сервер может быть загружен непосредственно с одного из наших образов ISO для установки или устранения неполадок;
- Запросы удаленных рук: одним щелчком мыши можно создавать запросы удаленных рук для проверки сервера или выполнения других задач;
- Биллинговые операции: простое пополнение счета, оплата счетов и возможность отмены сервиса напрямую из панели управления Invapi;
- Статистика: просмотр графиков использования трафика по интерфейсам или конкретным IP-адресам. Просмотр показателей производительности сервера с установленным агентом мониторинга;
- Теги: установка собственных тегов/значений для сервера, выполнение операций поиска, доступ к тегам через API для сохранения состояния сервера и других данных, связанных с сервером;
- В разработке: почасовая оплата, создание собственных пользователей с различными правами, выделение лимитов бюджета пользователям, постоплата для проверенных клиентов, мониторинг серверов с уведомлениями. Управление частными блоками IP.
Запросы API¶
Запросы должны выполняться по протоколу HTTPS, чтобы гарантировать шифрование транзакций.
Для запросов необходимо использовать метод POST
, если не указано иное.
Формат примеров API¶
Примеры в этой документации описаны с помощью сurl
, HTTP-клиента командной строки. На компьютерах Linux и macOS обычно по умолчанию установлен curl
, и он доступен для загрузки на всех популярных платформах, включая Windows.
Каждый пример разделен на несколько строк символом \
, который совместим с bash
. Типичный пример выглядит так:
Пример запроса POST:
Параметр -X
задает метод запроса. Для согласованности метод будет указан во всех примерах, даже если он явно не требуется для методов GET.
Примеры, для которых требуется объект JSON в теле запроса, передают требуемые данные через параметр --data
.
Ответ на запросы происходит в формате JSON и в документации отформатирован для удобочитаемости.
Примечание
Чтобы использовать приведенные примеры, не подставляя каждый раз в них свой токен, вы можете добавить токен один раз в переменные окружения в вашей консоли. Например, на Linux это можно сделать с помощью команды:
После этого токен будет автоматически подставляться в ваши запросы.
Примечание
Обратите внимание, что все значения в этой документации являются примерами. Не полагайтесь на идентификаторы операционных систем, тарифов и т.д., используемые в примерах. Используйте ваши значения серверов/сетей/доменов для получения значений или перед созданием ресурсов.
Авторизация через API-ключ¶
Для использования API в начале необходимо получить сессионный токен. Это можно сделать с помощью API-вызова auth/login, предварительно, получив API-ключ в Invapi для всего аккаунта или конкретного сервера или через вызов api_keys/add.
Также сессионный токен можно получить через вызов auth/whmcslogin используя пару логин/пароль аккаунта.
Авторизацию через API-ключ можно получить для доступа как ко всему аккаунту, так и к конкретному серверу через вызов auth/login в зависимости от применяемого API-ключа. Если авторизация прошла успешно и такой ключ найден в базе данных, то система вернет сессионный токен $HOSTKEY_TOKEN
.
Полномочия токена будут распространяться на весь аккаунт в случае общего ключа или только на конкретный сервер в случае ключа на сервер. Использование этого метода позволяет наладить автоматическое управление серверами и заказ услуг через наш API без использования логина/пароля в основной аккаунт и без интерактивной проверки 2FA.
Работа с API-ключами через вызовы api_keys¶
Для работы с вызовами API при получении API-ключа вам будет необходим сессионный токен, который можно получить через вызов auth/whmcslogin. Сессионный токен выдается только на один час по умолчанию, поэтому после его получения рекомендуем сгенерировать API-ключ на ваш аккаунт и работать с ним, получая сессионный токен через вызов auth/login.
Ресурс | Действие | Описание |
---|---|---|
api_keys.php | list | получение данных о всех сгенерированных API-ключах аккаунта |
api_keys.php | list_for_server | получение данных о сгенерированных API-ключах для определенного сервера |
api_keys.php | view | просмотр информации об определенных API-ключах |
api_keys.php | add | получение API-ключа для аккаунта или сервера |
api_keys.php | edit | редактирование параметров API-ключа |
api_keys.php | delete | удаление API-ключа |
api_keys.php | history | вывод информации об использовании API-ключа за определенный период |
api_keys/list¶
Показывает все сгенерированные API-ключи аккаунта - владельца сессионного токена.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | list | ключевое действие - получение данных о всех сгенерированных API-ключах аккаунта |
token | * | string | сессионный токен |
POST-запрос
Пример положительного ответа
{
"result": "OK",
"module": "api_keys",
"action": "list",
"data": [
{
"id": 484, //ID API-ключа для аккаунта
"name": "new_api",
"active": 1,
"ip": "",
"server_id": 0,
"token_view": "0cab",
"login_notify_method": "none",
"login_notify_address": null
},
{
"id": 237, //ID API-ключа для сервера
"name": "test_control_panel",
"active": 1,
"ip": "",
"server_id": 39601, //ID сервера для которого назначен ключ
"token_view": "b66d",
"login_notify_method": "none",
"login_notify_address": null
}
]
}
api_keys/list_for_server¶
Показывает сгенерированные API-ключи для определенного сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | list_for_server | ключевое действие - получение данных о сгенерированных API-ключах для определенного сервера |
server_id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос
Пример положительного ответа
api_keys/view¶
Показывает информацию об определенном API-ключе
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | view | ключевое действие - просмотр информации об определенных API-ключах |
id | * | int | ID API-ключа (можно получить через вызов api_keys/list) | |
token | * | string | сессионный токен |
POST-запрос
Пример положительного ответа
api_keys/add¶
Позволяет получить API-ключ для аккаунта или сервера
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | add | ключевое действие - получение API-ключа для аккаунта или сервера |
name | * | string | наименование ключа (на английском) | |
server_id | int | ID сервера, если ключ выдается не на весь аккаунт | ||
ip | string | список IP адресов, только с которых будет возможно использование данного ключа (например 10.0.0.2, 10.4.6.3/24 ) | ||
login_notify_method | * | string | выбор метода оповещения о логине с данным API-ключом (none , email , webhook ) | |
login_notify_address | string | e-mail или адрес вебхука нотификации в зависимости от заданного значения в login_notify_method | ||
active | * | int | 1 - сделать ключ активным, 0 - отключить ключ | |
token | * | string | сессионный токен |
Примечание
При задании API-ключа для сервера указывайте login notify method
равный none
.
POST-запрос
curl -s "https://invapi.hostkey.ru/api_keys.php" -X POST \
--data "action=add" \
--data "params[name]={Имя API-ключа}" \
--data "params[server_id]={ID сервера}" \
--data "params[ip]={"белый список" IP-адресов} \
--data "params[login_notify_method]={`none`, `email` или `webhook`}" \
--data "params[login_notify_address]=" \
--data "params[active]={1 или 0}" \
--data "token=$HOSTKEY_TOKEN"
Пример положительного ответа
{
"result": "OK",
"module": "api_keys",
"action": "add",
"data": {
"id": 501, //ID API-ключа
"name": "test key",
"active": 1,
"ip": "10.0.0.1 10.3.4.5",
"server_id": 0,
"token_view": "d981",
"login_notify_method": "email",
"login_notify_address": "[email protected]",
"api_key": "d9815703f6f41d3f-5d52f141ff7ac755" // Сгенерированный API-ключ
}
}
api_keys/edit¶
Позволяет отредактировать параметры API-ключа
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | edit | ключевое действие - редактирование параметров API-ключа |
id | * | int | ID API-ключа (можно получить через вызов api_keys/list) | |
name | * | string | наименование ключа (на английском) | |
ip | string | список IP адресов, только с которых разрешено использование данного ключа (например 10.0.0.2, 10.4.6.3/24 ) | ||
login_notify_method | * | string | выбор метода оповещения о логине с данным API-ключом (none , email , webhook ) | |
login_notify_address | string | e-mail или адрес вебхука нотификации в зависимости от заданного значения в login_notify_method | ||
active | * | int | 1 - сделать ключ активным, 0 - отключить ключ | |
token | * | string | сессионный токен |
POST-запрос
curl -s "https://invapi.hostkey.ru/api_keys.php" -X POST \
--data "action=edit" \
--data "params[id]={ID API-ключа}" \
--data "params[name]={Имя API-ключа}" \
--data "params[ip]={IP-адреса ACL} \
--data "params[login_notify_method]={`none`, `email` или `webhook`}" \
--data "params[login_notify_address]=" \
--data "params[active]={1 или 0}" \
--data "token=$HOSTKEY_TOKEN"
Пример положительного ответа
api_keys/delete¶
Позволяет удалить API-ключ.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | delete | ключевое действие - удаление API-ключа |
id | * | int | ID API-ключа (можно получить через вызов api_keys/list) | |
token | * | string | сессионный токен |
POST-запрос
Пример положительного ответа
api_keys/history¶
Позволяет вывести информацию об использовании API-ключа за определенный период
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | history | ключевое действие - вывод информации об использовании API-ключа за определенный период |
id | * | int | ID API-ключа (можно получить через вызов api_keys/list) | |
period_from | string | Дата с которой необходимо вывести историю в формате Y-M-D | ||
period_to | string | Дата по которую необходимо вывести историю в формате Y-M-D | ||
token | * | string | сессионный токен |
POST-запрос
Пример положительного ответа
{
"result": "OK",
"module": "api_keys",
"action": "history",
"data": [
{
"id": 20818097,
"date": "2024-02-14 11:14:05",
"message": "Deleted api_key 506. json:{\"id\":\"506\"}",
"type": "action",
"login": "[email protected]"
},
{
"id": 20817742,
"date": "2024-02-14 11:10:45",
"message": "Changed api_key 506. name from 'test key 2' to 'new_new test', active from '1' to '0', ip from '10.0.0.1 10.3.4.5' to '78.8.8.6', login_notify_method from 'none' to 'email', login_notify_address from '' to '[email protected]'",
"type": "action",
"login": "[email protected]"
},
{
"id": 20817738,
"date": "2024-02-14 11:10:45",
"message": "Updated api_key 506. json:{\"id\":\"506\",\"name\":\"new_new test\",\"ip\":\"78.8.8.6\",\"login_notify_method\":\"email\",\"login_notify_address\":\"[email protected]\",\"active\":\"0\"}",
"type": "action",
"login": "[email protected]"
},
{
"id": 20816506,
"date": "2024-02-14 11:03:51",
"message": "Created new api_key 506. json:{\"name\":\"test key 2\",\"ip\":\" 10.0.0.1, 10.3.4.5\",\"login_notify_method\":\"none\",\"active\":\"1\",\"server_id\":\"34533\"}",
"type": "action",
"login": "[email protected]"
}
]
}
Авторизация¶
Ресурс | Действие | Описание |
---|---|---|
auth.php | login | получение сессионного токена через API KEY |
auth.php | whmcslogin | получение сессионного токена через пару логин-пароль |
auth.php | logout | удаление сессионного токена |
auth.php | info | получение полных данные об оборудовании |
eq.php | set_pin | установка/изменение PIN-кода |
eq.php | check_pin | подтверждение введенного PIN-кода (опционально) |
auth/login¶
Позволяет получить сессионный токен через API ключ аккаунта или сервера.
Примечание
Наиболее важные данные — это токен (далее в примерах $HOSTKEY_TOKEN
). Вся информация о данных токена и разрешениях хранится на сервере API, остальные данные помогают построить правильный веб-интерфейс для конкретной роли.
Токен обычно действителен в течение 2 часов, если требуется иное время жизни токена - его можно задать в секундах через параметр ttl
. При повторном запросе токена в этот период будет предоставлен действующий токен. Токен обычно привязывается к IP пользователя, если это не нужно - привязку можно отменить через параметр fix_ix=0. Если токен привязан к IP и IP изменится, система выдаст ошибку и будет необходимо снова получить токен.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | login | ключевое действие - получение сессионного токена |
key | * | string | ключ доступа к АПИ. | |
ttl | int | 7200 | продолжительность сессии в секундах, по умолчанию - 7200 (2 часа) |
POST-запрос
Пример положительного ответа
{
"result": {
"token": c92e48c4506320873286b84440e74sfd", // СЕССИОННЫЙ ТОКЕН
"role": "Customer billing",
"role_type": "Customer",
"whmcs_id": 3172,
"whmcs_location": "whmcs_itb",
"servers": [
34533
32645
17405
],
"customer_id": 38157,
"permissions": [ // СПИСОК API-ВЫЗОВОВ, ДОСТУПНЫХ ДЛЯ КОНКРЕТНОЙ РОЛИ
"api_keys/edit",
"api_keys/view",
"auth/2fa_check",
"auth/billing_list",
"auth/flip_tag",
"auth/sms_send",
"customers/update_acl",
"datacenter/list",
"datacenter/show",
"eq/add_ipmi_admin",
"eq/add_ipmi_user",
"eq/appraise",
"eq/boot_dev",
"eq/console",
"eq/create_pxe",
"eq/get_ipmi",
"eq/get_traffic",
"eq/list",
"eq/novnc",
"eq/off",
"eq/on",
"eq/order_instance",
"eq/reboot",
"eq/reinstall",
"eq/remove_ipmi_user",
"eq/sensors",
"eq/set_pin",
"eq/show",
"eq/status",
"eq/suspend",
"eq/unit_reset",
"eq/unsuspend",
"foreman/get_hostgroup",
"foreman/get_media",
"foreman/get_network",
"foreman/get_os",
"foreman/get_ptable",
"ip/get_ip",
"ip/get_ptr",
"ip/get_traffic",
"ip/list_free_ip",
"ip/set_main",
"ip/update_ptr",
"iso/list_iso",
"iso/mount_iso",
"iso/unmount_iso",
"jenkins/call",
"jenkins/get_tasks",
"license/list",
"location/list",
"location/show",
"locations/view",
"nat/add_static_nat",
"nat/remove_static_nat",
"net/block_ip",
"net/get_acl",
"net/get_bps_in",
"net/get_bps_out",
"net/get_port",
"net/get_pspeed",
"net/get_snmp",
"net/get_status",
"net/ip_chart",
"net/ip_settings",
"net/nmap",
"net/port_off",
"net/port_on",
"net/remove_ipv4",
"net/show_cacti",
"net/show_ip_graph",
"net/unblock_ip",
"os/list",
"os/search",
"paypal/check_order",
"paypal/check_subscription",
"paypal/create_order",
"paypal/create_subscription",
"pdns/add_dns",
"pdns/add_domain",
"pdns/add_subdomain",
"pdns/create_dns",
"pdns/create_zone",
"pdns/delete_domain",
"pdns/delete_zone",
"pdns/edit",
"pdns/get_domains",
"pdns/get_subdomains",
"pdns/get_zone",
"pdns/list_domains",
"pdns/list_servers",
"pdns/list_subdomains",
"pdns/view",
"pdns/view_zone",
"pdu/get",
"presets/list",
"presets/search",
"soft/list",
"ssh_keys/add",
"ssh_keys/delete",
"ssh_keys/list",
"stocks/list",
"stocks/show",
"sumsub/get_token",
"tag/add",
"tag/clear",
"tag/list",
"tag/remove",
"traffic_plans/list",
"vat/check_vat",
"vm/create_snapshot",
"vm/get_engine",
"vm/get_snapshot",
"vm/load_stats",
"vm/remove_snapshot",
"vm/restore_snapshot",
"whmcs/add_contact",
"whmcs/add_os_addon",
"whmcs/apply_credit",
"whmcs/cancel_order",
"whmcs/create_addfunds",
"whmcs/delete_cancellation_request",
"whmcs/delete_contact",
"whmcs/download_invoice",
"whmcs/generate_due_invoice",
"whmcs/getcredits",
"whmcs/getpaymentgw",
"whmcs/get_billing_data",
"whmcs/get_cancellation_requests",
"whmcs/get_client",
"whmcs/get_contacts",
"whmcs/get_invoice",
"whmcs/get_invoices",
"whmcs/get_related_invoices",
"whmcs/mass_pay",
"whmcs/request_cancellation",
"whmcs/transactions",
"whmcs/update_client",
"whmcs/update_contact",
"whmcs/update_product",
"whmcs/verify_address",
"whmcs/verify_email",
"yookassa/check_payment",
"yookassa/init"
],
"token_expire": 1702895140,
"new": 1
}
}
auth/whmcslogin¶
Позволяет получить сессионный токен через пару логин-пароль аккаунта
HTTP-метод - POST
Примечание
Авторизация через пару логин-пароль производится ко всему аккаунту и всем его серверам. Если авторизация прошла успешно, то система вернет сессионный токен $HOSTKEY_TOKEN
. Вы можете привязать сессионный токен к конкретному IP-адресу, тогда при заходе с другого IP вам придется получать его снова.
Внимание
Если у вас включена 2FA авторизация, то при этом вызове будет отправлен запрос на ваше 2FA устройство и вам нужно будет ввести код доступа.
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | whmcslogin | ключевое действие - получение сессионного токена |
user | * | string | логин биллинга | |
password | * | string | пароль биллинга | |
fix_ip | int | fix_ip=0 - не привязывать токен к адресу, fix_ip=1 - привязывать | ||
ttl | int | 10800 | продолжительность сессии в секундах, по умолчанию - 3600 (1 час) |
POST-запрос, cURL
Пример положительного ответа
{
"result": {
"token": c92e48c4506320873286b84440e74sfd", // СЕССИОННЫЙ ТОКЕН
"role": "Customer billing", // РОЛЬ
"role_type": "Customer", // ТИП РОЛИ
"whmcs_id": 3172, // ID_УЧЕТНОЙ_ЗАПИСИ В БИЛЛИНГЕ
"whmcs_location": "whmcs_itb", // ЗДЕСЬ УКАЗЫВАЕТСЯ КАКОЙ БИЛЛИНГ ИСПОЛЬЗУЕТСЯ
"whmcs_token": null,
"permissions": [ // СПИСОК API-ВЫЗОВОВ, ДОСТУПНЫХ ДЛЯ КОНКРЕТНОЙ РОЛИ
"api_keys/edit",
"api_keys/view",
"auth/2fa_check",
"auth/billing_list",
"auth/flip_tag",
"auth/sms_send",
"customers/update_acl",
"datacenter/list",
"datacenter/show",
"eq/add_ipmi_admin",
"eq/add_ipmi_user",
"eq/appraise",
"eq/boot_dev",
"eq/console",
"eq/create_pxe",
"eq/get_ipmi",
"eq/get_traffic",
"eq/list",
"eq/novnc",
"eq/off",
"eq/on",
"eq/order_instance",
"eq/reboot",
"eq/reinstall",
"eq/remove_ipmi_user",
"eq/sensors",
"eq/set_pin",
"eq/show",
"eq/status",
"eq/suspend",
"eq/unit_reset",
"eq/unsuspend",
"foreman/get_hostgroup",
"foreman/get_media",
"foreman/get_network",
"foreman/get_os",
"foreman/get_ptable",
"ip/get_ip",
"ip/get_ptr",
"ip/get_traffic",
"ip/list_free_ip",
"ip/set_main",
"ip/update_ptr",
"iso/list_iso",
"iso/mount_iso",
"iso/unmount_iso",
"jenkins/call",
"jenkins/get_tasks",
"license/list",
"location/list",
"location/show",
"locations/view",
"nat/add_static_nat",
"nat/remove_static_nat",
"net/block_ip",
"net/get_acl",
"net/get_bps_in",
"net/get_bps_out",
"net/get_port",
"net/get_pspeed",
"net/get_snmp",
"net/get_status",
"net/ip_chart",
"net/ip_settings",
"net/nmap",
"net/port_off",
"net/port_on",
"net/remove_ipv4",
"net/show_cacti",
"net/show_ip_graph",
"net/unblock_ip",
"os/list",
"os/search",
"paypal/check_order",
"paypal/check_subscription",
"paypal/create_order",
"paypal/create_subscription",
"pdns/add_dns",
"pdns/add_domain",
"pdns/add_subdomain",
"pdns/create_dns",
"pdns/create_zone",
"pdns/delete_domain",
"pdns/delete_zone",
"pdns/edit",
"pdns/get_domains",
"pdns/get_subdomains",
"pdns/get_zone",
"pdns/list_domains",
"pdns/list_servers",
"pdns/list_subdomains",
"pdns/view",
"pdns/view_zone",
"pdu/get",
"presets/list",
"presets/search",
"soft/list",
"ssh_keys/add",
"ssh_keys/delete",
"ssh_keys/list",
"stocks/list",
"stocks/show",
"sumsub/get_token",
"tag/add",
"tag/clear",
"tag/list",
"tag/remove",
"traffic_plans/list",
"vat/check_vat",
"vm/create_snapshot",
"vm/get_engine",
"vm/get_snapshot",
"vm/load_stats",
"vm/remove_snapshot",
"vm/restore_snapshot",
"whmcs/add_contact",
"whmcs/add_os_addon",
"whmcs/apply_credit",
"whmcs/cancel_order",
"whmcs/create_addfunds",
"whmcs/delete_cancellation_request",
"whmcs/delete_contact",
"whmcs/download_invoice",
"whmcs/generate_due_invoice",
"whmcs/getcredits",
"whmcs/getpaymentgw",
"whmcs/get_billing_data",
"whmcs/get_cancellation_requests",
"whmcs/get_client",
"whmcs/get_contacts",
"whmcs/get_invoice",
"whmcs/get_invoices",
"whmcs/get_related_invoices",
"whmcs/mass_pay",
"whmcs/request_cancellation",
"whmcs/transactions",
"whmcs/update_client",
"whmcs/update_contact",
"whmcs/update_product",
"whmcs/verify_address",
"whmcs/verify_email",
"yookassa/check_payment",
"yookassa/init"
],
"corporate": 0,
"verified": null,
"token_expire": 1703059226,
"new": 0,
"billing_options": {
"location": "RU",
"company": "ООО ИТБ",
"active": 1,
"allowed_payments": [
"yookassa"
],
"native_endpoint": "invapi.hostkey.ru"
}
},
"timings": [ // ???
{
"init": 2
},
{
"auth_log_start": 2
},
{
"auth_log_done": 3
},
{
"check_brute_done": 131
},
{
"auth_find_customer_done": 3
},
{
"check_whmcs_user at whmcs_itb": 469
},
{
"log_brute_done": 5
},
{
"usleep_done": 84
},
{
"auth_get_hash_done": 2
},
{
"hash_init_done": 5
},
{
"auth_set_token_done": 423
},
{
"auth_get_role_done": 1
},
{
"auth_list_permissions_done": 2
},
{
"auth_check_customer_init": 0
},
{
"auth_check_customer_done": 5
},
{
"auth_add_tags_done": 0
},
{
"auth_log_time": [
{
"add_log": 3
},
{
"amqp_sendmessage": 28
}
]
},
{
"whmcslogin total": 1166
}
]
}
Пример ответа при ошибке
auth/logout¶
Позволяет завершить клиентскую сессию.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | logout | ключевое действие - удаление сессионного токена из базы данных. После завершения сеанса следует выйти из системы. Это позволяет избежать возможных проблем с безопасностью |
token | * | string | токен для удаления |
POST-запрос, cURL
auth/info¶
Позволяет получить данные о пользователе (доступные API-запросы, тип и роль аккаунта и id-серверов привязанных к учетной записи)
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | info | ключевое действие - возвращает полные данные о токене, включая id сервера. Данные о серверах представляют собой список id серверов, которые связаны с платежной учетной записью. Эти данные можно использовать для управления оборудованием |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": {
"servers": { //ID-СЕРВЕРОВ, ПРИВЯЗАННЫХ К УЧЕТНОЙ ЗАПИСИ
"34533": "34533"
"32645": "32645"
"17405": "17405"
},
"show_products": 1,
"manage_products": 1,
"show_invoices": 1,
"manage_orders": 1,
"email": "[email protected]",
"token_expire": 1703059020,
"whmcs_id": "3172",
"whmcs_location": "whmcs_itb",
"billing_servers": [],
"deploy_keys": [],
"permissions": [ // СПИСОК API-ВЫЗОВОВ, ДОСТУПНЫХ ДЛЯ КОНКРЕТНОЙ РОЛИ
"api_keys/edit",
"api_keys/view",
"auth/2fa_check",
"auth/billing_list",
"auth/flip_tag",
"auth/sms_send",
"customers/update_acl",
"datacenter/list",
"datacenter/show",
"eq/add_ipmi_admin",
"eq/add_ipmi_user",
"eq/appraise",
"eq/boot_dev",
"eq/console",
"eq/create_pxe",
"eq/get_ipmi",
"eq/get_traffic",
"eq/list",
"eq/novnc",
"eq/off",
"eq/on",
"eq/order_instance",
"eq/reboot",
"eq/reinstall",
"eq/remove_ipmi_user",
"eq/sensors",
"eq/set_pin",
"eq/show",
"eq/status",
"eq/suspend",
"eq/unit_reset",
"eq/unsuspend",
"foreman/get_hostgroup",
"foreman/get_media",
"foreman/get_network",
"foreman/get_os",
"foreman/get_ptable",
"ip/get_ip",
"ip/get_ptr",
"ip/get_traffic",
"ip/list_free_ip",
"ip/set_main",
"ip/update_ptr",
"iso/list_iso",
"iso/mount_iso",
"iso/unmount_iso",
"jenkins/call",
"jenkins/get_tasks",
"license/list",
"location/list",
"location/show",
"locations/view",
"nat/add_static_nat",
"nat/remove_static_nat",
"net/block_ip",
"net/get_acl",
"net/get_bps_in",
"net/get_bps_out",
"net/get_port",
"net/get_pspeed",
"net/get_snmp",
"net/get_status",
"net/ip_chart",
"net/ip_settings",
"net/nmap",
"net/port_off",
"net/port_on",
"net/remove_ipv4",
"net/show_cacti",
"net/show_ip_graph",
"net/unblock_ip",
"os/list",
"os/search",
"paypal/check_order",
"paypal/check_subscription",
"paypal/create_order",
"paypal/create_subscription",
"pdns/add_dns",
"pdns/add_domain",
"pdns/add_subdomain",
"pdns/create_dns",
"pdns/create_zone",
"pdns/delete_domain",
"pdns/delete_zone",
"pdns/edit",
"pdns/get_domains",
"pdns/get_subdomains",
"pdns/get_zone",
"pdns/list_domains",
"pdns/list_servers",
"pdns/list_subdomains",
"pdns/view",
"pdns/view_zone",
"pdu/get",
"presets/list",
"presets/search",
"soft/list",
"ssh_keys/add",
"ssh_keys/delete",
"ssh_keys/list",
"stocks/list",
"stocks/show",
"sumsub/get_token",
"tag/add",
"tag/clear",
"tag/list",
"tag/remove",
"traffic_plans/list",
"vat/check_vat",
"vm/create_snapshot",
"vm/get_engine",
"vm/get_snapshot",
"vm/load_stats",
"vm/remove_snapshot",
"vm/restore_snapshot",
"whmcs/add_contact",
"whmcs/add_os_addon",
"whmcs/apply_credit",
"whmcs/cancel_order",
"whmcs/create_addfunds",
"whmcs/delete_cancellation_request",
"whmcs/delete_contact",
"whmcs/download_invoice",
"whmcs/generate_due_invoice",
"whmcs/getcredits",
"whmcs/getpaymentgw",
"whmcs/get_billing_data",
"whmcs/get_cancellation_requests",
"whmcs/get_client",
"whmcs/get_contacts",
"whmcs/get_invoice",
"whmcs/get_invoices",
"whmcs/get_related_invoices",
"whmcs/mass_pay",
"whmcs/request_cancellation",
"whmcs/transactions",
"whmcs/update_client",
"whmcs/update_contact",
"whmcs/update_product",
"whmcs/verify_address",
"whmcs/verify_email",
"yookassa/check_payment",
"yookassa/init"
],
"role_type": "Customer",
"role_name": "Customer billing",
"verified": null,
"sumsub_id": null,
"sumsub_comment": null,
"corporate": 0,
"tags": [
{
"id": 582523,
"component": "customers",
"component_id": 38157,
"tag": "email_verification",
"value": "verified",
"extra": "1699523441",
"internal": 0
}
],
"billing_options": {
"url": "https://billing-itb.hostkey.ru/",
"location": "RU",
"company": "ООО ИТБ",
"active": 1,
"allowed_payments": [
"yookassa"
],
"native_endpoint": "invapi.hostkey.ru"
},
"client_ip": "185.130.215.70",
"timing": [
{
"auth_validate_token": 0
},
{
"auth_tags": 0
},
{
"auth_get_role": 0
},
{
"whmcs_get_server_raw": 0
},
{
"eq_search": 0
},
{
"add new tags": 0
},
{
"list_permissions": 0
},
{
"private_block": 0
},
{
"auth_log": 0
}
]
}
}
PIN-коды¶
Мы стремимся обеспечить безопасность серверов наших клиентов даже в случае утечки данных. Подобная ситуация может произойти на устройстве каждого пользователя. Поэтому мы рекомендуем дополнительно задать PIN-код, который система будет запрашивать для каждой важной операции сервера. По умолчанию PIN-код не установлен.
Хеши PIN-кодов хранятся отдельно от наших баз данных счетов и технического учета.
Примечание
- PIN-код — это короткий пароль для обеспечения безопасности оборудования. Его следует запомнить, а не хранить на каком-либо электронном носителе. Мы можем сбросить его только после письменного обращения в службу поддержки и после дополнительной проверки безопасности.
- Большинство функций управления не будут работать без ввода PIN-кода или с пустым PIN-кодом. Он должен быть установлен один раз.
eq/set_pin¶
Позволяет установить/изменить PIN клиента.
HTTP-метод - POST/GET
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | set_pin | ключевое действие - Установка/изменение PIN-кода |
token | * | string | сессионный токен | |
old_pin | если изменяется | int | старый PIN-код | |
new_pin | * | int | новый PIN-код |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
Для этого действия есть соответствующий асинхронный ответ
Примечание
Проверить корректность смены PIN-кода можно через вызов eq/check_pin
.
eq/check_pin¶
Позволяет подтвердить корректность введенного PIN клиента.
HTTP-метод - POST/GET
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | check_pin | ключевое действие - подтверждение введенного PIN-кода |
token | * | string | сессионный токен | |
old_pin | если изменяется | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
Для этого действия есть соответствующий асинхронный ответ
Внимание
После нескольких сбоев API будет возвращать только отрицательные ответы с большими задержками, чтобы избежать брутфорса.
Взаимодействие с биллингом¶
HOSTKEY использует WHMCS в качестве программного обеспечения для выставления счетов.
Ресурс | Действие | Описание |
---|---|---|
whmcs.php | get_client | получение информации о клиенте |
whmcs.php | update_client | изменить данные по учетной записи клиента |
whmcs.php | reset_password | сбросить пароль |
whmcs.php | get_contacts | получить список дополнительных контактов для учетной записи клиента |
whmcs.php | add_contact | добавить дополнительный контакт для учетной записи |
whmcs.php | update_contact | изменить данные по дополнительному контакту |
whmcs.php | delete_contact | удалить дополнительный контакт |
whmcs.php | getpaymentgw | получение информации о том, как оплатить счет |
whmcs.php | get_billing_data | получение информации об оплате аренды сервера или иного продукта |
whmcs.php | getcredits | получить информацию по движению средств на лицевом счете учетной записи, все начисления и списания кредитов |
whmcs.php | generate_due_invoice | создать следующий счет на оплату для сервера |
whmcs.php | transactions | получить список транзакций по учетной записи клиента |
whmcs.php | mass_pay | создать групповой счет на оплату из нескольких счетов |
whmcs.php | download_invoice | загрузить счет в формате pdf |
whmcs.php | get_related_invoices | получить список счетов для конкретного сервера |
whmcs.php | apply_credit | оплатить счет с кредитного баланса, полностью или частично |
whmcs.php | create_addfunds | создать счет на пополнение кредитного баланса |
whmcs.php | get_invoice | получить данные по счету на оплату |
whmcs.php | get_invoices | получить общий список счетов на оплату |
whmcs.php | request_cancellation | запросить отмену услуги |
whmcs.php | delete_cancellation_request | отменить запрос на расформирование сервиса |
whmcs.php | get_cancellation_requests | получить активный список запросов на расформирование сервисов |
whmcs/get_client¶
Позволяет получить необходимые данные о клиенте из биллинга.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_client | ключевое действие - получение информации о клиенте |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "success",
"client": {
"userid": 3172,
"id": 3172, //ID КЛИЕНТА
"uuid": "b6d0bd75-1bd1-4ffc-9ec5-3870668b1ea9",
"firstname": "Иван", // ИМЯ КЛИЕНТА
"lastname": "Хосткеев", // ФАМИЛИЯ КЛИЕНТА
"fullname": "Иван Хосткеев", // ПОЛНЫЕ ИМЯ-ФАМИЛИЯ
"companyname": "",
"email": "[email protected]", // E-MAIL КЛИЕНТА
"address1": "Советская 3-56", // АДРЕС КЛИЕНТА
"address2": "",
"city": "Москва", //ГОРОД
"fullstate": "",
"state": "", // РЕГИОН
"postcode": "105187", // ИНДЕКС
"countrycode": "RU", // КОД СТРАНЫ
"country": "RU", // СТРАНА
"phonenumber": "79658742356", // ТЕЛЕФОННЫЙ НОМЕР
"tax_id": "",
"password": "",
"email_preferences": {
"general": 1,
"invoice": 1,
"support": 1,
"product": 1,
"domain": 1,
"affiliate": 1
},
"statecode": "",
"countryname": "Russian Federation", // НАЗВАНИЕ СТРАНЫ
"phonecc": 7, // ТЕЛЕФОННЫЙ КОД СТРАНЫ
"phonenumberformatted": "+7.79658742356",
"telephoneNumber": "79658742356", // ТЕЛЕФОННЫЙ НОМЕР
"billingcid": 0,
"twofaenabled": false,
"currency": 2,
"defaultgateway": "",
"groupid": 2,
"status": "Active",
"credit": "99526.39",
"taxexempt": false,
"latefeeoveride": false,
"overideduenotices": false,
"separateinvoices": false,
"disableautocc": false,
"emailoptout": false,
"marketing_emails_opt_in": true,
"overrideautoclose": false,
"allowSingleSignOn": 1,
"email_verified": false,
"language": "",
"isOptedInToMarketingEmails": true,
"lastlogin": "Date: 09/11/2023 12:27<br>IP Address: 10.70.16.23<br>Host: 10.70.16.23", // ДАТА, IP-АДРЕС И IP-ХОСТА
"currency_code": "RUB", //КОД ВАЛЮТЫ
"co_autopayment": {
"name": "Автоплатежи включены",
"type": "checkbox",
"required": false,
"value": ""
},
"co_payfirstday": {
"name": "Услуги на 1 число",
"type": "checkbox",
"required": false,
"value": ""
},
"co_marktemails": {
"name": "Маркетинговые письма",
"type": "checkbox",
"required": false,
"value": "on"
},
"co_subscription": {
"name": "Автоплатежи через Юkassa",
"type": "text",
"size": 40,
"required": false,
"value": ""
},
"co_marktsms": {
"name": "Маркетинговые SMS",
"type": "checkbox",
"required": false,
"value": "on"
},
"co_smsnum": {
"name": "SMS номер для 2FA и уведомлений",
"type": "text",
"size": 26,
"required": false,
"placeholder": "+79031234567",
"value": "79658742356"
},
"co_customertype": {
"name": "Тип клиента",
"type": "select",
"options": [
"Физическое лицо",
"Юридическое лицо"
],
"required": true,
"value": "Физическое лицо"
},
"co_inn": {
"name": "ИНН",
"type": "text",
"size": 26,
"required": false,
"value": ""
},
"co_kpp": {
"name": "КПП",
"type": "text",
"size": 26,
"required": false,
"value": ""
},
"co_regaddress": {
"name": "Юридический адрес",
"type": "text",
"size": 100,
"required": false,
"value": ""
},
"co_bankdata": {
"name": "Банковские реквизиты",
"type": "text",
"size": 100,
"required": false,
"value": ""
},
"co_edo": {
"name": "ЭДО подключен",
"type": "select",
"options": [
"Да",
"Нет"
],
"required": true,
"value": "Нет"
},
"co_secret": {
"name": "Секретное слово",
"type": "text",
"size": 26,
"required": true,
"value": "орбита"
},
"co_skype": {
"name": "Skype/Telegram",
"type": "text",
"size": 26,
"required": false,
"value": ""
},
"co_edoprovider": {
"name": "Провайдер ЭДО",
"type": "text",
"size": 26,
"required": false,
"value": ""
}
},
"billing_location": "whmcs_itb",
"groupdata": {
"id": 2,
"groupname": "Customers",
"groupcolour": "#ffffff",
"discountpercent": "0.00",
"susptermexempt": "",
"separateinvoices": ""
},
"internal": {
"id": 38157,
"billing": "whmcs_itb",
"account_id": 3172,
"email": "[email protected]",
"active_since": "2023-11-09",
"monthly": null,
"verified": null,
"corporate": 0,
"tags": [
{
"id": 582523,
"component": "customers",
"component_id": 38157,
"tag": "email_verification",
"value": "verified",
"extra": "1699523441",
"internal": 0
}
]
}
}
whmcs/update_client¶
Позволяет изменить данные учетной записи клиента.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | update_client | ключевое действие - изменение данных учетной записи клиента |
token | * | string | сессионный токен | |
billing_status | string | Статус биллинга | ||
billing_firstname | string | Имя клиента | ||
billing_lastname | string | Фамилия клиента | ||
billing_companyname | string | Название компании | ||
billing_email | string | Электронная почта клиента | ||
billing_address1 | string | Строка адреса клиента 1 | ||
billing_address2 | string | Строка адреса клиента 2 | ||
billing_city | string | Город адреcа клиента | ||
billing_state | string | Регион адреса клиента | ||
billing_postcode | string | Индекс адреса клиента | ||
billing_country | string | Страна адреса клиента | ||
billing_phonenumber | string | Номер телефона клиента | ||
billing_twofaenabled | string | Включение двухфакторной авторизации (true/false) | ||
billing_currency | int | Валюта рассчетов 1 - EUR , 2 - RUB , 3 - USD | ||
billing_groupid | int | (1/0) | ||
billing_taxexempt | string | (true/false) | ||
billing_latefeeoveride | string | (true/false) | ||
billing_overideduenotices | string | (true/false) | ||
billing_separateinvoices | string | (true/false) | ||
billing_disableautocc | string | (true/false) | ||
billing_emailoptout | string | (true/false) | ||
billing_marketingoptin | string | Подписка на маркетинговые рассылки (true/false) | ||
billing_overrideautoclose | string | (true/false) | ||
billing_allowSingleSignOn | int | (1/0) | ||
co_autopayment | checkbox | Включение автоплатежей (on/off) | ||
co_payfirstday | checkbox | Оплата в первый день месяца (on/off) | ||
co_marktemails | checkbox | Маркетинговые письма (on/off) | ||
co_subscription | string | Автоплатежи через сервис. Для РФ Youcassa | ||
co_marktsms | checkbox | Разрешение маркетинговых рассылок (on/off) | ||
co_smsnum | string | Номер для отправки СМС-уведомлений или кода для 2FA аутентификации | ||
co_customertype | string | Тип клиента: Физическое лицо/Юридическое лицо | ||
co_inn | string | ИНН клиента | ||
co_kpp | string | КПП клиента | ||
co_regaddress | string | Юридический адрес клиента | ||
co_bankdata | string | Банковские реквизиты клиента | ||
co_edo | select | Подключен ли ЭДО (да/нет) | ||
co_secret | string | Секретное слово | ||
co_edoprovider | string | Провайдер ЭДО | ||
co_skype | string | адрес Skype/Telegram |
POST-запрос, cURL
whmcs/reset_password¶
Позволяет сбросить пароль доступа к аккаунту клиента.
Внимание
Параметр email
должен совпадать с e-mail клиента в аккаунте сбрасываемого пароля.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | reset_password | ключевое действие - сброс пароля аккаунта клиента |
token | * | string | сессионный токен | |
* | string | на указанный email будет отправлена ссылка на сброс пароля |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
whmcs/get_contacts¶
Позволяет получить список дополнительных контактов для учетной записи клиента.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_contacts | ключевое действие - получить список дополнительных контактов для учетной записи |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "success",
"contacts": [
{
"id": 121, // ID ДОПОЛНИТЕЛЬНОГО КОНТАКТА
"userid": 3172,
"firstname": "Дмитрий",
"lastname": "Серверный",
"companyname": "",
"email": "[email protected]",
"address1": "",
"address2": "",
"city": "",
"state": "",
"postcode": "",
"country": "RU",
"phonenumber": "",
"tax_id": "",
"subaccount": 1,
"password": "$2y$10$pSlFQ1Vvq0UcKD5eE9dZ2.J5s779skGChaD0fPJB7ooURi1/KnDJm",
"permissions": "",
"domainemails": 0,
"generalemails": 0,
"invoiceemails": 0,
"productemails": 0,
"supportemails": 0,
"affiliateemails": 0,
"pwresetkey": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2023-12-22 11:31:45",
"pwresetexpiry": "0000-00-00 00:00:00"
}
]
}
whmcs/add_contact¶
Позволяет добавить дополнительный контакт для учетной записи.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | add_contact | ключевое действие - добавить дополнительный контакт для учетной записи |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
Внимание
Новый дополнительный контакт будет создан со случайной 'электронной почтой. Ее обязательно надо поменять через интерфейс INVAPI.
whmcs/update_contact¶
Позволяет изменить данные для дополнительного контакта.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | update_contact | ключевое действие - изменить данные по дополнительному контакту |
contact_id | * | int | id дополнительного контакта | |
* | string | e-mail дополнительного контакта для учетной записи | ||
password2 | string | новый пароль дополнительного контакта | ||
phonenumber | int | номер телефона дополнительного контакта. Добавление номера включает 2FA через СМС. | ||
token | * | string | сессионный токен |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/whmcs.php" -X POST \
--data "action=update_contact" \
--data "contact_id=121" \
--data "token=29cfb2b6fb8f1bc838455fe36e032aaa" \
--data "[email protected]" \
--data "phonenumber=+79656754663" \
--data "password2=4321" \
whmcs/delete_contact¶
Позволяет удалить дополнительный контакт для учетной записи.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | delete_contact | ключевое действие - удаление дополнительного контакт для учетной записи |
contact_id | * | int | id дополнительного контакта | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример ответа при ошибке
whmcs/getpaymentgw¶
Позволяет получить информацию о способах оплаты счета.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | getpaymentgw | ключевое действие - получить информацию о способах оплаты счета |
invoice_id | * | int | ID инвойса | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"methods": {
"banktransfer": {
"name": "Банковский перевод",
"call": "<span style='text-align:left'>Please wire funds in favor of: <p>ООО «АЙТИБ» <br />\r\nр/с: 40702810100000239343<br />\r\nБанк: АО "РАЙФФАЙЗЕНБАНК<br />\r\nк/с: 30101810200000000700<br />\r\nБИК: 044525700<br />Номер счета: 18580</p>"
},
"yookassa": {
"name": "Yoomoney",
"call": "\r\n\n <form target=_blank action=\"https://invapi.hostkey.ru/yookassa_send.php\" method=\"POST\">\r\n\n <input type=\"hidden\" name=\"shopId\" value=\"\">\r\n\n <input type=\"hidden\" name=\"scid\" value=\"\">\r\n\n <input type=\"hidden\" name=\"customerNumber\" value=\"[email protected]\">\r\n\n <input type=\"hidden\" name=\"sum\" value=\"0.00\">\r\n\n <input type=\"hidden\" name=\"orderNumber\" value=\"18580\">\r\n\r\n\n <input type=\"hidden\" name=\"url\" value=\"https://yoomoney.ru\">\r\n\n <input type=\"submit\" value=\"Оплатить\"> \r\n\n </form>"
}
}
}
whmcs/get_billing_data¶
Позволяет получить информацию об оплате аренды сервера или других продуктов.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_billing_data | ключевое действие - получение информации об оплате аренды сервера или иного продукта |
id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"IP": "ru-vmmini", // имя хоста/IP из биллинга
"client_id": 3172, // ID клиента в WHMCS
"order_id": 5448, // ID заказа в WHMCS
"suspend_reason": "", // Здесь будет указана причина, по которой приостановлена работа сервера (если произошла такая ситуация)
"billing_setupfee": "500.00", // Сумма первоначального платежа
"product_id": 5724, // ID продукта WHMCS
"whmcs_location": "whmcs_itb", // платежная идентификация. itb - RU или COM для остальных
"billing_status": "Active", // Статус биллинга сервера
"reg_date": "2023-12-14", // Дата начала обслуживания
"billing_cycle": "Monthly", // Платежный цикл
"next_due_date": "2024-01-14", // Срок следующего платежа
"billing_reccuring": "500.00", // Размер регулярного платежа
"billing_name": "Услуги по предоставлению вычислительных мощностей (Instant server RU)",
"billing_dedicatedip": "31.207.44.105",
"billing_domain": "ru-vmmini",
"promoid": 0,
"terminationdate": null,
"subscriptionid": "",
"overideautosuspend": 0,
"overidesuspenduntil": "0000-00-00",
"currencyprefix": "", //Символ валюты
"currencysuffix": "RUB", // Название валюты
"is_company": 0,
"tax_id": "",
"groupdata": {
"id": 2,
"groupname": "Customers",
"groupcolour": "#ffffff",
"discountpercent": "0.00",
"susptermexempt": "",
"separateinvoices": ""
},
"days_left": 23,
"customer_name": "Иван Хосткеев", // Имя клиента
"customer_email": "[email protected]", // Электронная почта клиента
"result": "OK"
}
whmcs/getcredits¶
Позволяет получить информацию по движению средств на лицевом счете учетной записи, все начисления и списания кредитов.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | getcredit | ключевое действие - получить информацию по движению средств на лицевом счете учетной записи, все начисления и списания кредитов |
id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"message": {
"result": "success",
"totalresults": 5,
"clientid": 3172,
"credits": {
"credit": [
{
"id": 2526,
"date": "2023-11-09",
"description": "Credit Applied to Invoice #10116",
"amount": "-250.00",
"relid": 0
},
{
"id": 3905,
"date": "2023-12-06",
"description": "Мы вернули 26.39 RUB (исходя из оставшихся 76 часов по ставке 0.3472/час) на лицевой счет за сервер 22777. Сервер использовался 644 из 720 часов в оплаченном платежном периоде.",
"amount": "26.39",
"relid": 0
},
{
"id": 4657,
"date": "2023-12-14",
"description": "Credit Applied to Invoice #18580",
"amount": "-500.00",
"relid": 0
}
]
}
}
}
whmcs/generate_due_invoice¶
Позволяет создать следующий счет на оплату для сервера
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | generate_due_invoice | ключевое действие - создать следующий счет на оплату для сервера |
id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример ответа при ошибке
whmcs/transactions¶
Позволяет получить список транзакций по учетной записи клиента.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | transactions | ключевое действие - получить список транзакций по учетной записи клиента. |
invoice_id | int | номер счета, по которому нужны транзакции | ||
transaction_id | int | ID транзакции для получения информации | ||
token | * | string | сессионный токен |
POST-запрос, cURL
whmcs/mass_pay¶
Позволяет создать групповой счет на оплату из нескольких счетов.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | mass_pay | ключевое действие - создать групповой счет на оплату из нескольких счетов. |
invoices[] | * | array | массив из номеров счетов | |
token | * | string | сессионный токен |
POST-запрос, cURL
whmcs/download_invoice¶
Позволяет выгрузить счет в формате pdf.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | download_invoice | ключевое действие - выгрузить счет в формате pdf |
invoice_id | * | int | номер счета для выгрузки | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
Счет ID инвойса
в PDF
whmcs/get_related_invoices¶
Позволяет получить список счетов для конкертного сервера.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_related_invoices | ключевое действие - загрузить счет в формате pdf |
id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "success",
"invoices": [
{
"id": 23451,
"userid": 3172,
"invoicenum": "",
"date": "2023-12-25",
"duedate": "2024-01-14",
"datepaid": "0000-00-00 00:00:00",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "500.00",
"credit": "0.00",
"tax": "0.00",
"tax2": "0.00",
"total": "500.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Unpaid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-25 11:20:31",
"updated_at": "2023-12-25 11:20:31"
},
{
"id": 18580,
"userid": 3172,
"invoicenum": "",
"date": "2023-12-14",
"duedate": "2023-12-29",
"datepaid": "2023-12-14 05:54:52",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "500.00",
"credit": "500.00",
"tax": "0.00",
"tax2": "0.00",
"total": "0.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Paid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-14 05:54:31",
"updated_at": "2023-12-14 05:54:52"
}
]
}
Пример ответа при ошибке
whmcs/apply_credit¶
Позволяет оплатить счет с кредитного баланса, полностью или частично.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | apply_credit | ключевое действие - оплатить счет с кредитного баланса |
invoice_id | * | int | номер счета для оплаты | |
amount | * | int | сумма пополнения | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
whmcs/create_addfunds¶
Позволяет создать счет для пополнения баланса на определенную сумму.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | create_addfundst | ключевое действие - создание счета для пополнения баланса |
amount | * | int | сумма пополнения | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
whmcs/get_invoice¶
Позволяет получить данные по счету на оплату.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_invoice | ключевое действие - получить данные по счету на оплату |
invoice_id | * | int | номер счета для оплаты | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "success",
"invoiceid": 23455,
"invoicenum": "",
"userid": 3172,
"date": "2023-12-25",
"duedate": "2023-12-25",
"datepaid": "0000-00-00 00:00:00",
"lastcaptureattempt": "0000-00-00 00:00:00",
"subtotal": "800.00",
"credit": "0.00",
"tax": "0.00",
"tax2": "0.00",
"total": "800.00",
"balance": "800.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Unpaid",
"paymentmethod": "yookassa",
"notes": "",
"ccgateway": false,
"items": {
"item": [
{
"id": 25727,
"type": "Invoice",
"relid": 23449,
"description": "Invoice #23449",
"amount": "300.00",
"taxed": 0,
"inv_id": -1
},
{
"id": 25731,
"type": "Invoice",
"relid": 23451,
"description": "Invoice #23451",
"amount": "500.00",
"taxed": 0,
"inv_id": -1
}
]
},
"transactions": ""
}
Пример ответа при ошибке
whmcs/get_invoices¶
Позволяет получить общий список счетов на оплату.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_invoices | ключевое действие - получение общего списка счетов на оплату |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "success",
"totalresults": 6,
"numreturned": 5,
"invoices": {
"invoice": [
{
"id": 23455,
"userid": 3172,
"firstname": "Иван",
"lastname": "Хосткеев",
"companyname": "",
"invoicenum": "",
"date": "2023-12-25",
"duedate": "2023-12-25",
"datepaid": "0000-00-00 00:00:00",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "800.00",
"credit": "0.00",
"tax": "0.00",
"tax2": "0.00",
"total": "800.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Unpaid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-25 12:01:27",
"updated_at": "2023-12-25 12:01:27",
"currencycode": "RUB",
"currencyprefix": "",
"currencysuffix": "RUB"
},
{
"id": 23451,
"userid": 3172,
"firstname": "Иван",
"lastname": "Хосткеев",
"companyname": "",
"invoicenum": "",
"date": "2023-12-25",
"duedate": "2024-01-14",
"datepaid": "0000-00-00 00:00:00",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "500.00",
"credit": "0.00",
"tax": "0.00",
"tax2": "0.00",
"total": "500.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Unpaid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-25 11:20:31",
"updated_at": "2023-12-25 11:20:31",
"currencycode": "RUB",
"currencyprefix": "",
"currencysuffix": "RUB"
},
{
"id": 23449,
"userid": 3172,
"firstname": "Иван",
"lastname": "Хосткеев",
"companyname": "",
"invoicenum": "",
"date": "2023-12-25",
"duedate": "2024-01-09",
"datepaid": "2023-12-25 13:08:58",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "300.00",
"credit": "300.00",
"tax": "0.00",
"tax2": "0.00",
"total": "0.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Paid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-25 11:15:14",
"updated_at": "2023-12-25 13:08:58",
"currencycode": "RUB",
"currencyprefix": "",
"currencysuffix": "RUB"
},
{
"id": 18580,
"userid": 3172,
"firstname": "Иван",
"lastname": "Хосткеев",
"companyname": "",
"invoicenum": "",
"date": "2023-12-14",
"duedate": "2023-12-29",
"datepaid": "2023-12-14 05:54:52",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "500.00",
"credit": "500.00",
"tax": "0.00",
"tax2": "0.00",
"total": "0.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Paid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-12-14 05:54:31",
"updated_at": "2023-12-14 05:54:52",
"currencycode": "RUB",
"currencyprefix": "",
"currencysuffix": "RUB"
},
{
"id": 10116,
"userid": 3172,
"firstname": "Иван",
"lastname": "Хосткеев",
"companyname": "",
"invoicenum": "",
"date": "2023-11-09",
"duedate": "2023-11-24",
"datepaid": "2023-11-09 13:13:37",
"last_capture_attempt": "0000-00-00 00:00:00",
"date_refunded": "0000-00-00 00:00:00",
"date_cancelled": "0000-00-00 00:00:00",
"subtotal": "250.00",
"credit": "250.00",
"tax": "0.00",
"tax2": "0.00",
"total": "0.00",
"taxrate": "0.00",
"taxrate2": "0.00",
"status": "Paid",
"paymentmethod": "yookassa",
"paymethodid": null,
"notes": "",
"created_at": "2023-11-09 12:48:29",
"updated_at": "2023-11-09 13:13:37",
"currencycode": "RUB",
"currencyprefix": "",
"currencysuffix": "RUB"
}
]
}
}
whmcs/request_cancellation¶
Позволяет запросить отмену услуги. //не работает
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | request_cancellation | ключевое действие - запросить отмену услуги |
id | * | int | ID сервера | |
cancellation_type | * | int | 1 - немедленная отмера с частичным возвратом средств (если это возможно), 0 - отмена в конце текущего биллингового периода | |
terminate_reason_custom | string | причина отмены | ||
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
whmcs/delete_cancellation_request¶
Позволяет отменить запрос на расформирование сервиса.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | delete_cancellation_request | ключевое действие - отменить запрос на расформирование сервиса |
id | * | int | ID сервера | |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
whmcs/get_cancellation_requests¶
Позволяет получить активный список запросов на расформование сервисов.
HTTP Method - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание параметра |
---|---|---|---|---|
action | * | string | get_cancellation_requests | ключевое действие - получить активный список запросов на расформование сервисов |
id | int | ID сервера | ||
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
Пример ответа при ошибке
Моментальные серверы¶
К моментальным серверам относятся стандартные конфигурации (инстансы): вычислительные (ВМ), физические серверы, физические серверы с графическими процессорами и vGPU серверы (ВМ с графическим процессором PCIe-passthrough). Эти конфигурации собраны заранее и разворачиваются автоматически в течение 10-20 минут.
Заказать моментальные серверы возможно через API. Все платежи за моментальные серверы идут со счета биллинга. Для размещения заказа на счету клиента должна быть необходимая сумма.
Ресурс | Действие | Описание |
---|---|---|
presets.php | list | вызов списка доступных инстансов для определенного региона |
os.php | list | получение списка ОС для инстанса |
traffic_plans.php | list | получение тарифного плана трафика для инстанса |
eq.php | order_instance | Создание заказа на развертывание моментального сервера. Заказ будет выполнен после оплаты счета или за счет средств кредитного баланса |
В названии инстансов могут использоваться следующие сокращения:
- BM - физические серверы;
- VM - виртуальные инстансы (VM);
- Compute - виртуальные серверы общего назначения на базе KVM (VPS);
- Gpu - GPU серверы;
- Vgpu - vGPU серверы.
presets/list¶
Позволяте получить актуальный список доступных инстансов с указанием стоимости аренды. Сессионный токен не требуется.
Информация
В настоящее время доступны инстансы в России (RU), Нидерландах (ND), США (US), Финляндии (FI), Германии (DE), Исландии (IS) и Турции (TR).
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие — вызов списка доступных инстансов для определенного региона |
location | * | string | местоположение инстанса - RU/NL/US/FI/DE/IS/TR (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция) |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"presets": [
{
"id": 108, // ID инстанса
"name": "vm.pico", // имя пресета инстанса
"active": 1, // количество активных инстансов
"monthly_ru": 300, // цена в рублях с учетом регионального НДС
"monthly_com": 3, // цена в евро с учетом регионального НДС. Для клиентов из ЕС без ID плательщика НДС, должен быть добавлен соответствующий местный НДС
"description": "VM instance 1/1/15 SSD", // описание
"cpu": 1, // количество ядер CPU
"ram": 1, // объем RAM в Гб
"hdd": "15", // объем жесткого диска в Гб
"gpu": "", // указывается GPU, если установлен
"locations": "RU,NL,US,FI,DE,IS,TR", // перечень локаций, в которых доступен инстанс.
"virtual": 1, // указание на то, что инстанс является виртуальным (VM)
"price": { // Цена в зависимости от локации
"NL": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"RU": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"US": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"FI": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"DE": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"IS": {
"USD": -1,
"EUR": 3,
"RUR": 300
},
"TR": {
"USD": -1,
"EUR": 3,
"RUR": 300
}
},
"available": 184, // количество инстансов, доступных для моментального заказа
"server_type": "Virtual Private Server",
"tags": [ //набор тегов для указания правильного пользовательского интерфейса
{
"id": 312305, // ID сервера
"component": "presets",
"component_id": 108,
"tag": "stock",
"value": "10",
"extra": "",
"internal": 0
},
{
"id": 312306,
"component": "presets",
"component_id": 108,
"tag": "web_group",
"value": "General",
"extra": "vm",
"internal": 0
},
{
"id": 312307,
"component": "presets",
"component_id": 108,
"tag": "pid_fi",
"value": "3216",
"extra": "",
"internal": 0
},
{
"id": 346027,
"component": "presets",
"component_id": 108,
"tag": "web_hdd",
"value": "SSD",
"extra": "",
"internal": 0
},
{
"id": 346292,
"component": "presets",
"component_id": 108,
"tag": "web_storage",
"value": "true",
"extra": "15GB SSD",
"internal": 0
},
{
"id": 438294,
"component": "presets",
"component_id": 108,
"tag": "pid_de",
"value": "3219",
"extra": "",
"internal": 0
},
{
"id": 481712,
"component": "presets",
"component_id": 108,
"tag": "web_geekbench_score_max",
"value": "11121",
"extra": "",
"internal": 0
},
{
"id": 559071,
"component": "presets",
"component_id": 108,
"tag": "pre_order",
"value": "true",
"extra": "TR",
"internal": 0
},
{
"id": 736612,
"component": "presets",
"component_id": 108,
"tag": "no_increase",
"value": "",
"extra": "",
"internal": 0
},
{
"id": 312308,
"component": "presets",
"component_id": 108,
"tag": "vm",
"value": "true",
"extra": "",
"internal": 1
},
{
"id": 312309,
"component": "presets",
"component_id": 108,
"tag": "compute",
"value": "1",
"extra": "",
"internal": 1
},
{
"id": 312311,
"component": "presets",
"component_id": 108,
"tag": "web_ghz",
"value": "2.6",
"extra": "",
"internal": 1
},
{
"id": 312312,
"component": "presets",
"component_id": 108,
"tag": "web_addinfo",
"value": "true",
"extra": "param1=Delivery ETA: from 2-5 minutes param2=Upgrade: No",
"internal": 1
},
{
"id": 312314,
"component": "presets",
"component_id": 108,
"tag": "pid_ru",
"value": "3202",
"extra": "",
"internal": 1
},
{
"id": 312315,
"component": "presets",
"component_id": 108,
"tag": "pid_nl",
"value": "3201",
"extra": "",
"internal": 1
},
{
"id": 312316,
"component": "presets",
"component_id": 108,
"tag": "pid_us",
"value": "3203",
"extra": "",
"internal": 1
},
{
"id": 312317,
"component": "presets",
"component_id": 108,
"tag": "fixed_price",
"value": "RUR",
"extra": "",
"internal": 1
},
{
"id": 458740,
"component": "presets",
"component_id": 108,
"tag": "web_geekbench_score",
"value": "492",
"extra": "Performance",
"internal": 1
},
{
"id": 567279,
"component": "presets",
"component_id": 108,
"tag": "web_label",
"value": "true",
"extra": "[{ "name": "SSD + Xeon E5-26xx","color": "#E23329","number": 2}]",
"internal": 1
},
{
"id": 580969,
"component": "presets",
"component_id": 108,
"tag": "pid_is",
"value": "3221",
"extra": "",
"internal": 1
},
{
"id": 581092,
"component": "presets",
"component_id": 108,
"tag": "pid_tr",
"value": "3223",
"extra": "",
"internal": 1
}
]
} ... , {
"id": 15,
"name": "bm.v1-mini",
"active": 1,
"monthly_ru": 3600,
"monthly_com": 35,
"description": "BM i3\/8\/240", // физические сервера с двухъядерным процессором i3
"cpu": 2,
"ram": 8,
"hdd": 240,
"gpu": "",
"locations": "RU,NL",
"virtual": 0,
"tags": [
{
"id": 7130,
"tag": "bm", // это физический сервер
"value": "true",
"extra": "",
"internal": 1
}],
"available": 3
}, ... , {
"id": 8,
"name": "vgpu.v1-mini",
"active": 1,
"monthly_ru": 8800,
"monthly_com": 157,
"description": "vGPU 4\/16\/240 + 1080",
"cpu": 4,
"ram": 16,
"hdd": 240,
"gpu": "1xGTX1080", // этот сервер оснащен графическим процессором GTX 1080
"locations": "RU,NL",
"virtual": 1,
"tags": [
{
"id": 7118,
"tag": "gpu", // это GPU сервер**
"value": "1",
"extra": "",
"internal": 1
},
{
"id": 11428,
"tag": "vgpu", // это vGPU сервер**
"value": "true",
"extra": "",
"internal": 1
}
],
"available": 1
} ... ]
}
Примечание
Сведения об ОС и список постустановочных задач необходимы для оформления заказа.
os/list¶
Возвращает список подходящих операционных систем для конкретного инстанса. Все цены на лицензии Windows уже рассчитаны. Без указания id инстанса вызов вернет доступные операционные системы для всех доступных инстансов. Сессионный токен не требуется.
Примечание
Следует учитывать, что все цены указаны только для создания надлежащего пользовательского интерфейса. Они будут пересчитаны в бэкэнде во время заказа.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие — получение списка ОС для конкретного инстанса |
instance_id | int | ID инстанса (можно получить через вызов presets/list) |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"os_list": [
{
"id": 183, // id операционной системы
"name": "RockyLinux 8",
"api_enabled": 0,
"type_login": 1,
"pxe_os_id": null,
"active": 1,
"description": "",
"tags": [
{
"id": 78797,
"tag": "bm",
"value": "true",
"extra": "",
"component_id": 183,
"component": "OS",
"internal": 0
},
{
"id": 78798,
"tag": "gpu",
"value": "true",
"extra": "",
"component_id": 183,
"component": "OS",
"internal": 0
},
{
"id": 78799,
"tag": "vgpu",
"value": "true",
"extra": "",
"component_id": 183,
"component": "OS",
"internal": 0
},
{
"id": 78800,
"tag": "vm",
"value": "true",
"extra": "",
"component_id": 183,
"component": "OS",
"internal": 0
},
{
"id": 264231,
"tag": "family",
"value": "RockyLinux",
"extra": "50",
"component_id": 183,
"component": "OS",
"internal": 0
},
{
"id": 627236,
"tag": "vds",
"value": "",
"extra": "",
"component_id": 183,
"component": "OS",
"internal": 0
}
]
}, {
"id": 202,
"name": "Windows Server 2022 VM",
"api_enabled": 0,
"type_login": 1,
"pxe_os_id": null,
"active": 0,
"description": "WS22 DC for VMs",
"tags": [
{
"id": 241628,
"tag": "vm",
"value": "true",
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 241630,
"tag": "min_ram", // минимальные требования к объёму оперативной памяти
"value": "4", // 4 Гб
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 241631,
"tag": "min_hdd", // минимальные требования к объему жесткого диска
"value": "32", // 32 Гб
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 241632,
"tag": "price_per_core_EUR", // Плата за лицензию MS для продукта SPLA в евро за ядро
"value": "2",
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 241633,
"tag": "price_per_core_RUB", // Стоимость лицензии MS на продукт SPLA в рублях за ядро
"value": "200",
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 241634,
"tag": "user_name",
"value": "Administrator",
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 264276,
"tag": "family",
"value": "Windows Server",
"extra": "70",
"component_id": 202,
"component": "OS",
"internal": 0
},
{
"id": 264320,
"tag": "short_name",
"value": "WS 2022 for VPS",
"extra": "",
"component_id": 202,
"component": "OS",
"internal": 0
}
],
"price_EUR": 2,
"billing_plan": {
"EUR": {
"1": 2, // расчетная стоимость этой лицензии в евро (без НДС) в зависимости от числа ядер
"3": 6,
"6": 12,
"12": 24
},
"RUB": {
"1": 200, // расчетная стоимость этой лицензии в рублях (без НДС) в зависимости от числа ядер
"3": 600,
"6": 1200,
"12": 2400
}
},
"price_RUB": 200
}
]
}
software/list¶
Возвращает список доступного программного обеспечения для установки на сервер.
Без указания id инстанса вызов вернет доступное к установке программное обеспечение для всех доступных инстансов. Сессионный токен не требуется.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие — получение списка доступного к установке программного обеспечения для конкретного инстанса |
location | string | местоположение инстанса - RU/NL/US/FI/DE/IS/TR (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция) | ||
instance_id | int | ID инстанса (можно получить через вызов presets/list) |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"software": [
{
"id": 47,
"name": "BigBlueButon + Greenlight",
"description": "Greenlight - a popular classroom management system and platform for teacher-student interaction in an educational environment.",
"price": 0,
"active": 0,
"icon": "",
"task": "invapi_external_greenlight_install.dsl",
"tags": [
{
"id": 512695,
"tag": "os",
"value": [
"160"
],
"extra": "",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 512696,
"tag": "description_ru",
"value": "",
"extra": "Greenlight - это популярная система управления классом и платформа для взаимодействия учителей и учеников в учебной среде. ",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 513680,
"tag": "group",
"value": "Communication",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 513714,
"tag": "family",
"value": "Communication",
"extra": "20",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 513782,
"tag": "docs_ru",
"value": "",
"extra": "https://url.hostkey.ru/BigBlueButton",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 514096,
"tag": "short_desc_ru",
"value": "",
"extra": "Greenlight - это популярная система управления классом и платформа для взаимодействия учителей и учеников в учебной среде. ",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 538514,
"tag": "min_ram",
"value": "2",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 538546,
"tag": "min_cpu",
"value": "2",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 606987,
"tag": "vm",
"value": "1",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 1
},
{
"id": 606989,
"tag": "bm",
"value": "1",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 1
},
{
"id": 606990,
"tag": "vgpu",
"value": "1",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 1
},
{
"id": 606991,
"tag": "gpu",
"value": "1",
"extra": "",
"component_id": 47,
"component": "software",
"internal": 1
},
{
"id": 610970,
"tag": "family_desc_ru",
"value": "",
"extra": "Коммуникационное программное обеспечение — это приложения и инструменты, предназначенные для облегчения обмена информацией, сообщениями и медиа между отдельными людьми или группами. Корпоративные решения созданы для того, чтобы быть удобными, быстрыми и, что очень важно, безопасными. Арендуйте сервер HOSTKEY с предустановленным ПО в несколько кликов.",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 610978,
"tag": "family_desc_en",
"value": "",
"extra": "Communication software refers to applications and tools designed to facilitate the exchange of information, messages, and media between individuals or groups. Enterprise solutions are designed to be user-friendly, fast and, most importantly, secure. Rent a HOSTKEY server with pre-installed software in a few clicks.",
"component_id": 47,
"component": "software",
"internal": 0
},
{
"id": 1271688,
"tag": "docs_en",
"value": "",
"extra": "https://url.hostkey.com/BigBlueButton",
"component_id": 47,
"component": "software",
"internal": 0
}
]
},
...
{
"id": 65,
"name": "Minecraft: Java Edition Server",
"description": "Minecraft: Java Edition Server is a player-owned or business-owned multiplayer game server software.",
"price": 0,
"active": 1,
"icon": "",
"task": "invapi_external_minecraft_server_install.dsl",
"tags": [
{
"id": 856009,
"tag": "vm",
"value": "1",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 1
},
{
"id": 856011,
"tag": "bm",
"value": "1",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 1
},
{
"id": 856013,
"tag": "vgpu",
"value": "1",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 1
},
{
"id": 856016,
"tag": "min_cpu",
"value": "1",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856020,
"tag": "min_ram",
"value": "1",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856023,
"tag": "os",
"value": [
"180",
"219",
"219",
"160",
"187",
"217"
],
"extra": "D11,12 U20,22,23",
"component_id": 65,
"component": "software",
"internal": 1
},
{
"id": 856063,
"tag": "tasks",
"value": "invapi_external_minecraft_server_install.dsl",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856073,
"tag": "docs_en",
"value": "",
"extra": "https://url.hostkey.com/Minecraft",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856075,
"tag": "docs_ru",
"value": "",
"extra": "https://url.hostkey.ru/Minecraft",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856076,
"tag": "group",
"value": "Games",
"extra": "",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856081,
"tag": "family",
"value": "Games",
"extra": "31",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856084,
"tag": "short_desc_ru",
"value": "",
"extra": "Minecraft: Java Edition Server — это серверное программное обеспечение, позволяющее запустить многопользовательский сервер Minecraft для игры в режиме онлайн.",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856087,
"tag": "family_desc_ru",
"value": "",
"extra": "Игровые серверы — это ваш путь к хостингу и управлению онлайн-играми. Эта категория предлагает серверные решения, оптимизированные для бесперебойной и высокопроизводительной игровой среды, от многопользовательских настроек до совместного игрового процесса. С HOSTKEY вы сможете в несколько кликов построить собственную игровую инфраструктуру, заказав серверы с предустановленными играми.",
"component_id": 65,
"component": "software",
"internal": 0
},
{
"id": 856089,
"tag": "family_desc_en",
"value": "",
"extra": "Game servers are your gateway to hosting and managing online gaming experiences. From multiplayer setups to collaborative gameplay, this category offers server solutions optimized for seamless, high-performance gaming environments. With HOSTKEY you can build your own gaming infrastructure in a few clicks ordering servers with pre-installed games.",
"component_id": 65,
"component": "software",
"internal": 0
}
]
}
]
}
traffic_plans/list¶
Позволяет получить тарифный план сетевого трафика для конкретного инстанса в конкретной локации. Не требует сессионного токена.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие — получение тарифного плана сетевого трафика для инстанса |
location | * | string | местоположение инстанса - RU/NL/US/FI/DE/IS/TR (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция) | |
instance_id | int | ID инстанса (можно получить через вызов presets/list) |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"traffic_plans": [
{
"id": 25, // id тарифного плана трафика
"name": "3Tb traffic (1Gbps) VM", // название тарифного плана трафика
"limit_in": 999, // входящий лимит Тб
"limit_out": 3, // исходящий лимит Тб
"rate_in": 0, // стоимость избыточного входящего трафика в евро/Тб
"rate_out": 2, стоимость избыточного исходящего трафика в евро/Тб
"bandwidth": 1000, // ограничение пропускной способности (Мбит/с)
"locations": "RU,NL,US,FI,DE,IS,TR,", // регион
"currency_id": 1, // этот план для евро, id валюты== 1
"active": 1,
"web_plan": 0,
"price": 0, // фиксированная цена, бесплатно
"main_plan": 37,
"tags": [
{
"id": 11449,
"component": "traffic_plans",
"component_id": 25,
"tag": "vm",
"value": "true",
"extra": "",
"internal": 1
}
]
},
{
"id": 37,
"name": "3Tb traffic (1Gbps) VM",
"limit_in": 999,
"limit_out": 3,
"rate_in": 0,
"rate_out": 180,
"bandwidth": 1000,
"locations": "RU,NL,US,FI,DE,IS,TR,",
"currency_id": 1, цена указана в рублях, эта надпись будет получена, если у выбранная валюта - рубль
"active": 1,
"web_plan": 0,
"price": 0,
"main_plan": 25,
"tags": [
{
"id": 11471,
"component": "traffic_plans",
"component_id": 37,
"tag": "vm",
"value": "true",
"extra": "",
"internal": 1
}
]
}
]
}
Пример ответа при ошибке
eq/order_instance¶
Позволяет заказать или переустановить моментальный или стоковый сервер (инстанс) с заданными параметрами, ОС и пресетом программного обеспечения.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | order_instance | ключевое действие — заказ конкретного инстанса с заданными параметрами |
token | * | string | сессионный токен | |
deploy_period | * | string | месяц, квартал, 6 месяцев, год (monthly , quarterly , semi-annually , annually ) | |
deploy_notify | * | string | уведомление по электронной почте об успешном завершении развертывания true/false | |
pin | * | int | PIN-код | |
preset | * | string | ID инстанса для развертывания из presets/list | |
location_name | * | string | название локации сервера - RU/NL/US/FI/DE/IS/TR (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция) | |
os_id | * | int | ID ОС из списка операционных систем из вывода os/list | |
soft_id | int | ID программного обеспечения из вывода software/list | ||
traffic_plan | * | string | ID выбранного плана трафика traffic_plans/list | |
root_pass | * | string | пароль root по умолчанию. Пароль должен быть длиной не менее 8 символов и содержать в себе заглавные и строчные латинские буквы и хотя бы один специальный символ | |
hostname | string | имя хоста развернутого инстанса. Если не задано, то будет поставлено Код локации + ID инстанса | ||
ssh_key | string | открытый ключ ssh для пользователя root | ||
post_install_callback | string | URL для вызова после успешного развертывания | ||
post_install_script | string | код для запуска после успешного развертывания | ||
os_name | string | название ОС | ||
own_os | int | если установлено значение 1, инстанс будет доставлен без установки ОС. Этот вызов полезен, если планируется установить ОС позже | ||
root_size | int | размер корневого раздела (/) на диске в процентах. Если не задано, принимается как 100 | ||
jenkins_task | string | ID задачи Jenkins для запуска после развертывания. Допустимые значения: 1 - установка драйвера GPU, 2 - драйвер GPU плюс докер NVIDIA, 3 - драйвер, докер плюс патч IOMMU, -1 - ничего не делать |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=$HOSTKEY_TOKEN" \
--data "deploy_period={monthly,quarterly,semi-annually,annually}" \
--data "deploy_notify=true" \
--data "pin={PIN}" \
--data "preset={ID пресета инстанса}" \
--data "location_name={двухбуквенный код локации}" \
--data "os_id={ID операционной системы}" \
--data "soft_id={ID программного обеспечения}" \
--data "traffic_plan={ID плана трафика}" \
--data "root_pass={пароль root}" \
--data "hostname={Имя хоста}" \
--data "ssh_key={открытый SSH ключ}" \
--data "post_install_callback=" \
--data "post_install_script=" \
--data "reinstall_key=$REINSTALL_KEY" \
--data "os_name=" \
--data "own_os=" \
--data "root_size=100" \
--data "jenkins_task={ID задачи Jenkins, -1, 1, 2, 3}" \
Пример положительного ответа
Алгоритм заказа моментального сервера с помощью eq/order_instance¶
-
Cоздайте клиентский API-ключ;
-
Определитесь с локацией заказа сервера: RU/NL/US/FI/DE/IS/TR (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция);
-
С помощью запроса presets/list определите ID пресета для развертывания.
Этот ID далее будет использоваться как
instance_id
илиpreset
). Например при"id": 108
значенияinstance_id=108
иpreset=108
; -
С помощью запроса os/list определите
os_id
нужной к установке операционной системы, используя ID инстанса из п.3. Например для Ubuntu 22.04 это значение будет определено в ответе на запрос как"id": 187
;Примечание
Если вы не хотите ставить на сервер ОС при его развертывании, укажите позже параметр
own_os=1
. -
С помощью запроса software/list определите для данного инстанса возможное к развертыванию программное обеспечение и получите его ID (далее параметр
soft_id
). Например для СMS Wodrpress в выводе запроса это значение будет"id": 20
;Примечание
Вы можете не предустанавливать ПО при развертывании, если хотите сделать это позже самостоятельно.
-
С помощью запроса [traffic_plans/list] получите ID тарифного плана сетевого трафика для вашего сервера. Например для плана
3Tb traffic (1Gbps) VM
вызов вернет значение"id": 25
; -
Получите сессионный токен
$HOSTKEY_TOKEN
через запрос auth/login; -
Закажите сервер, вставив в запрос eq/order_instance данные полученые в п.п. 2-7. Обязательно укажите ваш PIN-код (если вы его не задали, сделайте это через запрос eq/set_pin), пароль
root
, период оплаты сервераdeploy_period
(на месяц, квартал, 6 месяцев или за год), необходимость уведомления на почту о развертыванииdeploy_notify
(рекомендуем ставитьtrue
по умолчанию).
По желанию можно указать дополнительные параметры, описаные в вызове eq/order_instance.
Ниже приведен пример заказа сервера с Wordpress (id=20) на Debian 11 (id=108):
пример POST-запроса заказа моментального сервера, cURL
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=eeee51003b1d81d2eca65660735c0531" \
--data "deploy_period=monthly" \
--data "deploy_notify=true" \
--data "pin=1907" \
--data "preset=108" \
--data "location_name=NL" \
--data "os_id=180" \
--data "soft_id=20" \
--data "traffic_plan=25" \
--data "root_pass=mdLus8Ng" \
Пример положительного ответа
Invapi выберет/создаст соответствующий сервер в определенном месте и продолжит его развертывание. Перед любой установкой будет произведена проверка наличия средств на кредитном счете (при установленном параметре автоплатежей с кредитного баланса) или выставлен счет на оплату. Если установка пройдет успешно, новый сервер будет привязан к учетной записи клиента. По запросу клиент будет уведомлен по электронной почте. Все платные лицензии будут добавлены в качестве дополнений к заказу.
Примечание
При несовместимости выбранной операционной системы и устанавливаемого ПО, вам выдаст сообщение вида:
{
"result": -1,
"error": "reinstall: extra software Odoo (#49) is not compatible with Ubuntu 22.04"
}
Вам необходимо будет выбрать другую операционную систему (задать другой параметр os_id
).
Внимание
Приступить к использованию сервера можно после получения инфрормации об окончании его развертывания по электронной почте или появления статуса Active в разделе Мои сервера панели управления Invapi. При возникновении сбоя в процессе развертывания сервера, на почту будет отправлено уведомление. Развертывание может занять от 20 минут и выше.
Вы можете отслеживать установку и ее статус используя асинхронные действия. Асинхронный ключ (deploy key
) можно получить, запустив вызов eq/update_servers.
Установка будет завершена успешно, когда вы получите сообщение ассинхронного действия такого рода:
Переустановка сервера через eq/order_instance¶
Переустановка сервера производится аналогично его заказу и отличается только передачей в запросе eq/order_instance дополнительного параметра id
- ID переустанавливаемого сервера из Invapi и неиспользовании части параметров. При переустановке вы можете выбрать другую операционную систему и предустанавливаемое программное обеспечение или сделать переустановку "с чистого листа", установив параметр own_os=1
.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие — переустановка конкретного инстанса с заданными параметрами |
token | * | string | сессионный токен | |
pin | * | int | PIN-код | |
hostname | string | новое имя хоста после переустановки. По умолчанию используется код локации+ID инстанса | ||
os_id | * | int | ID ОС из списка операционных систем из вывода os/list | |
soft_id | int | ID программного обеспечения из вывода software/list | ||
root_pass | * | string | новый пароль root. Пароль должен быть длиной не менее 8 символов и содержать в себе заглавные и строчные латинские буквы и хотя бы один специальный символ | |
ssh_key | string | открытый ключ ssh для пользователя root | ||
post_install_script | string | код для запуска после успешного развертывания | ||
own_os | int | если установлено значение 1, инстанс будет доставлен без установки ОС. Этот вызов полезен, если планируется установить ОС позже | ||
root_size | int | размер корневого раздела (/) на диске в процентах. Если не задано, принимается как 100 | ||
id | * | int | ID переустанавливаемого сервера |
POST-запрос для переустановки, cURL
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=$HOSTKEY_TOKEN" \
--data "pin={PIN}" \
--data "hostname={Имя хоста}" \
--data "os_id={ID операционной системы}" \
--data "soft_id={ID программного обеспечения}" \
--data "root_pass={пароль root}" \
--data "ssh_key={открытый SSH ключ}" \
--data "post_install_script=" \
--data "own_os=" \
--data "root_size=100" \
--data "id={ID сервера из Invapi}" // Наличие ID запустит процесс переустановки сервера.
Внимание
Если при запросе переустановки вам выдало сообщение, что сервер с таким ID не найден, обновите список серверов, привязанных к сессионному токену, выполнив запрос eq/update_servers.
Примечание
При несовместимости выбранной операционной системы и устанавливаемого ПО, вам выдаст сообщение вида:
{
"result": -1,
"error": "reinstall: extra software Odoo (#49) is not compatible with Ubuntu 22.04"
}
Вам необходимо будет выбрать другую операционную систему (задать другой параметр os_id
).
Внимание
Вы не можете запустить новую переустановку, если не закончен процесс предыдущей. Иначе вы получите предупреждение:
Например мы хотим переставить наш сервер из предыдущего примера на Rocky Linux 9 (id=205) и Grafana (id=18). Запрос будет следующий:
пример POST-запроса для переустановки, cURL
Пример положительного ответа
Внимание
При переустановке данным способом уведомление об ее успешном окончании на электронную почту не присылается! Вам нужно запомнить и сохранить новый пароль root
(или использовать прежний пароль сервера), а информацию о доступе к заказанному ПО смотреть в документации Маркетплейса или непосредственно в карточке сервера панели управления Invapi.
Используя данный асинхронный ключ (поле callback
), мы можем отследить процесс переустановки, используя асинхронные действия.
Пример ответа об успешном реинстале
Стоковые серверы¶
К стоковым серверам относятся физические сервера стандартных конфигураций, которые развертываются в течение следующего рабочего дня, если не указано иное.
Заказать стоковые серверы возможно через API.
Все платежи за стоковые серверы производятся со счета биллинга. Для размещение заказа на счету должна быть необходимая сумма.
Ресурс | Действие | Описание |
---|---|---|
stocks.php | list | Получение списка доступных серверов |
stocks.php | show | Получение подробной информации о конкретном сервере |
eq.php | order_instance | Создание заказа на развертывание стокового сервера. Заказ будет выполнен после оплаты счета |
stocks/list¶
Позволяет получить актуальный список доступных стоковых серверов с указанием конфигураций и базовыми ценами. Не требует токена авторизации.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие - получение списка доступных серверов |
location | * | string | 'RU','NL','US','FI','DE','IS','TR' | регион расположения сервера |
group | * | string | 'ALL', '1CPU', '2CPU', 'GPU', 'AMD', 'AMD-MODERN', 'INTEL' | группа, к которой относится сервер |
- В настоящее время доступны инстансы в России (RU), Нидерландах (ND), США (US), Финляндии (FI), Германии (DE), Исландии (IS) и Турции (TR).
- Серверы распределены по следующим группам: ALL - все серверы, 1CPU - однопроцессорные серверы, 2CPU-двухпроцессорные серверы, GPU - серверы на базе GPU, AMD - серверы с процессорами производства AMD, AMD-MODERN серверы с современными процессорами Ryzen производства AMD, INTEL - серверы с процессорами производства AMD. GPU серверы исключены из других групп.
- Оценка производительности сервера отображается для его CPU, а не графического процессора.
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"servers": [
{
"id": 40514,
"name": "40514",
"hardware": {
"config": "AMD Ryzen 9 5950X 3.4GHz (16 cores)/128Gb/1Tb NVMe SSD/PSU",
"motherboard_name": "ASRock X570D4U",
"cpu_name": "AMD Ryzen 9 5950X 3.4GHz (16 cores)",
"cpu_type": "AMD-MODERN",
"cpu_count": 1,
"cpu_cores": 16,
"cpu_frq": "3.4",
"ram": 128,
"ram_type": "ddr4ecc",
"hdd_count": 1,
"hdd_groups": [
{
"name": "1Tb NVMe SSD",
"type": "HDD",
"count": 1,
"size": "1024"
}
],
"hdd_pairs": 0,
"gpu_name": null,
"gpu_count": 0,
"raid_levels": [
"LVM_HBA"
]
},
"location": "FI",
"cpu_count": "1",
"cpu_perf": 46719,
"cpu_perflink": "http://www.cpubenchmark.net/cpu_lookup.php?cpu=AMD+Ryzen+9+5950X&id=3862",
"tags": {
"ipmi": {
"tag": "ipmi",
"value": "ami_bmc",
"extra": ""
}
},
"deployment_estimate": "auto",
"billing_plan": {
"EUR": {
"1": 115,
"3": 334.65,
"6": 648.6,
"12": 1214.4
},
"RUB": {
"1": 12075,
"3": 35138.25,
"6": 68103,
"12": 127512
}
},
"server_group": "Dedicated Server"
},
{
"id": 44717,
"name": "44717 2U",
"hardware": {
"config": "2xXeon E5-2680v2 2.8GHz (10 cores)/128Gb/960Gb SSD/2xPSU",
"motherboard_name": "DELL PE R720 MB (native)",
"cpu_name": "Xeon E5-2680v2 2.8GHz (10 cores)",
"cpu_type": "INTEL",
"cpu_count": 2,
"cpu_cores": 20,
"cpu_frq": "2.8",
"ram": 128,
"ram_type": "ddr3reg",
"hdd_count": 1,
"hdd_groups": [
{
"name": "960Gb SSD",
"type": "HDD",
"count": 1,
"size": "960"
}
],
"hdd_pairs": 0,
"gpu_name": null,
"gpu_count": 0,
"raid_levels": [
"LVM_HBA"
]
},
"location": "FI",
"cpu_count": "2",
"cpu_perf": 12615,
"cpu_perflink": "http://www.cpubenchmark.net/cpu_lookup.php?cpu=Intel+Xeon+E5-2680+v2+%40+2.80GHz&id=2061",
"tags": {
"ipmi": {
"tag": "ipmi",
"value": "dell_idrac9",
"extra": ""
},
"hwraid": {
"tag": "hwraid",
"value": "1",
"extra": ""
}
},
"deployment_estimate": "auto",
"billing_plan": {
"EUR": {
"1": 107,
"3": 311.37,
"6": 603.48,
"12": 1129.92
},
"RUB": {
"1": 11235,
"3": 32693.85,
"6": 63365.4,
"12": 118641.6
}
},
"server_group": "Dedicated Server"
}
]
}
stocks/show¶
Позволяет получить расширенную информацию о конкретном сервере из общего списка доступных серверов.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | show | ключевое действие - получение расширенной информации о конкретном сервере |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "show",
"server_data": {
"id": 44717,
"name": "44717 2U",
"hardware": {
"config": "2xXeon E5-2680v2 2.8GHz (10 cores)/128Gb/960Gb SSD/2xPSU",
"motherboard_name": "DELL PE R720 MB (native)",
"cpu_name": "Xeon E5-2680v2 2.8GHz (10 cores)",
"cpu_type": "INTEL",
"cpu_count": 2,
"cpu_cores": 20,
"cpu_frq": "2.8",
"ram": 128,
"ram_type": "ddr3reg",
"hdd_count": 1,
"hdd_groups": [
{
"name": "960Gb SSD",
"type": "HDD",
"count": 1,
"size": "960"
}
],
"hdd_pairs": 0,
"gpu_name": null,
"gpu_count": 0,
"raid_levels": [
"LVM_HBA"
]
},
"location": {
"dc_location": "FI",
"location_id": 4,
"country": "FI"
},
"cpu_count": "2",
"cpu_perf": 12615,
"cpu_perflink": "http://www.cpubenchmark.net/cpu_lookup.php?cpu=Intel+Xeon+E5-2680+v2+%40+2.80GHz&id=2061",
"tags": {
"ipmi": {
"tag": "ipmi",
"value": "dell_idrac9",
"extra": ""
},
"hwraid": {
"tag": "hwraid",
"value": "1",
"extra": ""
}
},
"deployment_estimate": "auto",
"billing_plan": {
"EUR": {
"1": 107,
"3": 311.37,
"6": 603.48,
"12": 1129.92
},
"RUB": {
"1": 11235,
"3": 32693.85,
"6": 63365.4,
"12": 118641.6
}
}
}
}
Используемые теги оборудования¶
- ipmi - Сервер оснащен модулем IPMI/DRAC/ILO/ управления. Наличие модуля удаленного управления позволяет упростить решение ряда задач;
- hwraid - На сервере установлен аппаратный RAID-контроллер или аналогичная функция, встроенная в материнскую плату. Если требуется использовать эту функцию, автоматическое развертывание будет невозможно, т.к. настройка RAID-контроллера выполняется нашими инженерами, как правило, в течение следующего рабочего дня;
- no_autodeploy - Серверы с этим тегом нельзя развернуть с помощью наших средств автоматизации. Как и в случае с аппаратной настройкой рейда, требуется участие наших инженеров. Развертывание будет осуществлено в течение следующего рабочего дня.
Создание заказа на развертывание или переустановку стокового сервера¶
Для заказа развертывания или переустановки стокового сервера используйте вызов eq/order_instance c ID стокового сервера.
Связанные действия¶
- os/list - получение списка ОС, подходящих для сервера;
- traffic_plans/list - получение списка тарифных планов траффика, подходящих для сервера;
- jenkins/get_tasks - получение списка постустановочных задач;
- eq/order_instance - заказ/переустановка моментального сервера, стокового сервера и т.д. (асинхронное действие);
Удаленный доступ¶
Физические серверы¶
Мы можем предоставить прямой доступ к серверам, оснащенным IPMI. Все наши сервера имеют IPMI в сером диапазоне IP. Мы предоставляем NAT по запросу на внешние IP на 2 часа для выполнения необходимых операций.
Для этого вызова есть асинхронный ответ. Ключи для всех операций NAT нужно проверять с помощью вызова nat_callback.php
:
https://invapi.hostkey.ru/nat_callback.php?action=check&key=XXXX
Ресурс | Действие | Описание |
---|---|---|
nat.php | add_static_nat | создание статического правила сквозного доступа DNAT к IPMI серверу (общедоступный IP-адрес для доступа к IPMI серверу) |
nat.php | remove_static_nat | удаление статического перехода NAT на сервер IPMI |
eq.php | add_ipmi_user | создание временного пользователя IPMI для веб-доступа IPMI |
eq.php | remove_ipmi_user | удаление временного пользователя IPMI для веб-доступа IPMI |
eq.php | unit_reset | перезагрузка IPMI-контроллера |
nat/add_static_nat¶
Создает статическое правило сквозного доступа DNAT к IPMI серверу.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add_static_nat | ключевое действие - создание статического правила сквозного доступа DNAT к IPMI серверу (общедоступный IP-адрес для доступа к IPMI серверу) |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
nat/remove_static_nat¶
HTTP-метод - POST
Выполняет удаление статического перехода DNAT на сервер IPMI
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | remove_static_nat | ключевое действие- удаление статического перехода NAT на сервер IPMI |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
eq/add_ipmi_user¶
Создает временного пользователя для веб-доступа к IPMI.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add_ipmi_user | ключевое действие - создание временного пользователя IPMI для веб-доступа IPMI |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
{
"result": "OK",
"scope": "{\"result\":\"OK\",\"message\":\"User added\",\"debug\":\"\"}\n2021/05/17 22:46:55 Set User Password command successful (user 4)\n\n2021/05/17 22:46:55 \n2021/05/17 22:46:56 Set User Access (channel 1 id 4) successful.\n\n2021/05/17 22:46:56 exit status 1\n",
"context": {
"action": "add_ipmi_user",
"id": "ID cервера",
"location": "RU",
"User": "uHFxxxxx",
"password": "4Djxxxxx"
},
"debug": null,
"key": "f685eaa0f06e47faa2e6bb5002828b00"
}
eq/remove_ipmi_user¶
Удаляет временного пользователя IPMI
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | remove_ipmi_user | ключевое действие - удаление временного пользователя IPMI |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=remove_ipmi_user" \
--data "token=$HOSTKEY_TOKEN" \
--data "id={ID сервера}"
POST-запрос, cURL
Для этого действия есть соответствующий асинхронный ответ
eq/unit_reset¶
Перезагружает модуль IPMI для конкретного сервера.
Внимание
В некоторых случаях необходимо сбросить модуль IPMI, если он перестал отвечать или не выполняет некоторые операции. В подобных ситуациях может помочь перезагрузка IPMI-контроллера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | unit_reset | ключевое действие - перезагрузка IPMI модуля. В некоторых случаях необходимо сбросить модуль IPMI, если он перестал отвечать или не выполняет некоторые операции. В подобных ситуациях может помочь перезагрузка IPMI-контроллера. |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
Виртуальные серверы¶
Действия удаленного доступа для виртуальных машин:¶
Ресурс | Действие | Описание |
---|---|---|
eq | console | получение доступа к консоли ВМ |
eq/console¶
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | console | ключевое действие - получение доступа к консоли ВМ |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
{
"result": "OK",
"scope": "[virt-viewer]\ntype=spice\nhost=146.0.78.94\nport=6194\npassword=HY14U9qL\n# Password is valid for 120 seconds.\ndelete-this-file=1\nfullscreen=0\ntitle=34533:%d\ntoggle-fullscreen=shift+f11\nrelease-cursor=shift+f12\nsecure-attention=ctrl+alt+end\ntls-port=6195\nenable-smartcard=0\nenable-usb-autoshare=0\nusb-filter=null\ntls-ciphers=DEFAULT\nhost-subject=O=infra.hostkey.ru,CN=172.18.2.34\nca=-----BEGIN CERTIFICATE-----\\nMIID+jCCAuKgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCVVMxGTAXBgNVBAoM\\nEGluZnJhLmhvc3RrZXkucnUxMDAuBgNVBAMMJ292ci1ubC1lbmdpbmUwMmEuaW5mcmEuaG9zdGtl\\neS5ydS40NDU2MTAeFw0yMjA2MDUwNjQyNTZaFw00MjA2MDEwNjQyNTZaMFoxCzAJBgNVBAYTAlVT\\nMRkwFwYDVQQKDBBpbmZyYS5ob3N0a2V5LnJ1MTAwLgYDVQQDDCdvdnItbmwtZW5naW5lMDJhLmlu\\nZnJhLmhvc3RrZXkucnUuNDQ1NjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmOyY2\\n9SE0+o37Uft2HQjNcUsa/+KFQ+3/Dk9QTb2/wxIRmQLDWA/TleV2tI2rdRE+UfCnbWarP4++luvy\\nrxqKFKYU5qcf1jC1QXyS9ILkD9Akmj76GGxggmfV2YsvYCxEifSRctL6foUfYiztOqHOtj5MxC2Q\\njC/7yns+Mj8U5aM8J6wYZJI7Cv50qFgKOEMLWqguSalPRInPaFiLxb0PR9MM4vI82UBWY13sCaY2\\nUtAItk3LkKEwuJAW9XaBKPR4eP2v8c9FmvfyUK7uyV+FdEitQWsQlA07fz/Dz2AdodObgmlv9NoO\\ncg0O8sTQsVt8GcXsTXOScrylqUuljGthAgMBAAGjgckwgcYwHQYDVR0OBBYEFGZ9uIc9qrUCU7DZ\\niR4k5/OCDdE4MIGDBgNVHSMEfDB6gBRmfbiHPaq1AlOw2YkeJOfzgg3ROKFepFwwWjELMAkGA1UE\\nBhMCVVMxGTAXBgNVBAoMEGluZnJhLmhvc3RrZXkucnUxMDAuBgNVBAMMJ292ci1ubC1lbmdpbmUw\\nMmEuaW5mcmEuaG9zdGtleS5ydS40NDU2MYICEAAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\\nBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAHcQuHN3LEEdS3bCh41xOfPD3zbR4pcmHp6N5ng0FDCs\\nOZD5sO+PSrIsYP3gegVFxUomjR3AJ9TZojpodZYnzbgzaCCvC1JOb6VT35ekmNinvMfpkMB2WptM\\nPkME6sFJS4oxo6pmoPZvlKINBr3dYLcpLmFv9nYLALvL+LYxGjgnxa8bLokPYI3Pz5LL4JE8TQp0\\nFL9U6cs4DDueN0vwmNeRYb//PdSS8snlcYRhSKRsRdxx0moYSM0+CMOutjuVlXGjDxq3f6clnz1I\\nVY1/VLw1OyJTHOCHez+phC702Oh4Z5/1lMzWbRrKdZMEWweMif3VmIMMXe5JnaluF6lopW4=\\n-----END CERTIFICATE-----\\n\nsecure-channels=main;inputs;cursor;playback;record;display;smartcard;usbredir\nversions=rhev-win64:2.0-160;rhev-win32:2.0-160;rhel8:7.0-3;rhel7:2.0-6;rhel6:99.0-1\nnewer-version-url=http://www.ovirt.org/documentation/admin-guide/virt/console-client-resources\n\n[ovirt]\nhost=ovr-ru-engine02a.infra.hostkey.ru:443\nvm-guid=12b720b2-d878-4f6c-a2cc-61a61f200a48\nsso-token=mcHYs92LDliDuVJ2lHKY8nNugkPS49IuTnS3_hpKOtylYX8DbCxAOAAm8J5ib_5-XNoRzoltHvjruHsWAY7fAw\nadmin=1\nca=-----BEGIN CERTIFICATE-----\\nMIID+jCCAuKgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCVVMxGTAXBgNVBAoM\\nEGluZnJhLmhvc3RrZXkucnUxMDAuBgNVBAMMJ292ci1ubC1lbmdpbmUwMmEuaW5mcmEuaG9zdGtl\\neS5ydS40NDU2MTAeFw0yMjA2MDUwNjQyNTZaFw00MjA2MDEwNjQyNTZaMFoxCzAJBgNVBAYTAlVT\\nMRkwFwYDVQQKDBBpbmZyYS5ob3N0a2V5LnJ1MTAwLgYDVQQDDCdvdnItbmwtZW5naW5lMDJhLmlu\\nZnJhLmhvc3RrZXkucnUuNDQ1NjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmOyY2\\n9SE0+o37Uft2HQjNcUsa/+KFQ+3/Dk9QTb2/wxIRmQLDWA/TleV2tI2rdRE+UfCnbWarP4++luvy\\nrxqKFKYU5qcf1jC1QXyS9ILkD9Akmj76GGxggmfV2YsvYCxEifSRctL6foUfYiztOqHOtj5MxC2Q\\njC/7yns+Mj8U5aM8J6wYZJI7Cv50qFgKOEMLWqguSalPRInPaFiLxb0PR9MM4vI82UBWY13sCaY2\\nUtAItk3LkKEwuJAW9XaBKPR4eP2v8c9FmvfyUK7uyV+FdEitQWsQlA07fz/Dz2AdodObgmlv9NoO\\ncg0O8sTQsVt8GcXsTXOScrylqUuljGthAgMBAAGjgckwgcYwHQYDVR0OBBYEFGZ9uIc9qrUCU7DZ\\niR4k5/OCDdE4MIGDBgNVHSMEfDB6gBRmfbiHPaq1AlOw2YkeJOfzgg3ROKFepFwwWjELMAkGA1UE\\nBhMCVVMxGTAXBgNVBAoMEGluZnJhLmhvc3RrZXkucnUxMDAuBgNVBAMMJ292ci1ubC1lbmdpbmUw\\nMmEuaW5mcmEuaG9zdGtleS5ydS40NDU2MYICEAAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\\nBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAHcQuHN3LEEdS3bCh41xOfPD3zbR4pcmHp6N5ng0FDCs\\nOZD5sO+PSrIsYP3gegVFxUomjR3AJ9TZojpodZYnzbgzaCCvC1JOb6VT35ekmNinvMfpkMB2WptM\\nPkME6sFJS4oxo6pmoPZvlKINBr3dYLcpLmFv9nYLALvL+LYxGjgnxa8bLokPYI3Pz5LL4JE8TQp0\\nFL9U6cs4DDueN0vwmNeRYb//PdSS8snlcYRhSKRsRdxx0moYSM0+CMOutjuVlXGjDxq3f6clnz1I\\nVY1/VLw1OyJTHOCHez+phC702Oh4Z5/1lMzWbRrKdZMEWweMif3VmIMMXe5JnaluF6lopW4=\\n-----END CERTIFICATE-----\\n\n\n",
"context": {
"action": "console",
"id": "34533",
"location": "RU",
"ip_ipmi": ""
},
"debug": "",
"key": "f28dfd83fbc1dbb914710774d8e9e30a"
}
Данные из scope
должны храниться в файле console.vv
для virtual machine viewer или доступны через VNC
Следующий код JS выполняет это действие:
var blob = new Blob([result.scope], {
type: 'text/octet-stream'
});
var filename = "console.vv";
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, "console.vv");
} else {
var elem = document.createElement('a');
elem.href = window.URL.createObjectURL(blob);
elem.download = filename;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}
Управление сервером¶
Информация
Большинство элементов управления сервером являются частью ресурса eq
(оборудование).
Ресурс | Действие | Описание |
---|---|---|
eq.php | list | получить список серверов, найти сервера |
eq.php | show | получить полную информацию о сервере |
eq.php | update_servers | обновить список активных серверов |
eq/list¶
Выполняет поиск серверов по локации, статусу, оборудованию, IP и характеристикам.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие - получение списка серверов, поиск серверов. Функция list возвращает id сервера, соответствующего критериям поиска |
default (no extra parameters) | (без дополнительных параметров) - возвращает id всех назначенных серверов | |||
location | string | показывает сервера из определенного региона. Возможные значения: RU,NL,FI,IS,TR,DE and US (Россия, Нидерланды, Финляндия, Исландия, Турция, Германия и США). Пример location=RU,NL (все сервера из регионов RU и NL) | ||
status | string | показывает сервера с определенным статусом. Возможные статусы клиента: rent (активный сервер), power_off (приостановлено по причине). Например (просмотр всех приостановленных серверов): status=power_off | ||
component | string | серверы с определенным оборудованием, например, CPU или GPU. Используйте:component=12345,5456,... Числа — это id оборудования. | ||
ip | string | сервер с определенным IP-адресом. Например: ip=199.100.7.5 | ||
mac | string | сервер с определенным MAC-адресом. Например: mac=00.00.00.00.00.00 | ||
Mini | string | компактные серверы с одним процессором и IPMI | ||
Storage | string | серверы, предназначенные для использования в качестве хранилища | ||
Nodes | string | серверы, предназначенные для использования в качестве узлов виртуализации | ||
Micro | string | серверы с одним процессором и без IPMI | ||
VPS | string | виртуальные серверы | ||
1CPU | string | серверы с одним процессором | ||
2CPU | string | серверы с двумя процессорами | ||
Dell | string | серверы Dell | ||
Gpu | string | GPU-серверы | ||
Instances | string | серверы со стандартной конфигурацией и полным удаленным управлением | ||
AMD | string | серверы на базе EPYC и Ryzen |
Возможно запросить несколько групп, например все сервера с группами 1CPU и AMD:
Примечание
Для поиска внутри тегов сервера используются API-вызовы, действие user_search.
POST-запрос, cURL
eq/show¶
Предоставляет данные о конкретном сервере.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | show | ключевое действие - предоставляет полные данные о конкретном сервере |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"server_data": {
"id": 34533,
"ref_tableName": "VPS",
"Condition_Component": "rent",
"account_id": 5724,
"type_billing": "whmcs_itb",
"is_owner": "Rent",
"cost_trafficIN": 0,
"limit_trafficIN": 999,
"cost_traffic": 180,
"limit_traffic": 3,
"new_limit_traffic": 0,
"limit_bands": 1000,
"trafficPeriodOut": 0,
"trafficPeriodIn": 0,
"trafficPeriodOutBilling": 0,
"trafficPeriodInBilling": 0,
"datePeriod": "2024-01-14 00:00:00",
"IsShape": 1,
"hwconfig": "4 vCore/4Gb/60Gb SSD",
"status": "rent",
"type": "VPS",
"days_left": 18,
"due_date": "2024-01-14"
},
"hardware": {
"config": "4 vCore/4Gb/60Gb SSD",
"components": [
{
"Type": "Platform",
"Name": "Ovirt VM",
"Count": 1,
"hdd_type": "SSD"
},
{
"Type": "CPU",
"Name": "VPS Core",
"Count": 4,
"hdd_type": "SSD",
"Cores": 4,
"cpu_type": "INTEL"
},
{
"Type": "RAM",
"Name": "VPS RAM 1Gb",
"Count": 4,
"hdd_type": "SSD",
"Size": 1
},
{
"Type": "HDD",
"Name": "VPS HDD 10 Gb",
"Count": 6,
"hdd_type": "SSD",
"Size": 10
}
],
"tags": {
"platform_ipmi": [
"ovirt"
],
"platform_location": [
"RU,NL,US,FI,IS,DE"
],
"platform_tdp": [
"1"
],
"platform_blades": [
"100"
],
"platform_nojava_console": [
""
],
"platform_vm": [
"true"
],
"platform_virt": [
"1"
],
"cpu_location": [
"RU,NL,US,FI,IS,TR",
"RU,NL,US,FI,IS,TR",
"RU,NL,US,FI,IS,TR",
"RU,NL,US,FI,IS,TR"
],
"cpu_deprecation": [
"8",
"8",
"8",
"8"
],
"cpu_production_start": [
"",
"",
"",
""
],
"cpu_tdp": [
"1",
"1",
"1",
"1"
],
"cpu_virt": [
"1",
"1",
"1",
"1"
],
"cpu_frq": [
"2.4",
"2.4",
"2.4",
"2.4"
],
"cpu_cores": [
"1",
"1",
"1",
"1"
],
"ram_vm": [
"1",
"1",
"1",
"1"
],
"ram_location": [
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI"
],
"ram_ram_type": [
"VRAM",
"VRAM",
"VRAM",
"VRAM"
],
"ram_size": [
"1",
"1",
"1",
"1"
],
"ram_ramtype": [
"VRAM",
"VRAM",
"VRAM",
"VRAM"
],
"ram_virt": [
"1",
"1",
"1",
"1"
],
"hdd_location": [
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI",
"RU,NL,US,FI",
],
"hdd_tdp": [
"0.01",
"0.01",
"0.01",
"0.01",
"0.01",
"0.01"
],
"hdd_size": [
"10",
"10",
"10",
"10",
"10",
"10"
],
"hdd_type": [
"HDD",
"HDD",
"HDD",
"HDD",
"HDD",
"HDD"
],
"hdd_virt": [
"1",
"1",
"1",
"1",
"1",
"1"
],
"hdd_interface": [
"SATA",
"SATA",
"SATA",
"SATA",
"SATA",
"SATA"
],
"hdd_interface_sata": [
"SATA",
"SATA",
"SATA",
"SATA",
"SATA",
"SATA"
],
"eta": 0.07
},
"vm": 1,
"gpu": 0,
"vds": 0,
"uefi": 0,
"hwraid": 0,
"motherboard_name": "",
"cpu_name": "vCPU",
"cpu_type": "vCPU",
"cpu_count": 4,
"cpu_cores": 4,
"cpu_frq": "2.4",
"ram": 4,
"ram_type": "vram",
"hdd": 60,
"hdd_count": 1,
"hdd_groups": [
{
"name": "60Gb SSD",
"type": "HDD",
"count": 1,
"size": "60"
}
],
"hdd_pairs": 0,
"gpu_name": null,
"gpu_count": 0,
"raid_levels": [
"LVM_HBA"
]
},
"groups": [
{
"ID": "26",
"Code": "Micro",
"Name": "Micro",
"active": 0
},
{
"ID": "32",
"Code": "1CPU",
"Name": "1CPU",
"active": 0
},
{
"ID": "33",
"Code": "2CPU",
"Name": "2CPU",
"active": 0
},
{
"ID": "39",
"Code": "OUT",
"Name": "OUT",
"active": 0
},
{
"ID": "41",
"Code": "Gpu",
"Name": "Gpu",
"active": 0
},
{
"ID": "52",
"Code": "1CPU_OUT_NEW",
"Name": "1CPU_OUT_NEW",
"active": 0
},
{
"ID": "53",
"Code": "Ryzen",
"Name": "Ryzen",
"active": 0
},
{
"ID": "54",
"Code": "5Ghz",
"Name": "5Ghz",
"active": 0
},
{
"ID": "55",
"Code": "2CPU_OUT_NEW",
"Name": "2CPU_OUT_NEW",
"active": 0
},
{
"ID": "59",
"Code": "Promo",
"Name": "Promo",
"active": 0
}
],
"licenses": [
{
"id": 124,
"name": "ISPmanager 6 Lite on IP 31.207.44.105",
"amount": 1,
"date_buy": ""
}
],
"location": {
"dc_location": "RU",
"location_id": 1
},
"OS": null,
"IP": [
{
"port": "eth0",
"MAC": "56:6f:ff:5b:08:7b",
"IP": "31.207.44.105",
"status": "enable",
"main_ip": 1,
"locked": 0,
"date_block": null,
"license_id": 124,
"main_int": 1,
"vlan": 415,
"updated": 13,
"license_name": "ISPmanager",
"white_ddos": 0,
"description": ""
}
],
"interfaces": [
{
"id": 122936,
"type": "eth0",
"mac": "56:6f:ff:5b:08:7b",
"upstream_id": null,
"IsMain": 1,
"IsVirt": 0,
"Status": "enable",
"switch_owner": "",
"switch_model": "virtual"
}
],
"IPMI": {
"model": "ovirt",
"interfaces": []
},
"tags": [
{
"id": 799108,
"component": "Component1",
"component_id": 34533,
"tag": "order_origin",
"value": "invapi",
"extra": "1",
"internal": 0
},
{
"id": 799112,
"component": "Component1",
"component_id": 34533,
"tag": "hostname",
"value": "ru-vmmini",
"extra": "",
"internal": 0
},
{
"id": 799116,
"component": "Component1",
"component_id": 34533,
"tag": "password",
"value": "wK5Vjwx_BC",
"extra": "",
"internal": 0
},
{
"id": 799128,
"component": "Component1",
"component_id": 34533,
"tag": "OS",
"value": "Ubuntu 22.04",
"extra": "",
"internal": 0
},
{
"id": 799132,
"component": "Component1",
"component_id": 34533,
"tag": "user_name",
"value": "root",
"extra": "",
"internal": 0
},
{
"id": 799137,
"component": "Component1",
"component_id": 34533,
"tag": "webpanel",
"value": "ispmanager6",
"extra": "https://isp34533.hostkey.in:1500/ispmgr",
"internal": 0
}
],
"preset": "vm.mini",
"preset_description": "VM instance 4/4/60 SSD"
}
eq/update_servers¶
Обновляет список активных серверов. Если клиент заказал или освободил сервер, необходимо обновить список серверов. Это действие снова проверит инвентарь и обновит токен с текущим списком серверов.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | update_servers | ключевое действие - обновление списка активных серверов. |
token | * | string | сессионный токен |
POST-запрос, cURL
Управление питанием сервера¶
Управление серверами без ОС осуществляется через внешний модуль IPMI. Виртуальные машины oVirt управляются через стандартный API.
Ресурс | Действие | Описание |
---|---|---|
eq.php | status | получение статуса питания |
eq.php | sensors | получение данных датчиков (только для физических серверов) |
eq.php | on | включение питания |
eq.php | off | выключение питания |
eq.php | reboot | перезагрузка сервера |
eq/status¶
Позволяет получить статус питания сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | status | ключевое действие - получение статуса питания |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
eq/sensors (только для физических серверов)¶
Позволяет получить данные с датчиков физического сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | sensors | ключевое действие- получение данных датчиков |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
{
"result": "OK",
"scope": "CPU Temp | 36 degrees C | ok\nPCH Temp | 37 degrees C | ok\nSystem Temp | 25 degrees C | ok\nPeripheral Temp | 33 degrees C | ok\nVcpuVRM Temp | 34 degrees C | ok\nVmemABVRM Temp | 31 degrees C | ok\nVmemCDVRM Temp | 30 degrees C | ok\nP1-DIMMA1 Temp | 26 degrees C | ok\nP1-DIMMB1 Temp | 26 degrees C | ok\nP1-DIMMC1 Temp | no reading | ns\nP1-DIMMD1 Temp | no reading | ns\nFAN | 3100 RPM | ok\n12V | 12.06 Volts | ok\n5VCC | 5.08 Volts | ok\n3.3VCC | 3.33 Volts | ok\nVBAT | 3.00 Volts | ok\nVcpu | 1.84 Volts | ok\nVDIMMAB | 1.22 Volts | ok\nVDIMMCD | 1.22 Volts | ok\n5VSB | 5.10 Volts | ok\n3.3VSB | 3.27 Volts | ok\n1.5V PCH | 1.53 Volts | ok\n1.2V BMC | 1.23 Volts | ok\n1.05V PCH | 1.06 Volts | ok\nPS Status | 0x01 | ok\n",
"context": {
"action": "get_sensors",
"id": "ID сервера",
"location":"RU"
},
"debug":"CPU Temp | 36 degrees C | okPCH Temp | 37 degrees C | okSystem Temp | 25 degrees C | okPeripheral Temp | 33 degrees C | okVcpuVRM Temp | 34 degrees C | okVmemABVRM Temp | 31 degrees C | okVmemCDVRM Temp | 30 degrees C | okP1-DIMMA1 Temp | 26 degrees C | okP1-DIMMB1 Temp | 26 degrees C | okP1-DIMMC1 Temp | no reading | nsP1-DIMMD1 Temp | no reading | nsFAN | 3100 RPM | ok12V | 12.06 Volts | ok5VCC | 5.08 Volts | ok3.3VCC | 3.33 Volts | okVBAT | 3.00 Volts | okVcpu | 1.84 Volts | okVDIMMAB | 1.22 Volts | okVDIMMCD | 1.22 Volts | ok5VSB | 5.10 Volts | ok3.3VSB | 3.27 Volts | ok1.5V PCH | 1.53 Volts | ok1.2V BMC | 1.23 Volts | ok1.05V PCH | 1.06 Volts | okPS Status | 0x01 | ok",
"key":"f685eaa0f06e47faa2e6bb5002828b00"
}
eq/on¶
Позволяет включить питание сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | on | ключевое действие - включение питания |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
eq/off¶
Позволяет выключить питание сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | off | ключевое действие - Выключение питания |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
eq/reboot¶
Позволяет выполнить перезагрузку сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | reboot | ключевое действие - перезагрузка сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
//ошибка не сработало для виртуалки.
Переустановка операционной системы на сервере (второй вариант)¶
Данный вариант переустановки используется для серверов, у которых не получилось выполнить переустановку первым способом.
Мы используем Foreman для развертывания серверов через сетевую загрузку PXE. Процесс установки проходит в несколько этапов:
- Создать ключ этапа переустановки (опционально) через eq/reinstall;
- Создать конфигурацию PXE с параметрами через eq/create_pxe;
- Изменить порядок загрузки сервера через eq/bootdev. Он должен запускаться с PXE;
- Перезагрузить сервер через eq/reboot;
- Сервер “поймает” загрузчик PXE и установка ОС продолжится;
- ОС сообщит об этапах установки:
- 1-й этап: начата установка ОС;
- 2 этап: базовая ОС установлена, переходим к постустановочным задачам;
- 3-й этап: постустановочные задачи выполнены, запущены финальные задачи;
- 4-й этап: завершение установки, перезапуск сервера;
- 5-й этап: сервер онлайн;
- После установки ОС следует изменить порядок загрузки через eq/bootdev. Сервер должен загружаться с жесткого диска;
- Запуск дополнительных задач Jenkins на сервере (т.е. установить драйверы графического процессора);
- Удалить конфигурацию PXE через eq/clear_pxe. Это действие позволит избежать внезапной переустановки.
Ресурс | Действие | Описание |
---|---|---|
eq.php | reinstall | создание мастер-ключа для переустановки ОС |
os.php | list | получение списка ОС для сервера |
jenkins.php | list | получение доступных задач Ansible |
eq.php | create_pxe | создание конфигурации PXE для установки ОС |
eq.php | boot_dev | устанавливает порядок загрузки для виртуальной машины или физического сервера |
eq.php | reboot | перезагрузка сервера |
eq/reinstall¶
Позволяет создать мастер-ключ $REINSTALL_KEY
для переустановки операционной системы.
Примечание
Мастер-ключ необходим для автоматизации процесса установки. Он позволяет отслеживать этапы переустановки ОС, так как на этот ключ будут идти все оповещения об этапах установки ОС через асинхронные ответы. Этот ключ также потребуется для вызова eq/create_pxe.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | string | reinstall | ключевое действие - создание мастер-ключа для переустановки ОС | |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
Примечание
Информацию обо всех этапах переустановки можно получить через вызов eq_callback/check.
eq_callback/check¶
Получение информации обо всех этапах переустановки ОС.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | string | сheck | ключевое действие - получение информации об этапе переустановки ОС | |
reinstall_key | string | ключ из eq/reinstall для отслеживания этапов переустановки |
POST-запрос, cURL
Пример положительного ответа
{
"result":"Stage", // информативное сообщение о прогрессе процесса установки
"scope":" (1\/5) OS installation started", // информация об этапе
"context":{"action":"reinstall","id":"42253","location":"RU"}, // данные установки (основное действие, ID сервера и локация)
"key":"aa719bfc59c3626c059950c1dcb4dbfa" // ключ переустановки
}
Действия перед началом установки¶
Перед началом переустановки, необходимо собрать некоторую обязательную информацию.
-
Получить список возможных к установке операционных систем с помощью вызова os_list
Внимание
Перед началом переустановки также необходимо выбрать имя хоста и пароль.
-
Выбрать способ организации данных (разбиения диска):
- LVM_RAID0 - создать полосу на всех дисках через LVM;
- LVM_HBA - если имеется более 1 устройства хранения, следует установить ОС на самое маленькое устройство и оставить остальные нетронутыми;
- LVM_RAID1 - создать зеркало диска через LVM, применимо, если есть два одинаковых устройства хранения;
- LVM_RAID10 - создать LVM RAID10 для всех пар устройств хранения, требуется минимум 2 пары устройств;
- LVM_RAID10S - создать LVM RAID1 на наименьшей паре устройств хранения для ОС, создать LVM RAID10 на остальных парах устройств хранения.
-
Приготовить Public ssh key если вы хотите установить свой SSH-ключ для входа администратора.
-
Продумать Post-install task - стандартизированные задачи Ansible, которые можно запускать на сервере после установки через Jenkins. Их список можно получить через вызов jenkins/get_tasks.
jenkins/get_tasks¶
Позволяет получить все возможные задачи Ansible с их тегами. Эти данные можно загрузить в переменные JS и показать их для соответствующих серверов - проверка по тегам.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_tasks | ключевое действие - получение доступных задач Ansible |
Возможные теги:
- gpu - задача подходит для GPU серверов;
- bm - задача подходит для физического сервера;
- vm - задача подходит для ВМ (VPS);
- vgpu - задача подходит для vGPU сервера;
- default - значение по умолчанию.
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"tasks": [{
"id": -1,
"task": "",
"desc": "Do nothing",
"tag": "",
"tags": [{
"tag": "gpu"
}, {
"tag": "vgpu"
}, {
"tag": "vm"
}, {
"tag": "bm"
}]
}, {
"id": 1,
"task": "invapi_gpu_conf_iommu_patch_gpu_linux_auto.dsl", // название задачи
"desc": "Install GPU drivers", // понятное человеку описание
"tag": "gpu_driver", // вариант задачи
"tags": [{ // теги для фильтрации вывода в пользовательском интерфейсе
"tag": "gpu"
}, {
"tag": "vgpu"
}, {
"tag": "default"
}]
}, {
"id": 2,
"task": "invapi_gpu_conf_iommu_patch_gpu_linux_auto.dsl",
"desc": "Install GPU drivers + NVIDIA docker",
"tag": "gpu_driver_docker",
"tags": [{
"tag": "gpu"
}, {
"tag": "vgpu"
}]
}, {
"id": 3,
"task": "invapi_gpu_conf_iommu_patch_gpu_linux_auto.dsl",
"desc": "Install GPU drivers + NVIDIA docker + IOMMU patch",
"tag": "gpu_driver_docker_iommu",
"tags": [{
"tag": "gpu"
}, {
"tag": "vgpu"
}]
}]
}
Post-install script - часть кода bash/PS, которая будет выполняться при первом запуске новой ОС. Полезно для автоматизации управления новым сервером.
Post-install callback URL - URL, который будет вызываться с сервера после установки. Может быть полезно для выставления счетов.
После указания всех данных, можно создать конфигурацию PXE для установки ОС.
eq/create_pxe¶
Создает конфигурацию PXE для установки ОС.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | create_pxe | ключевое действие - создание конфигурации PXE для установки ОС |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код | |
os_id | * | int | выбранный ID ОС из os/list | |
root_pass | * | string | пароль администратора. Длина и содержание должны соответствовать политике безопасности — не менее 8 символов, с включением цифр и заглавных букв | |
hostname | * | string | требуемое имя хоста | |
ssh_key | string | открытый ssh-ключ (необязательно) | ||
post_install_callback | string | URL-адрес для вызова после завершения установки | ||
post_install_script | string | постустановочный скрипт для запуска | ||
reinstall_key | string | $REINSTALL_KEY из eq/reinstall для отслеживания этапов переустановки |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=create_pxe" \
--data "token=$HOSTKEY_TOKEN" \
--data "email=" \
--data "pin={PIN}" \
--data "id={ID сервера}" \
--data "os_id={ID операционной системы}" \
--data "root_pass={пароль root}" \
--d--data "hostname={Имя хоста}" \
--data "ssh_key={открытый SSH ключ}" \
--data "post_install_callback=" \
--data "post_install_script=" \
--data "reinstall_key=$REINSTALL_KEY" \
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
Если ошибок не было, то необходимо установить порядок загрузки сервера на загрузку по сети через PXE с помощью вызова eq/boot_dev.
eq/boot_dev¶
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | boot_dev | ключевое действие - устанавливает порядок загрузки для виртуальной машины или физического сервера |
token | * | string | сессионный токен | |
pin | * | int | PIN-код | |
id | * | int | ID сервера | |
media | int | pxe для загрузки PXE, disk для загрузки с локального запоминающего устройства, cd для загрузки с подключенного компакт-диска (обычно через виртуальный носитель, IPMI |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
После успешного изменения порядка загрузки необходимо перезагрузить сервер с помощью вызова eq/reboot
Система перезагрузится и начнет загрузку с PXE. После загрузки установщика ОС будут видны уведомления об этапах — их можно получить с помощью основного ключа переустановки из eq/reinstall и вызова eq_callback/check.
Если eq_callback/check
выдает ОК, то сервер подключен к сети и переустановка завершена. Ключ переустановки будет удален из базы данных.
Теперь нужно выполнить постустановочные задачи:
- вернуть загрузку назад с диска с помощью eq/boot_dev с параметром
media=disk
Для этого действия есть соответствующий асинхронный ответ
- очистить конфигурацию PXE через вызов eq/clear_pxe.
Внимание
Следует обязательно очистить конфигурацию PXE. Это позволит избежать внезапных переустановок:
eq/clear_pxe¶
Очищает конфигурацию PXE.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | clear_pxe | ключевое действие - очистить конфигурацию PXE |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
hostname | * | string | имя хоста |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
Сетевые операции¶
Ресурс | Действие | Описание |
---|---|---|
net.php | get_status | Получение статуса интерфейса |
net.php | port_off | Отключение интерфейса |
net.php | port_on | Включение интерфейса |
net.php | show_cacti | Показ графиков скорости портов |
ip.php | show_cacti | Получение информации об IP |
ip.php | get_ptr | Получение PTR-записи для IP |
ip.php | update_ptr | Обновление PTR-записи для IP |
ip.php | set_main | Установка параметров IP для сервера |
net.php | block_ip | Блокировка определенного IP |
net.php | unblock_ip | Разблокировка определенного IP |
net/get_status¶
Позволяет получить статус сетевого интерфейса.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_status | ключевое действие — получение статуса интерфейса |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код | |
port | string | коммутатор физического порта | ||
switch | string | ID и адрес коммутатора | ||
vlan | int | номер VLAN, если есть | ||
speed | string | скорость физического интерфейса | ||
status | string | статус интерфейса, подключен или нет | ||
mac | string | информация о mac-адресе, если есть | ||
port_security | string | максимально допустимые MAC-адреса на порту, если таковые имеются | ||
shape | string | ограничения скорости порта, если таковые имеются |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
{
"result": "OK",
"scope": "{\"switch\":\"virtual\",\"port\":\"virtual\",\"vlan\":\"v415\",\"speed\":\"1000\",\"status\":\"connected\",\"mac\":[\"56:6f:ff:5b:08:7b\"],\"port_security\":\"\",\"shape\":\"\",\"interface\":\"eth0\"}", // описание интерфейса
"context": {
"action": "get_status",
"id": "34533",
"location": "RU",
"ip_ipmi": "0.0.0.0",
"interface_id": "eth0",
"port": "eth0" // коммутатор физического порта
},
"debug": "get status port via Ovirt API",
"key": "a1bc5aebbfb62a8350020d9da42e1c1e"
}
net/port_off¶
Позволяет отключить сетевой порт.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | port_off | ключевое действие — отключение интерфейса |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код | |
port | * | string | коммутатор физического порта |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
net/port_on¶
Позволяет включить сетевой порт.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | port_on | ключевое действие — включение интерфейса |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код | |
port | * | string | коммутатор физического порта |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
net/show_cacti¶
Позволяет получить график скорости портов за период.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | show_cacti | ключевое действие — показывает графики скорости портов |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
pin | * | int | PIN-код | |
port | * | string | коммутатор физического порта | |
graph | * | string | значения графика: 1 - для дневных, 2 - для месячных, 3 - для годовых графиков |
POST-запрос, cURL
Пример положительного ответа
изображение графика трафика.
Пример ответа при ошибке :
ip/get_ip¶
Позволяет получить информацию о сетевом интерфейсе по IP-адресу.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_ip | ключевое действие — получение информации об IP |
token | * | string | сессионный токен | |
ip | * | int | IP-адрес |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/ip.php" -X POST \
--data "action=get_ip" \
--data "token=$HOSTKEY_TOKEN" \
--data "ip={IP-aдрес}" \
Пример положительного ответа
ip/get_ptr¶
Позволяет получить PTR запись для заданного IP-адреса
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_ptr | ключевое действие — получение PTR-записи для IP |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
ip | * | int | IP-адрес |
POST-запрос, cURL
ip/update_ptr¶
Позволяет обновить PTR-записи для для заданного IP-адреса.
Примечание
Для IP разрешено иметь более одной обратной записи. Предоставление нескольких обратных записей может быть выполнено с помощью разделителя %0A
.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | update_ptr | ключевое действие — обновление PTR-записи для IP |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
ip | * | int | IP-адрес | |
ptr | * | string | PTR-запись |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/ip.php" -X POST \
--data "action=update_ptr" \
--data "token=$HOSTKEY_TOKEN" \
--data "id={ID сервера}" \
--data "ip={IP-адрес}" \
--data "ptr={PTR-запись}" \
ip/set_main¶
Позволяет пометить конкретный IP-адрес как «основной» если серверу назначено несколько IP-адресов.
Внимание
Конфиг будет создан только для основного IP-адреса.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | set_main | ключевое действие — установка параметров IP для сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
ip | * | int | IP-адрес | |
main | * | int | IP-адрес, который будет установлен в качестве основного |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/ip.php" -X POST \
--data "action=set_main" \
--data "token=$HOSTKEY_TOKEN" \
--data "id={ID сервера}" \
--data "ip={IP-адрес}" \
--data "main={основной IP-адрес}"
net/block_ip¶
Позволяет заблокировать определенный IP-адрес на сервере, это полезно для управления запросами о нарушениях. Блокировка осуществляется на сетевом уровне HOSTKEY.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | block_ip | ключевое действие — блокировка определенного IP |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
ip | * | int | IP-адрес | |
pin | * | int | PIN-код | |
description | * | string | описание причины блокировки | |
four_hours | int | если установлено значение 1 , то продолжительность блокировки составит 4 часа |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
net/unblock_ip¶
HTTP-метод - POST
Позволяет разблокировать заблокированный ранее IP-адрес на сервере.
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | unblock_ip | ключевое действие — разблокировка IP |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
ip | * | int | IP-адрес | |
pin | * | int | PIN-код |
POST-запрос, cURL
Пример положительного ответа
Для этого действия есть соответствующий асинхронный ответ
Управление DNS-зонами¶
Ресурс | Действие | Описание |
---|---|---|
pdns.php | list_domains | получение всех доменов пользователя из таблицы domains |
pdns.php | add_domain | добавление нового домена в таблицу domains для пользователя |
pdns.php | delete_domain | удаление домена из таблицы domains |
pdns.php | list_subdomains | получение всех поддоменов из таблицы subdomains |
pdns.php | add_subdomain | добавление нового поддомена в таблицу subdomains для пользователя |
pdns.php | edit_subdomain | обновление указанного поддомена |
pdns.php | delete_subdomain | удаление поддомена из таблицы subdomains |
pdns.php | list_zones | получение списка всех зон на сервере PowerDNS |
pdns.php | view_zone | получение данных для зоны с авторитетного сервера PowerDNS |
pdns.php | add_zone | добавление зоны |
pdns.php | delete_zone | удаление зоны, всех прикрепленных метаданных и записей ресурсов из авторитетного сервера PowerDNS |
pdns.php | add_dns | добавление новой DNS записи в указанную DNS зону |
pdns.php | delete_dns | удаление DNS записи с авторитетного сервера PowerDNS |
pdns/list_domains¶
Позволяет получить список доменов пользователя.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_client | ключевое действие - получение всех доменов пользователя из таблицы domains |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
pdns/add_domain¶
Позволяет создать новую DNS зону и добавляет новый домен в таблицу domains.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add_domain | ключевое действие - добавление нового домена в таблицу domains для пользователя |
token | * | string | сессионный токен | |
name | * | string | имя домена |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/pdns.php" -X POST \
--data "action=add_domain \
--data "token=$HOSTKEY_TOKEN" \
--data "name={ИМЯ ДОМЕНА}" \
//ошибка Ввыдает invalid token для верного токена
Пример положительного ответа
pdns/delete_domain¶
Позволяет удалить соответствующую DNS зону, сам домен из таблицы domains и все поддомены данного домена из таблицы subdomains по ID домена.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | get_client | ключевое действие - удаление домена из таблицы domains |
token | * | string | сессионный токен | |
server_id | * | int | ID сервера | |
domain_id | * | int | ID домена (можно посмотреть через вызов pdns/list_domains |
POST-запрос, cURL
Пример положительного ответа
pdns/list_subdomains¶
Позволяет получить список поддоменов домена по его ID.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list_subdomains | ключевое действие - получение всех поддоменов из таблицы subdomains |
token | * | string | сессионный токен | |
server_id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
pdns/add_subdomain¶
Позволяет добавить новый поддомен в таблицу subdomains.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add_subdomain | ключевое действие - добавление нового поддомена в таблицу subdomains для пользователя |
token | * | string | сессионный токен | |
server_id | * | int | ID сервера | |
domain_id | * | int | ID домена | |
name | * | string | имя поддомена |
POST-запрос, cURL
Пример положительного ответа
pdns/edit_subdomain¶
Позволяет обновить указанный поддомен.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | edit_subdomain | ключевое действие - обновление указанного поддомена |
token | * | string | сессионный токен | |
id | * | int | ID поддомена |
POST-запрос, cURL
Пример положительного ответа
pdns/delete_subdomain¶
Позволяет удалить поддомен из таблицы subdomains.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | delete_subdomain | ключевое действие - удаление поддомена из таблицы subdomains |
token | * | string | сессионный токен | |
server_id | * | int | ID сервера | |
id | * | int | ID поддомена |
POST-запрос, cURL
Пример положительного ответа
pdns/list_zones¶
Позволяет получить список всех зон на сервере PowerDNS.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list_zones | ключевое действие - получение списка всех зон на сервере PowerDNS |
token | * | string | сессионный токен |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"module": "pdns",
"action": "list_zones",
"data": [
{
"account": "",
"dnssec": false,
"edited_serial": 2018041900,
"id": "hostbuy.ru.",
"kind": "Master",
"last_check": 1612322161,
"masters": [
"141.105.71.185"
],
"name": "hostbuy.ru.",
"notified_serial": 2018041900,
"serial": 2018041900,
"url": "/api/v1/servers/localhost/zones/hostbuy.ru."
},
…
],
}
pdns/view_zone¶
Позволяет получить данные для зоны с авторитетного сервера PowerDNS.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | view_zone | ключевое действие - получение данных для зоны с авторитетного сервера PowerDNS. |
token | * | string | сессионный токен | |
zone | * | string | название зоны |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"module": "pdns",
"action": "view_zone",
"data": [
{
"account": "",
"api_rectify": false,
"dnssec": false,
"edited_serial": 2023101604,
"id": "aaa.com.",
"kind": "Master",
"last_check": 0,
"master_tsig_key_ids": [],
"masters": [],
"name": "aaa.com.",
"notified_serial": 2023101604,
"nsec3narrow": false,
"nsec3param": "",
"rrsets": [
{
"comments": [],
"name": "tesrt._domainkey.aaa.com.",
"records": [
{
"content": "\"v=DKIM1; p=dsdsdsd\"",
"disabled": false
}
],
"ttl": 3600,
"type": "TXT"
},
…
],
"serial": 2023101604,
"slave_tsig_key_ids": [],
"soa_edit": "",
"soa_edit_api": "DEFAULT",
"url": "/api/v1/servers/localhost/zones/aaa.com."
},
…
],
}
pdns/add_zone¶
Позволяет добавить новую DSN-зону
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add_zone | ключевое действие - добавление зоны |
name | * | string | example.com | название домена |
rrsets | * | bool | true | использовать RRset вместо записей |
dnssec | * | bool | false | использовать DNSSEC |
kind | * | string | Master | тип домена: Master/Slave |
masters | * | array | [] | список мастер-серверов |
dns | * | object | параметры DNS | |
- ttl | * | int | 3600 | TTL по умолчанию |
- mname | * | string | ns1.example.com | доменное имя primary NS |
- rname | * | string | admin.example.com | E-mail администратора |
- serial | * | int | 2023122800 | серийный номер зоны. Рекомендуем ставить в формате ГГГГММДД00 |
- refresh | * | int | 14400 | время обновления зоны |
- retry | * | int | 3600 | интервал повтора запроса |
- expire | * | int | 604800 | время истечения зоны |
- minimum | * | int | 3600 | мин. значение TTL |
nameservers | * | array | [ns1.hostkey.com, ns2.hostkey.com] | список NS серверов |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/pdns.php" -X POST \
--data "action=add_zone" \
--data "token=$HOSTKEY_TOKEN" \
--data "server_id={ID сервера}" \
--data "zonename=example.com" \
--data "rrsets=true" \
--data "dnssec=false" \
--data "kind=master" \
--data "masters[]=[]" \
--data "dns[ttl]=3600" \
--data "dns[mname]=ns1.hostkey.com" \
--data "dns[rname]=admin.example.com" \
--data "dns[serial]=2023101800" \
--data "dns[refresh]=14400" \
--data "dns[retry]=3600" \
--data "dns[expire]=604800" \
--data "dns[minimum]=3600" \
--data "nameservers[]=ns1.hostkey.com" \
--data "nameservers[]=ns1.hostkey.com"
Пример положительного ответа
{
"result": "OK",
"module": "pdns",
"action": "view_zone",
"data": [
{
"account": "",
"api_rectify": false,
"dnssec": false,
"edited_serial": 2023101604,
"id": "aaa.com.",
"kind": "Master",
"last_check": 0,
"master_tsig_key_ids": [],
"masters": [],
"name": "aaa.com.",
"notified_serial": 2023101604,
"nsec3narrow": false,
"nsec3param": "",
"rrsets": [
{
"comments": [],
"name": "tesrt._domainkey.aaa.com.",
"records": [
{
"content": "\"v=DKIM1; p=dsdsdsd\"",
"disabled": false
}
],
"ttl": 3600,
"type": "TXT"
},
…
],
"serial": 2023101604,
"slave_tsig_key_ids": [],
"soa_edit": "",
"soa_edit_api": "DEFAULT",
"url": "/api/v1/servers/localhost/zones/aaa.com."
},
…
],
}
pdns/delete_zone¶
Позволяет удалить DNS-зону по ее имени.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | delete_zone | ключевое действие - удаление зоны, всех прикрепленных метаданных и записей ресурсов из авторитетного сервера PowerDNS. |
token | * | string | сессионный токен | |
zone | * | string | название зоны |
POST-запрос, cURL
Пример положительного ответа
pdns/add_dns¶
Позволяет добавить новую DNS запись в указанную DNS зону.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | delete_zone | ключевое действие - добавление новой DNS записи в указанную DNS зону. |
token | * | string | сессионный токен | |
zone | * | string | example.com | имя добавляемой DNS зоны |
name | string | www | имя добавляемой DNS записи | |
old_name | string | старое имя DNS записи при изменении, используется для изменения существующей записи | ||
type | * | string | A | тип добавляемой DNS записи |
content | * | string | 10.56.121.5 10.56.121.6 | значение/данные для DNS записи |
ttl | int | 3600 | время кэширования в секундах | |
increase_soa_serial | bool | 1 | флаг для автоматического увеличения serial в SOA записи зоны | |
mname | * | string | ns1.example.com | имя первичного DNS сервера в SOA записи |
rname | * | string | admin.example.com | электронная почта администратора в SOA записи |
serial | int | 2023101800 | серийный номер в SOA записи | |
refresh | int | 14400 | время обновления в секундах в SOA записи | |
retry | int | 3600 | интервал повтора в секундах в SOA записи | |
expire | int | 604800 | время истечения в секундах в SOA записи | |
minimum | int | 3600 | минимальное время кэширования в секундах в SOA записи | |
proto | string | tcp | протокол для SRV записи | |
priority | int | 10 | приоритет для SRV записи | |
weight | int | 5 | размер для балансировки в SRV записи | |
port | int | 450 | порт целевой службы в SRV записи | |
target | string | example.com. | домен целевой службы в SRV записи | |
masters | array | [] | список внешних мастер серверов зоны | |
dns[ttl] | int | 3600 | проверка ttl в SOA записи | |
dns[mname] | string | ns1.example.com | проверка primary NS в SOA записи | |
dns[rname] | string | admin.example.com | проверка email в SOA записи | |
dns[serial] | int | 2023101800 | проверка serial в SOA записи | |
dns[refresh] | int | 14400 | проверкае refresh в SOA записи | |
dns[retry] | int | 3600 | проверка retry в SOA записи | |
dns[expire] | int | 604800 | проверка expire в SOA записи | |
dns[minimum] | int | 3600 | проверка minimum в SOA записи | |
nameservers[] | array | ns1.example.com | список NS серверов зоны |
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/pdns.php" -X POST \
--data "action=add_zone" \
--data "token=$HOSTKEY_TOKEN" \
--data "zone=example.com"
--data "name=www"
--data "old_name="
--data "type=A"
--data "content=10.56.121.5 10.56.121.6"
--data "ttl=3600"
--data "increase_soa_serial=1"
--data "mname=ns1.example.com"
--data "rname=admin.example.com"
--data "serial=2023101800"
--data "refresh=14400"
--data "retry=3600"
--data "expire=604800"
--data "minimum=3600"
--data "proto=tcp"
--data "priority=10"
--data "weight=5"
--data "port=450"
--data "target=example.com."
--data "masters=[]"
--data "dns[ttl]=3600"
--data "dns[mname]=ns1.example.com"
--data "dns[rname]=admin.example.com"
--data "dns[serial]=2023101800"
--data "dns[refresh]=14400"
--data "dns[retry]=3600"
--data "dns[expire]=604800"
--data "dns[minimum]=3600"
--data "nameservers[]=ns1.example.com"
--data "nameservers[]=ns1.example.com"
Пример положительного ответа
pdns/delete_dns¶
Позволяет удалить определенную DNS-запись из DNS-зоны.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | delete_dns | ключевое действие - удаление DNS записи с авторитетного сервера PowerDNS. |
token | * | string | сессионный токен | |
zone | * | string | название зоны | |
name | * | string | имя записи | |
type | * | string | тип записи |
POST-запрос, cURL
Пример положительного ответа
Удаленные руки¶
Некоторые сервера не имеют модуля дистанционного управления. Наша дежурная смена может выполнить необходимые действия для подключения внешнего IP KVM к серверу. Заказать услугу можно через API (Remote Hand Request — RHR).
Ресурс | Действие | Описание |
---|---|---|
jira.php | request_pon | создание RHR для включения сервера |
jira.php | request_poff | создание RHR для выключения сервера |
jira.php | request_reboot | создание RHR для перезагрузки сервера |
jira.php | request_PXEboot | создание RHR для загрузки сервера с PXE |
jira.php | request_kvm | создание RHR на подключение IP KVM к серверу |
jira.php | request_check | создание RHR для проверки и загрузки сервера в ОС |
Каждое действие создаст тикет в JIRA (ID тикета) с темой и сообщением от имени клиента, доступный через
https://my.hostkey.ru/servicedesk/customer/portal/1/ID тикета
Клиент получит сообщение с подтверждением на электронную почту. После того, как запрошенное действие будет выполнено, дежурная смена свяжется с клиентом через тикет.
jira/request_pon¶
Создает запрос на ручное включение сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_pon | ключевое действие - создание RHR для включения сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/on",
"subject": "CP request: Manual power ON the server SERVER_ID please",
"message": "Dear HOSTKEY support, please power on the server SERVER_ID since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.",
"msg": {
"action": "request_pon",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
jira/request_poff¶
Создает запрос на ручное выключение сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_poff | ключевое действие - создание RHR, чтобы выключить сервер |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/off",
"subject": "CP request: Manual power OFF the server SERVER_ID please",
"message": "Dear HOSTKEY support, please power off the server SERVER_ID since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.",
"msg": {
"action": "request_poff",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
jira/request_reboot¶
Создает запрос на ручную перезагрузку сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_reboot | ключевое действие - создание RHR для перезагрузки сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/reboot",
"subject": "CP request: Manual REBOOT the server SERVER_ID please",
"message": "Dear HOSTKEY support, please reboot the server SERVER_ID since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.",
"msg": {
"action": "request_reboot",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
jira/request_PXEboot¶
Создает запрос для загрузки сервера с PXE.
Примечание
Этот запрос требуется во время процесса переустановки. Сервер без модуля удаленного управления должен быть загружен с PXE.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_PXEboot | ключевое действие - создание RHR для загрузки сервера с PXE. |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/PXEboot",
"subject": "CP request: Manual boot from PXE the server SERVER_ID please",
"message": "Dear HOSTKEY support, please set PXE boot the server SERVER_ID since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.",
"msg": {
"action": "request_PXEboot",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
jira/request_kvm¶
Создает запрос на ручное подключение IP KVM к серверу.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_kvm | ключевое действие - создание RHR на подключение IP KVM к серверу. Дежурная смена подключит IP KVM-устройство к серверу |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/kvm",
"subject": "CP request: KVM to the server SERVER_ID please",
"message": "Dear HOSTKEY support, please connect KVM module to the server SERVER_ID since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.”,
"msg": {
"action": "request_kvm",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
jira/request_check¶
Создает запрос на ручную проверку работоспособности сервера и загрузки операционной системы.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | request_check | ключевое действие - создание RHR для проверки и загрузки сервера в ОС. Дежурная смена проверит сервер |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": {
"permission": "eq/check",
"subject": "CP request: Manual check the server SERVER_ID please",
"message": "Dear HOSTKEY support, please check the server SERVER_ID and boot in into OS since it doesn't have remote control. \n This is automated message from INVAPI, no extra verification required.",
"msg": {
"action": "request_check",
"id": ID сервера,
"callback_url": "https://invapi.hostkey.ru/eq_callback.php",
"callback_key": ""
}
},
"jira_url": "https://my.hostkey.ru/servicedesk/customer/portal/1/ID_ТИКЕТА",
"jira_issue": "ID_ТИКЕТА"
}
Теги оборудования¶
Вспомогательную и временную информацию о серверах и их компонентах мы храним в тегах. Теги могут быть присвоены любому элементу сервера. Некоторые теги видны конечному пользователю, некоторые нет.
Ресурс | Действие | Описание |
---|---|---|
tags.php | list | получение всех тегов для сервера |
tags.php | add | добавление тега на сервер или изменение существующего тега |
tags.php | remove | удаление тега |
tags.php | user_search | поиск серверов с определенными тегами |
Примечание
Тег может быть подключен к самому серверу, к его ЦП, к сетевой карте, или к IP-адресу - к любому компоненту БД. Клиент может назначать собственные теги через API (и веб-интерфейс). Теги можно искать, изменять или удалять.
Может быть полезно хранить некоторые данные автоматизации, пользовательские настройки или состояния приложения в тегах.
tags/list¶
Позволяет получить список всех тэгов для конкретного сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | list | ключевое действие - получение всех тегов для конкретного сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера |
POST-запрос, cURL
Пример положительного ответа
{
"result": "OK",
"action": "list",
"tags": [
{
"id": 799108,
"component": "Component1",
"component_id": 34533,
"tag": "order_origin",
"value": "invapi",
"extra": "1",
"internal": 0
},
{
"id": 799112,
"component": "Component1",
"component_id": 34533,
"tag": "hostname",
"value": "ru-vmmini",
"extra": "",
"internal": 0
},
{
"id": 799116,
"component": "Component1",
"component_id": 34533,
"tag": "password",
"value": "wK5Vjwx_BC",
"extra": "",
"internal": 0
},
{
"id": 799128,
"component": "Component1",
"component_id": 34533,
"tag": "OS",
"value": "Ubuntu 22.04",
"extra": "",
"internal": 0
},
{
"id": 799132,
"component": "Component1",
"component_id": 34533,
"tag": "user_name",
"value": "root",
"extra": "",
"internal": 0
},
{
"id": 799137,
"component": "Component1",
"component_id": 34533,
"tag": "webpanel",
"value": "ispmanager6",
"extra": "https://isp34533.hostkey.in:1500/ispmgr",
"internal": 0
}
]
}
tags/add¶
Позволяет добавить новый или изменить существующий тег для сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | add | ключевое действие - добавление тега на сервер или изменение существующего тега |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
tag | * | string | сам тег, имя тега | |
value | * | string | значение тега | |
extra | string | дополнительное значение тега, если необходимо сохранить несколько значений |
Пример добавления тега на сервер, POST-запрос, cURL
Пример положительного ответа
Пример изменения существующего тега, POST-запрос, cURL
Пример положительного ответа
tags/remove¶
Позволяет удалить существующий тег для сервера.
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | remove | ключевое действие - удаление тега для сервера |
token | * | string | сессионный токен | |
id | * | int | ID сервера | |
tag | * | string | название тега |
POST-запрос, cURL
Пример положительного ответа
tags/user_search¶
HTTP-метод - POST
Параметр | Обязательный параметр | Тип | Значение/по умолчанию | Описание |
---|---|---|---|---|
action | * | string | user_search | ключевое действие - поиск id серверов с именем тега или его значением |
token | * | string | сессионный токен | |
value | * | string | условия поиска |
POST-запрос, cURL
Асинхронные действия¶
Некоторые операции с серверами могут занять много времени. Ряд вызовов API возвращают асинхронный ключ при вызове.
Шаг 1 Пример включения питания сервера,¶
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=on" \
--data "token=$HOSTKEY_TOKEN" \
--data "id={ID_сервера}" \
--data "pin={PIN код}"
Пример положительного ответа
Подобный ответ означает успешную отправку асинхронного запроса. Отследить его можно с помощью асинхронного ключа f685eaa0f06e47faa2e6bb5002828b00
.
Шаг 2. Отследить состояние запроса:¶
POST-запрос, cURL
curl -s "https://invapi.hostkey.ru/eq_callback.php" -X POST \
--data "action=check" \
--data "key=f685eaa0f06e47faa2e6bb5002828b00" //асинхронный ключ из запроса, на который дан ответ
Ответ при незавершенной задаче (Result: Not ready)
Ответ при завершенной задаче (Result: OK)
{
"result": "OK",
"scope": "Post is on",
"context": {
"action": "on",
"id": "ID_сервера",
"location": "RU"
},
"debug": "Chassis Power Control: Up/On",
"key": "f685eaa0f06e47faa2e6bb5002828b00"
}
Описание ключей:
- scope - сообщение пользователю;
- context - JSON с первоначальным запросом и некоторыми дополнительными данными. Полезно во время вызовов AJAX;
- debug - аппаратный вывод с устройства;
- key - асинхронный ключ. Удаляется после успешного ответа -
OK
.