Manifest модуля (integration.manifest.json)
Корень пакета: modules/Integrations/{Code}/integration.manifest.json. code = имя папки.
Обязательные поля
| Поле | Тип | Описание |
|---|---|---|
code |
string | MyCrm = папка MyCrm |
name |
string | Каталог модулей |
version |
string | Semver |
license
json
"license": {
"required": true,
"validator": "Modules\\Integrations\\MyCrm\\MyCrmLicenseValidator",
"label": "Лицензионный ключ",
"product_code": "platparts-my-crm",
"recheck_hours": 24
}
| Поле | Описание |
|---|---|
required |
false → всегда valid |
validator |
ModuleLicenseValidatorInterface |
product_code |
Опционально для WHMCS/вендора |
recheck_hours |
Cron проверки (24 по умолчанию) |
capabilities
| Ключ | Интерфейс / тип | Назначение |
|---|---|---|
hooks |
hooks.php |
PHP‑обработчики событий |
inbound_webhook или inbound_webhook_handler |
IntegrationInboundWebhookHandlerInterface |
CRM → сайт |
schedule_registrar |
IntegrationScheduleRegistrarInterface |
Cron модуля |
instance_form |
IntegrationInstanceFormExtensionInterface |
Форма Подключения модулей |
package_admin |
IntegrationPackageAdminExtensionInterface |
Действия на странице в Каталоге |
order_header_actions |
IntegrationOrderHeaderActionsProviderInterface |
Кнопки в заказе |
external_system |
string, напр. my_crm |
Bulk + запись в Интеграции |
Пример manifest с external_system (сокращённо):
json
{
"code": "MyCrm",
"name": "Интеграция My CRM",
"version": "1.2.0",
"capabilities": {
"hooks": true,
"external_system": "my_crm",
"inbound_webhook": "Modules\\Integrations\\MyCrm\\MyCrmInboundWebhookHandler",
"schedule_registrar": "Modules\\Integrations\\MyCrm\\MyCrmScheduleRegistrar",
"order_header_actions": "Modules\\Integrations\\MyCrm\\Filament\\MyCrmOrderHeaderActions",
"package_admin": "Modules\\Integrations\\MyCrm\\Filament\\MyCrmPackageAdminExtension",
"instance_form": "Modules\\Integrations\\MyCrm\\Filament\\MyCrmInstanceFormExtension"
},
"settings": {
"default_export_mode": "both"
}
}
settings и install
settings— значения по умолчанию (читаетpackage_admin/ форма).install.package_lifecycle— хуки установки/удаления пакета.
Полный шаблон (минимальный CRM)
json
{
"code": "MyCrm",
"name": "Интеграция My CRM",
"version": "1.0.0",
"license": {
"required": false,
"validator": "Modules\\Integrations\\MyCrm\\MyCrmLicenseValidator",
"label": "Лицензионный ключ",
"recheck_hours": 24
},
"capabilities": {
"hooks": true,
"inbound_webhook": "Modules\\Integrations\\MyCrm\\MyCrmInboundWebhookHandler",
"instance_form": "Modules\\Integrations\\MyCrm\\Filament\\MyCrmInstanceFormExtension",
"external_system": "my_crm"
}
}
Ошибки синхронизации
| Ошибка | Причина |
|---|---|
Нет integration.manifest.json |
Файл отсутствует |
| Код ≠ папка | code: Foo, папка Bar |
| Некорректный JSON | Синтаксис |
Папки _Template, .git, скрытые — пропускаются.
Legacy
Только {Name}IntegrationModule без manifest → is_legacy: true (МойСклад). Новые модули — только manifest.