---
canonical: https://docs.ideco.ru/v22/ru/ngfw/api/user-personal-account-api
---



# ЛК/Портал SSL VPN

::: page-constructor
blocks:
  - type: content-layout-block
    textContent:
      buttons:
        - text: Классический VCE
          theme: action
          width: 'auto'
        - text: Документация
          theme: outlined
          url: https://docs.ideco.ru/v22/ru/ngfw/settings/services/user-personal-account
          width: 'auto'
    resetPaddings: false
    textWidth: l
    size: m
    centered: false
:::

## Управление правилами доступа

{% cut "Получение списка правил доступа" %}

```
GET /api/cabinet/rules
```

**Ответ на успешный запрос:**

```json5
[
    {
        "id": "string",
        "enabled": true | false,
        "title": "string",
        "sources": ["string"],
        "objects": ["string"],
        "action": ["allow" | "deny"],
        "resources": ["string"],
        "two_factor": "string",
        "comment": "string"
    },
    ...
]
```

* `id` - идентификатор правила;
* `enabled` - статус активности правила:
  * `true` - включено;
  * `false` - выключено.
* `title` - название правила, максимальная длина - 42 символа. Может быть пустым;
* `sources` - список источников подключения. Не может быть пустым. Допустимые значения:
  * `any` - любой источник подключения (если указан `any`, то других объектов в списке не должно быть);
  * `ip.id` - идентификатор объекта **IP-адрес**;
  * `ip_range.id` - идентификатор объекта **Диапазон IP-адресов**;
  * `subnet.id` - идентификатор объекта **Подсеть**;
  * `ip_address_list.id` - идентификатор объекта **Список IP-адресов**;
  * `iplist` - страна или континент;
  * `list_of_iplists.id` - идентификатор объекта **Список стран и континентов**;
  * `domain.id` - идентификатор объекта **Домен**.
* `objects` - список пользователей и групп, не может быть пустым. Допустимые значения:
  * `any` - любой объект (если указан `any`, то других объектов в списке не должно быть);
  * `user.id` - идентификатор пользователя;
  * `group.id` - идентификатор группы пользователей;
  * `security_group.guid` - идентификатор группы безопасности AD;
  * `ald_users_group.guid` - идентификатор группы пользователей ALD.
* `action` - действие:
  * `allow` - разрешить;
  * `deny` - запретить.
* `resources` - список идентификаторов ресурсов SSL VPN. Может быть пустым. Если в поле `action` указано `deny`, то поле `resources` должно быть пустым;
* `two_factor` - тип требуемой двухфакторной аутентификации, не может быть пустым. Должен быть `not_required`, если в поле `action` выбран `deny`. Допустимые варианты:
  * `smsaero` - аутентификация при помощи ввода кода из СМС;
  * `totp` - аутентификация сканированием QR-кода или использованием токена;
  * `multifactor` - аутентификация подтверждением личности в стороннем приложении;
  * `not_required` - двухфакторная аутентификация не требуется.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов.

{% endcut %}

{% cut "Добавление правила доступа" %}

```
POST /api/cabinet/rules?anchor_item_id=<string>&insert_after=<true|false>
```

**Параметры запроса:**

* `anchor_item_id` - идентификатор правила, ниже или выше которого нужно поместить перемещаемое правило;
* `insert_after` - вставить правило до или после:
  * `true` - вставить правило после указанного в `anchor_item_id`;
  * `false` - вставить правило на место указанного в `anchor_item_id`.

**Json-тело запроса:**

```json5
{
    "enabled": true | false,
    "title": "string",
    "sources": ["string"],
    "objects": ["string"],
    "action": ["allow" | "deny"],
    "resources": ["string"],
    "two_factor": "string",
    "comment": "string"
}
```

* `enabled` - статус активности правила:
  * `true` - включено;
  * `false` - выключено.
* `title` - название правила, максимальная длина - 42 символа. Может быть пустым;
* `sources` - список источников подключения. Не может быть пустым. Допустимые значения:
  * `any` - любой источник подключения (если указан `any`, то других объектов в списке не должно быть);
  * `ip.id` - идентификатор объекта **IP-адрес**;
  * `ip_range.id` - идентификатор объекта **Диапазон IP-адресов**;
  * `subnet.id` - идентификатор объекта **Подсеть**;
  * `ip_address_list.id` - идентификатор объекта **Список IP-адресов**;
  * `iplist` - страна или континент;
  * `list_of_iplists.id` - идентификатор объекта **Список стран и континентов**;
  * `domain.id` - идентификатор объекта **Домен**.
