Plugin manifest and ZIP package reference
A package has one top-level directory matching its plugin ID and one netseller-plugin.json. A src/ directory is required even if a plugin has no providers.
| Manifest field | Type | Required | Meaning |
|---|---|---|---|
id |
string | Yes | Stable package identity; starts with a lowercase letter or digit, followed by lowercase letters, digits, dots, underscores or hyphens. |
version |
string | Yes | Non-empty release identifier; use a consistent version scheme such as 1.0.0. |
name |
string | No | Display name; defaults to the directory name. |
description |
string | No | Package description. |
providers |
string[] | No | Component paths relative to src/, without .cfc. For example providers.plugin_provider. |
These are the manifest fields consumed by the current package loader. There is no dependency installer or NetSeller-version constraint in this manifest contract.
Identity and mappings
Section titled “Identity and mappings”NetSeller converts runs of non-alphanumeric characters in the ID to underscores and trims leading/trailing underscores. For example.hello:
- Component prefix:
netseller_plugin_example_hello. - View prefix:
/netseller_plugin_example_hello/. - Database prefix:
plg_example_hello_. - Route and permission prefix:
plugin.example.hello..
IDs such as example.hello and example-hello produce the same component prefix and cannot coexist. Choose a stable vendor-prefixed ID.
Providers
Section titled “Providers”A provider is a CFC instantiated by NetSeller. If it has an init() method, NetSeller calls it without arguments. Provider methods are optional. Definition/contributor methods return arrays; return [] when there is no contribution.
Keep registration methods free of database writes and external requests. They can be called while registries are built. Use a controller action for user-triggered behaviour or the activation hook for idempotent provisioning.
Package your release
Section titled “Package your release”Include only the plugin folder, with its manifest, src/, migrations and any required runtime assets:
example.hello.zip example.hello/ netseller-plugin.json src/ db/migrations/Do not put the manifest directly at the archive root or wrap the plugin in an additional project directory. Exclude credentials, local configuration, source-control metadata and unrelated build tools.
The package must contain its runtime dependencies. A plugin view is a server-side CFML mapping, not a promise that its files are directly accessible as browser assets. Serve plugin-specific assets through a protected or appropriately scoped plugin route when required; do not assume /plugins/.../assets/ is a static directory.
Follow Installation and updates to deploy the ZIP.