Настройка системы с использованием командной строки осуществляется путем отправки соответствующего HTTP-запроса к REST-сервису системы.

Для отправки запросов можно использовать популярную кроссплатформенную программу Curl (доступна для Bash, Windows PowerShell и т.д.).

Содержание статьи:

Авторизация в системе и получение токена

Для выполнения любых настроек системы необходима первичная авторизация в системе. Настройки должны выполняться от имени пользователя с правами администратора.

Авторизация в системе осуществляется путем указания токена авторизации в заголовке Authorization.

Для получения токена необходимо выполнить POST запрос к эндпоинту api/user/login в котором передать пару логин-пароль пользователя, от имени которого должна происходить авторизация.

curl -X POST http://{site_url}/api/user/login \
-H "Content-Type: application/json"
-d '{"Username": “{my_login}”, "Password": “{my_password}”}'

Где:

site_url – адрес сайта Vitro

Username: {my_login} – логин пользователя

Password: {my_password} – пароль пользователя

В ответ будет получен JSON в котором содержится список атрибутов пользователя и их значение, а также атрибут “token” значение которого потребуется указывать в заголовке “Authorziation” при последующих обращениях к системе.

Также в ответе содержится атрибут "expires", в котором указана дата действия полученного токена и после которой его необходимо будет получить заново.

{"id":"516fdc08-42d3-113f-82d5-2487742d9725","user":{"id":"aab39600-92b4-4c38-a55c-53efac8db9cc","name":"admin","email":"adminMP@vitrosoft.ru","item":{"siteId":"3064dc08-2e02-8de4-aa70-1b2ae9eb890b","listId":"e3a94bde-0ca9-456f-b338-4465d40389ee","parentId":"c0857f66-fbfa-448f-a35d-afac00a3a9cb","itemPath":{"path":["3064dc08-2e02-8de4-aa70-1b2ae9eb890b","e3a94bde-0ca9-456f-b338-4465d40389ee","c0857f66-fbfa-448f-a35d-afac00a3a9cb"],"scopeId":"8d0bc7d7-f8af-ec11-bfeb-000c29f44205","childCount":0},"contentTypeId":"99c92e22-4e60-48c0-ab70-add500e71a45","permissionList":null,"id":"aab39600-92b4-4c38-a55c-53efac8db9cc","name":null,"isNew":false,"insertUser":{"id":"aab39600-92b4-4c38-a55c-53efac8db9cc","contentTypeId":"99c92e22-4e60-48c0-ab70-add500e71a45","fieldValueMap":{"name":"admin","image":"ee17dc08-4e9e-2c7d-99b7-db3c3e1fa4ac"}},"insertUserId":"aab39600-92b4-4c38-a55c-53efac8db9cc","insertUserName":"admin","insertDate":"2023-11-30T07:02:44.776582Z","updateUser":{"id":"aab39600-92b4-4c38-a55c-53efac8db9cc","contentTypeId":"99c92e22-4e60-48c0-ab70-add500e71a45","fieldValueMap":{"name":"admin","image":"ee17dc08-4e9e-2c7d-99b7-db3c3e1fa4ac"}},"updateUserId":"aab39600-92b4-4c38-a55c-53efac8db9cc","updateUserName":"admin","updateDate":"2024-04-10T14:33:53.083293Z","deleteUser":null,"deleteUserId":"00000000-0000-0000-0000-000000000000","deleteUserName":null,"deleteDate":null,"status":1,"fieldValueMap":{"sequence":60,"email":"adminMP@vitrosoft.ru","login":"admin","image":{"id":"ee17dc08-4e9e-2c7d-99b7-db3c3e1fa4ac","contentTypeId":"587f682a-fbf2-4647-8d91-e2f6460f59bf","fieldValueMap":{"name":"709921583.jpeg"}},"name":"admin"}},"isActive":true,"isAdmin":true,"groupList":["3064dc08-2e02-8de4-aa70-1b2ae9eb890b","e3a94bde-0ca9-456f-b338-4465d40389ee","c0857f66-fbfa-448f-a35d-afac00a3a9cb","aab39600-92b4-4c38-a55c-53efac8db9cc","6ea6149b-5eac-4636-adf1-b01b00b7de4e"]},"token":"qN8CHhUGRn5OXpF+g56kDHiVRDr+LF3gaqqdu1B6LQY_","expires":"2024-05-11T11:27:20.912149Z","status":1,"loginTypeList":[{"id":"05ef8c8e-f104-4dc0-8887-b97c1475dd7a","hidden":false},{"id":"17a6ceda-cc38-416c-9f72-379d978a142f","hidden":false,"is_two_factor_authentication_enabled":true}],"requireLoginInactivityTimeoutMinuteCount":0}