* `objects` - список пользователей и групп, не может быть пустым. Допустимые значения:
  * `any` - любой объект (если указан `any`, то других объектов в списке не должно быть);
  * `user.id` - идентификатор пользователя;
  * `group.id` - идентификатор группы пользователей;
  * `security_group.guid` - идентификатор группы безопасности AD;
  * `ald_users_group.guid` - идентификатор группы пользователей ALD.
* `action` - действие:
  * `allow` - разрешить;
  * `deny` - запретить.
* `resources` - список идентификаторов ресурсов SSL VPN. Может быть пустым. Если в поле `action` указано `deny`, то поле `resources` должно быть пустым;
* `two_factor` - тип требуемой двухфакторной аутентификации, не может быть пустым. Должен быть `not_required`, если в поле `action` выбран `deny`. Допустимые варианты:
  * `smsaero` - аутентификация при помощи ввода кода из СМС;
  * `totp` - аутентификация сканированием QR-кода или использованием токена;
  * `multifactor` - аутентификация подтверждением личности в стороннем приложении;
  * `not_required` - двухфакторная аутентификация не требуется.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов.

**Ответ на успешный запрос:**

```json5
{
    "id": "string"
}
```

* `id` - идентификатор правила.

{% endcut %}

{% cut "Изменение правила доступа" %}


```
PATCH /api/cabinet/rules/<id правила>
```

**Json-тело запроса (все или некоторые поля):**

```json5
{
    "enabled": true | false,
    "title": "string",
    "sources": ["string"],
    "objects": ["string"],
    "action": ["allow" | "deny"],
    "resources": ["string"],
    "two_factor": "string",
    "comment": "string"
}
```

* `enabled` - статус активности правила:
  * `true` - включено;
  * `false` - выключено.
* `title` - название правила, максимальная длина - 42 символа. Может быть пустым;
* `sources` - список источников подключения. Не может быть пустым. Допустимые значения:
  * `any` - любой источник подключения (если указан `any`, то других объектов в списке не должно быть);
  * `ip.id` - идентификатор объекта **IP-адрес**;
  * `ip_range.id` - идентификатор объекта **Диапазон IP-адресов**;
  * `subnet.id` - идентификатор объекта **Подсеть**;
  * `ip_address_list.id` - идентификатор объекта **Список IP-адресов**;
  * `iplist` - страна или континент;
  * `list_of_iplists.id` - идентификатор объекта **Список стран и континентов**;
  * `domain.id` - идентификатор объекта **Домен**.
* `objects` - список пользователей и групп, не может быть пустым. Допустимые значения:
  * `any` - любой объект (если указан `any`, то других объектов в списке не должно быть);
  * `user.id` - идентификатор пользователя;
  * `group.id` - идентификатор группы пользователей;
  * `security_group.guid` - идентификатор группы безопасности AD;
  * `ald_users_group.guid` - идентификатор группы пользователей ALD.
* `action` - действие:
  * `allow` - разрешить;
  * `deny` - запретить.
* `resources` - список идентификаторов ресурсов SSL VPN. Может быть пустым. Если в поле `action` указано `deny`, то поле `resources` должно быть пустым;
* `two_factor` - тип требуемой двухфакторной аутентификации, не может быть пустым. Должен быть `not_required`, если в поле `action` выбран `deny`. Допустимые варианты:
  * `smsaero` - аутентификация при помощи ввода кода из СМС;
  * `totp` - аутентификация сканированием QR-кода или использованием токена;
  * `multifactor` - аутентификация подтверждением личности в стороннем приложении;
  * `not_required` - двухфакторная аутентификация не требуется.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов.

**Ответ на успешный запрос:** 200 OK

{% endcut %}

{% cut "Переместить правило доступа" %}

```
PATCH /api/cabinet/rules/move
```

**Json-тело запроса:**

```json5
{
    "_meta": {
    "id": "string",
    "anchor_item_id": "string",
    "insert_after": true | false
    }
}
```

