# Plugins Plugin management ## Endpoints ### GET /api/v1/plugins List all installed plugins **Authentication:** Required (Bearer JWT) #### Responses | Status | Description | |--------|-------------| | 200 | List of plugins | | 401 | Unauthorized | | 500 | Internal server error | --- ### POST /api/v1/plugins Install a plugin from URL or file path **Authentication:** Required (Bearer JWT) #### Request Body `Content-Type: application/json` See `docs/api/openapi.json` for the full schema. #### Responses | Status | Description | |--------|-------------| | 200 | Plugin installed | | 400 | Bad request | | 401 | Unauthorized | | 403 | Forbidden | --- ### POST /api/v1/plugins/events Receive a plugin event emitted from the UI and dispatch it to interested server-side event-handler plugins via the pipeline. **Authentication:** Required (Bearer JWT) #### Request Body `Content-Type: application/json` See `docs/api/openapi.json` for the full schema. #### Responses | Status | Description | |--------|-------------| | 200 | Event received | | 401 | Unauthorized | --- ### GET /api/v1/plugins/ui/pages List all UI pages provided by loaded plugins **Authentication:** Required (Bearer JWT) #### Responses | Status | Description | |--------|-------------| | 200 | Plugin UI pages | | 401 | Unauthorized | --- ### GET /api/v1/plugins/ui/theme List merged CSS custom property overrides from all enabled plugins **Authentication:** Required (Bearer JWT) #### Responses | Status | Description | |--------|-------------| | 200 | Plugin UI theme extensions | | 401 | Unauthorized | --- ### GET /api/v1/plugins/ui/widgets List all UI widgets provided by loaded plugins **Authentication:** Required (Bearer JWT) #### Responses | Status | Description | |--------|-------------| | 200 | Plugin UI widgets | | 401 | Unauthorized | --- ### GET /api/v1/plugins/{id} Get a specific plugin by ID **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | |------|----|----------|-------------| | `id` | path | Yes | Plugin ID | #### Responses | Status | Description | |--------|-------------| | 200 | Plugin details | | 401 | Unauthorized | | 404 | Not found | --- ### DELETE /api/v1/plugins/{id} Uninstall a plugin **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | |------|----|----------|-------------| | `id` | path | Yes | Plugin ID | #### Responses | Status | Description | |--------|-------------| | 200 | Plugin uninstalled | | 401 | Unauthorized | | 403 | Forbidden | | 404 | Not found | --- ### POST /api/v1/plugins/{id}/reload Reload a plugin (for development) **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | |------|----|----------|-------------| | `id` | path | Yes | Plugin ID | #### Responses | Status | Description | |--------|-------------| | 200 | Plugin reloaded | | 401 | Unauthorized | | 403 | Forbidden | | 404 | Not found | --- ### PATCH /api/v1/plugins/{id}/toggle Enable or disable a plugin **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | |------|----|----------|-------------| | `id` | path | Yes | Plugin ID | #### Request Body `Content-Type: application/json` See `docs/api/openapi.json` for the full schema. #### Responses | Status | Description | |--------|-------------| | 200 | Plugin toggled | | 401 | Unauthorized | | 403 | Forbidden | | 404 | Not found | ---