Adobe Photoshop · Schema
Adobe Photoshop UXP Plugin Manifest
Schema for the manifest.json file required by UXP plugins for Adobe Photoshop. The manifest defines plugin metadata, entry points, permissions, and host application requirements.
AI/MLCreative CloudImage EditingPhotoshopPluginsREST APIScripting
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique plugin identifier. Use reverse domain notation (e.g., com.example.myplugin). |
| name | string | Display name of the plugin shown in the Photoshop UI. |
| version | string | Plugin version in semver format (major.minor.patch). |
| manifestVersion | integer | UXP manifest schema version. Version 5 or 6 recommended for current Photoshop. |
| main | string | Path to the main JavaScript entry point file relative to the plugin root. |
| host | object | Host application requirements. |
| entrypoints | array | Plugin entry points defining panels, commands, and other UI elements. |
| icons | array | Plugin icons at various sizes for different display contexts. |
| requiredPermissions | object | Permissions the plugin requires to function. |
| addon | object | Configuration for hybrid plugin native C++ addon. |
| description | string | Short description of the plugin's purpose. |
| author | string | Plugin author or company name. |
| keywords | array | Keywords for plugin discovery in the Adobe Marketplace. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://developer.adobe.com/photoshop/uxp/plugin-manifest.schema.json",
"title": "Adobe Photoshop UXP Plugin Manifest",
"description": "Schema for the manifest.json file required by UXP plugins for Adobe Photoshop. The manifest defines plugin metadata, entry points, permissions, and host application requirements.",
"type": "object",
"required": [
"id",
"name",
"version",
"manifestVersion",
"host",
"entrypoints"
],
"properties": {
"id": {
"type": "string",
"description": "Unique plugin identifier. Use reverse domain notation (e.g., com.example.myplugin)."
},
"name": {
"type": "string",
"description": "Display name of the plugin shown in the Photoshop UI."
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"description": "Plugin version in semver format (major.minor.patch)."
},
"manifestVersion": {
"type": "integer",
"enum": [4, 5, 6],
"description": "UXP manifest schema version. Version 5 or 6 recommended for current Photoshop."
},
"main": {
"type": "string",
"description": "Path to the main JavaScript entry point file relative to the plugin root."
},
"host": {
"type": "object",
"description": "Host application requirements.",
"required": [
"app",
"minVersion"
],
"properties": {
"app": {
"type": "string",
"const": "PS",
"description": "Host application identifier. PS for Adobe Photoshop."
},
"minVersion": {
"type": "string",
"description": "Minimum required Photoshop version (e.g., 22.0.0 for UXP support)."
},
"maxVersion": {
"type": "string",
"description": "Optional maximum supported Photoshop version."
}
}
},
"entrypoints": {
"type": "array",
"description": "Plugin entry points defining panels, commands, and other UI elements.",
"items": {
"type": "object",
"required": [
"type",
"id",
"label"
],
"properties": {
"type": {
"type": "string",
"enum": [
"panel",
"command"
],
"description": "Entry point type. panel creates a dockable panel, command creates a menu item."
},
"id": {
"type": "string",
"description": "Unique identifier for this entry point within the plugin."
},
"label": {
"type": "object",
"description": "Localized display labels for the entry point.",
"properties": {
"default": {
"type": "string",
"description": "Default display label."
}
},
"additionalProperties": {
"type": "string"
}
},
"minimumSize": {
"type": "object",
"description": "Minimum panel dimensions (panel type only).",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
},
"maximumSize": {
"type": "object",
"description": "Maximum panel dimensions (panel type only).",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
},
"preferredDockedSize": {
"type": "object",
"description": "Preferred panel dimensions when docked.",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
},
"preferredFloatingSize": {
"type": "object",
"description": "Preferred panel dimensions when floating.",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
},
"shortcut": {
"type": "object",
"description": "Keyboard shortcut for the entry point.",
"properties": {
"mac": {
"type": "string",
"description": "macOS keyboard shortcut."
},
"win": {
"type": "string",
"description": "Windows keyboard shortcut."
}
}
}
}
}
},
"icons": {
"type": "array",
"description": "Plugin icons at various sizes for different display contexts.",
"items": {
"type": "object",
"required": [
"width",
"height",
"path"
],
"properties": {
"width": {
"type": "integer",
"description": "Icon width in pixels."
},
"height": {
"type": "integer",
"description": "Icon height in pixels."
},
"path": {
"type": "string",
"description": "Path to the icon file relative to the plugin root."
},
"scale": {
"type": "array",
"items": {
"type": "number"
},
"description": "Display scale factors (e.g., [1, 2] for standard and Retina)."
},
"theme": {
"type": "array",
"items": {
"type": "string",
"enum": [
"lightest",
"light",
"medium",
"dark",
"darkest",
"all"
]
},
"description": "UI themes this icon supports."
}
}
}
},
"requiredPermissions": {
"type": "object",
"description": "Permissions the plugin requires to function.",
"properties": {
"clipboard": {
"type": "string",
"enum": [
"read",
"readAndWrite"
],
"description": "Clipboard access level."
},
"network": {
"type": "object",
"description": "Network access permissions.",
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allowed network domains. Use 'all' for unrestricted access."
}
}
},
"webview": {
"type": "object",
"description": "WebView permissions for embedded web content.",
"properties": {
"allow": {
"type": "string",
"enum": [
"yes",
"no"
]
},
"domains": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ipc": {
"type": "object",
"description": "Inter-plugin communication permissions.",
"properties": {
"enablePluginCommunication": {
"type": "boolean"
}
}
},
"allowCodeGenerationFromStrings": {
"type": "boolean",
"description": "Whether to allow eval() and Function() from strings."
},
"localFileSystem": {
"type": "string",
"enum": [
"plugin",
"request",
"fullAccess"
],
"description": "File system access level. plugin = plugin sandbox only, request = user-prompted, fullAccess = unrestricted."
},
"launchProcess": {
"type": "object",
"description": "Permission to launch external processes (hybrid plugins).",
"properties": {
"schemes": {
"type": "array",
"items": {
"type": "string"
}
},
"extensions": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"enableAddon": {
"type": "boolean",
"description": "Whether to enable native C++ addon loading (hybrid plugins)."
}
}
},
"addon": {
"type": "object",
"description": "Configuration for hybrid plugin native C++ addon.",
"properties": {
"cplugins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"filter"
]
},
"path": {
"type": "string",
"description": "Relative path to the .uxpaddon file."
}
}
}
}
}
},
"description": {
"type": "string",
"description": "Short description of the plugin's purpose."
},
"author": {
"type": "string",
"description": "Plugin author or company name."
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Keywords for plugin discovery in the Adobe Marketplace."
}
}
}