pinakes/docs/api/plugins.md
NotAShelf 9e5eb41d39
nix: set up project-wide formatter
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4806c58aa0a17f504c9312723ad770166a6a6964
2026-03-22 23:58:28 +03:00

208 lines
3.8 KiB
Markdown
Vendored

# 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 |
---