Перейти к содержимому

Manifest модуля (integration.manifest.json)

Корень пакета: modules/Integrations/{Code}/integration.manifest.json. code = имя папки.

Обязательные поля

ПолеТипОписание
codestringMyCrm = папка MyCrm
namestringКаталог модулей
versionstringSemver

license

json
"license": {
  "required": true,
  "validator": "Modules\\Integrations\\MyCrm\\MyCrmLicenseValidator",
  "label": "Лицензионный ключ",
  "product_code": "platparts-my-crm",
  "recheck_hours": 24
}
ПолеОписание
requiredfalse → всегда valid
validatorModuleLicenseValidatorInterface
product_codeОпционально для WHMCS/вендора
recheck_hoursCron проверки (24 по умолчанию)

capabilities

КлючИнтерфейс / типНазначение
hookshooks.phpPHP‑обработчики событий
inbound_webhook или inbound_webhook_handlerIntegrationInboundWebhookHandlerInterfaceCRM → сайт
schedule_registrarIntegrationScheduleRegistrarInterfaceCron модуля
instance_formIntegrationInstanceFormExtensionInterfaceФорма Подключения модулей
package_adminIntegrationPackageAdminExtensionInterfaceДействия на странице в Каталоге
order_header_actionsIntegrationOrderHeaderActionsProviderInterfaceКнопки в заказе
external_systemstring, напр. my_crmBulk + запись в Интеграции

Пример 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.

Связанные разделы

База знаний для EMS-платформы PlatParts.