diff --git a/docs.json b/docs.json new file mode 100644 index 0000000..eb8cb92 --- /dev/null +++ b/docs.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://raw.githubusercontent.com/whilesmart/docs-kit/main/schema/docs.schema.json", + "name": "FlatRun Agent", + "description": "Lightweight Go backend for flat-file Docker Compose orchestration with a REST API, container lifecycle management, and plugin architecture", + "icon": "server", + "category": { + "language": "go", + "framework": "app" + }, + "sidebar": [ + { + "title": "Overview", + "path": "docs/overview.md" + }, + { + "title": "Installation", + "path": "docs/installation.md" + }, + { + "title": "Configuration", + "path": "docs/configuration.md" + }, + { + "title": "API Reference", + "path": "docs/api-reference.md" + }, + { + "title": "OpenAPI Spec", + "path": "docs/flatrun-agent-openapi.yaml" + }, + { + "title": "Plugin Architecture", + "path": "docs/plugin-architecture.md" + }, + { + "title": "Security", + "path": "docs/security.md" + } + ], + "openapi": "docs/flatrun-agent-openapi.yaml" +} \ No newline at end of file diff --git a/docs/api-reference.md b/docs/api-reference.md new file mode 100644 index 0000000..0359448 --- /dev/null +++ b/docs/api-reference.md @@ -0,0 +1,43 @@ +## API Reference + +### Authentication + +| Method | Endpoint | Description | +|---|---|---| +| POST | `/api/auth/login` | Login with API key | +| GET | `/api/auth/validate` | Validate JWT token | +| GET | `/api/auth/status` | Check auth status | + +### Deployments + +| Method | Endpoint | Description | +|---|---|---| +| GET | `/api/deployments` | List all deployments | +| POST | `/api/deployments` | Create new deployment | +| GET | `/api/deployments/:name` | Get deployment details | +| DELETE | `/api/deployments/:name` | Delete deployment | +| POST | `/api/deployments/:name/start` | Start deployment | +| POST | `/api/deployments/:name/stop` | Stop deployment | +| POST | `/api/deployments/:name/restart` | Restart deployment | +| GET | `/api/deployments/:name/logs` | Get deployment logs | + +### Docker Resources + +| Method | Endpoint | Description | +|---|---|---| +| GET | `/api/containers` | List containers | +| GET | `/api/images` | List images | +| GET | `/api/volumes` | List volumes | +| GET | `/api/networks` | List networks | +| POST | `/api/networks` | Create network | +| DELETE | `/api/networks/:name` | Delete network | + +### Other + +| Method | Endpoint | Description | +|---|---|---| +| GET | `/api/health` | Health check | +| GET | `/api/stats` | System statistics | +| GET | `/api/certificates` | List SSL certificates | +| GET | `/api/templates` | List Quick App templates | +| GET | `/api/plugins` | List installed plugins | diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..0f50ad4 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,57 @@ +## Configuration + +Copy the example configuration and edit it: + +```bash +cp config.example.yml config.yml +``` + +### Reference + +```yaml +deployments_path: /home/user/deployments +docker_socket: unix:///var/run/docker.sock + +api: + host: 0.0.0.0 + port: 8090 + enable_cors: true + allowed_origins: + - http://localhost:5173 + - http://localhost:3000 + +auth: + enabled: true + api_keys: + - "your-secure-api-key-here" + jwt_secret: "REPLACE_WITH_SECURE_RANDOM_STRING" # generate via: openssl rand -base64 32 + +nginx: + container_name: nginx + config_path: /deployments/nginx/conf.d + reload_command: nginx -s reload + +certbot: + container_name: certbot + email: your-email@example.com + staging: true + +logging: + level: info + format: json + +health: + check_interval: 30s + metrics_retention: 24h +``` + +### Key Options + +| Option | Description | +|---|---| +| `deployments_path` | Directory containing docker-compose deployments | +| `api.port` | API server port (default: 8090) | +| `auth.api_keys` | Valid API keys for authentication | +| `auth.jwt_secret` | Secret for signing JWT tokens | +| `logging.level` | Log level: debug, info, warn, error | +| `health.check_interval` | Health check frequency | diff --git a/docs/flatrun-agent-openapi.yaml b/docs/flatrun-agent-openapi.yaml new file mode 100644 index 0000000..508fc5b --- /dev/null +++ b/docs/flatrun-agent-openapi.yaml @@ -0,0 +1,14057 @@ +openapi: 3.2.0 +info: + title: FlatRun Agent API + version: 1.0.0 + description: REST API for FlatRun Agent, a lightweight Docker Compose orchestration + platform. Manage deployments, containers, networks, certificates, and more. +servers: +- url: https://{host} + variables: + host: + default: your-server.com + description: FlatRun Agent server hostname +paths: + /api/health: + get: + tags: + - system + summary: Check server health + operationId: health_get_api_health + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/auth/status: + get: + tags: + - authentication + summary: Get auth configuration status + operationId: health_get_api_auth_status + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/auth/login: + post: + tags: + - authentication + summary: Authenticate user and return JWT + operationId: health_post_api_auth_login + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/auth/validate: + get: + tags: + - authentication + summary: Validate JWT token and return actor context + operationId: health_get_api_auth_validate + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/stats: + get: + tags: + - system + - perm_deployments + summary: Get system stats + operationId: health_get_api_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/server/info: + get: + tags: + - system + - perm_system + summary: Get server info + operationId: health_get_api_server_info + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/server/network-health: + get: + tags: + - system + - perm_system + summary: Get network health + operationId: health_get_api_server_network-health + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/subdomain/generate: + get: + tags: + - deployments + - perm_deployments + summary: Generate a random subdomain + operationId: health_get_api_subdomain_generate + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/setup/status: + get: + tags: + - setup + summary: Get setup status + operationId: setup_get_api_setup_status + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/info: + get: + tags: + - setup + summary: Get setup info + operationId: setup_get_api_setup_info + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/validate: + post: + tags: + - setup + summary: Validate system requirements + operationId: setup_post_api_setup_validate + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/verify-dns: + get: + tags: + - setup + summary: Verify DNS configuration + operationId: setup_get_api_setup_verify-dns + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/settings: + post: + tags: + - setup + summary: Configure settings during setup + operationId: setup_post_api_setup_settings + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/authentication: + post: + tags: + - setup + summary: Configure authentication during setup + operationId: setup_post_api_setup_authentication + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/setup/complete: + post: + tags: + - setup + summary: Complete initial setup + operationId: setup_post_api_setup_complete + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/deployments: + get: + tags: + - deployments + - perm_deployments + summary: List all deployments + operationId: deployments_get_api_deployments + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - deployments + - perm_deployments + summary: Create a deployment + operationId: deployments_post_api_deployments + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}: + get: + tags: + - deployments + - perm_deployments + summary: Get a deployment by name + operationId: deployments_get_api_deployments_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - deployments + - perm_deployments + summary: Update a deployment + operationId: deployments_put_api_deployments_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - deployments + - perm_deployments + summary: Delete a deployment + operationId: deployments_delete_api_deployments_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/metadata: + put: + tags: + - deployments + - perm_deployments + summary: Update deployment metadata + operationId: deployments_put_api_deployments_name_metadata + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/protected-mode: + put: + tags: + - deployments + - perm_deployments + summary: Toggle protected mode on deployment + operationId: deployments_put_api_deployments_name_protected-mode + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/start: + post: + tags: + - deployments + - perm_deployments + summary: Start a deployment + operationId: deployments_post_api_deployments_name_start + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/stop: + post: + tags: + - deployments + - perm_deployments + summary: Stop a deployment + operationId: deployments_post_api_deployments_name_stop + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/restart: + post: + tags: + - deployments + - perm_deployments + summary: Restart a deployment + operationId: deployments_post_api_deployments_name_restart + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/rebuild: + post: + tags: + - deployments + - perm_deployments + summary: Rebuild a deployment + operationId: deployments_post_api_deployments_name_rebuild + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/deploy: + post: + tags: + - deployments + - perm_deployments + summary: Deploy a deployment + operationId: deployments_post_api_deployments_name_deploy + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/pull: + post: + tags: + - deployments + - perm_deployments + summary: Pull deployment images + operationId: deployments_post_api_deployments_name_pull + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/images: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment images + operationId: deployments_get_api_deployments_name_images + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/jobs/active: + get: + tags: + - deployments + - perm_deployments + summary: Get active deployment job + operationId: deployments_get_api_deployments_name_jobs_active + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/jobs/{jobId}: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment job by ID + operationId: deployments_get_api_deployments_name_jobs_jobId + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: jobId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/logs: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment logs + operationId: deployments_get_api_deployments_name_logs + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/compose: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment compose file + operationId: deployments_get_api_deployments_name_compose + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/compose/mount: + post: + tags: + - deployments + - perm_deployments + summary: Add compose volume mount + operationId: deployments_post_api_deployments_name_compose_mount + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services: + get: + tags: + - deployments + - perm_deployments + summary: List deployment services + operationId: deployments_get_api_deployments_name_services + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/actions/{actionId}: + post: + tags: + - deployments + - perm_deployments + summary: Execute quick action + operationId: deployments_post_api_deployments_name_actions_actionId + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: actionId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/env: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment environment variables + operationId: deployments_get_api_deployments_name_env + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - deployments + - perm_deployments + summary: Update deployment environment variables + operationId: deployments_put_api_deployments_name_env + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/files: + get: + tags: + - deployments + - perm_deployments + summary: List deployment files + operationId: deployments_get_api_deployments_name_files + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/files/{path}: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment file content + operationId: deployments_get_api_deployments_name_files_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - deployments + - perm_deployments + summary: Upload deployment file + operationId: deployments_post_api_deployments_name_files_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - deployments + - perm_deployments + summary: Delete deployment file + operationId: deployments_delete_api_deployments_name_files_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/mkdir/{path}: + post: + tags: + - deployments + - perm_deployments + summary: Create deployment directory + operationId: deployments_post_api_deployments_name_mkdir_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/touch/{path}: + post: + tags: + - deployments + - perm_deployments + summary: Create deployment empty file + operationId: deployments_post_api_deployments_name_touch_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/permissions/{path}: + put: + tags: + - deployments + - perm_deployments + summary: Change deployment file permissions + operationId: deployments_put_api_deployments_name_permissions_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/files-info: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment files info + operationId: deployments_get_api_deployments_name_files-info + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/stats: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment container stats + operationId: deployments_get_api_deployments_name_stats + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/resources: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment resource usage + operationId: deployments_get_api_deployments_name_resources + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/domains: + get: + tags: + - deployments + - perm_deployments + summary: List deployment domains + operationId: deployments_get_api_deployments_name_domains + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - deployments + - perm_deployments + summary: Add domain to deployment + operationId: deployments_post_api_deployments_name_domains + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/domains/{domainId}: + put: + tags: + - deployments + - perm_deployments + summary: Update deployment domain + operationId: deployments_put_api_deployments_name_domains_domainId + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: domainId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - deployments + - perm_deployments + summary: Remove domain from deployment + operationId: deployments_delete_api_deployments_name_domains_domainId + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: domainId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/traffic: + get: + tags: + - deployments + - perm_deployments + summary: Get deployment traffic stats + operationId: deployments_get_api_deployments_name_traffic + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/backups: + get: + tags: + - deployments + - perm_backups + summary: List deployment backups + operationId: deployments_get_api_deployments_name_backups + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - deployments + - perm_backups + summary: Create deployment backup + operationId: deployments_post_api_deployments_name_backups + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/backup-config: + get: + tags: + - deployments + - perm_backups + summary: Get deployment backup config + operationId: deployments_get_api_deployments_name_backup-config + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - deployments + - perm_backups + summary: Update deployment backup config + operationId: deployments_put_api_deployments_name_backup-config + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/security: + get: + tags: + - deployments + - perm_security + summary: Get deployment security config + operationId: deployments_get_api_deployments_name_security + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - deployments + - perm_security + summary: Update deployment security config + operationId: deployments_put_api_deployments_name_security + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/security/events: + get: + tags: + - deployments + - perm_security + summary: Get deployment security events + operationId: deployments_get_api_deployments_name_security_events + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/users: + get: + tags: + - deployments + - perm_users + summary: Get deployment users + operationId: deployments_get_api_deployments_name_users + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/start: + post: + tags: + - services + - perm_deployments + summary: Start a service in a deployment + operationId: services_post_api_deployments_name_services_service_start + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/stop: + post: + tags: + - services + - perm_deployments + summary: Stop a service in a deployment + operationId: services_post_api_deployments_name_services_service_stop + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/restart: + post: + tags: + - services + - perm_deployments + summary: Restart a service in a deployment + operationId: services_post_api_deployments_name_services_service_restart + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/job: + post: + tags: + - services + - perm_deployments + summary: Enqueue a job for a service + operationId: services_post_api_deployments_name_services_service_job + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/rebuild: + post: + tags: + - services + - perm_deployments + summary: Rebuild a service in a deployment + operationId: services_post_api_deployments_name_services_service_rebuild + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/services/{service}/pull: + post: + tags: + - services + - perm_deployments + summary: Pull image for a service in a deployment + operationId: services_post_api_deployments_name_services_service_pull + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: service + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/proxy/status/{name}: + get: + tags: + - proxy + - perm_certificates + summary: Get proxy status for deployment + operationId: proxy_get_api_proxy_status_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/proxy/setup/{name}: + post: + tags: + - proxy + - perm_certificates + summary: Setup proxy for deployment + operationId: proxy_post_api_proxy_setup_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/proxy/{name}: + delete: + tags: + - proxy + - perm_certificates + summary: Teardown proxy for deployment + operationId: proxy_delete_api_proxy_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/proxy/vhosts: + get: + tags: + - proxy + - perm_certificates + summary: List virtual hosts + operationId: proxy_get_api_proxy_vhosts + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/proxy/sync: + post: + tags: + - proxy + - perm_certificates + summary: Sync all proxies + operationId: proxy_post_api_proxy_sync + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/ssl/disable: + post: + tags: + - proxy + - perm_deployments + summary: Disable SSL for deployment + operationId: proxy_post_api_deployments_name_ssl_disable + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/certificates/renew: + post: + tags: + - proxy + - perm_certificates + summary: Renew deployment certificates + operationId: proxy_post_api_deployments_name_certificates_renew + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/certificates: + get: + tags: + - certificates + - perm_certificates + summary: List certificates + operationId: certificates_get_api_certificates + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - certificates + - perm_certificates + summary: Request a new certificate + operationId: certificates_post_api_certificates + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/certificates/renew: + post: + tags: + - certificates + - perm_certificates + summary: Renew all expiring certificates + operationId: certificates_post_api_certificates_renew + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/certificates/{domain}: + get: + tags: + - certificates + - perm_certificates + summary: Get certificate for domain + operationId: certificates_get_api_certificates_domain + parameters: + - name: domain + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - certificates + - perm_certificates + summary: Delete certificate + operationId: certificates_delete_api_certificates_domain + parameters: + - name: domain + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/certificates/{domain}/renew: + post: + tags: + - certificates + - perm_certificates + summary: Renew certificate for domain + operationId: certificates_post_api_certificates_domain_renew + parameters: + - name: domain + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/certificates/{domain}/auto-renew: + patch: + tags: + - certificates + - perm_certificates + summary: Toggle auto-renew for certificate + operationId: certificates_patch_api_certificates_domain_auto-renew + parameters: + - name: domain + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/networks: + get: + tags: + - networks + - perm_networks + summary: List networks + operationId: networks_get_api_networks + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - networks + - perm_networks + summary: Create a network + operationId: networks_post_api_networks + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/networks/{name}: + delete: + tags: + - networks + - perm_networks + summary: Delete a network + operationId: networks_delete_api_networks_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/networks/{name}/connect: + post: + tags: + - networks + - perm_networks + summary: Connect container to network + operationId: networks_post_api_networks_name_connect + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/networks/{name}/disconnect: + post: + tags: + - networks + - perm_networks + summary: Disconnect container from network + operationId: networks_post_api_networks_name_disconnect + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers: + get: + tags: + - containers + - perm_containers + summary: List containers + operationId: containers_get_api_containers + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/start: + post: + tags: + - containers + - perm_containers + summary: Start a container + operationId: containers_post_api_containers_id_start + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/stop: + post: + tags: + - containers + - perm_containers + summary: Stop a container + operationId: containers_post_api_containers_id_stop + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/restart: + post: + tags: + - containers + - perm_containers + summary: Restart a container + operationId: containers_post_api_containers_id_restart + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}: + delete: + tags: + - containers + - perm_containers + summary: Remove a container + operationId: containers_delete_api_containers_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/logs: + get: + tags: + - containers + - perm_containers + summary: Get container logs + operationId: containers_get_api_containers_id_logs + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/stats: + get: + tags: + - containers + - perm_containers + summary: Get container stats + operationId: containers_get_api_containers_id_stats + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/stats: + get: + tags: + - containers + - perm_containers + summary: Get stats for all containers + operationId: containers_get_api_containers_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/containers/{id}/exec: + post: + tags: + - containers + - perm_containers + summary: Execute command in container (HTTP) + operationId: containers_post_api_containers_id_exec + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + get: + tags: + - websockets + summary: Execute command in container (WebSocket) + operationId: websocket_get_api_containers_id_exec + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/containers/{id}/resources: + get: + tags: + - containers + - perm_containers + summary: Get container resource limits + operationId: containers_get_api_containers_id_resources + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - containers + - perm_containers + summary: Update container resource limits + operationId: containers_put_api_containers_id_resources + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/images: + get: + tags: + - images + - perm_images + summary: List Docker images + operationId: images_get_api_images + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/images/{id}: + delete: + tags: + - images + - perm_images + summary: Remove a Docker image + operationId: images_delete_api_images_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/images/pull: + post: + tags: + - images + - perm_images + summary: Pull a Docker image + operationId: images_post_api_images_pull + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/images/cleanup: + post: + tags: + - images + - perm_images + summary: Clean up unused images + operationId: images_post_api_images_cleanup + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/images/cleanup: + post: + tags: + - images + - perm_images + summary: Clean up deployment images + operationId: images_post_api_deployments_name_images_cleanup + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/volumes: + get: + tags: + - volumes + - perm_volumes + summary: List volumes + operationId: volumes_get_api_volumes + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - volumes + - perm_volumes + summary: Create a volume + operationId: volumes_post_api_volumes + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/volumes/{name}: + delete: + tags: + - volumes + - perm_volumes + summary: Remove a volume + operationId: volumes_delete_api_volumes_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/volumes/prune: + post: + tags: + - volumes + - perm_volumes + summary: Prune unused volumes + operationId: volumes_post_api_volumes_prune + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ports: + get: + tags: + - ports + - perm_system + summary: List open ports + operationId: ports_get_api_ports + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ports/{pid}/kill: + post: + tags: + - ports + - perm_system + summary: Kill process by PID + operationId: ports_post_api_ports_pid_kill + parameters: + - name: pid + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/services: + get: + tags: + - system_services + - perm_system + summary: List system services + operationId: system-services_get_api_system_services + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/services/{name}/start: + post: + tags: + - system_services + - perm_system + summary: Start a system service + operationId: system-services_post_api_system_services_name_start + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/services/{name}/stop: + post: + tags: + - system_services + - perm_system + summary: Stop a system service + operationId: system-services_post_api_system_services_name_stop + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/services/{name}/restart: + post: + tags: + - system_services + - perm_system + summary: Restart a system service + operationId: system-services_post_api_system_services_name_restart + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/files: + get: + tags: + - system_files + - perm_system + summary: List system files + operationId: system-files_get_api_system_files + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/files-info: + get: + tags: + - system_files + - perm_system + summary: Get system files info + operationId: system-files_get_api_system_files-info + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/files/{path}: + get: + tags: + - system_files + - perm_system + summary: Get system file content + operationId: system-files_get_api_system_files_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - system_files + - perm_system + summary: Upload system file + operationId: system-files_post_api_system_files_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - system_files + - perm_system + summary: Delete system file + operationId: system-files_delete_api_system_files_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/mkdir/{path}: + post: + tags: + - system_files + - perm_system + summary: Create system directory + operationId: system-files_post_api_system_mkdir_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/touch/{path}: + post: + tags: + - system_files + - perm_system + summary: Create system empty file + operationId: system-files_post_api_system_touch_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/permissions/{path}: + put: + tags: + - system_files + - perm_system + summary: Change system file permissions + operationId: system-files_put_api_system_permissions_path + parameters: + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/settings: + get: + tags: + - settings + - perm_settings + summary: Get application settings + operationId: settings_get_api_settings + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - settings + - perm_settings + summary: Update application settings + operationId: settings_put_api_settings + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/settings/security: + put: + tags: + - settings + - perm_settings + summary: Update security settings + operationId: settings_put_api_settings_security + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/config: + get: + tags: + - config + - perm_config + summary: List configuration keys + operationId: config_get_api_config + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/config/{key}: + get: + tags: + - config + - perm_config + summary: Get configuration value + operationId: config_get_api_config_key + parameters: + - name: key + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - config + - perm_config + summary: Update configuration value + operationId: config_put_api_config_key + parameters: + - name: key + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plans: + get: + tags: + - plans + summary: List plans + operationId: plans_get_api_plans + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plans/{id}: + get: + tags: + - plans + summary: Get plan by ID + operationId: plans_get_api_plans_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - plans + summary: Delete a plan + operationId: plans_delete_api_plans_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plans/{id}/apply: + post: + tags: + - plans + summary: Apply a plan + operationId: plans_post_api_plans_id_apply + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/status: + get: + tags: + - ai + summary: Get AI assistant status + operationId: ai_get_api_ai_status + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/analyze: + post: + tags: + - ai + - perm_deployments + summary: Analyze system with AI + operationId: ai_post_api_ai_analyze + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/deployments/{name}/ai/analyze: + post: + tags: + - ai + - perm_deployments + summary: Analyze deployment with AI + operationId: ai_post_api_deployments_name_ai_analyze + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/sessions: + post: + tags: + - ai + - perm_deployments + summary: Create AI session + operationId: ai_post_api_ai_sessions + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/sessions/{id}: + get: + tags: + - ai + summary: Get AI session + operationId: ai_get_api_ai_sessions_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - ai + summary: Delete AI session + operationId: ai_delete_api_ai_sessions_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/sessions/{id}/messages: + post: + tags: + - ai + summary: Send AI session message + operationId: ai_post_api_ai_sessions_id_messages + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/ai/sessions/{id}/approve: + post: + tags: + - ai + summary: Approve AI session tool calls + operationId: ai_post_api_ai_sessions_id_approve + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates: + get: + tags: + - templates + - perm_templates + summary: List deployment templates + operationId: templates_get_api_templates + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/categories: + get: + tags: + - templates + - perm_templates + summary: Get template categories + operationId: templates_get_api_templates_categories + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/refresh: + post: + tags: + - templates + - perm_templates + summary: Refresh templates from registry + operationId: templates_post_api_templates_refresh + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/{id}/compose: + get: + tags: + - templates + - perm_templates + summary: Get template compose file + operationId: templates_get_api_templates_id_compose + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/{id}/generate: + post: + tags: + - templates + - perm_templates + summary: Generate compose from template + operationId: templates_post_api_templates_id_generate + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/infra/{name}/compose: + get: + tags: + - templates + - perm_templates + summary: Get infra template compose + operationId: templates_get_api_templates_infra_name_compose + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/templates/infra/{name}/generate: + post: + tags: + - templates + - perm_templates + summary: Generate compose from infra template + operationId: templates_post_api_templates_infra_name_generate + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plugins: + get: + tags: + - plugins + - perm_templates + summary: List plugins + operationId: plugins_get_api_plugins + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plugins/{name}: + get: + tags: + - plugins + - perm_templates + summary: Get plugin details + operationId: plugins_get_api_plugins_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/plugins/{name}/deployments: + post: + tags: + - plugins + - perm_templates + summary: Create deployment from plugin + operationId: plugins_post_api_plugins_name_deployments + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/test: + post: + tags: + - databases + - perm_databases + summary: Test database connection + operationId: databases_post_api_databases_test + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/list: + post: + tags: + - databases + - perm_databases + summary: List databases on server + operationId: databases_post_api_databases_list + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/tables: + post: + tags: + - databases + - perm_databases + summary: List database tables + operationId: databases_post_api_databases_tables + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/tables/data: + post: + tags: + - databases + - perm_databases + summary: Query table data + operationId: databases_post_api_databases_tables_data + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/tables/schema: + post: + tags: + - databases + - perm_databases + summary: Describe table schema + operationId: databases_post_api_databases_tables_schema + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/query: + post: + tags: + - databases + - perm_databases + summary: Execute database query + operationId: databases_post_api_databases_query + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/users: + post: + tags: + - databases + - perm_databases + summary: List database users + operationId: databases_post_api_databases_users + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/users/by-database: + post: + tags: + - databases + - perm_databases + summary: List database users by database + operationId: databases_post_api_databases_users_by-database + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/create: + post: + tags: + - databases + - perm_databases + summary: Create a database + operationId: databases_post_api_databases_create + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/delete: + post: + tags: + - databases + - perm_databases + summary: Delete a database + operationId: databases_post_api_databases_delete + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/users/create: + post: + tags: + - databases + - perm_databases + summary: Create database user + operationId: databases_post_api_databases_users_create + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/users/delete: + post: + tags: + - databases + - perm_databases + summary: Delete database user + operationId: databases_post_api_databases_users_delete + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/databases/privileges/grant: + post: + tags: + - databases + - perm_databases + summary: Grant database privileges + operationId: databases_post_api_databases_privileges_grant + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure: + get: + tags: + - infrastructure + - perm_infrastructure + summary: List infrastructure services + operationId: infrastructure_get_api_infrastructure + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/stats: + get: + tags: + - infrastructure + - perm_infrastructure + summary: Get infrastructure stats + operationId: infrastructure_get_api_infrastructure_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/{name}: + get: + tags: + - infrastructure + - perm_infrastructure + summary: Get infrastructure service + operationId: infrastructure_get_api_infrastructure_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/{name}/start: + post: + tags: + - infrastructure + - perm_infrastructure + summary: Start infrastructure service + operationId: infrastructure_post_api_infrastructure_name_start + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/{name}/stop: + post: + tags: + - infrastructure + - perm_infrastructure + summary: Stop infrastructure service + operationId: infrastructure_post_api_infrastructure_name_stop + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/{name}/restart: + post: + tags: + - infrastructure + - perm_infrastructure + summary: Restart infrastructure service + operationId: infrastructure_post_api_infrastructure_name_restart + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/{name}/logs: + get: + tags: + - infrastructure + - perm_infrastructure + summary: Get infrastructure service logs + operationId: infrastructure_get_api_infrastructure_name_logs + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/infrastructure/migrate/{name}: + post: + tags: + - infrastructure + - perm_infrastructure + summary: Migrate deployment to infrastructure + operationId: infrastructure_post_api_infrastructure_migrate_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/registries: + get: + tags: + - registries + - perm_registries + summary: List registry types + operationId: registries_get_api_registries + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - registries + - perm_registries + summary: Create registry type + operationId: registries_post_api_registries + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/registries/{slug}: + get: + tags: + - registries + - perm_registries + summary: Get registry type + operationId: registries_get_api_registries_slug + parameters: + - name: slug + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - registries + - perm_registries + summary: Update registry type + operationId: registries_put_api_registries_slug + parameters: + - name: slug + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - registries + - perm_registries + summary: Delete registry type + operationId: registries_delete_api_registries_slug + parameters: + - name: slug + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/credentials: + get: + tags: + - credentials + - perm_registries + summary: List credentials + operationId: credentials_get_api_credentials + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - credentials + - perm_registries + summary: Create credential + operationId: credentials_post_api_credentials + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/credentials/{id}: + get: + tags: + - credentials + - perm_registries + summary: Get credential + operationId: credentials_get_api_credentials_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - credentials + - perm_registries + summary: Update credential + operationId: credentials_put_api_credentials_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - credentials + - perm_registries + summary: Delete credential + operationId: credentials_delete_api_credentials_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/credentials/{id}/test: + post: + tags: + - credentials + - perm_registries + summary: Test credential + operationId: credentials_post_api_credentials_id_test + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/stats: + get: + tags: + - security + - perm_security + summary: Get security stats + operationId: security_get_api_security_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/events: + get: + tags: + - security + - perm_security + summary: List security events + operationId: security_get_api_security_events + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/events/{id}: + get: + tags: + - security + - perm_security + summary: Get security event + operationId: security_get_api_security_events_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/cleanup: + post: + tags: + - security + - perm_security + summary: Clean up security events + operationId: security_post_api_security_cleanup + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/blocked-ips: + get: + tags: + - security + - perm_security + summary: List blocked IPs + operationId: security_get_api_security_blocked-ips + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - security + - perm_security + summary: Block an IP + operationId: security_post_api_security_blocked-ips + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/blocked-ips/{ip}: + delete: + tags: + - security + - perm_security + summary: Unblock an IP + operationId: security_delete_api_security_blocked-ips_ip + parameters: + - name: ip + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/ips/{ip}/events: + get: + tags: + - security + - perm_security + summary: Get security events by IP + operationId: security_get_api_security_ips_ip_events + parameters: + - name: ip + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/protected-routes: + get: + tags: + - security + - perm_security + summary: List protected routes + operationId: security_get_api_security_protected-routes + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - security + - perm_security + summary: Add protected route + operationId: security_post_api_security_protected-routes + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/protected-routes/{id}: + put: + tags: + - security + - perm_security + summary: Update protected route + operationId: security_put_api_security_protected-routes_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - security + - perm_security + summary: Delete protected route + operationId: security_delete_api_security_protected-routes_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/whitelist: + get: + tags: + - security + - perm_security + summary: List whitelist entries + operationId: security_get_api_security_whitelist + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - security + - perm_security + summary: Add whitelist entry + operationId: security_post_api_security_whitelist + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/whitelist/{id}: + delete: + tags: + - security + - perm_security + summary: Remove whitelist entry + operationId: security_delete_api_security_whitelist_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/realtime-capture: + get: + tags: + - security + - perm_security + summary: Get realtime capture status + operationId: security_get_api_security_realtime-capture + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - security + - perm_security + summary: Set realtime capture status + operationId: security_put_api_security_realtime-capture + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/health: + get: + tags: + - security + - perm_security + summary: Get security health + operationId: security_get_api_security_health + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/security/refresh: + post: + tags: + - security + - perm_security + summary: Refresh security scripts + operationId: security_post_api_security_refresh + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/traffic/logs: + get: + tags: + - traffic + - perm_traffic + summary: Get traffic logs + operationId: traffic_get_api_traffic_logs + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/traffic/stats: + get: + tags: + - traffic + - perm_traffic + summary: Get traffic stats + operationId: traffic_get_api_traffic_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/traffic/unknown-domains: + get: + tags: + - traffic + - perm_traffic + summary: Get unknown domain stats + operationId: traffic_get_api_traffic_unknown-domains + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/traffic/cleanup: + post: + tags: + - traffic + - perm_traffic + summary: Clean up traffic logs + operationId: traffic_post_api_traffic_cleanup + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups: + get: + tags: + - backups + - perm_backups + summary: List backups + operationId: backups_get_api_backups + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - backups + - perm_backups + summary: Create a backup + operationId: backups_post_api_backups + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups/{id}: + get: + tags: + - backups + - perm_backups + summary: Get backup + operationId: backups_get_api_backups_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - backups + - perm_backups + summary: Delete a backup + operationId: backups_delete_api_backups_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups/{id}/download: + get: + tags: + - backups + - perm_backups + summary: Download backup + operationId: backups_get_api_backups_id_download + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups/{id}/restore: + post: + tags: + - backups + - perm_backups + summary: Restore from backup + operationId: backups_post_api_backups_id_restore + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups/jobs: + get: + tags: + - backups + - perm_backups + summary: List backup jobs + operationId: backups_get_api_backups_jobs + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/backups/jobs/{id}: + get: + tags: + - backups + - perm_backups + summary: Get backup job + operationId: backups_get_api_backups_jobs_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/scheduler/tasks: + get: + tags: + - scheduler + - perm_scheduler + summary: List scheduled tasks + operationId: scheduler_get_api_scheduler_tasks + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - scheduler + - perm_scheduler + summary: Create scheduled task + operationId: scheduler_post_api_scheduler_tasks + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/scheduler/tasks/{id}: + get: + tags: + - scheduler + - perm_scheduler + summary: Get scheduled task + operationId: scheduler_get_api_scheduler_tasks_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - scheduler + - perm_scheduler + summary: Update scheduled task + operationId: scheduler_put_api_scheduler_tasks_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - scheduler + - perm_scheduler + summary: Delete scheduled task + operationId: scheduler_delete_api_scheduler_tasks_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/scheduler/tasks/{id}/run: + post: + tags: + - scheduler + - perm_scheduler + summary: Run scheduled task now + operationId: scheduler_post_api_scheduler_tasks_id_run + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/scheduler/tasks/{id}/executions: + get: + tags: + - scheduler + - perm_scheduler + summary: Get task executions + operationId: scheduler_get_api_scheduler_tasks_id_executions + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/scheduler/executions: + get: + tags: + - scheduler + - perm_scheduler + summary: Get recent executions + operationId: scheduler_get_api_scheduler_executions + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/audit/events: + get: + tags: + - audit + - perm_audit + summary: List audit events + operationId: audit_get_api_audit_events + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/audit/events/{id}: + get: + tags: + - audit + - perm_audit + summary: Get audit event + operationId: audit_get_api_audit_events_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/audit/stats: + get: + tags: + - audit + - perm_audit + summary: Get audit stats + operationId: audit_get_api_audit_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/audit/export: + post: + tags: + - audit + - perm_audit + summary: Export audit events + operationId: audit_post_api_audit_export + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/audit/cleanup: + delete: + tags: + - audit + - perm_settings + summary: Clean up audit events + operationId: audit_delete_api_audit_cleanup + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users/me: + get: + tags: + - users + summary: Get current user profile + operationId: users_get_api_users_me + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - users + summary: Update current user profile + operationId: users_put_api_users_me + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users/me/password: + put: + tags: + - users + summary: Update current user password + operationId: users_put_api_users_me_password + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users: + get: + tags: + - users + - perm_users + summary: List users + operationId: users_get_api_users + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - users + - perm_users + summary: Create user + operationId: users_post_api_users + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users/{id}: + get: + tags: + - users + - perm_users + summary: Get user + operationId: users_get_api_users_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - users + - perm_users + summary: Update user + operationId: users_put_api_users_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - users + - perm_users + summary: Delete user + operationId: users_delete_api_users_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users/{id}/deployments: + get: + tags: + - users + summary: Get user deployments + operationId: users_get_api_users_id_deployments + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - users + - perm_users + summary: Assign deployment to user + operationId: users_post_api_users_id_deployments + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/users/{id}/deployments/{name}: + put: + tags: + - users + - perm_users + summary: Update user deployment access + operationId: users_put_api_users_id_deployments_name + parameters: + - name: id + in: path + required: true + schema: + type: integer + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - users + - perm_users + summary: Remove user deployment access + operationId: users_delete_api_users_id_deployments_name + parameters: + - name: id + in: path + required: true + schema: + type: integer + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/apikeys: + get: + tags: + - api_keys + - perm_apikeys + summary: List API keys + operationId: apikeys_get_api_apikeys + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - api_keys + - perm_apikeys + summary: Create API key + operationId: apikeys_post_api_apikeys + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/apikeys/{id}: + get: + tags: + - api_keys + - perm_apikeys + summary: Get API key + operationId: apikeys_get_api_apikeys_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + put: + tags: + - api_keys + - perm_apikeys + summary: Update API key + operationId: apikeys_put_api_apikeys_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - api_keys + - perm_apikeys + summary: Delete API key + operationId: apikeys_delete_api_apikeys_id + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/apikeys/{id}/revoke: + post: + tags: + - api_keys + - perm_apikeys + summary: Revoke API key + operationId: apikeys_post_api_apikeys_id_revoke + parameters: + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/providers: + get: + tags: + - dns + - perm_dns + summary: List DNS providers + operationId: dns_get_api_dns_providers + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/status: + get: + tags: + - dns + - perm_dns + summary: Get PowerDNS status + operationId: dns_get_api_dns_powerdns_status + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/enable: + post: + tags: + - dns + - perm_dns + summary: Enable PowerDNS service + operationId: dns_post_api_dns_powerdns_enable + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/disable: + post: + tags: + - dns + - perm_dns + summary: Disable PowerDNS service + operationId: dns_post_api_dns_powerdns_disable + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/restart: + post: + tags: + - dns + - perm_dns + summary: Restart PowerDNS service + operationId: dns_post_api_dns_powerdns_restart + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/zones: + get: + tags: + - dns + - perm_dns + summary: List DNS zones + operationId: dns_get_api_dns_powerdns_zones + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: + tags: + - dns + - perm_dns + summary: Create DNS zone + operationId: dns_post_api_dns_powerdns_zones + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/dns/powerdns/zones/{zoneId}: + get: + tags: + - dns + - perm_dns + summary: Get DNS zone + operationId: dns_get_api_dns_powerdns_zones_zoneId + parameters: + - name: zoneId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + delete: + tags: + - dns + - perm_dns + summary: Delete DNS zone + operationId: dns_delete_api_dns_powerdns_zones_zoneId + parameters: + - name: zoneId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + patch: + tags: + - dns + - perm_dns + summary: Update DNS records + operationId: dns_patch_api_dns_powerdns_zones_zoneId + parameters: + - name: zoneId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/status: + get: + tags: + - cluster + - perm_cluster + summary: Get cluster status + operationId: cluster_get_api_cluster_status + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/peers: + get: + tags: + - cluster + - perm_cluster + summary: List cluster peers + operationId: cluster_get_api_cluster_peers + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/invite: + post: + tags: + - cluster + - perm_cluster + summary: Invite peer to cluster + operationId: cluster_post_api_cluster_invite + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/accept: + post: + tags: + - cluster + - perm_cluster + summary: Accept cluster invitation + operationId: cluster_post_api_cluster_accept + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/peers/{name}: + delete: + tags: + - cluster + - perm_cluster + summary: Remove cluster peer + operationId: cluster_delete_api_cluster_peers_name + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/peers/{name}/proxy/{path}: + get: &id001 + tags: + - cluster + - perm_cluster + summary: Proxy request to cluster peer + operationId: cluster_any_api_cluster_peers_name_proxy_path + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + post: *id001 + /api/cluster/deployments: + get: + tags: + - cluster + - perm_cluster + summary: List cluster deployments + operationId: cluster_get_api_cluster_deployments + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/cluster/stats: + get: + tags: + - cluster + - perm_cluster + summary: Get cluster stats + operationId: cluster_get_api_cluster_stats + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + /api/system/terminal: + get: + tags: + - websockets + summary: Open system terminal (WebSocket) + operationId: websocket_get_api_system_terminal + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/system/terminal/interactive: + get: + tags: + - websockets + summary: Open interactive system terminal (WebSocket) + operationId: websocket_get_api_system_terminal_interactive + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/deployments/{name}/jobs/{jobId}/stream: + get: + tags: + - websockets + summary: Stream deployment job logs (WebSocket) + operationId: websocket_get_api_deployments_name_jobs_jobId_stream + parameters: + - name: name + in: path + required: true + schema: + type: string + - name: jobId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/cluster/exchange: + post: + tags: + - cluster + summary: Exchange cluster invite (invite token auth) + operationId: internal_post_api_cluster_exchange + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/security/events/ingest: + post: + tags: + - internal + summary: Ingest security events from nginx + operationId: internal_post_api_security_events_ingest + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/traffic/ingest: + post: + tags: + - internal + summary: Ingest traffic logs from nginx + operationId: internal_post_api_traffic_ingest + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: [] + /api/_internal/blocked-ips: + get: + tags: + - internal + summary: List blocked IPs (internal) + operationId: internal_get_api_internal_blocked-ips + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - InternalToken: [] + /api/_internal/whitelist: + get: + tags: + - internal + summary: List whitelist entries (internal) + operationId: internal_get_api_internal_whitelist + parameters: [] + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - InternalToken: [] +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + bearerFormat: JWT + description: JWT Bearer token obtained from POST /api/auth/login + ApiKeyAuth: + type: http + scheme: bearer + description: API key authentication passed as Bearer token or ApiKey token + InternalToken: + type: apiKey + in: header + name: X-Internal-Token + description: Internal nginx communication token + schemas: + Error: + type: object + properties: + error: + type: string + description: Error message + code: + type: string + description: Error code + Success: + type: object + properties: + success: + type: boolean + message: + type: string + HealthStatus: + type: object + properties: + status: + type: string + enum: + - ok + - degraded + - down + version: + type: string + uptime: + type: integer + Deployment: + type: object + properties: + name: + type: string + status: + type: string + enum: + - running + - stopped + - error + - deploying + compose_version: + type: string + created_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + DeploymentList: + type: array + items: + $ref: '#/components/schemas/Deployment' + Container: + type: object + properties: + id: + type: string + name: + type: string + image: + type: string + status: + type: string + state: + type: string + ports: + type: array + items: + type: object + ContainerList: + type: array + items: + $ref: '#/components/schemas/Container' + Image: + type: object + properties: + id: + type: string + repository: + type: string + tag: + type: string + size: + type: integer + created: + type: string + format: date-time + ImageList: + type: array + items: + $ref: '#/components/schemas/Image' + Volume: + type: object + properties: + name: + type: string + driver: + type: string + mountpoint: + type: string + size: + type: integer + VolumeList: + type: array + items: + $ref: '#/components/schemas/Volume' + Network: + type: object + properties: + name: + type: string + id: + type: string + driver: + type: string + scope: + type: string + NetworkList: + type: array + items: + $ref: '#/components/schemas/Network' + Certificate: + type: object + properties: + domain: + type: string + issuer: + type: string + expires_at: + type: string + format: date-time + auto_renew: + type: boolean + status: + type: string + CertificateList: + type: array + items: + $ref: '#/components/schemas/Certificate' + User: + type: object + properties: + id: + type: integer + username: + type: string + email: + type: string + role: + type: string + enum: + - admin + - operator + - viewer + created_at: + type: string + format: date-time + UserList: + type: array + items: + $ref: '#/components/schemas/User' + APIKey: + type: object + properties: + id: + type: integer + name: + type: string + key_prefix: + type: string + role: + type: string + permissions: + type: array + items: + type: string + revoked: + type: boolean + created_at: + type: string + format: date-time + APIKeyList: + type: array + items: + $ref: '#/components/schemas/APIKey' + Backup: + type: object + properties: + id: + type: integer + name: + type: string + size: + type: integer + status: + type: string + created_at: + type: string + format: date-time + BackupList: + type: array + items: + $ref: '#/components/schemas/Backup' + ScheduledTask: + type: object + properties: + id: + type: integer + name: + type: string + cron: + type: string + action: + type: string + enabled: + type: boolean + last_run: + type: string + format: date-time + ScheduledTaskList: + type: array + items: + $ref: '#/components/schemas/ScheduledTask' + SecurityEvent: + type: object + properties: + id: + type: integer + type: + type: string + source_ip: + type: string + severity: + type: string + details: + type: object + timestamp: + type: string + format: date-time + SecurityEventList: + type: array + items: + $ref: '#/components/schemas/SecurityEvent' + TrafficLog: + type: object + properties: + id: + type: integer + domain: + type: string + method: + type: string + path: + type: string + status_code: + type: integer + bytes: + type: integer + timestamp: + type: string + format: date-time + TrafficLogList: + type: array + items: + $ref: '#/components/schemas/TrafficLog' + AuditEvent: + type: object + properties: + id: + type: integer + action: + type: string + actor: + type: string + resource: + type: string + details: + type: object + timestamp: + type: string + format: date-time + AuditEventList: + type: array + items: + $ref: '#/components/schemas/AuditEvent' + Plan: + type: object + properties: + id: + type: integer + name: + type: string + status: + type: string + changes: + type: array + items: + type: object + created_at: + type: string + format: date-time + PlanList: + type: array + items: + $ref: '#/components/schemas/Plan' + LoginRequest: + type: object + required: + - username + - password + properties: + username: + type: string + password: + type: string + format: password + LoginResponse: + type: object + properties: + token: + type: string + user: + $ref: '#/components/schemas/User' +tags: +- name: authentication + description: Authentication endpoints for login, token validation, and auth status. +- name: setup + description: Initial server setup and configuration endpoints. Only accessible before + setup is complete. +- name: deployments + description: Deployment lifecycle management including create, start, stop, restart, + and file management. +- name: services + description: 'Per-service actions within a deployment: start, stop, restart, rebuild.' +- name: networks + description: 'Docker network management: create, delete, connect, disconnect.' +- name: certificates + description: SSL/TLS certificate management with Let's Encrypt support and auto-renewal. +- name: proxy + description: Reverse proxy setup and management for deployments. +- name: containers + description: 'Container lifecycle management: start, stop, restart, exec, logs, + stats.' +- name: images + description: 'Docker image management: list, pull, remove, cleanup.' +- name: volumes + description: 'Docker volume management: create, list, remove, prune.' +- name: ports + description: Port and process management. +- name: system_services + description: System service management on the host. +- name: system_files + description: System-level file management (admin only). +- name: settings + description: Application settings configuration. +- name: config + description: Low-level configuration key-value store. +- name: plans + description: Deployment plan management. Plans represent pending or previewed changes. +- name: ai + description: AI assistant for system analysis and deployment management. +- name: templates + description: Deployment template management with compose generation. +- name: plugins + description: Plugin registry for extending deployment functionality. +- name: databases + description: 'Database server management: create, query, user management, privileges.' +- name: infrastructure + description: Infrastructure service management for external services. +- name: registries + description: Container registry type management. +- name: credentials + description: Credential management for registry authentication. +- name: security + description: Security event monitoring, IP blocking, whitelist, and WAF management. +- name: traffic + description: Traffic logging and analytics. +- name: backups + description: Backup creation, restoration, and management. +- name: scheduler + description: Scheduled task management with cron-based execution. +- name: audit + description: Audit event logging and export. +- name: users + description: User management with role-based access control. +- name: api_keys + description: API key management for programmatic access. +- name: dns + description: DNS provider and zone management with PowerDNS support. +- name: cluster + description: Multi-server cluster management for distributed deployments. +- name: websockets + description: WebSocket endpoints for real-time streaming (terminal, logs, exec). +- name: internal + description: Internal endpoints for nginx integration and cross-service communication. +- name: system + description: System health, stats, and server information endpoints. diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..a1b69a4 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,92 @@ +## Installation + +### Prerequisites + +- Go 1.21 or later (for building from source) +- Docker and Docker Compose v2 +- Access to Docker socket (`/var/run/docker.sock`) +- Linux server (Ubuntu 20.04+, Debian 11+, or similar) + +### Option 1: Build from Source + +```bash +git clone https://github.com/flatrun/agent.git +cd agent +make build +``` + +Or manually: + +```bash +go mod download +go build -o flatrun-agent ./cmd/agent +``` + +### Option 2: Download Binary + +```bash +wget https://github.com/flatrun/agent/releases/latest/download/flatrun-agent +chmod +x flatrun-agent +``` + +### Running + +Development mode: + +```bash +make run +# or +./flatrun-agent --config config.yml +``` + +### Production with Systemd + +Move the binary to a system location: + +```bash +sudo mv flatrun-agent /usr/local/bin/ +sudo chmod +x /usr/local/bin/flatrun-agent +``` + +Prepare the working directory and a dedicated user: + +```bash +sudo mkdir -p /opt/flatrun +sudo useradd -r -s /usr/sbin/nologin -G docker flatrun +sudo chown flatrun:flatrun /opt/flatrun +sudo cp config.yml /opt/flatrun/config.yml +``` + +Create `/etc/systemd/system/flatrun-agent.service`: + +```ini +[Unit] +Description=FlatRun Agent +After=network.target docker.service +Requires=docker.service + +[Service] +Type=simple +User=flatrun +Group=docker +WorkingDirectory=/opt/flatrun +ExecStart=/usr/local/bin/flatrun-agent --config /opt/flatrun/config.yml +# Make sure config.yml is copied to /opt/flatrun/ first +Restart=always +RestartSec=10 +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target +``` + +Enable and start: + +```bash +sudo systemctl daemon-reload +sudo systemctl enable flatrun-agent +sudo systemctl start flatrun-agent +sudo systemctl status flatrun-agent +sudo journalctl -u flatrun-agent -f +``` diff --git a/docs/overview.md b/docs/overview.md new file mode 100644 index 0000000..604e6cb --- /dev/null +++ b/docs/overview.md @@ -0,0 +1,19 @@ +## Overview + +FlatRun Agent is the backend service that manages Docker deployments through a simple filesystem-based approach. It monitors your deployments directory and provides a REST API for the FlatRun UI. + +### Features + +- Docker Compose deployment management +- Container lifecycle control (start, stop, restart) +- Real-time container monitoring and logs +- Docker resource management (images, volumes, networks) +- SSL certificate monitoring +- Quick App templates for rapid deployment +- JWT-based API authentication +- Health monitoring and statistics +- Plugin architecture for extensibility + +### Architecture + +The agent follows a flat-file approach: each deployment is a directory containing a `docker-compose.yml` file. The agent watches the configured deployments directory and manages the containers through the Docker API. It communicates with the FlatRun UI through a REST API and uses JWT tokens for authentication. diff --git a/docs/PLUGIN_ARCHITECTURE.md b/docs/plugin-architecture.md similarity index 100% rename from docs/PLUGIN_ARCHITECTURE.md rename to docs/plugin-architecture.md diff --git a/docs/security.md b/docs/security.md new file mode 100644 index 0000000..292e065 --- /dev/null +++ b/docs/security.md @@ -0,0 +1,23 @@ +## Security + +- Use strong, unique API keys. +- Generate a secure JWT secret: `openssl rand -base64 32`. +- Run behind a reverse proxy (nginx) with HTTPS in production. +- Restrict Docker socket access appropriately. +- Keep the agent updated. + +### Troubleshooting + +**Agent won't start:** +- Check Docker is running: `systemctl status docker` +- Verify Docker socket permissions: `ls -la /var/run/docker.sock` +- Validate the config YAML syntax + +**Authentication issues:** +- Ensure the API key matches between UI and agent config +- Verify JWT secret is set +- Check CORS origins include your UI URL + +**Can't see deployments:** +- Verify `deployments_path` exists and is readable +- Check each deployment has a valid `docker-compose.yml`