# Объекты

::: 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/access-rules/aliases
          width: 'auto'
    resetPaddings: false
    textWidth: l
    size: m
    centered: false
:::


{% cut "Получение идентификаторов объектов" %}

```
GET /aliases/<название объекта> | all
```

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

```json5
[
    {
        "comment": "string",
        "title": "string",
        "type": "string",
        "values": [
            "string" | "integer",
            "string" | "integer"
        ],
        "id": "type.id.1"
    }, 
{
        "comment": "string",
        "title": "string",
        "type": "string",
        "value": "string" | "integer",
        "id": "type.id.1"
    },
    ...
] 
```

В качестве ответа будет возвращен список всех объектов, существующих в NGFW:

* `protocol.ah` - протокол AH;
* `protocol.esp` - протокол ESP;
* `protocol.gre` - протокол GRE;
* `protocol.icmp` - протокол ICMP;
* `protocol.tcp` - протокол TCP;
* `protocol.udp` - протокол UDP;
* `any` - допускается любое значение в этом поле;
* `interface.external_any` - все внешние интерфейсы (равно таблице *Подключение к провайдеру* в веб-интерфейсе и включает подключения к провайдеру по Ethernet/VPN);
* `interface.external_eth` - внешние Ethernet-интерфейсы;
* `interface.external_vpn` - внешние VPN-интерфейсы;
* `interface.ipsec_any` - IPsec-интерфейсы;
* `interface.local_any` - все локальные интерфейсы;
* `interface.tunnel_any` - все туннельные интерфейсы;
* `group.id.` - идентификатор группы пользователей;
* `interface.id.`- идентификатор конкретного интерфейса;
* `interface.utm_outgoing` - исходящий трафик устройства;
* `interface.vpn_traffic` - клиентский VPN-трафик;
* `interface.wccp_gre_any` - все WCCP GRE интерфейсы;
* `hip_profile.id.` - устройства без профиля;
* `security_group.guid.` - идентификатор группы безопасности AD;
* `user.id.` - идентификатор пользователя;
* `domain.id.` - идентификатор домена;
* `ip.id.` - идентификатор IP-адреса;
* `ip_range.id.` - идентификатор объекта *Диапазон адресов*;
* `address_list.id.` - идентификатор объекта *Список IP-объектов*;
* `list_of_iplists.id.` - идентификатор объекта *Список стран и континентов*;
* `port_list.id.` - идентификатор объекта *Порты*;
* `time_list.id.` - идентификатор объекта *Расписание*;
* `subnet.id.` - идентификатор объекта *Подсеть*;
* `port_range.id.` - идентификатор объекта *Диапазон портов*;
* `port.id.` - идентификатор объекта *Порт*;
* `time_range.id.` - идентификатор объекта *Время*.

{% endcut %}

### Создание объектов

{% cut "Создание объекта IP-адрес" %}

```
POST /aliases/ip_addresses
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "string"
}
```

* `title` - название объекта. Максимальная длина - 42 символа;
* `comment` - комментарий к объекту. Может быть пустым, максимальная длина - 255 символов;
* `value` - IP-адрес в формате `192.168.0.0`.

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

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

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

{% endcut %}

{% cut "Создание объекта Диапазон IP-адресов" %}

```
POST /aliases/ip_ranges
```

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

```json5
{
    "title": "string", 
    "comment": "string", 
    "start": "string", 
    "end": "string"
}
```

* `title` - название объекта. Максимальная длина - 42 символа;
* `comment` - комментарий к объекту. Может быть пустым, максимальная длина - 255 символов;
* `start` - первый IP-адрес в диапазоне, например, `192.168.100.2`;
* `end` - последний IP-адрес в диапазоне, например, `192.168.100.15`.

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

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

* `id` - идентификатор объекта Диапазон IP-адресов.

{% endcut %}

{% cut "Создание объекта Подсеть" %}