* `id` - идентификатор перемещаемого правила;
* `anchor_item_id` - идентификатор правила, ниже или выше которого нужно поместить перемещаемое правило;
* `insert_after` - вставить правило до или после:
  * `true` - вставить правило после указанного в `anchor_item_id`;
  * `false` - вставить правило на место указанного в `anchor_item_id`.

{% endcut %}

{% cut "Удалить правило доступа" %}

```
DELETE /api/cabinet/rules/<id правила>
```

**Ответ на успешный запрос:** 200 OK

{% endcut %}

{% cut "Получение типов двухфакторной аутентификации, используемых в таблице правил" %}

```
GET /api/cabinet/two_factor_in_access_rules
```

**Ответ на успешный запрос:**

```json5
{
    "smsaero": true | false,
    "totp": true | false,
    "multifactor": true | false
}
```

* `smsaero` - аутентификация при помощи ввода кода из СМС:
  * `true` - используется;
  * `false` - не используется.
* `totp` - аутентификация сканированием QR-кода или использованием токена:
  * `true` - используется;
  * `false` - не используется.
* `multifactor` - аутентификация подтверждением личности в стороннем приложении:
  * `true` - используется;
  * `false` - не используется.

{% endcut %}

## Управление настройками внешнего вида

{% cut "Получить настройки" %}

```
GET /api/cabinet/settings
```

**Ответ на успешный запрос:**

```json5
{
    "logo": "string",
    "background_color": "string",
    "info": "string"
}
```

* `logo` - логотип в кодировке Base64 для отображения в личном кабинете и на портале. Может быть пустым. Пример: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==`;
* `background_color` - цвет фона в формате HEX (например, `#ffffff`), используемый для логотипа в личном кабинете и на портале. Не может быть пустым;
* `info` - текстовое описание, которое отображается рядом с логотипом в личном кабинете, максимальная длина - 256 символов. Может быть пустым.

{% endcut %}

{% cut "Изменение настроек" %}

```
PATCH /api/cabinet/settings
```

**Json-тело запроса (все или некоторые поля):**

```json5
{
    "logo": "string",
    "background_color": "string",
    "info": "string"
}
```

* `logo` - логотип в кодировке Base64 для отображения в личном кабинете и на портале. Может быть пустым. Пример: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==`;
* `background_color` - цвет фона в формате HEX (например, `#ffffff`), используемый для логотипа в личном кабинете и на портале. Не может быть пустым;
* `info` - текстовое описание, которое отображается рядом с логотипом в личном кабинете, максимальная длина - 256 символов. Может быть пустым.

**Ответ на успешный запрос:** 200 OK

{% endcut %}

## Управление ресурсами

{% cut "Получение списка ресурсов" %}

```
GET /api/cabinet/resources
```

**Ответ на успешный запрос:**

```json5
[
    {
        "id": "string",
        "enabled": true | false,
        "title": "string",
        "protocol": "string",
        "comment": "string",
        "info": "string",
        "server": "string",
        "port": "integer",
        "host_key": "string",
        "uri_path": "string",
        "trusted_ca": "string"
    },
    ...
]
```

* `id` - идентификатор ресурса;
* `enabled` - статус активности ресурса:
  * `true` - включено;
  * `false` - выключено.
* `title` - название ресурса, максимальная длина - 42 символа. Не может быть пустым;
* `protocol` - вид ресурса. Допустимые значения:
  * `https`/`http` - веб-ресурс;
  * `ssh` - удаленный доступ;
  * `rdp` - удаленный рабочий стол.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов;
* `info` - текстовое описание, которое отображается в личном кабинете, максимальная длина - 256 символов. Может быть пустым;
* `server` - доменное имя или IP-адрес сервера ресурса. Не может быть пустым;
* `port` - порт сервера ресурса;
* `host_key` - отпечаток ключа сервера. Используется только для ресурсов `SSH`, для остальных видов ресурсов должно быть пустым. Максимальная длина - 1000 символов;
* `uri_path` - путь. Используется только для ресурсов `SSH` и `RDP`, для остальных видов ресурсов должно быть пустым;
* `trusted_ca` - доверенный сертификат. Используется только для ресурсов `HTTPS`, для остальных видов ресурсов должно быть пустым.

