Проект содержит пример подключаемого модуля (плагина) для web-сервера ВЕРТИКАЛЬ, выполняющего расширение WebAPI.

!!! Необходимо крайне внимательно и осторожно относиться к разработке модулей расширения сервера, поскольку работа этих модулей может значительно влиять на работу сервера.

Требования к разработчику подключаемых к серверу приложений модулей:
- знание технологической платформы ASP.NET (желательно - опыт разработки веб-приложений на этой платформе),
- понимание технологии Dependency Injection (https://learn.microsoft.com/ru-ru/dotnet/core/extensions/dependency-injection).

Для создания подключаемого модуля (плагина) для web-сервера ВЕРТИКАЛЬ необходимо:
- скопировать проект с примером из папки <Каталог установки Комплекса>\Vertical\Web\SDK\Samples\BackendPlugin в другую папку на компьютере,
- выполнить переименование проекта в соответствии с назначением плагина,
- выполнить переименование контроллера и класса PluginNameController - заменить слова PluginName в наименовании класса на логическое название в соответсвии с назначением контроллера,
- изменить путь конечной точки в контроллере [Route("/api/plugins/plugin-name/")] - заменить слова plugin-name на логическое название в соответсвии с назначением контроллера,
- добавить зависимости на библиотеки API ядра ВЕРТИКАЛЬ из папки <Каталог установки Комплекса>\Vertical\Web: Ascon.Vertical.dll, Ascon.Vertical.Core.dll, Ascon.Vertical.ReferenceData.dll, Ascon.Vertical.Reports.Builder.dll (в примере зависимости отключены),
- выполнить сборку проекта и скопировать собранную библиотеку плагина *.dll и описание *.xml в директорию для плагинов.

Путь к директории для плагинов задается в файле настроек web-сервера Ascon.Vertical.Web.Server.settings в параметре PluginsPath.
Если параметр PluginsPath отсутствует, то сервер попытается найти плагин в директории Plugins рядом с web-сервером.

После размещения библиотеки в директории с плагинами необходимо запустить или перезапустить web-сервер ВЕРТИКАЛЬ.

При удачном подключении плагина информация о новых методах появится в описании WebAPI сервера приложений в формате OpenAPI по адресу:
http[s]://<aдрессервера>:<портсервера>/api/index.html.

Плагин содержит примеры методов:
- для получения информации о плагине,
- для получения информации об объекте технологии,
- для получения информации об атрибутах объекта технологии.

Плагин может содержать в себе несколько контроллеров.
Каждый контроллер может содержать разные типы HTTP-методов, тип метода задается атрибутом (HttpGet, HttpPost и т.д).

Для обращения к методам WebAPI ВЕРТИКАЛЬ необходима авторизация с использованием JWT-токена.

При необходимости в плагине можно использовать методы API ядра ВЕРТИКАЛЬ.
Для ознакомления с документацией API ядра ВЕРТИКАЛЬ необходимо выполнить пакетный файл Documentation.bat, расположенный в директории <Каталог установки Комплекса>\Vertical\Web\SDK.

Внимание! ВЕРТИКАЛЬ 24.1 содержит изменения API, на которые разработчик должен обратить внимание:

Изменения WebAPI:
- метод POST: /api/documentation/packages/get-default-parameters - изменены входные параметры (поле technologyTypeId удалено, поле technologyId добавлено),
- метод POST: /api/links/{id:int}/change-order - изменен url метода на api/links/change-order, изменены входные параметры (добавлено поле SourceLinkIds), изменены выходные параметры (вместо одного объекта возвращается коллекция объектов, добавлено поле ErrorsMessages).
- метод POST: /api/objects/{id}/children/add-moving - изменены входные параметры (для объекта из списка перемещаемых объектов добавлено поле linkId и перенесено внутрь объекта поле FilterFrom), изменены выходные параметры (вместо одного объекта возвращается коллекция объектов, добавлены поля Link и ErrorsMessages).

Изменения Ascon.Vertical.Core.dll:
- метод ITechDocumentationManager.GetDefaultDocumentsPackageParameters - удален,
- метод TechDocumentsPackageParameters.GetDefault - удален,
- метод ITechBatchOperations.UpdateObjectsAttributes - изменены входные параметры (для поля attributes изменен тип данных на IReadOnlyList<UpdateObjectAttributeRequest>),
- метод ITechBatchOperations.UpdateLinksAttributes - изменены входные параметры (для поля attributes изменен тип данных на IReadOnlyList<UpdateLinkAttributeRequest>).

Изменения Ascon.Vertical.Core.Loodsman.dll:
- метод ITechTemplateManager.GetObjectTemplatedState - изменены входные параметры (поле variativeTechnologyId типа int изменено на поле variativeTechnology типа ITechObject),
- метод ITechTemplateManager.GetOriginalObject - изменены входные параметры (поле variativeTechnologyId типа int изменено на поле variativeTechnology типа ITechObject),
- метод ITechTemplateManager.ChangeObjectInVariativeTechnology - изменены входные параметры (поле variativeTechnologyId типа int изменено на поле variativeTechnology типа ITechObject),
- метод ITechTemplateManager.ExcludeObjectInVariativeTechnology - изменены входные параметры (поле variativeTechnologyId типа int изменено на поле variativeTechnology типа ITechObject).