Extension Manifest Reference
:::info Auto-generated
This document is auto-generated from ExtensionManifestSchema.json. Do not edit manually.
Regenerate with: npm run generate:manifest-docs
:::
Schema for extension.json. The manifest loader rejects anything that fails this schema. See packages/core/src/Extensions/ExtensionManifest.ts for the matching TypeScript shape and docs/desktop-refactor/spec-A.extension-api.md §Manifest for the design rationale.
Required fields: id, name, version, publisher, engines
Top-Level Properties
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | ext.^ext\.[a-z0-9]+(?:-[a-z0-9]+)*\.[a-z0-9]+(?:-[a-z0-9]+)*$ |
name | string or { key, params } | Yes | |
displayName | string or { key, params } | No | |
version | string | Yes | Semver version of the extension package. Pattern: ^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$ |
publisher | string | Yes | Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$ |
description | string or { key, params } | No | |
categories | string[] | No | Unique items |
keywords | string[] | No | Unique items |
homepage | string | No | Format: uri |
repository | string | No | Format: uri |
bugs | string | No | Format: uri |
license | string | No | |
pricing | "free", "freemium", "paid" | No | Values: free, freemium, paid |
icon | string | No | |
preview | boolean | No | |
main | string | No | |
permissions | Permission[] | No | Unique items |
activationEvents | string[] | No | Unique items |
l10n | string | No |
engines
Required.
| Property | Type | Required | Description |
|---|---|---|---|
bibleApp | string | Yes | Semver range against EXTENSION_API_VERSION. |
network
Optional.
| Property | Type | Required | Description |
|---|---|---|---|
allowedHosts | AllowedHost[] | Yes | Min items: 1 |
network.allowedHosts items
| Property | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Hostname or *.subdomain wildcard. Wildcards match one or more labels. Min length: 1 |
purpose | string or { key, params } | Yes | |
methods | "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"[] | No | Unique items |
privacy
Privacy declaration — what data the extension collects and sends to its backend.
Optional.
| Property | Type | Required | Description |
|---|---|---|---|
dataCollection | "analytics", "crash-reports", "user-content", "personalization", "none"[] | Yes | Min items: 1. Unique items |
privacyPolicyUrl | string | No | Format: uri |
webviews
Optional.
| Property | Type | Required | Description |
|---|---|---|---|
csp | object | No |
webviews.csp
| Property | Type | Required | Description |
|---|---|---|---|
img-src | CspSourceList | No | |
font-src | CspSourceList | No | |
style-src | CspSourceList | No | |
connect-src | CspSourceList | No | |
media-src | CspSourceList | No | |
frame-src | CspSourceList | No |
runtime
Optional.
| Property | Type | Required | Description |
|---|---|---|---|
maxMemoryMB | integer | No | Maximum V8 heap size in MB for the worker process. Clamped to 256–1024 MB. Default 256. Min: 256. Max: 1024 |
contributes
Optional. Declares static contributions the extension makes to the host application.
| Contribution Point | Type | Description |
|---|---|---|
commands | ContributedCommand[] | See details below |
panelTypes | PanelTypeDef[] | See details below |
menus | object | See details below |
configuration | object | See details below |
providers | object | See details below |
displayModes | DisplayModeDescriptor[] | See details below |
themes | ContributedTheme[] | See details below |
fonts | ContributedFont[] | See details below |
icons | ContributedIcon[] | See details below |
styles | ContributedStyle[] | See details below |
fileImporters | ContributedFileImporter[] | See details below |
apiExports | ContributedApiExport[] | See details below |
bibleProviders | BibleProviderDescriptor[] | See details below |
commentaryProviders | CommentaryProviderDescriptor[] | See details below |
dictionaryProviders | DictionaryProviderDescriptor[] | See details below |
bookProviders | BookProviderDescriptor[] | See details below |
contributes.commands
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Min length: 1 |
title | string or { key, params } | Yes | |
category | string or { key, params } | No | |
shortcut | KeybindingDescriptor | array | No | |
when | string | No | |
handlerEndpoint | string | No | |
order | integer | No | |
hidden | boolean | No |
contributes.panelTypes
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Min length: 1 |
title | string or { key, params } | Yes | |
icon | string | No | |
uiEntry | string | Yes | |
defaultBucket | "left", "right", "bottom", "unknown" | No | Values: left, right, bottom, unknown |
writingPane | boolean | No |
contributes.menus
A map of menu location IDs to arrays of menu items.
Menu item properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | No | |
label | string or { key, params } | Yes | |
icon | string | No | |
command | string | Yes | |
args | any | No | |
when | string | No | |
order | integer | No | |
separatorBefore | boolean | No | |
separatorAfter | boolean | No |
contributes.configuration
Accepts either a JSON Schema { "$ref": "..." } pointing to an external schema file, or an inline JSON Schema object defining the extension's configuration shape.
contributes.providers
A map of provider type IDs to handler endpoint strings.
contributes.displayModes
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Min length: 1 |
label | string or { key, params } | Yes | |
kind | "overlay", "replace" | Yes | Values: overlay, replace |
renderEndpoint | string | Yes | |
applicableLanguages | string[] | No |
contributes.themes
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
label | string or { key, params } | Yes | |
path | string | Yes |
contributes.fonts
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
family | string | Yes | |
files | string[] | Yes | Min items: 1 |
fallback | string | No |
contributes.icons
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
path | string | Yes |
contributes.styles
| Property | Type | Required | Description |
|---|---|---|---|
path | string | Yes | |
scope | "verse", "panel", "global" | Yes | Values: verse, panel, global |
contributes.fileImporters
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
label | string or { key, params } | Yes | |
extensions | string[] | Yes | Min items: 1 |
handlerEndpoint | string | Yes |
contributes.apiExports
| Property | Type | Required | Description |
|---|---|---|---|
method | string | Yes | Pattern: ^[A-Za-z_$][A-Za-z0-9_$]*$ |
description | string or { key, params } | No | |
handlerEndpoint | string | Yes |
contributes.bibleProviders
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string or { key, params } | Yes | |
abbreviation | string | Yes | |
language | string | No | |
capabilities | "lookup", "range", "iterate", "remote"[] | Yes | |
fetchEndpoint | string | Yes | |
rangeEndpoint | string | No | |
iterateEndpoint | string | No |
contributes.commentaryProviders
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string or { key, params } | Yes | |
abbreviation | string | Yes | |
language | string | No | |
capabilities | "lookup", "range", "iterate", "similarity", "remote"[] | Yes | |
fetchEndpoint | string | Yes | |
rangeEndpoint | string | No | |
iterateEndpoint | string | No | |
similarityEndpoint | string | No |
contributes.dictionaryProviders
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string or { key, params } | Yes | |
abbreviation | string | Yes | |
language | string | No | |
capabilities | "lookup", "search", "iterate", "strongs", "lemma", "morphology", "remote"[] | Yes | |
fetchEndpoint | string | Yes | |
searchEndpoint | string | No | |
iterateEndpoint | string | No | |
morphologyEndpoint | string | No |
contributes.bookProviders
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string or { key, params } | Yes | |
abbreviation | string | Yes | |
language | string | No | |
capabilities | "lookup", "iterate", "remote"[] | Yes | |
fetchEndpoint | string | Yes | |
listEndpoint | string | No | |
iterateEndpoint | string | No |
Type Definitions
These types are referenced throughout the manifest schema.
LocalizedString
One of:
- A plain
string - An object with properties: key, params
Permission
One of: "bible:read", "commentary:read", "dictionary:read", "book:read", "notes:read", "notes:write", "highlights:read", "highlights:write", "bookmarks:read", "bookmarks:write", "bible:provide", "commentary:provide", "dictionary:provide", "book:provide", "search:provide", "display-mode:provide", "import:provide", "ai:provide", "tts:provide", "storage", "storage:secrets", "storage:database", "ui:contribute-pane", "ui:verse-decorator", "ui:verse-hover", "ui:context-menu", "ui:notification", "ui:status-bar", "ui:media", "commands:register", "tasks", "network", "network:oauth", "extensions:call", "fs:read-user", "fs:write-user", "fs:managed-folder"
AllowedHost
| Property | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Hostname or *.subdomain wildcard. Wildcards match one or more labels. Min length: 1 |
purpose | string or { key, params } | Yes | |
methods | "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"[] | No | Unique items |
KeybindingDescriptor
| Property | Type | Required | Description |
|---|---|---|---|
key | string | Yes | |
mac | string | No | |
when | string | No |
Shortcut
One of:
- KeybindingDescriptor
- An array
Permissions Reference
The permissions array accepts the following values:
bible
"bible:read""bible:provide"
commentary
"commentary:read""commentary:provide"
dictionary
"dictionary:read""dictionary:provide"
book
"book:read""book:provide"
notes
"notes:read""notes:write"
highlights
"highlights:read""highlights:write"
bookmarks
"bookmarks:read""bookmarks:write"
search
"search:provide"
display-mode
"display-mode:provide"
import
"import:provide"
ai
"ai:provide"
tts
"tts:provide"
storage
"storage""storage:secrets""storage:database"
ui
"ui:contribute-pane""ui:verse-decorator""ui:verse-hover""ui:context-menu""ui:notification""ui:status-bar""ui:media"
commands
"commands:register"
tasks
"tasks"
network
"network""network:oauth"
extensions
"extensions:call"
fs
"fs:read-user""fs:write-user""fs:managed-folder"