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."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/adobe-photoshop-uxp-plugin-manifest"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.