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.
View JSON Schema on GitHub

JSON Schema

adobe-photoshop-uxp-plugin-manifest-schema.json Raw ↑
{
  "$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."
    }
  }
}