View .md

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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-listController: PluginManagerController::getPluginsroute source

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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-createController: PluginManagerController::createPluginroute source

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 fieldTypeRequiredDescription
identifierstringyesPlugin identifier
namestringyesPlugin name
descriptionstringnoPlugin description
versionstringnoPlugin version
authorstring[]noPlugin authors
flagsstring[]noPlugin flags
dependenciesstring[]noPlugin dependencies
requiredConfigsstring[]noRequired configuration keys
configSchemaobject[]noConfiguration schema
Response data fieldTypeDescription
identifierstringPlugin identifier
pathstringPlugin directory path
files_createdobject[]
migration_resultobject
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}

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-getController: PluginManagerController::getPluginDetailsroute source

Get plugin details Retrieve detailed information about a specific plugin including configuration, status, dependencies, settings, and files. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Response data: Plugin

Response data fieldTypeDescription
namestringPlugin name
identifierstringPlugin identifier
descriptionstringPlugin description
versionstringPlugin version
targetstringTarget FeatherPanel version
authorstring[]Plugin authors
iconstringPlugin icon URL
flagsstring[]Plugin flags
dependenciesstring[]Plugin dependencies
requiredConfigsstring[]Required configuration keys
statusstringPlugin status
dependencies_metbooleanWhether dependencies are met
required_configs_setbooleanWhether required configs are set
settingsobjectPlugin settings
configobject[]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}

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-updateController: PluginManagerController::updatePluginroute source

Update plugin configuration Update an existing plugin's configuration including metadata, dependencies, and configuration schema. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Request body: PluginUpdate (application/json)

Body fieldTypeRequiredDescription
namestringnoPlugin name
descriptionstringnoPlugin description
versionstringnoPlugin version
targetstringnoTarget FeatherPanel version
authorstring[]noPlugin authors
flagsstring[]noPlugin flags
dependenciesstring[]noPlugin dependencies
requiredConfigsstring[]noRequired configuration keys
configSchemaobject[]noConfiguration schema
Response data fieldTypeDescription
identifierstringPlugin identifier
configPlugin
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}

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-updateController: PluginManagerController::updatePluginroute source

Update plugin configuration Update an existing plugin's configuration including metadata, dependencies, and configuration schema. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Request body: PluginUpdate (application/json)

Body fieldTypeRequiredDescription
namestringnoPlugin name
descriptionstringnoPlugin description
versionstringnoPlugin version
targetstringnoTarget FeatherPanel version
authorstring[]noPlugin authors
flagsstring[]noPlugin flags
dependenciesstring[]noPlugin dependencies
requiredConfigsstring[]noRequired configuration keys
configSchemaobject[]noConfiguration schema
Response data fieldTypeDescription
identifierstringPlugin identifier
configPlugin
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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-settingsController: PluginManagerController::updatePluginSettingsroute source

Update plugin settings Update plugin-specific settings by providing key-value pairs. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Request body: PluginSettingsUpdate (application/json)

Body fieldTypeRequiredDescription
settingsobjectyesPlugin settings key-value pairs
Response data fieldTypeDescription
identifierstringPlugin identifier
updated_settingsstring[]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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-settingsController: PluginManagerController::updatePluginSettingsroute source

Update plugin settings Update plugin-specific settings by providing key-value pairs. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Request body: PluginSettingsUpdate (application/json)

Body fieldTypeRequiredDescription
settingsobjectyesPlugin settings key-value pairs
Response data fieldTypeDescription
identifierstringPlugin identifier
updated_settingsstring[]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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-flagsController: PluginManagerController::getAvailableFlagsroute source

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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-manager-validateController: PluginManagerController::validatePluginroute source

Validate plugin Validate a plugin's configuration, dependencies, required configs, identifier, flags, and file structure. Only available in developer mode.

ParameterInTypeRequiredDescription
identifierpathstringyesPlugin identifier

Response data: PluginValidation

Response data fieldTypeDescription
config_validbooleanWhether plugin configuration is valid
dependencies_metbooleanWhether dependencies are met
required_configs_setbooleanWhether required configs are set
identifier_validbooleanWhether identifier is valid
flags_validbooleanWhether flags are valid
files_existbooleanWhether required files exist
overall_validbooleanOverall 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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-creation-optionsController: PluginManagerController::getPluginCreationOptionsroute source

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 fieldTypeDescription
migrationobject
cronobject
commandobject
public_fileobject
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

Auth: AdminPermission: admin.rootRoute name: admin-plugin-create-fileController: PluginManagerController::createPluginFileroute source

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 fieldTypeRequiredDescription
plugin_idstringyesPlugin identifier
file_typestringyesFile type to create
namestringnoFile name (required for migration, cron, command)
descriptionstringnoFile description
schedulestringnoSchedule for cron jobs
filestring (binary)noFile to upload (for public_file type)
Response data fieldTypeDescription
successbooleanWhether the operation was successful
filenamestringCreated file name
filepathstringFull file path
typestringFile type created
original_namestringOriginal file name (for uploads)
sizeintegerFile 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