```
POST /aliases/networks
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "string"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - адрес подсети в формате `192.168.0.0/24` либо `192.168.0.0/255.255.255.0`.

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

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

* `id` - идентификатор объекта Подсеть.

{% endcut %}

{% cut "Создание объекта Домен" %}

```
POST /aliases/domains
```

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

```json5
{
    "title": "string", 
    "comment": "string",
    "value": "string" 
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - домен в формате mydomain.com.

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

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

* `id` - идентификатор объекта Домен.

{% endcut %}

{% cut "Создание объекта Порт" %}

```
POST /aliases/ports
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "integer"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - номер порта в формате `8080`.

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

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

* `id` - идентификатор объекта Порт.

{% endcut %}

{% cut "Создание объекта Диапазон портов" %}

```
POST /aliases/port_ranges
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "start": "integer",
    "end": "integer"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `start` - первый порт в диапазоне, например, `8080`;
* `end` - последний порт в диапазоне, например, `8090`.

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

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

* `id` - идентификатор объекта Диапазон портов.

{% endcut %}

{% cut "Создание объекта Время" %}

```
POST /aliases/time_ranges
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "weekdays": [ "integer" ],
    "start": "string",
    "end": "string",
    "period": {
            "first": "integer",
            "last": "integer"
        }
}
```

* `title` - название объекта. Максимальная длина - 42 символа;
* `comment` - комментарий к объекту. Может быть пустым, максимальная длина - 255 символов;
* `weekdays` - список дней недели, где 1-пн, 2-вт ... 7-вс;
* `start` - начало временного отрезка в формате `ЧЧ:ММ`;
* `end` - конец временного отрезка в формате `ЧЧ:ММ`;
* `first` - момент начала срока действия в формате `ГГГГММДДЧЧММСС`, например, `20240215000000`;
* `last` - момент окончания срока действия в формате `ГГГГММДДЧЧММСС`, например, `20240229235959`.

Если для `period` установить значение `null`, у объекта будет включена опция **Бессрочно**.

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

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

* `id` - идентификатор объекта Время.

{% endcut %}

{% cut "Создание объекта Список IP-объектов" %}

```
POST /aliases/lists/addresses
```

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

```json5
{
    "title": "string",
    "comment": "string", 
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - идентификаторы IP-объектов, через запятую.

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

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

* `id` - идентификатор объекта Список IP-объектов.

{% endcut %}

{% cut "Создание объекта Список IP-адресов" %}

```
POST /aliases/ip_address_lists
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "values": [ "string" ] 
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список IP-адресов без указания маски, либо с указанием маски подсети в виде десятичного числа 0...32 или четырех десятичных чисел от 0 до 255. Например: `192.168.0.0`, `192.168.0.0/24` или `192.168.0.0/255.255.255.0`.

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

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

* `id` - идентификатор объекта Список IP-адресов.

{% endcut %}

{% cut "Создание объекта Порты" %}

```
POST /aliases/lists/ports
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список портов.

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

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

* `id` - идентификатор объекта Порты.

{% endcut %}

{% cut "Создание объекта Расписание" %}

```
POST /aliases/lists/times
```

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

```json5
{
    "title": "string", 
    "comment": "string",
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список идентификаторов объектов Время.

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

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

* `id` - идентификатор объекта Расписание.

{% endcut %}

### Изменение объектов

{% cut "Изменение объекта IP-адрес" %}

```
PATCH /aliases/ip_addresses/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "string"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - IP-адрес в формате `192.168.0.0`.

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

{% endcut %}

{% cut "Изменение объекта Диапазон IP-адресов" %}

```
PATCH /aliases/ip_ranges/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "start": "string",
    "end": "string"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `start` - первый IP-адрес в диапазоне, например, `192.168.100.2`;
* `end` - последний IP-адрес в диапазоне, например, `192.168.100.15`.

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

{% endcut %}

{% cut "Изменение объекта Подсеть" %}

```
PATCH /aliases/networks/<id объекта>
```

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

```json5
{
    "title": "string", 
    "comment": "string",
    "value": "string"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - адрес подсети в формате `192.168.0.0/24` либо `192.168.0.0/255.255.255.0`.

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

{% endcut %}

{% cut "Изменение объекта Домен" %}

```
PATCH /aliases/domains/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "string"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - домен в формате mydomain.com.

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

{% endcut %}

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

```
PATCH /aliases/ports/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "value": "integer"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - номер порта в формате `8080`.

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

{% endcut %}

{% cut "Изменение объекта Диапазон портов" %}

```
PATCH /aliases/port_ranges/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "start": "integer",
    "end": "integer"
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `start` - первый порт в диапазоне, например, `8080`;
* `end` - последний порт в диапазоне, например, `8090`.

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

{% endcut %}

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

```
PATCH /aliases/time_ranges/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "weekdays": [ "integer" ],
    "start": "string",
    "end": "string",
    "period": {
            "first": "integer",
            "last": "integer"
        }
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `weekdays` - список дней недели, где 1-пн, 2-вт ... 7-вс;
* `start` - начало временного отрезка в формате `ЧЧ:ММ`;
* `end` - конец временного отрезка в формате `ЧЧ:ММ`;
* `first` - момент начала срока действия в формате `ГГГГММДДЧЧММСС`, например, `20240215000000`;
* `last` - момент окончания срока действия в формате `ГГГГММДДЧЧММСС`, например, `20240229235959`.

Если для `period` установить значение `null`, у объекта будет включена опция **Бессрочно**.

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

{% endcut %}

{% cut "Изменение объекта Список IP-объектов" %}

```
PATCH /aliases/lists/addresses/<id объекта>
```

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

```json5
{
    "title": "string", 
    "comment": "string",
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - идентификаторы IP-объектов, через запятую.

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

{% endcut %}

{% cut "Изменение объекта Список IP-адресов" %}

```
PATCH /aliases/ip_address_lists/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список IP-адресов без указания маски, либо с указанием маски подсети в виде десятичного числа 0...32 или четырех десятичных чисел от 0 до 255. Например: `192.168.0.0`, `192.168.0.0/24` или `192.168.0.0/255.255.255.0`.

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

{% endcut %}

{% cut "Изменение объекта Порты" %}

```
PATCH /aliases/lists/ports/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "values": [ "string" ] 
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список портов.

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

{% endcut %}

{% cut "Изменение объекта Расписание" %}

```
PATCH /aliases/lists/times/<id объекта>
```

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

```json5
{
    "title": "string",
    "comment": "string",
    "values": [ "string" ]
}
```

* `title` - название объекта, максимальная длина - 42 символа;
* `comment` - комментарий к объекту, может быть пустым, максимальная длина - 255 символов;
* `value` - список идентификаторов объектов Время.

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

{% endcut %}

### Удаление объектов

{% cut "Удаление объектов" %}

```
DELETE /aliases/<название объекта>/<id объекта>
```

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

**Названия объектов:**
* `ip_addresses` - IP-адрес;
* `ip_ranges` - Диапазон IP-адресов;
* `networks` - Подсеть;
* `domains` - Домен;
* `ports` - Порт;
* `port_ranges` - Диапазон портов;
* `time_ranges` - Время;
* `ip_address_lists` - Список IP-адресов.

{% endcut %}

{% cut "Удаление списка объектов" %}

```
DELETE /aliases/lists/<название объекта>/<id объекта>
```

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

**Названия объектов:**

* `addresses` - Список IP-объектов;
* `ports` - Порты;
* `times` - Расписание.

{% endcut %}
