Папки

Пользовательская папка — класс prsFolder. Отдельного ресурса /v1/folders нет. Папка создаётся запросом создания той сущности, в чьей ветке она лежит. Поле folder по умолчанию false: без него запрос создаёт обычный узел.

POST /v1/objects/
{"folder": true, "attributes": {"cn": "Режимы работы"}}

Пустой parentId — корень этого сервиса, как при создании объекта или тега. Чтобы положить папку внутрь объекта или другой папки, передайте их id.

POST /v1/tags/
{
  "folder": true,
  "parentId": "<id объекта или папки>",
  "attributes": {"cn": "Счётчики"}
}

Какая команда какую папку создаёт:

Запрос

Где появляется папка

Что можно положить внутрь

POST /v1/objects/

ветка объектов

папка, объект, тег

POST /v1/tags/

ветка тегов или объект

папка, тег

POST /v1/connectors/

ветка коннекторов

папка, коннектор

POST /v1/schedules/

ветка расписаний

папка, расписание

POST /v1/dataStorages/

ветка хранилищ

папка, хранилище

POST /v1/methods/

каталог методов

папка, метод каталога

Тревога этим флагом папку не создаёт: запрос возвращает 422. Каталог методов использует тот же флаг:

POST /v1/methods/
{"folder": true, "attributes": {"cn": "stdlib"}}

Имя system зарезервировано. В LDAP сохраняются cn, description, prsActive и prsIndex.

Чтение папок — тот же GET сущности с фильтром objectClass=prsFolder. Имя корня (objects, tags, connectors, schedules, dataStorages, methods) допустимо в base. Тег внутри папки при scope=1 не виден: его возвращает scope=2.

Изменение и удаление — PUT и DELETE той же сущности с id папки. Удаление снимает содержимое тем же каскадом, что удаление объекта. Перенос в другую ветку и в собственное поддерево отклоняется.

Право на создание, изменение и удаление — право этой сущности (prsObject.create и остальные). Отдельного действия prsFolder.* для HTTP нет.