Создание/изменение элементов

Базовой сущностью в системе Vitro является элемент. Частными случаями элементов являются:

  1. Атрибут
  2. Тип элемента
  3. Список
  4. Документ
  5. Папка

Создание или изменение любых элементов системы происходит путем отправки POST-запроса к эндпоинту api/item/update, в котором передается список создаваемых элементов, с указанием обязательных параметров:

  1. Guid родительского списка (списка в котором они должны находиться)
  2. Guid типа создаваемого элемента
  3. Набора атрибутов и их значений, соответствующих указанному типу элемента.

Также могут быть указаны дополнительные параметры:

  1. Guid родительского элемента (если создаваемый элемент должен находится внутри другого элемента – папки)
  2. Guid изменяемого элемента (при изменении существующего элемента)

Для примера приведено создание элемента типа «Папка» с именем «Папка_1» в списке «Файлы» внутри другого элемента этого списка.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"966e62c5-a803-49a0-a1be-e680d130c481\",\"parent_id\":\"5164dc08-adf0-e80d-89e8-3f0ca000ed98\",\"content_type_id\":\"09ad2c16-6047-4dfb-8274-6c4a5f1edbe5\",\"name\":\"Папка_1"}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:966e62c5-a803-49a0-a1be-e680d130c481” - Guid списка «Файлы»

parent_id:5164dc08-adf0-e80d-89e8-3f0ca000ed98” - Guid элемента, внутри которого хотим создать наш элемент

content_type_id: “ea164a18-7eb5-44f7-a638-5bb7c05221e6 – Guid типа Папка”

name: Папка_1название типа элемента

Для примера приведено изменение имени элемента созданного в предыдущем примере.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"966e62c5-a803-49a0-a1be-e680d130c481\",\"parent_id\":\"5164dc08-adf0-e80d-89e8-3f0ca000ed98\",\"id\":\"4673dc08-3441-f03d-9e46-5866102fa3a2\"\"content_type_id\":\"09ad2c16-6047-4dfb-8274-6c4a5f1edbe5\",\"name\":\"Папка_2"}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:966e62c5-a803-49a0-a1be-e680d130c481” - Guid списка «Файлы»

parent_id:5164dc08-adf0-e80d-89e8-3f0ca000ed98” - Guid элемента, внутри которого хотим создать наш элемент

id:4673dc08-3441-f03d-9e46-5866102fa3a2” - Guid элемента, который требуется изменить

content_type_id: “ea164a18-7eb5-44f7-a638-5bb7c05221e6 – Guid типа Папка”

name: “Папка_2” – новое название типа элемента


Создание атрибутов

Создание атрибута происходит путем создания элемента требуемого типа в списке "Атрибуты" через отправку POST-запроса, в котором передается список создаваемых атрибутов, с указанием их родительского списка, типа элемента (атрибута) и набора свойств и их значений, соответствующих указанному типу атрибута.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"a01f8ee1-a912-41b9-b87b-312d6583e38a\",\"content_type_id\":\"{attribute_type_id}\",\"name\":\"{attribute_name}\",\"internal_name\":\"{attribute_internal_name}\"}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:a01f8ee1-a912-41b9-b87b-312d6583e38a” - Guid списка "Атрибуты"

content_type_id: {attribute_type_id} – Guid типа атрибута

name: {attribute_name}  – название атрибута

internal_name: {attribute_internal_name} – системное имя атрибута в формате snake_case

помимо указанных обязательных свойств (имя и системное имя) можно указать также остальные, специфичные для создаваемого типа атрибута свойства и их значения.

При необходимости можно получить список доступных для создания типов атрибутов и их свойств через POST-запроса к эндпоинту api/contenttype/getByList

curl -X POST http://{site_url}/api/contenttype/getByList/a01f8ee1-a912-41b9-b87b-312d6583e38a \
-H "Content-Type: application/json" \
-H "Authorization: {token}"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

a01f8ee1-a912-41b9-b87b-312d6583e38a – Guid списка "Атрибуты"

Создание типов элементов

Создание типов элементов системы происходит путем создания элемента в списке "Тип контента" через отправку POST-запроса, в котором передается список создаваемых элементов, с указанием родительского списка, родительского типа элемента (элемента от которого создаваемый наследует атрибуты),  типа создаваемого элемента и набора атрибутов и их значений, соответствующих указанному типу элемента.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"27155e95-1874-47f7-9ef7-042e3631159f\",\"content_type_id\":\" ea164a18-7eb5-44f7-a638-5bb7c05221e6\",\"name\":\"{element_name}\",\"folder\":{true/false},\"description\":\"{element_description}\"}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:27155e95-1874-47f7-9ef7-042e3631159f” - Guid списка "Тип контента"

