Back to Beekeeper Studio

Plugin Manifest Reference

docs/plugin_development/manifest.md

5.7.210.8 KB
Original Source

Plugin Manifest Reference

!!! warning "Beta Feature" The plugin system is in beta (available in Beekeeper Studio 5.3+). We'd love your feedback!

The manifest.json file defines your plugin's metadata, capabilities, settings, and permissions. This file must be located in the root of your plugin directory.

Manifest's structure

PropertyTypeRequiredDescription
idstringYesUnique identifier for your plugin. Use lowercase letters, numbers, and hyphens only.
namestringYesDisplay name shown to users in the Plugin Manager and UI.
authorstring | AuthorInfoYesPlugin author or organization name.
descriptionstringYesBrief description of what your plugin does.
versionstringYesSemantic version of your plugin (e.g., "1.0.0", "2.1.5").
iconstringNoMaterial UI icon name. See Material Icons for available options.
capabilitiesCapabilitiesYesDefines what views your plugin provides.
pluginEntryDirstringNoPath to your plugin's built files relative to the plugin root. Defaults to project root.
manifestVersion1 | 0NoVersion of the manifest format. Defaults to 0.
minAppVersionstringNoMinimum Beekeeper Studio version required. If not specified, all version of Beekeeper Studio are supported.
settingsunknownNo(Planned for future releases) Configuration options that can be set via config files.
permissionsunknownNo(Planned for future releases) List of permissions your plugin requires.

AuthorInfo

PropertyTypeRequiredDescription
namestringYesAuthor or organization name.
urlstringYesAuthor or organization URL.

Capabilities

PropertyTypeRequiredDescription
viewsView[]YesArray of view definitions for your plugin.

View

PropertyTypeRequiredDescription
idstringYesUnique identifier for this view.
namestringYesDisplay name shown in tabs/sidebar.
typeViewTypeYesType of view.
entrystringYesPath to the HTML file relative to plugin root.

ViewType

ValueDescription
"shell-tab"Tab with your plugin's iframe at the top and a collapsible result table at the bottom.
"base-tab"Full-tab interface.
"primary-sidebar"(Planned for future releases) Primary sidebar panel.
"secondary-sidebar"(Planned for future releases) Secondary sidebar panel.

Basic Example

json
{
    "id": "my-database-plugin",
    "name": "Database Analyzer",
    "author": "Your Name",
    "description": "Analyzes database performance and provides optimization suggestions",
    "version": "1.0.0",
    "manifestVersion": 1,
    "minAppVersion": "5.4.0",
    "icon": "analytics",
    "capabilities": {
        "views": [
            {
                "id": "analyzer-tab",
                "name": "Analyzer",
                "type": "shell-tab",
                "entry": "index.html"
            }
        ],
        "menus": [
            {
                "command": "openAnalyzer",
                "name": "Open Analyzer",
                "view": "analyzer-tab",
                "placement": "menubar.tools"
            }
        ]
    }
}

Type Definitions

AuthorInfo

PropertyTypeRequiredDescription
namestringYesAuthor or organization name.
urlstringYesAuthor or organization URL.

Capabilities

PropertyTypeRequiredDescription
viewsPluginView[]NoArray of view definitions for your plugin.
menusPluginMenuItem[]NoArray of menu definitions for your plugin.

PluginView

PropertyTypeRequiredDescription
idstringYesUnique identifier for this view.
namestringYesDisplay name shown in tabs/sidebar.
typePluginViewTypeYesType of view.
entrystringYesPath to the HTML file relative to plugin root.

PluginViewType

ValueDescription
"plain-tab"Tab with your plugin's iframe taking up the entire tab.
"shell-tab"Tab with your plugin's iframe at the top and a collapsible result table at the bottom.
"primary-sidebar"(Planned for future releases) Primary sidebar panel.
"secondary-sidebar"(Planned for future releases) Secondary sidebar panel.

PluginMenuItem

PropertyTypeRequiredDescription
commandstringYesCommand or id of the menu item.
namestringYesUser-facing label shown in the UI for this menu item.
viewstringNoID of a view defined in capabilities.views; the host opens a new tab of that view.
placementPluginMenuItemPlacementNoLocation or locations in the app where this menu item should appear, expressed as a string or array of strings.
groupstringNo(Planned for future releases) Optional group identifier for sorting and grouping items within a placement.
ordernumberNo(Planned for future releases) Optional numeric order for fine-grained sorting within a group, with lower numbers shown first.

PluginMenuItemPlacement

ValueDescription
"newTabDropdown"Shown in the dropdown list when opening a new tab
"menubar.tools"Shown in the tools menu
"editor.query.context"Context menu inside the query editor
"results.cell.context"Context menu on a cell
"results.columnHeader.context"Context menu on a row header
"results.rowHeader.context"Context menu on a column header
"results.corner.context"Context menu on the top left corner
"tableTable.cell.context"Context menu on a cell
"tableTable.columnHeader.context"Context menu on a row header
"tableTable.rowHeader.context"Context menu on a column header
"tableTable.corner.context"Context menu on the top left corner
"tab.query.header.context"Context menu on the query tab header
"tab.table.header.context"Context menu on the table tab header
"entity.table.context"Context menu on a table
"entity.schema.context"Context menu on a schema
"entity.routine.context"Context menu on a routine

Legacy Format (Manifest V0)

The old tabTypes format looks like this:

json
{
    "manifestVersion": 0,
    "capabilities": {
        "views": {
            "tabTypes": [
                {
                    "id": "data-visualizer",
                    "name": "Data Visualizer",
                    "kind": "shell",
                    "entry": "tab.html"
                }
            ]
        }
    }
}

Please use the new capabilities format instead.