Plugin Manager endpoints (Admin API)
11 FeatherPanel Admin API endpoints from admin/plugin-manager.php: methods, paths, auth, permissions, rate limits, parameters and responses.
Last synced from FeatherPanel 15b94e9 on .
On this page
Defined in backend/app/routes/admin/plugin-manager.php. Authentication used here: Admin. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.
Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.
Endpoints
GET/api/admin/plugin-manager
Get all plugins Retrieve a list of all installed plugins with their configuration, status, dependencies, and file information. Only available in developer mode.
curl -X GET "$PANEL_URL/api/admin/plugin-manager" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugins retrieved successfully · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 500 Internal server error - Failed to fetch plugins
POST/api/admin/plugin-manager
Create new plugin Create a new plugin with complete directory structure, configuration files, and example code. Only available in developer mode.
Request body: PluginCreate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
identifier | string | yes | Plugin identifier |
name | string | yes | Plugin name |
description | string | no | Plugin description |
version | string | no | Plugin version |
author | string[] | no | Plugin authors |
flags | string[] | no | Plugin flags |
dependencies | string[] | no | Plugin dependencies |
requiredConfigs | string[] | no | Required configuration keys |
configSchema | object[] | no | Configuration schema |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
path | string | Plugin directory path |
files_created | object[] | |
migration_result | object |
curl -X POST "$PANEL_URL/api/admin/plugin-manager" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"identifier":"","name":"","description":"","version":"","author":[],"flags":[],"dependencies":[],"requiredConfigs":[],"configSchema":[]}'Plugin events: featherpanel:admin:plugin_manager:plugin:created
Responses: 201 Plugin created successfully · 400 Bad request - Missing required fields, invalid identifier, or validation errors · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 409 Conflict - Plugin already exists · 500 Internal server error - Failed to create plugin
GET/api/admin/plugin-manager/{identifier}
Get plugin details Retrieve detailed information about a specific plugin including configuration, status, dependencies, settings, and files. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Response data: Plugin
Response data field | Type | Description |
|---|---|---|
name | string | Plugin name |
identifier | string | Plugin identifier |
description | string | Plugin description |
version | string | Plugin version |
target | string | Target FeatherPanel version |
author | string[] | Plugin authors |
icon | string | Plugin icon URL |
flags | string[] | Plugin flags |
dependencies | string[] | Plugin dependencies |
requiredConfigs | string[] | Required configuration keys |
status | string | Plugin status |
dependencies_met | boolean | Whether dependencies are met |
required_configs_set | boolean | Whether required configs are set |
settings | object | Plugin settings |
config | object[] | Plugin configuration schema |
curl -X GET "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugin details retrieved successfully · 400 Bad request - Invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to fetch plugin details
PUT/api/admin/plugin-manager/{identifier}
Update plugin configuration Update an existing plugin's configuration including metadata, dependencies, and configuration schema. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
name | string | no | Plugin name |
description | string | no | Plugin description |
version | string | no | Plugin version |
target | string | no | Target FeatherPanel version |
author | string[] | no | Plugin authors |
flags | string[] | no | Plugin flags |
dependencies | string[] | no | Plugin dependencies |
requiredConfigs | string[] | no | Required configuration keys |
configSchema | object[] | no | Configuration schema |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
config | Plugin |
curl -X PUT "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"","description":"","version":"","target":"","author":[],"flags":[],"dependencies":[],"requiredConfigs":[],"configSchema":[]}'Plugin events: featherpanel:admin:plugin_manager:plugin:updated
Responses: 200 Plugin updated successfully · 400 Bad request - Invalid plugin identifier, invalid configuration, or validation errors · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to update plugin
PATCH/api/admin/plugin-manager/{identifier}
Update plugin configuration Update an existing plugin's configuration including metadata, dependencies, and configuration schema. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
name | string | no | Plugin name |
description | string | no | Plugin description |
version | string | no | Plugin version |
target | string | no | Target FeatherPanel version |
author | string[] | no | Plugin authors |
flags | string[] | no | Plugin flags |
dependencies | string[] | no | Plugin dependencies |
requiredConfigs | string[] | no | Required configuration keys |
configSchema | object[] | no | Configuration schema |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
config | Plugin |
curl -X PATCH "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"","description":"","version":"","target":"","author":[],"flags":[],"dependencies":[],"requiredConfigs":[],"configSchema":[]}'Plugin events: featherpanel:admin:plugin_manager:plugin:updated
Responses: 200 Plugin updated successfully · 400 Bad request - Invalid plugin identifier, invalid configuration, or validation errors · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to update plugin
PUT/api/admin/plugin-manager/{identifier}/settings
Update plugin settings Update plugin-specific settings by providing key-value pairs. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginSettingsUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
settings | object | yes | Plugin settings key-value pairs |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
updated_settings | string[] | List of updated setting keys |
curl -X PUT "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER/settings" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"settings":{}}'Plugin events: featherpanel:admin:plugin_manager:settings:updated
Responses: 200 Plugin settings updated successfully · 400 Bad request - Invalid plugin identifier or missing settings data · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 500 Internal server error - Failed to update plugin settings
PATCH/api/admin/plugin-manager/{identifier}/settings
Update plugin settings Update plugin-specific settings by providing key-value pairs. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Request body: PluginSettingsUpdate (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
settings | object | yes | Plugin settings key-value pairs |
Response data field | Type | Description |
|---|---|---|
identifier | string | Plugin identifier |
updated_settings | string[] | List of updated setting keys |
curl -X PATCH "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER/settings" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"settings":{}}'Plugin events: featherpanel:admin:plugin_manager:settings:updated
Responses: 200 Plugin settings updated successfully · 400 Bad request - Invalid plugin identifier or missing settings data · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 500 Internal server error - Failed to update plugin settings
GET/api/admin/plugin-manager/flags
Get available plugin flags Retrieve a list of all available plugin flags that can be used when creating or updating plugins.
curl -X GET "$PANEL_URL/api/admin/plugin-manager/flags" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Available flags retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error - Failed to fetch flags
GET/api/admin/plugin-manager/{identifier}/validate
Validate plugin Validate a plugin's configuration, dependencies, required configs, identifier, flags, and file structure. Only available in developer mode.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
identifier | path | string | yes | Plugin identifier |
Response data: PluginValidation
Response data field | Type | Description |
|---|---|---|
config_valid | boolean | Whether plugin configuration is valid |
dependencies_met | boolean | Whether dependencies are met |
required_configs_set | boolean | Whether required configs are set |
identifier_valid | boolean | Whether identifier is valid |
flags_valid | boolean | Whether flags are valid |
files_exist | boolean | Whether required files exist |
overall_valid | boolean | Overall validation status |
curl -X GET "$PANEL_URL/api/admin/plugin-manager/$IDENTIFIER/validate" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugin validation completed · 400 Bad request - Invalid plugin identifier · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to validate plugin
GET/api/admin/plugin-tools/creation-options
Get plugin creation options Retrieve available options for creating different types of plugin files including field definitions and validation rules. Only available in developer mode.
Response data: PluginCreationOptions
Response data field | Type | Description |
|---|---|---|
migration | object | |
cron | object | |
command | object | |
public_file | object |
curl -X GET "$PANEL_URL/api/admin/plugin-tools/creation-options" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json"Responses: 200 Plugin creation options retrieved successfully · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 500 Internal server error - Failed to get creation options
POST/api/admin/plugin-tools/create-file
Create plugin file Create various types of plugin files including migrations, cron jobs, CLI commands, or upload public files. Only available in developer mode.
Request body: PluginFileCreate (multipart/form-data)
| Body field | Type | Required | Description |
|---|---|---|---|
plugin_id | string | yes | Plugin identifier |
file_type | string | yes | File type to create |
name | string | no | File name (required for migration, cron, command) |
description | string | no | File description |
schedule | string | no | Schedule for cron jobs |
file | string (binary) | no | File to upload (for public_file type) |
Response data field | Type | Description |
|---|---|---|
success | boolean | Whether the operation was successful |
filename | string | Created file name |
filepath | string | Full file path |
type | string | File type created |
original_name | string | Original file name (for uploads) |
size | integer | File size in bytes |
curl -X POST "$PANEL_URL/api/admin/plugin-tools/create-file" \
-H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
-H "Accept: application/json" \
-F "plugin_id=" \
-F "file_type=" \
-F "name=" \
-F "description=" \
-F "schedule=" \
-F "file=@./file"Plugin events: featherpanel:admin:plugin_manager:file:created
Responses: 200 Plugin file created successfully · 400 Bad request - Missing required fields, invalid file type, or validation errors · 401 Unauthorized · 403 Forbidden - Developer mode not enabled or insufficient permissions · 404 Plugin not found · 500 Internal server error - Failed to create plugin file