content_type_id: “ea164a18-7eb5-44f7-a638-5bb7c05221e6 – Guid типа элемента Тип контента”

name: {element_name} – название создаваемого типа элемента

folder: {true/false}является ли создаваемый тип элемента папкой

description: {element_description} - описание типа элемента

Добавление атрибута к типу элемента

Добавление атрибутов к типу элемента происходит путем создания элемента типа «Поля типов контента» (связь типа элемента и атрибута)  в списке «Поля типов контента» через отправку POST-запроса, в котором передается список элементов, для которых требуется добавить атрибут, с указанием типа элемента и  типа добавляемого атрибута.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"d702e382-b9a9-456b-b94f-66ad1df2eb0e\",\"content_type_id\":\" c0639c62-a384-4676-8002-5d9edcfdc473\",\"name\":\"{element_name}\",\"content_type\":\"{id_elem_to_be_updated}\",\"field\":\"{id_attribute_to_be_added}\",\”required\”:{true/false},\”read_only\”:{true/false}}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:d702e382-b9a9-456b-b94f-66ad1df2eb0e” - Guid списка “Поля типов контента”

content_type_id: “c0639c62-a384-4676-8002-5d9edcfdc473 – Guid типа элемента “Поля типов контента”

content_type: {id_elem_to_be_updated} – Guid типа элемента к которому требуется добавить атрибут

field: {id_attribute_to_be_added} - Guid типа добавляемого атрибута

name: {element_name} – название создаваемого элемента

required: {true/false}является ли добавляемый атрибут обязательным

read_only: {true/false}является ли добавляемый атрибут редактируемым

Создание списков

Создание списка происходит путем создания элемента типа «Список» (связь типа элемента и атрибута)  в списке «Списки» через отправку POST-запроса, в котором передается список создаваемых элементов (списков), с указанием их названий и других паарметров.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"3c36345d-599b-4711-a290-66e48015ab32\",\"content_type_id\":\" cbdb9089-49c4-4742-8ce6-5f1f7a01e679\",\"name\":\"{list_name}\",\"table_name\":\"{list_table_name}\",\”hidden\”:{true/false},\”document_archive\”:{true/false}}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:3c36345d-599b-4711-a290-66e48015ab32” - Guid списка “Списки”

content_type_id: “cbdb9089-49c4-4742-8ce6-5f1f7a01e679 – Guid типа элемента “Список”

name: {list_name} – название создаваемого списка

table_name: {list_table_name} – системное имя таблицы, создаваемой в БД для данного списка. Имя таблицы должно указываться в формате snake_case.

hidden: {true/false}является ли создаваемый список скрытым

document_archive: {true/false}является ли создаваемый список хранилищем файлов

Добавление типов элементов к списку

Для того, чтобы список мог содержать элементы определенных типов их необходимо добавить к нужному списку. Добавление элементов к типу элемента происходит путем создания элемента типа «Типы контента списка» (связь списка и типа элемента)  в списке «Типы контента списка» через отправку POST-запроса, в котором передается список со значениями Guid привязываемых элементов и Guid списков, к которым эти элементы привязываются.

curl -X POST http://{site_url}/api/item/update \
-H "Authorization: {token}" \
-H "Content-Type: multipart/form-data" \
-F "itemListJson=[{\"list_id\":\"a15fc818-68bf-4593-ad80-e098bea64d6c\",\"content_type_id\":\" 72a9a18a-c27a-448c-a88e-c7e5f83d287e \",\"name\":\"{element_name}\",\"content_type\":\"{id_elem_to_be_linked}\",\"list\":\"{id_list_to_be_linked}\"}]"

Где:

site_url – адрес сайта Vitro

Authorization: {token} – токен, полученный на этапе авторизации

list_id:a15fc818-68bf-4593-ad80-e098bea64d6c” - Guid списка “Типы контента списка”

content_type_id: “72a9a18a-c27a-448c-a88e-c7e5f83d287e ” – Guid типа элемента “Типы контента списка”

content_type: {id_elem_to_be_linked} – Guid типа элемента который требуется привязать к списку

list: {id_list_to_be_linked} - Guid списка, к которому привязывается элемент

name: {element_name} – название создаваемого элемента (связи)

  • No labels