REST routes
Mount under /api/plugins/<id>/… via IPlugin.RegisterRoutes.
Home · Features · Plugin Platform
One folder: a plugin.json manifest plus optional .NET and TypeScript tiers. Drop it in — new REST routes, sidebar tools, workers, and map layer types at next startup.
One folder, one manifest
plugin.json + optional .NET DLL + optional ESM UI. Drop into plugins directory — discovered at next startup. No app rebuild.
Mount under /api/plugins/<id>/… via IPlugin.RegisterRoutes.
Declare tools[] — buttons appear under your category automatically.
Register factories — catalog items with your cd_itemtype load through the plugin.
StartAsync / StopAsync for loops, sidecar probes, streams.
Deployment
<appdir>/plugins/%APPDATA%\3DMapExplorer\LocalMapServer\plugins\Plugins:Enabled / AllowedIds enterprise controlsplugins/my-plugin/my-plugin/ plugin.json # required bin/MyPlugin.dll # optional .NET ui/index.js # optional ESM GET /api/plugins → discovered + active GET /api/plugins/hello-world/ping ● [plugins] activated my-plugin v1.0.0
In-house analysis, partner connector, or custom layer type — one folder, drop in, shows up in the sidebar.