auth.php¶
Модуль аутентификации и авторизации для платформы: управление сессиями, вход через WHMCS, API-ключи, SSO (Google, GitHub, VK), двухфакторная аутентификация и проверка токенов.
Методы API¶
| Метод | Действие | Описание |
|---|---|---|
info | получение информации о токене | Возвращает информацию о текущей сессии, правах доступа, привязанных серверах и статусе верификации клиента. |
login | вход по API ключу | Авторизация пользователя с использованием API ключа. Возвращает токен сессии и список доступных серверов. |
logout | завершение сессии | Очищает текущий токен доступа и завершает сессию пользователя. |
whmcslogin | вход через WHMCS | Авторизация через учетные данные WHMCS (email/пароль) или SSO. Поддерживает выбор биллинга и двухфакторную аутентификацию. |
auth/info¶
Возвращает информацию о текущей сессии, правах доступа, привязанных серверах и статусе верификации клиента.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: info |
| token | ✅ | string | Валидный токен сессии для проверки прав доступа. |
Пример запроса
curl -s "https://invapi.hostkey.ru/auth" -X POST \
--data "action=info" \
--data "token=HOSTKEY_TOKEN"
Пример успешного ответа
{
"result": {
"token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"role": "Customer",
"role_type": "Customer",
"email": "user@example.com",
"whmcs_id": "12345",
"whmcs_location": "RU",
"customer_id": "67890",
"servers": [
101,
102,
103
],
"permissions": [
"servers/list",
"servers/info",
"invoices/list"
],
"token_expire": 1735689600,
"verified": true,
"corporate": false,
"prebill": false,
"billing_options": {
"location": "RU",
"company": "HostKey Russia",
"active": true,
"allowed_payments": [
"cc",
"bank_transfer"
]
},
"private_ranges": [],
"private_vlans": [],
"default_lang": "ru",
"client_ip": "192.168.1.1",
"subaccount": null,
"show_products": 1,
"manage_products": 1,
"show_invoices": 1,
"manage_orders": 1,
"ipsubnet_announce": 1,
"edit_master_profile": 1,
"billing_servers": [],
"deploy_keys": {},
"pending": [],
"2fa": null
}
}
Примеры ошибок
{
"code": -2,
"message": "auth: invalid token #13",
"description": "Неверный или просроченный токен"
}
auth/login¶
Авторизация пользователя с использованием API ключа. Возвращает токен сессии и список доступных серверов.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: login |
| key | ✅ | string | API ключ клиента для авторизации. |
| ttl | ❌ | int | Время жизни токена в секундах (по умолчанию 3600). |
| base | ❌ | string | Базовый URL для панели управления (invapi). |
Пример запроса
Пример успешного ответа
{
"result": {
"token": "string",
"role": "string",
"role_type": "string",
"whmcs_id": "string",
"whmcs_location": "string",
"servers": [
201,
202
],
"invapi": "string",
"customer_id": "string",
"permissions": [
"string"
],
"token_expire": 1735693200,
"new": 1,
"prebill": 0
}
}
Примеры ошибок
auth/logout¶
Очищает текущий токен доступа и завершает сессию пользователя.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: logout |
| token | ✅ | string | Токен сессии, который необходимо удалить. |
Пример запроса
curl -s "https://invapi.hostkey.ru/auth" -X POST \
--data "action=logout" \
--data "token=HOSTKEY_TOKEN"
Пример успешного ответа
Примеры ошибок
auth/whmcslogin¶
Авторизация через учетные данные WHMCS (email/пароль) или SSO. Поддерживает выбор биллинга и двухфакторную аутентификацию.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: whmcslogin |
| user | ✅ | string | Email пользователя для входа (если не используется SSO). |
| password | ✅ | string | Пароль пользователя (если не используется SSO). |
| sso | ❌ | string | Идентификатор SSO провайдера (например, google, github). |
| sso_hash | ❌ | string | Хеш для SSO авторизации. |
| location | ❌ | string | Код локации биллинга (например, RU, EU). Если не указан, используется автовыбор. |
| ttl | ❌ | int | Время жизни токена в секундах. |
| full_customer_data | ❌ | string | Флаг для возврата полных данных клиента в ответе. |
| apikey | ❌ | string | API ключ для обхода 2FA (если разрешено). |
Пример запроса
curl -s "https://invapi.hostkey.ru/auth" -X POST \
--data "action=whmcslogin" \
--data "user=VALUE" \
--data "password=VALUE"
Пример успешного ответа
{
"result": {
"token": "q1w2e3r4t5y6u7i8o9p0a1s2d3f4g5h6",
"role": "Customer",
"role_type": "Customer",
"whmcs_id": "11223",
"whmcs_location": "RU",
"whmcs_token": "",
"permissions": [
"servers/list",
"invoices/list",
"profile/edit"
],
"corporate": 0,
"verified": "yes",
"token_expire": 1735696800,
"new": 1,
"country": "Russia",
"country_code": "RU",
"currency_code": "RUB",
"vat": "7700000000",
"VisitorID": "VIS123456",
"prebill": 0,
"billing_options": {
"location": "RU",
"company": "HostKey",
"active": true,
"allowed_payments": [
"cc",
"bank_transfer"
]
}
}
}