Manifest Schema Reference
Introduction
Each add-on bundle contains a manifest.json file at the root level which defines the metadata for your add-on and how it should behave. This guide outlines the latest manifest version available, which is version 2.
Sample manifest.json
Copied to your clipboard{"testId": "addon-sample","name": "Add-on Sample","version": "1.0.0","manifestVersion": 2,"requirements": {"apps": [{"name": "Express","apiVersion": 1}],"supportsTouch": false,},"entryPoints": [{"type": "panel","id": "panel1","main": "index.html","documentSandbox": "code.js","permissions": {"sandbox": ["allow-popups", "allow-presentation", "allow-downloads"],"oauth": ["www.dropbox.com"]}}]}
Manifest Properties
Note: The ? denotes the key is optional.
| Key | Type | Description |
|---|---|---|
testId? | string | Used to uniquely identify an add-on among other add-ons during a development workflows only. This is auto-generated and inserted into the manifest by the CLI when an add-on is created. This is mandatory in the development workflow and ignored in add-ons submitted to the marketplace. |
name? | string | Add-on name for development workflow only. The name provided in the UI during submission is used in all other workflows. |
version | string | Add-on version in "major.minor.patch" format (e.g. "1.2.0") |
manifestVersion | number | Version of the manifest schema (e.g. 2). |
object | Specify the apps the add-on is applicable for. | |
object [] | An entry point for your add-on. At least one is required. |
requirements
| Key | Type | Description |
|---|---|---|
object [] | Add-on authors can specify the apps that the add-on is intended for. | |
experimentalApis? | boolean | Add-ons can opt to use experimental apis by specifying this flag. This flag is only allowed during development and needs to be removed during submission. |
supportsTouch? | boolean | Whether the add-on supports touch-only devices. If not specified, the default value assumed is false. |
renditionPreview? | boolean | Ensure premium content preview is properly handled for free users when add-ons create renditions. |
Example:
Copied to your clipboard"requirements": {"apps": [{"name": "Express","apiVersion": 1,"supportedDeviceClass": ["desktop"]},{…}],"experimentalApis": true,"supportsTouch": false,"renditionPreview": true}
requirements.apps
| Key | Type | Description |
|---|---|---|
name | string | Currently supported values: "Express" |
apiVersion | number | API version that the add-on uses. Currently supported values: 1 |
string [] | Supported platforms by the add-on. If not specified, the default value assumed is: ["desktop"]. |
Example:
Copied to your clipboard"apps": [{"name": "Express","apiVersion": 1,"supportedDeviceClass": ["desktop"]}],
requirements.apps.supportedDeviceClass
The following platform value is currently supported in the supportedDeviceClass key.
| Platform | Description |
|---|---|
desktop | Browser on desktop. |
entryPoints
| Key | Type | Description |
|---|---|---|
type | string | The type of the entry point. Currently supported values: "panel". |
id | string | Identifier for the entry point. Must be unique within the add-on. |
main | string | Main file for this entry point when launched. |
documentSandbox | string | File containing the JavaScript code to use with the document sandbox SDK and Adobe Express Document APIs. |
object | The permissions defined for this entry point. |
Example:
Copied to your clipboard"entryPoints": [{"type": "panel","id": "panel1","main": "index.html","permissions": {"sandbox": ["allow-popups", "allow-popups-to-escape-sandbox", "allow-presentation", "allow-downloads"],"oauth": ["www.dropbox.com"]}}]
entrypoints.permissions
| Key | Type | Description |
|---|---|---|
string [] | List of iframe sandbox permissions. | |
oauth? | string [] | List of 3rd party auth server domains for which OAuth workflow may be requested. |
clipboard? | string [] | The allowed values for the list of clipboard permissions. Currently, clipboard-write is supported and allows an add-on to write arbitrary data to the clipboard. |
microphone? | string | The allowlists value used in iframe ‘allow’ attribute. Enables the add-on to access the user's microphone for audio input. |
camera? | string | The allowlists value used in iframe ‘allow’ attribute. Enables the add-on to access the user's camera for video input. |
Example:
Copied to your clipboard"permissions" : {"sandbox": [" allow-popups ", "allow-downloads"],"oauth" : ["...", "..."],"clipboard": ["clipboard-write"],"microphone": "*","camera" : "*"}
entrypoints.permissions.sandbox
The following permission values are currently supported in the sandbox key.
| Permission | Description |
|---|---|
allow-popups | Allows popups (such as window.open(), target="_blank", or showModalDialog()). Note: If this permission is not set and you're using popups, the popup will silently fail to open. |
allow-popups-to-escape-sandbox | Allows a sandboxed document to open new windows without forcing the sandboxing flags upon them |
allow-presentation | Lets the add-on start a presentation session. |
allow-downloads | Allows downloading files through an <a> or <area> element with the download attribute, as well as through the navigation that leads to a download of a file. |
Example:
Copied to your clipboard"permissions" : {"sandbox": ["allow-popups ", "allow-downloads"],}
IMPORTANT: When implementing the premium content flows where you present a dialog or option to allow the user to upgrade, you must be sure to also include the following permissions in the sandbox attribute of your manifest.json. This will allow the Adobe Express pricing page to properly load:
Copied to your clipboard"entryPoints": [{/*... other fields ...*/"permissions": {"sandbox": ["allow-popups-to-escape-sandbox", "allow-popups", "allow-downloads"]}}]
Notes
Files within the add-on bundle can refer to each other via relative paths.
Changes to your add-on manifest currently require a reload, but you can simply use the Refresh button from the Add-on Development panel to force the add-on to reload and pick up your manifest changes.
