Skip to Content
API referenceManifest schema

Plugin manifest.json schema

Reflected verbatim from App\Plugins\ManifestValidator::rules(). Unknown keys pass through untouched (Zod .passthrough() semantics). Two rules live outside this table and are enforced in code: a runtime: "sidecar" manifest is rejected outright, and a uiMode: declarative manifest must carry a ui spec validated by validateDeclarativeUiSpec() (see docs/PLUGINS.md → “The manifest schema”). Regenerate with php artisan docs:reference.

FieldRules
slugrequired, string, min:1, max:100, regex:/^[a-z0-9][a-z0-9-]*$/
namerequired, string, min:1, max:100
versionrequired, string, regex:/^\d+\.\d+\.\d+$/
idsometimes, string, min:1
descriptionsometimes, string, min:1, max:500
visibilitysometimes, string, in:first_party,marketplace,private
enabledByDefaultsometimes, boolean
statussometimes, string, in:published,draft
tiersometimes, string, in:A,B
distributionsometimes, string, in:monorepo,extracted
runtimesometimes, string, in:in_tree
uiModesometimes, string, in:declarative,module
uisometimes, array
providersometimes, string, min:1
navsometimes, array
nav.*.keyrequired, string, min:1
nav.*.labelrequired, string, min:1
nav.*.hrefrequired, string, min:1
permissionssometimes, array
permissions.*string, min:1
eventssometimes, array
events.*string, min:1
capabilitiessometimes, array
capabilities.*string, min:1
scopessometimes, array
scopes.*string, min:1
widgetssometimes, array
widgets.*.keyrequired, string, min:1
widgets.*.titlesometimes, string, min:1
widgets.*.permissionsometimes, string, min:1
jobssometimes, array
jobs.*.keyrequired, string, min:1
jobs.*.schedulesometimes, string, min:1
jobs.*.descriptionsometimes, string, min:1
jobs.*.namesometimes, string, min:1
jobs.*.inngestFunctionIdsometimes, string, min:1
uiExtensionssometimes, array
uiExtensions.*.hookrequired, string, min:1
uiExtensions.*.componentUrlsometimes, string, min:1
uiExtensions.*.configsometimes, array
trainingContentsometimes, array
trainingContent.*.contentKeyrequired, string, min:1
trainingContent.*.titlerequired, string, min:1
trainingContent.*.contentTyperequired, string, in:video,document,quiz,scorm
trainingContent.*.durationMinutessometimes, integer, min:0
trainingContent.*.orderIndexsometimes, integer, min:0
trainingContent.*.requiredForOnboardingsometimes, boolean
contextContributionssometimes, array
contextContributions.providessometimes, array
contextContributions.provides.*string, min:1
contextContributions.consumessometimes, array
contextContributions.consumes.*string, min:1
contextContributions.syndicatesTosometimes, array
contextContributions.syndicatesTo.*string, min:1
contextContributions.extendssometimes, array
contextContributions.extends.*.sectionKeyrequired, string, min:1
contextContributions.extends.*.fieldsrequired, array
contextContributions.extends.*.fields.*.keyrequired, string, min:1
contextContributions.extends.*.fields.*.labelrequired, string, min:1
contextContributions.extends.*.fields.*.typerequired, string, min:1
gamificationEventssometimes, array
gamificationEvents.*.keyrequired, string, min:1
gamificationEvents.*.labelrequired, string, min:1
gamificationEvents.*.defaultPointsrequired, integer
gamificationEvents.*.cooldownSecondssometimes, integer, min:0
gamificationEvents.*.dailyMaxsometimes, integer, min:0
pricingsometimes, array
pricing.modelrequired_with:pricing, string, in:free,paid,subscription
pricing.amountsometimes, numeric
pricing.currencysometimes, string
pricing.trialDayssometimes, integer, min:0
billingGatesometimes, array
billingGate.minPlansometimes, string, in:free,starter,pro,enterprise
billingGate.blockOnDelinquentsometimes, boolean
settingssometimes, array
enginessometimes, array
engines.vctrbasesometimes, string, min:1, max:255
workersometimes, array
worker.entryrequired_with:worker, string, min:1
webhookUrlsometimes, string, url
settings.adminsometimes, array
settings.admin.*.keyrequired, string, min:1
settings.admin.*.labelrequired, string, min:1
settings.admin.*.grouprequired, string, min:1
settings.admin.*.typerequired, string, in:boolean,string,number,select,multiselect,object
settings.admin.*.descriptionsometimes, string
settings.admin.*.defaultpresent
settings.admin.*.optionssometimes, array
settings.admin.*.options.*.valuerequired, string
settings.admin.*.options.*.labelrequired, string
settings.userPreferencessometimes, array
settings.userPreferences.*.keyrequired, string, min:1
settings.userPreferences.*.labelrequired, string, min:1
settings.userPreferences.*.grouprequired, string, min:1
settings.userPreferences.*.typerequired, string, in:boolean,string,number,select,multiselect,object
settings.userPreferences.*.descriptionsometimes, string
settings.userPreferences.*.defaultpresent
settings.userPreferences.*.optionssometimes, array
settings.userPreferences.*.options.*.valuerequired, string
settings.userPreferences.*.options.*.labelrequired, string
Last updated on