Пользовательская роль (role)

Описание

Роль, доступная для указания в списке ролей пользователей.
Позволяет привязать к ней разрешения на доступ к REST-API и websocket-API (routes) , а также к ролевым веб-приложениям (webapps).
Пользователь, которому назначена роль, получает доступ к указанным API и веб-приложениям.
В частности с помощью пользовательских ролей можно формировать ролевые модели на базе динамических классов и соответствующих им ролевых приложений.
Поддерживает наследование.

Весь набор ролей со списками групп и пользователей, которым они назначены, доступен через API roles_caches.

Поля

Структура сущности
{
  "id": uuid,
  "name": str,
  "description": str,
  "parent_id": uuid,
  "routes": array<object>,
  "opts": {
    "title": str,
    "comment": str
  },
  "security": object,
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: name
Режим: in
Тип: str
По умолчанию: required

Название роли (строчная латиница).

Поле: description
Режим: in
Тип: str
По умолчанию: empty

Описание

Поле: parent_id
Режим: in
Тип: str
По умолчанию: empty

Идентификатор базовой группы, чьи настройки польностью копируются.

Поле: routes
Режим: in
Тип: array<object>
По умолчанию: empty

Список разрешенных эндпойнтов API.
Задаются в формате, аналогичном iam_all.json.

Каждый элемент списка представляет собой объект:

{
  "url": ...,
  "method": [...]
}

В качестве урла должен быть указан конкретный эндпойнт. Поддерживаются:

  • "*" - произвольное значение имени папки или элемента;

  • "**" - произвольный путь в остатке (только в конце пути).

В рамках каждой коллекции различаются эндпойнты:

  • коллекции ("/rest/v1/model/my/test");

  • элемента коллекции ("/rest/v1/model/my/test/*");

  • вложения или списочного поля ("/rest/v1/model/my/test/*/*" или "/rest/v1/model/my/test/*/propertyname");

  • вложения в списочное поле ("/rest/v1/model/my/test/*/*/*" или "/rest/v1/model/my/test/*/propertyname/\*").

Или "/rest/v1/model/my/test/**" - все эндпойнты коллекции, кроме эндпойнта самой коллекции.

Методы: "GET", "POST", "PUT", "PATCH", "DELETE", "LOOKUP", "HEAD", "CLEAR", "*", "WEBSOCKET".

Существуют и другие нестандартные методы для специфических эндпойнтов. Например для создания вызова от имени IVR используется метод "INVITEBYIVR". Перечислены в описании API конкретных эндпойнтов. Такие методы включены в "*" или должны быть указаны отдельно.

Метод "WEBSOCKET" применяется для предоставления доступа к различным API websocket. Конкретный модуль API указывается за хешом в "url" (см. пример ниже).

Пример:

[
  {
    "url": "/rest/v1/model/my/test",
    "methods": ["GET","CLEAR"]
  },
  {
    "url": "/rest/v1/model/my/test/*",
    "methods": ["GET","PUT","PATCH","DELETE"]
  },
  {
    "url": "/rest/v1/model/my/test/**",
    "methods": ["*"]
  },
  {
      "url": "/ws#subscr",
      "methods": ["WEBSOCKET"]
  }
]

Поле: webapps
Режим: in
Тип: array
По умолчанию: empty

Список вложенных пользовательских групп. Задаются идентификаторами.
Через API поддерживается указание кодов групп при создании, автоматически разворачиваются в идентификаторы.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: empty
По умолчанию: "

Произвольный комментарий

Поле: security
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями.

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями.

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

См. также