# Cloud Plugins endpoints (Admin API)

> 6 FeatherPanel Admin API endpoints from admin/cloud-plugins.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Source: https://featherpanel.com/docs/api/reference/admin/cloud-plugins/

Defined in [`backend/app/routes/admin/cloud-plugins.php`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php). Authentication used here: **Admin**. Read [Authentication](https://featherpanel.com/docs/api/authentication/) for how to send credentials and [Rate limits and errors](https://featherpanel.com/docs/api/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/plugins/online/list`

- Auth: Admin
- Permission: `admin.plugins.view`
- Route name: `admin-cloud-plugins-list`
- Controller: [`CloudPluginsController::list`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L25)

**Get online addons list** Retrieve a paginated list of Mythic marketplace products available to the linked team (GET /panel/products).

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `q` | query | string | no | Search query to filter addons |
| `page` | query | integer | no | Page number for pagination |
| `per_page` | query | integer | no | Number of addons per page |
| `verified_only` | query | boolean | no | If true, only return verified packages |
| `tags` | query | string | no | Comma-separated list of tags to filter by |
| `sort_by` | query | string | no | Field to sort by (created\_at, downloads, updated\_at) |
| `sort_order` | query | string | no | Sort order |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `addons` | OnlineAddon\[\] |  |
| `pagination` | object | Pagination metadata |

```bash
curl -X GET "$PANEL_URL/api/admin/plugins/online/list" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Online addons retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `500` Internal server error - Failed to fetch online addons or invalid response

### GET `/api/admin/plugins/online/popular`

- Auth: Admin
- Permission: `admin.plugins.view`
- Route name: `admin-cloud-plugins-popular`
- Controller: [`CloudPluginsController::popular`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L35)

**Get popular packages** Retrieve Mythic team products sorted for the popular addons carousel.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Number of packages to return |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `addons` | OnlineAddon\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/plugins/online/popular" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Popular packages retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `500` Internal server error

### GET `/api/admin/plugins/online/{identifier}`

- Auth: Admin
- Permission: `admin.plugins.view`
- Route name: `admin-cloud-plugins-show`
- Controller: [`CloudPluginsController::show`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L45)

**Get package details** Retrieve Mythic product details and downloadable releases for a product slug.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `identifier` | path | string | yes | Package identifier name |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `package` | OnlineAddon |  |
| `versions` | object\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/plugins/online/$IDENTIFIER" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Package details retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Package not found · `500` Internal server error

### GET `/api/admin/plugins/online/{identifier}/check`

- Auth: Admin
- Permission: `admin.plugins.view`
- Route name: `admin-cloud-plugins-check`
- Controller: [`CloudPluginsController::checkRequirements`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L60)

**Check addon installation requirements** Check if all dependencies and requirements are met before installing an addon. Returns dependency status, panel version compatibility, and installation readiness.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `identifier` | path | string | yes | Package identifier name |
| `pending_plugins` | query | string | no | Comma-separated addon identifiers also queued for install; plugin= dependencies in this list count as satisfied. |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `can_install` | boolean | Whether the addon can be installed |
| `package` | object | Package information |
| `dependencies` | object | Dependency information |
| `panel_version` | object | Panel version compatibility |

```bash
curl -X GET "$PANEL_URL/api/admin/plugins/online/$IDENTIFIER/check" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Requirements check completed · `404` Package not found · `500` Internal server error

### GET `/api/admin/plugins/online/tag/{tag}`

- Auth: Admin
- Permission: `admin.plugins.view`
- Route name: `admin-cloud-plugins-tag`
- Controller: [`CloudPluginsController::searchByTag`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L75)

**Search packages by tag** Filter Mythic team products by tag.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `tag` | path | string | yes | Tag name to search for |
| `page` | query | integer | no | Page number for pagination |
| `per_page` | query | integer | no | Number of addons per page |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `addons` | OnlineAddon\[\] |  |
| `tag` | string |  |
| `pagination` | object |  |

```bash
curl -X GET "$PANEL_URL/api/admin/plugins/online/tag/$TAG" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Packages by tag retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `500` Internal server error

### POST `/api/admin/plugins/online/install`

- Auth: Admin
- Permission: `admin.plugins.manage`
- Route name: `admin-cloud-plugins-install`
- Controller: [`CloudPluginsController::install`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/CloudPluginsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/cloud-plugins.php#L90)

**Install addon from online registry** Download and install an addon from Mythic marketplace releases (GET /panel/products/{slug}/releases/{version}/download).

Request body: [`OnlineInstall`](https://featherpanel.com/docs/api/schemas/#schema-onlineinstall) (application/json)

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `identifier` | string | yes | Addon identifier to install |
| `queued_identifiers` | string\[\] | no | Identifiers selected for the same install session; plugin= dependencies in this list are installed automatically before this addon when missing. |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `identifier` | string | Installed addon identifier |

```bash
curl -X POST "$PANEL_URL/api/admin/plugins/online/install" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"identifier":"","queued_identifiers":[]}'
```

Plugin events: [`featherpanel:cloud:plugin:installed`](https://featherpanel.com/docs/plugins/events/cloud-plugins/#plugin-installed)

Responses: `201` Addon installed successfully · `400` Bad request - Invalid identifier format · `401` Unauthorized · `402` Payment Required - Premium addon must be purchased · `403` Forbidden - Insufficient permissions · `404` Package not found in registry · `409` Conflict - Addon already installed · `412` Precondition Failed - Dependencies not met · `422` Unprocessable Entity - Failed to extract addon package or migrations failed · `500` Internal server error - Failed to install addon or download failed