{% endcut %}

{% cut "Добавление ресурса" %}

```
POST /api/cabinet/resources
```

**Json-тело запроса:**

```json5
{
    "enabled": true | false,
    "title": "string",
    "protocol": "string",
    "comment": "string",
    "info": "string",
    "server": "string",
    "port": "integer",
    "host_key": "string",
    "uri_path": "string",
    "trusted_ca": "string"
}
```

* `enabled` - статус активности ресурса:
  * `true` - включено;
  * `false` - выключено.
* `title` - название ресурса, максимальная длина - 42 символа. Не может быть пустым;
* `protocol` - вид ресурса. Допустимые значения:
  * `https`/`http` - веб-ресурс;
  * `ssh` - удаленный доступ;
  * `rdp` - удаленный рабочий стол.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов;
* `info` - текстовое описание, которое отображается в личном кабинете, максимальная длина - 256 символов. Может быть пустым;
* `server` - доменное имя или IP-адрес сервера ресурса. Не может быть пустым;
* `port` - порт сервера ресурса;
* `host_key` - отпечаток ключа сервера. Используется только для ресурсов `SSH`, для остальных видов ресурсов должно быть пустым. Максимальная длина - 1000 символов;
* `uri_path` - путь. Используется только для ресурсов `SSH` и `RDP`, для остальных видов ресурсов должно быть пустым;
* `trusted_ca` - доверенный сертификат. Используется только для ресурсов `HTTPS`, для остальных видов ресурсов должно быть пустым.

**Ответ на успешный запрос:**

```json5
{
    "id": "string"
}
```

* `id` - идентификатор ресурса.

{% endcut %}

{% cut "Изменение ресурса" %}

```
PATCH /api/cabinet/resources/<id ресурса>
```

**Json-тело запроса (все или некоторые поля):**

```json5
{
    "enabled": true | false,
    "title": "string",
    "protocol": "string",
    "comment": "string",
    "info": "string",
    "server": "string",
    "port": "integer",
    "host_key": "string",
    "uri_path": "string",
    "trusted_ca": "string"
}
```

* `enabled` - статус активности ресурса:
  * `true` - включено;
  * `false` - выключено.
* `title` - название ресурса, максимальная длина - 42 символа. Не может быть пустым;
* `protocol` - вид ресурса. Допустимые значения:
  * `https`/`http` - веб-ресурс;
  * `ssh` - удаленный доступ;
  * `rdp` - удаленный рабочий стол.
* `comment` - комментарий, может быть пустым, но не должен превышать 256 символов;
* `info` - текстовое описание, которое отображается в личном кабинете, максимальная длина - 256 символов. Может быть пустым;
* `server` - доменное имя или IP-адрес сервера ресурса. Не может быть пустым;
* `port` - порт сервера ресурса;
* `host_key` - отпечаток ключа сервера. Используется только для ресурсов `SSH`, для остальных видов ресурсов должно быть пустым. Максимальная длина - 1000 символов;
* `uri_path` - путь. Используется только для ресурсов `SSH` и `RDP`, для остальных видов ресурсов должно быть пустым;
* `trusted_ca` - доверенный сертификат. Используется только для ресурсов `HTTPS`, для остальных видов ресурсов должно быть пустым.

**Ответ на успешный запрос:** 200 ОК

{% endcut %}

{% cut "Удаление ресурса" %}

```
DELETE /api/cabinet/resources/<id ресурса>
```

**Ответ на успешный запрос:** 200 ОК

{% endcut %}

## Тест скорости

{% cut "Получение текущего состояния теста скорости" %}

```
GET /api/cabinet/speedtest
```

**Ответ на успешный запрос:**

```json5
{
   "enabled": true | false
}
```

* `enabled` - статус активности теста скорости:
  * `true` - включен;
  * `false` - выключен.

{% endcut %}

{% cut "Изменение состояния теста скорости" %}

```
PATCH /api/cabinet/speedtest
```

**Json-тело запроса:**

```json5
{
   "enabled": true | false,
}
```

* `enabled` - статус активности теста скорости:
  * `true` - включен;
  * `false` - выключен.

**Ответ на успешный запрос:** 200 ОК

{% endcut %}