Структура каталога

plugin/
└── foo
    ├── app
    │   ├── controller
    │   │   └── IndexController.php
    │   ├── exception
    │   │   └── Handler.php
    │   ├── functions.php
    │   ├── middleware
    │   ├── model
    │   └── view
    │       └── index
    │           └── index.html
    ├── config
    │   ├── app.php
    │   ├── autoload.php
    │   ├── container.php
    │   ├── database.php
    │   ├── exception.php
    │   ├── log.php
    │   ├── middleware.php
    │   ├── process.php
    │   ├── redis.php
    │   ├── route.php
    │   ├── static.php
    │   ├── thinkorm.php
    │   ├── translation.php
    │   └── view.php
    ├── public
    └── api

Мы видим, что приложение-плагин имеет такую же структуру каталогов и конфигурационные файлы, как и webman; фактически, опыт разработки и создание обычных приложений webman практически не отличается.
Каталоги плагинов и наименования следуют спецификации PSR4, так как плагины располагаются в каталоге plugin, пространство имен начинается с plugin, например, plugin\foo\app\controller\UserController.

О каталоге api

В каждом плагине есть каталог api. Если ваше приложение предоставляет некоторые внутренние интерфейсы для вызова другими приложениями, вам нужно разместить интерфейсы в каталоге api.
Обратите внимание, что здесь речь идет об интерфейсах вызова функций, а не сетевых интерфейсах.
Например, плагин для отправки электронной почты предоставляет интерфейс Email::send() в plugin/email/api/Email.php для вызова другими приложениями с целью отправки электронной почты.
Кроме того, plugin/email/api/Install.php автоматически генерируется и предназначен для вызова установочных или удаляющих операций из рынка плагинов webman-admin.