diff --git a/.dockerignore b/.dockerignore index 27bcb14..ad69bbf 100644 --- a/.dockerignore +++ b/.dockerignore @@ -13,3 +13,4 @@ tests/ *.md !requirements.txt !requirements.yml +openapi.json diff --git a/Dockerfile b/Dockerfile index 0a3db0b..c107274 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,33 +1,57 @@ -FROM python:3.12-slim +# ─── Stage 1: builder ───────────────────────────────────────────────────────── +FROM python:3.13-bookworm AS builder -# Install system deps for ansible and ssh RUN apt-get update && apt-get install -y --no-install-recommends \ openssh-client \ git \ && rm -rf /var/lib/apt/lists/* -WORKDIR /app +WORKDIR /build -# Install Python deps COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +RUN python -m venv /opt/venv \ + && /opt/venv/bin/pip install --no-cache-dir -r requirements.txt -# Install Ansible collections COPY requirements.yml . -RUN ansible-galaxy collection install -r requirements.yml -p /usr/share/ansible/collections +RUN /opt/venv/bin/ansible-galaxy collection install \ + -r requirements.yml \ + -p /usr/share/ansible/collections + +# ─── Stage 2: runtime ───────────────────────────────────────────────────────── +FROM python:3.13-slim-bookworm AS runtime + +# Match host UID/GID at build time so SSH key volume permissions align. +# Override with: docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) +ARG UID=1000 +ARG GID=1000 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssh-client \ + git \ + && rm -rf /var/lib/apt/lists/* \ + && groupadd -g "${GID}" range42 \ + && useradd -u "${UID}" -g "${GID}" -m -d /home/range42 --no-log-init range42 + +WORKDIR /app + +COPY --from=builder /opt/venv /opt/venv +COPY --from=builder /usr/share/ansible/collections /usr/share/ansible/collections -# Copy application COPY app/ app/ COPY playbooks/ playbooks/ COPY inventory/ inventory/ -# Set env defaults +RUN chown -R range42:range42 /app + +ENV PATH="/opt/venv/bin:$PATH" +ENV HOME=/home/range42 +ENV PYTHONPATH=/app ENV PROJECT_ROOT_DIR=/app ENV API_BACKEND_WWWAPP_PLAYBOOKS_DIR=/app/ ENV API_BACKEND_INVENTORY_DIR=/app/inventory/ -ENV HOST=0.0.0.0 -ENV PORT=8000 -ENV PYTHONPATH=/app +ENV ANSIBLE_COLLECTIONS_PATH=/usr/share/ansible/collections + +USER range42 EXPOSE 8000 diff --git a/README.md b/README.md index 59fe45e..0c5b97b 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ FastAPI application that orchestrates Proxmox infrastructure deployments by exec ## Table of Contents - [Quick Start](#quick-start) +- [Docker: Build & Publish](#docker-build--publish) - [Configuration](#configuration) - [API Documentation](#api-documentation) - [WebSocket API](#websocket-api) @@ -23,17 +24,16 @@ FastAPI application that orchestrates Proxmox infrastructure deployments by exec ### Option 1 -- Docker ```bash -docker compose up +# Build and start (uses the built image — no source bind-mounts) +VAULT_PASSWORD=my-secret docker compose up ``` -Builds the image, installs dependencies and Ansible collections, and starts the API on port `8000`. +Builds the image from the local source and starts the API on port `8000`. The application code, Ansible playbooks, and inventory are baked into the image at build time. **Environment variables:** Configured via the host environment or a `.env` file. Required: at least one of `VAULT_PASSWORD_FILE` or `VAULT_PASSWORD` for vault-encrypted operations. **Volumes:** -- `./app` -- Application source (read-only) -- `./playbooks` -- Ansible playbooks (read-only) -- `./inventory` -- Ansible inventory files (read-only) +- `${SSH_KEY_PATH:-~/.ssh}` -- SSH private keys (read-only) — needed for Ansible over SSH **Health check:** The container pings `/docs/openapi.json` every 30s (5s timeout, 10s start period, 3 retries). @@ -66,6 +66,91 @@ uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --- +## Docker: Build & Publish + +The Dockerfile is a two-stage build (`builder` → `runtime`) based on **Debian Bookworm** (`python:3.13-bookworm` / `python:3.13-slim-bookworm`): + +- **Stage 1 `builder`** — installs Python dependencies into `/opt/venv` and Ansible collections into `/usr/share/ansible/collections`. +- **Stage 2 `runtime`** — copies the virtualenv and collections from the builder; bakes in application code; runs uvicorn. + +### Non-root user + +The runtime image runs as a non-root user (`range42`, UID/GID 1000 by default). If your SSH keys are owned by a different UID, pass matching build args so the container user can read the mounted keys: + +```bash +docker compose build # uses UID/GID 1000 +# or match your host user: +UID=$(id -u) GID=$(id -g) docker compose build +``` + +SSH host key checking is enabled (`ANSIBLE_HOST_KEY_CHECKING=True`). Pre-populate `~/.ssh/known_hosts` on the host before mounting, or the first Ansible connection to an unknown host will fail. + +### Build locally + +```bash +docker compose build +# or directly: +docker build -t ghcr.io/range42/range42-backend-api:latest . +``` + +### Run locally (validate the image) + +```bash +VAULT_PASSWORD=my-secret docker compose up +# API reachable at http://localhost:8000/docs/swagger +``` + +### Publish to GHCR + +```bash +# 1. Authenticate (one-time per machine) +echo $GITHUB_TOKEN | docker login ghcr.io -u --password-stdin + +# 2. Build and tag +IMAGE=ghcr.io/range42/range42-backend-api +VERSION=v0.1 # or $(git describe --tags --always) + +docker build -t ${IMAGE}:${VERSION} -t ${IMAGE}:latest . + +# 3. Push +docker push ${IMAGE}:${VERSION} +docker push ${IMAGE}:latest +``` + +Or with Compose (sets `IMAGE_NAME` for the service): + +```bash +IMAGE_NAME=ghcr.io/range42/range42-backend-api:v0.1 docker compose build +IMAGE_NAME=ghcr.io/range42/range42-backend-api:v0.1 docker compose push +``` + +### Vault password in production + +`VAULT_PASSWORD` passed as an environment variable is visible via `docker inspect` and in `/proc//environ` inside the container. For production use `VAULT_PASSWORD_FILE` pointed at a mounted secret file: + +```bash +# Create a secret file (outside the repo) +echo "my-vault-password" > /run/secrets/vault_pass +chmod 600 /run/secrets/vault_pass + +# Pass the file path, not the password itself +VAULT_PASSWORD_FILE=/run/secrets/vault_pass docker compose up +``` + +### OpenAPI spec + +The committed `openapi.json` at the repository root reflects the current API surface. It is used to bootstrap the Kong API gateway configuration. To regenerate it after adding or modifying routes: + +```bash +PYTHONPATH=. python -c " +import json +from app.main import create_app +print(json.dumps(create_app().openapi(), indent=2)) +" > openapi.json +``` + +--- + ## Configuration All settings are read from environment variables in `app/core/config.py`. Nothing is hard-coded. diff --git a/app/core/config.py b/app/core/config.py index 6e22ac0..531ae06 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -70,7 +70,7 @@ class Settings: cors_origin_regex: str = field( default_factory=lambda: os.getenv( "CORS_ORIGIN_REGEX", - r"^https?://(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$", + r"^https?://(localhost|127\.0\.0\.1|\[::1\]|192\.168\.42\.\d{1,3})(:\d+)?$", ) ) diff --git a/app/main.py b/app/main.py index fd66111..5200fa5 100644 --- a/app/main.py +++ b/app/main.py @@ -78,7 +78,7 @@ def create_app() -> FastAPI: openapi_url="/docs/openapi.json", version="v0.1", license_info={"name": "GPLv3"}, - contact={"email": "info@digisquad.com"}, + contact={"email": "info@nc3.lu"}, middleware=middleware, ) diff --git a/app/routes/vms.py b/app/routes/vms.py index 168f16d..4ca13ed 100644 --- a/app/routes/vms.py +++ b/app/routes/vms.py @@ -81,7 +81,13 @@ def _run_proxmox_action(req, action: str, extravars: dict) -> JSONResponse: if req.as_json: result = extract_action_results(events, action) - payload = {"rc": rc, "result": result} + payload: dict[str, Any] = {"rc": rc, "result": result} + # On failure, include error context from Ansible logs + if rc != 0: + lines = log_plain.splitlines() + fatal = next((l for l in lines if "fatal:" in l or "FAILED" in l), None) + payload["error"] = fatal.strip() if fatal else f"Ansible exited with rc={rc}" + payload["log_multiline"] = lines[-10:] # last 10 lines for context else: payload = {"rc": rc, "log_multiline": log_plain.splitlines()} diff --git a/docker-compose.yml b/docker-compose.yml index 8024ad4..4531cad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,19 +1,29 @@ services: api: - build: . + image: ${IMAGE_NAME:-ghcr.io/range42/range42-backend-api:latest} + build: + context: . + target: runtime + args: + UID: ${UID:-1000} + GID: ${GID:-1000} ports: - "${PORT:-8000}:8000" volumes: - - ./app:/app/app:ro - - ./playbooks:/app/playbooks:ro - - ./inventory:/app/inventory:ro - - ${SSH_KEY_PATH:-~/.ssh}:/root/.ssh:ro + # SSH keys — must be readable by the container user (UID 1000 by default). + # Set SSH_KEY_PATH to override the source directory. + - ${SSH_KEY_PATH:-~/.ssh}:/home/range42/.ssh:ro + # Inventory contains per-deployment host credentials. Uncomment to + # override the baked-in inventory without rebuilding the image: + # - ${INVENTORY_PATH:-./inventory}:/app/inventory:ro environment: - PROJECT_ROOT_DIR=/app - API_BACKEND_WWWAPP_PLAYBOOKS_DIR=/app/ - API_BACKEND_PUBLIC_PLAYBOOKS_DIR=${API_BACKEND_PUBLIC_PLAYBOOKS_DIR:-/app/} - API_BACKEND_INVENTORY_DIR=/app/inventory/ - API_BACKEND_VAULT_FILE=${API_BACKEND_VAULT_FILE:-} + # Production: use VAULT_PASSWORD_FILE pointing to a mounted secret file. + # VAULT_PASSWORD is visible via `docker inspect` — dev/testing only. - VAULT_PASSWORD_FILE=${VAULT_PASSWORD_FILE:-} - VAULT_PASSWORD=${VAULT_PASSWORD:-} - CORS_ORIGIN_REGEX=${CORS_ORIGIN_REGEX:-} diff --git a/openapi.json b/openapi.json new file mode 100644 index 0000000..d81df5b --- /dev/null +++ b/openapi.json @@ -0,0 +1,9822 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "CR42 - API", + "contact": { + "email": "info@nc3.lu" + }, + "license": { + "name": "GPLv3" + }, + "version": "v0.1" + }, + "paths": { + "/v0/admin/debug/ping": { + "post": { + "tags": [ + "runner" + ], + "summary": "Run Ansible ping utility", + "description": "This endpoint runs the Ansible ping module to check connectivity with target hosts.", + "operationId": "debug_ping_v0_admin_debug_ping_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DebugPingRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/debug/func_test": { + "post": { + "tags": [ + "__tmp_testing" + ], + "summary": "temp stuff", + "description": "_testing - tmp", + "operationId": "debug_func_test_v0_admin_debug_func_test_post", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/linux/ubuntu/install/docker": { + "post": { + "tags": [ + "bundles - core - ubuntu " + ], + "summary": "Install docker packages", + "description": "Install and configure docker engine on the target ubuntu system", + "operationId": "bundles_core_linux_ubuntu_install_docker_v0_admin_run_bundles_core_linux_ubuntu_install_docker_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDockerRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDockerReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/linux/ubuntu/install/docker-compose": { + "post": { + "tags": [ + "bundles - core - ubuntu " + ], + "summary": "Install docker compose packages", + "description": "Install and configure docker compose on the target ubuntu system", + "operationId": "bundles_core_linux_ubuntu_install_docker_compose_v0_admin_run_bundles_core_linux_ubuntu_install_docker_compose_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDockerComposeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDockerComposeReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/linux/ubuntu/install/basic-packages": { + "post": { + "tags": [ + "bundles - core - ubuntu " + ], + "summary": "Install basics packages", + "description": "Install and configure a base set of packages on the target Ubuntu system", + "operationId": "bundles_core_linux_ubuntu_install_basic_packages_v0_admin_run_bundles_core_linux_ubuntu_install_basic_packages_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleBasicPackagesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleBasicPackagesReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/linux/ubuntu/install/dot-files": { + "post": { + "tags": [ + "bundles - core - ubuntu " + ], + "summary": "Install user dotfiles", + "description": "Install and configure generic dotfiles - vimrc, zshrc, etc.", + "operationId": "bundles_core_linux_ubuntu_install_dotfiles_v0_admin_run_bundles_core_linux_ubuntu_install_dot_files_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDotFilesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleDotFilesItemReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/linux/ubuntu/configure/add-user": { + "post": { + "tags": [ + "bundles - core - ubuntu " + ], + "summary": "Add system user", + "description": "Create a new user with shell, home and password", + "operationId": "bundles_core_linux_ubuntu_configure_add_user_v0_admin_run_bundles_core_linux_ubuntu_configure_add_user_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleAddUserRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleAddUserReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/create-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Create default admin VMs", + "description": "Create the default set of admin virtual machines for initial configuration in Proxmox", + "operationId": "bundles_proxmox_create_vms_admin_v0_admin_run_bundles_core_proxmox_configure_default_create_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateAdminVmsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateAdminVmsReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/create-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Create default vulnerable VMs", + "description": "Create the default set of vulnerable virtual machines for initial configuration in Proxmox", + "operationId": "bundles_proxmox_create_vms_vuln_v0_admin_run_bundles_core_proxmox_configure_default_create_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateVulnVmsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateVulnVmsReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/create-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Create default student VMs", + "description": "Create the default set of student virtual machines for initial configuration in Proxmox", + "operationId": "bundles_proxmox_create_vms_student_v0_admin_run_bundles_core_proxmox_configure_default_create_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateStudentVmsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleCreateStudentVmsReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/start-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Start admin vms ", + "description": "Start all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_start_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/stop-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Stop admin vms ", + "description": "Stop all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_stop_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/pause-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Pause admin vms ", + "description": "Pause all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_pause_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/resume-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Resume admin vms ", + "description": "Resume all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_resume_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/start-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Start vuln vms ", + "description": "Start all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_start_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/stop-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Stop vuln vms ", + "description": "Stop all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_stop_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/pause-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Pause vuln vms ", + "description": "Pause all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_pause_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/resume-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Resume vuln vms ", + "description": "Resume all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_resume_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/start-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Start student vms ", + "description": "Start all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_start_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/stop-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Stop student vms ", + "description": "Stop all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_stop_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/pause-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Pause student vms ", + "description": "Pause all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_pause_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/resume-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Resume student vms ", + "description": "Resume all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_resume_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/delete-vms-student": { + "delete": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Delete student vms ", + "description": "Delete all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_delete_vms_student_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/delete-vms-vuln": { + "delete": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Delete vuln vms ", + "description": "Delete all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_delete_vms_vuln_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/delete-vms-admin": { + "delete": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Delete admin vms ", + "description": "Delete all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_delete_vms_admin_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/create-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Snapshot student vms ", + "description": "Snapshot all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_create_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/create-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Snapshot vuln vms ", + "description": "Snapshot all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_create_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/create-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Snapshot admin vms ", + "description": "Snapshot all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_create_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleStartStopDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/revert-vms-student": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - student" + ], + "summary": "Snapshot student vms ", + "description": "Snapshot all student virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_revert_vms_student_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleRevertSnapshotDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRevertReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/revert-vms-vuln": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - vuln" + ], + "summary": "Snapshot vuln vms ", + "description": "Snapshot all vuln virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_revert_vms_vuln_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleRevertSnapshotDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRevertReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/core/proxmox/configure/default/snapshot/revert-vms-admin": { + "post": { + "tags": [ + "bundles - core - proxmox - vms - default-configuration - admin" + ], + "summary": "Snapshot admin vms ", + "description": "Snapshot all admin virtual machines", + "operationId": "handler_v0_admin_run_bundles_core_proxmox_configure_default_snapshot_revert_vms_admin_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BundleRevertSnapshotDefaultRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRevertReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/bundles/{bundles_name}/run": { + "post": { + "tags": [ + "runner" + ], + "summary": "Run bundles", + "description": "Run generic bundles with default (and static) extras_vars", + "operationId": "run_bundle_v0_admin_run_bundles__bundles_name__run_post", + "parameters": [ + { + "name": "bundles_name", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Bundles Name" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DebugPingRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/run/scenarios/{scenario_name}/run": { + "post": { + "tags": [ + "runner" + ], + "summary": "Run scenario", + "description": "Run generic scenario with default (and static) extras_vars", + "operationId": "run_scenario_v0_admin_run_scenarios__scenario_name__run_post", + "parameters": [ + { + "name": "scenario_name", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Scenario Name" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DebugPingRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/list": { + "post": { + "tags": [ + "proxmox - usage" + ], + "summary": "List VMs and LXC containers", + "description": "This endpoint retrieves all virtual machines (VMs) and LXC containers from Proxmox.", + "operationId": "proxmox_vms_list_v0_admin_proxmox_vms_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "List VM result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/list_usage": { + "post": { + "tags": [ + "proxmox - usage" + ], + "summary": "Retrieve current resource usage of VMs and LXC containers", + "description": "Returns the current RAM, disk, and CPU usage for all virtual machines (VMs) and LXC containers.", + "operationId": "proxmox_vms_list_usage_v0_admin_proxmox_vms_list_usage_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmListUsageRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Resource usage details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmListUsageReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/start": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Start a specific VM", + "description": "This endpoint start the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_start_v0_admin_proxmox_vms_vm_id_start_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Start result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/stop": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Stop a specific VM", + "description": "This endpoint stop the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_stop_v0_admin_proxmox_vms_vm_id_stop_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Start result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/stop_force": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Force stop a specific VM", + "description": "This endpoint force stop the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_stop_force_v0_admin_proxmox_vms_vm_id_stop_force_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Start result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/pause": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Pause a specific VM", + "description": "This endpoint pauses the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_pause_v0_admin_proxmox_vms_vm_id_pause_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Start result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/resume": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Resume a specific VM", + "description": "This endpoint resume the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_resume_v0_admin_proxmox_vms_vm_id_resume_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Start result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/create": { + "post": { + "tags": [ + "proxmox - vm management" + ], + "summary": "Create a specific VM", + "description": "This endpoint create the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_create_v0_admin_proxmox_vms_vm_id_create_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Delete result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmCreateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/delete": { + "delete": { + "tags": [ + "proxmox - vm management" + ], + "summary": "Delete a specific VM", + "description": "This endpoint delete the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_delete_v0_admin_proxmox_vms_vm_id_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Delete result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/clone": { + "post": { + "tags": [ + "proxmox - vm management" + ], + "summary": "Clone a specific VM", + "description": "This endpoint clone the target virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_clone_v0_admin_proxmox_vms_vm_id_clone_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmCloneRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Delete result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmCloneReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/stop": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass stop vms ", + "description": "Stop all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_stop_v0_admin_proxmox_vms_vm_ids_stop_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/stop_force": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass force stop vms ", + "description": "Force stop all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_stop_force_v0_admin_proxmox_vms_vm_ids_stop_force_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/start": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass start vms ", + "description": "Start all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_start_v0_admin_proxmox_vms_vm_ids_start_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/pause": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass pause vms ", + "description": "Pause all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_pause_v0_admin_proxmox_vms_vm_ids_pause_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/resume": { + "post": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass resume vms ", + "description": "Resume all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_resume_v0_admin_proxmox_vms_vm_ids_resume_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmActionReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_ids/delete": { + "delete": { + "tags": [ + "proxmox - vm lifecycle" + ], + "summary": "Mass delete vms ", + "description": "Delete all specified virtual machines", + "operationId": "proxmox_vms_vm_ids_mass_delete_v0_admin_proxmox_vms_vm_ids_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MassDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_get_config": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_get_config_v0_admin_proxmox_vms_vm_id_config_vm_get_config_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_get_config_cdrom": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Get cdrom configuration of a VM", + "description": "Returns the cdrom configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_get_config_cdrom_v0_admin_proxmox_vms_vm_id_config_vm_get_config_cdrom_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigCdromRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "cdrom configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigCdromReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_get_config_cpu": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Get cpu configuration of a VM", + "description": "Returns the cpu configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_get_config_cpu_v0_admin_proxmox_vms_vm_id_config_vm_get_config_cpu_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigCpuRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "cpu configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigCpuReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_get_config_ram": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Get ram configuration of a VM", + "description": "Returns the ram configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_get_config_ram_v0_admin_proxmox_vms_vm_id_config_vm_get_config_ram_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigRamRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "ram configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmGetConfigRamReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_set_tag": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_set_tags_v0_admin_proxmox_vms_vm_id_config_vm_set_tag_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmSetTagRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmSetTagReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_set_name": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Set name of a VM", + "description": "Sets the name of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_set_name_v0_admin_proxmox_vms_vm_id_config_vm_set_name_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Request_ProxmoxVmsVMID_VmSetName" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Reply_ProxmoxVmsVMID_VmSetName" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_set_description": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Set description of a VM", + "description": "Sets the description of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_set_description_v0_admin_proxmox_vms_vm_id_config_vm_set_description_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Request_ProxmoxVmsVMID_VmSetDescription" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Reply_ProxmoxVmsVMID_VmSetDescription" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_set_cpu": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Set CPU cores of a VM", + "description": "Sets the CPU cores of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_set_cpu_v0_admin_proxmox_vms_vm_id_config_vm_set_cpu_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Request_ProxmoxVmsVMID_VmSetCpu" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Reply_ProxmoxVmsVMID_VmSetCpu" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/config/vm_set_memory": { + "post": { + "tags": [ + "proxmox - vm configuration" + ], + "summary": "Set memory of a VM", + "description": "Sets the memory of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_vm_set_memory_v0_admin_proxmox_vms_vm_id_config_vm_set_memory_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Request_ProxmoxVmsVMID_VmSetMemory" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Reply_ProxmoxVmsVMID_VmSetMemory" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/snapshot/list": { + "post": { + "tags": [ + "proxmox - vm snapshots" + ], + "summary": "List a snapshot for a VM", + "description": "List snapshot of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_list_snapshot_v0_admin_proxmox_vms_vm_id_snapshot_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Snapshot list result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/snapshot/create": { + "post": { + "tags": [ + "proxmox - vm snapshots" + ], + "summary": "Create a snapshot for a VM", + "description": "Creates a snapshot of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_create_snapshot_v0_admin_proxmox_vms_vm_id_snapshot_create_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Snapshot creation result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/snapshot/delete": { + "delete": { + "tags": [ + "proxmox - vm snapshots" + ], + "summary": "Delete a snapshot for a VM", + "description": "Delete a snapshot of the specified virtual machine (VM).", + "operationId": "proxmox_vms_vm_id_delete_snapshot_v0_admin_proxmox_vms_vm_id_snapshot_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Snapshot delete result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/vms/vm_id/snapshot/revert": { + "post": { + "tags": [ + "proxmox - vm snapshots" + ], + "summary": "Revert a VM to a snapshot", + "description": "Reverts the specified virtual machine (VM) to the given snapshot.", + "operationId": "proxmox_vms_vm_id_revert_snapshot_v0_admin_proxmox_vms_vm_id_snapshot_revert_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRevertRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Snapshot revert result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRevertReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/storage/storage_name/list_iso": { + "post": { + "tags": [ + "proxmox - storage" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_storage_with_storage_name_list_iso_v0_admin_proxmox_storage_storage_name_list_iso_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListIsoRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListIsoItemReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/storage/storage_name/list_template": { + "post": { + "tags": [ + "proxmox - storage" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_storage_with_storage_name_list_template_v0_admin_proxmox_storage_storage_name_list_template_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListTemplateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListTemplateReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/storage/list": { + "post": { + "tags": [ + "proxmox - storage" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_storage_list_v0_admin_proxmox_storage_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageListItemReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/storage/download_iso": { + "post": { + "tags": [ + "proxmox - storage" + ], + "summary": "Retrieve configuration of a VM", + "description": "Returns the configuration details of the specified virtual machine (VM).", + "operationId": "proxmox_storage_download_iso_v0_admin_proxmox_storage_download_iso_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageDownloadIsoRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "VM configuration details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageDownloadIsoItemReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/alias/list": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "List VM firewall aliases", + "description": "List firewall aliases for a specific virtual machine", + "operationId": "proxmox_vm_alias_list_v0_admin_proxmox_firewall_vm_alias_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the VM firewall aliases", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/alias/add": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Add a firewall alias", + "description": "Add a new alias to the Proxmox firewall - IPs, subnets/networks, hostnames", + "operationId": "proxmox_firewall_vm_alias_add_v0_admin_proxmox_firewall_vm_alias_add_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasAddRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Information about the created firewall alias", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasAddReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/alias/delete": { + "delete": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Delete a firewall alias", + "description": "Remove an existing alias from the proxmox firewall", + "operationId": "proxmox_firewall_vm_alias_delete_v0_admin_proxmox_firewall_vm_alias_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the deleted firewall alias", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallAliasDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/rules/list": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "List VM firewall rules", + "description": "List firewall rules for a specific virtual machine", + "operationId": "proxmox_vm_rules_list_v0_admin_proxmox_firewall_vm_rules_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the VM firewall rules", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/rules/apply": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Apply firewall rules", + "description": "Apply the received firewall rules to the proxmox firewall", + "operationId": "proxmox_firewall_vm_rules_add_v0_admin_proxmox_firewall_vm_rules_apply_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleApplyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the applied firewall rules", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleApplyReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/rules/delete": { + "delete": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Delete a firewall rule", + "description": "Remove an existing rule from the proxmox firewall configuration", + "operationId": "proxmox_firewall_vm_rules_delete_v0_admin_proxmox_firewall_vm_rules_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the deleted firewall rule.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallRuleDeleteRequest" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/enable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Enable VM firewall", + "description": "Enable the proxmox firewall for a specific virtual machine", + "operationId": "proxmox_firewall_vm_enable_v0_admin_proxmox_firewall_vm_enable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableVmRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the enabled VM firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableVmReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/vm/disable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Disable VM firewall", + "description": "Disable the proxmox firewall for a specific virtual machine", + "operationId": "proxmox_firewall_vm_disable_v0_admin_proxmox_firewall_vm_disable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableVmRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the disabled VM firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableVmReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/node/enable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Enable node firewall", + "description": "Enable the proxmox firewall on a specific node", + "operationId": "proxmox_firewall_node_enable_v0_admin_proxmox_firewall_node_enable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableNodeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the enabled node firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableNodeReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/node/disable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Disable node firewall", + "description": "Disable the proxmox firewall on a specific node", + "operationId": "proxmox_firewall_node_disable_v0_admin_proxmox_firewall_node_disable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableNodeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the disabled node firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableNodeReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/datacenter/enable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Enable datacenter firewall", + "description": "Enable the proxmox firewall at the datacenter level", + "operationId": "proxmox_firewall_dc_enable_v0_admin_proxmox_firewall_datacenter_enable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableDcRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the enabled datacenter firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallEnableDcReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/firewall/datacenter/disable": { + "post": { + "tags": [ + "proxmox - firewall" + ], + "summary": "Disable datacenter firewall", + "description": "Disable the proxmox firewall at the datacenter level", + "operationId": "proxmox_firewall_dc_disable_v0_admin_proxmox_firewall_datacenter_disable_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableDcRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Details of the disabled datacenter firewall", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirewallDisableDcReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network/vm/add": { + "post": { + "tags": [ + "proxmox - network - vm" + ], + "summary": "Add VM network interface", + "description": "Create and attach a new network interface to a Proxmox VM.", + "operationId": "proxmox_network_vm_add_interface_v0_admin_proxmox_network_vm_add_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkAddRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Information about the added network interface.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkAddReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network/vm/delete": { + "post": { + "tags": [ + "proxmox - network - vm" + ], + "summary": "Delete VM network interface", + "description": "Remove a network interface from a Proxmox VM.", + "operationId": "proxmox_network_vm_delete_interface_v0_admin_proxmox_network_vm_delete_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Information about the deleted network interface.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network/vm/list": { + "post": { + "tags": [ + "proxmox - network - vm" + ], + "summary": "List VM network interfaces", + "description": "Retrieve all network interfaces attached to a Proxmox VM.", + "operationId": "proxmox_network_vm_list_interface_v0_admin_proxmox_network_vm_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "List of VM network interfaces.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VmNetworkListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network/node/add": { + "post": { + "tags": [ + "proxmox - network - node" + ], + "summary": "Add node network interface", + "description": "Create and attach a new network interface to a Proxmox node.", + "operationId": "proxmox_network_node_add_interface_v0_admin_proxmox_network_node_add_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkAddRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Information about the added network interface.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkAddReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network/node/delete": { + "post": { + "tags": [ + "proxmox - network - node" + ], + "summary": "Delete node network interface", + "description": "Remove a network interface from a Proxmox node.", + "operationId": "proxmox_network_node_delete_interface_v0_admin_proxmox_network_node_delete_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Information about the deleted network interface.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkDeleteReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v0/admin/proxmox/network//node/list": { + "post": { + "tags": [ + "proxmox - network - node" + ], + "summary": "List node network interfaces", + "description": "Retrieve all network interfaces configured on a Proxmox node.", + "operationId": "proxmox_network_node_list_interface_v0_admin_proxmox_network__node_list_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkListRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "List of node network interfaces.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeNetworkListReply" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "BundleAddUserItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleAddUserItemReply" + }, + "BundleAddUserReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleAddUserItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleAddUserReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleAddUserRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "hosts": { + "type": "string", + "pattern": "^[a-zA-Z0-9._:-]+$", + "title": "Hosts", + "description": "Hosts or groups" + }, + "user": { + "type": "string", + "pattern": "^[a-z_][a-z0-9_-]*$", + "title": "User", + "description": "New user" + }, + "password": { + "type": "string", + "pattern": "^[A-Za-z0-9@._-]*$", + "title": "Password", + "description": "New password" + }, + "change_pwd_at_logon": { + "type": "boolean", + "title": "Change Pwd At Logon", + "description": "Force user to change password on first login" + }, + "shell_path": { + "type": "string", + "pattern": "^/[a-z/]*$", + "title": "Shell Path", + "description": "Default user shell " + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts", + "user", + "password", + "change_pwd_at_logon", + "shell_path" + ], + "title": "BundleAddUserRequest", + "example": { + "change_pwd_at_logon": false, + "hosts": "r42.vuln-box-00", + "password": "r0b0t_aLd3rs0n", + "proxmox_node": "px-testing", + "shell_path": "/bin/sh", + "user": "elliot" + } + }, + "BundleBasicPackagesItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleBasicPackagesItemReply" + }, + "BundleBasicPackagesReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleBasicPackagesItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleBasicPackagesReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleBasicPackagesRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "hosts": { + "type": "string", + "pattern": "^[a-zA-Z0-9._:-]+$", + "title": "Hosts", + "description": "Hosts or groups" + }, + "install_package_basics": { + "type": "boolean", + "title": "Install Package Basics", + "description": "" + }, + "install_package_firewalls": { + "type": "boolean", + "title": "Install Package Firewalls", + "description": "" + }, + "install_package_docker": { + "type": "boolean", + "title": "Install Package Docker", + "description": "" + }, + "install_package_docker_compose": { + "type": "boolean", + "title": "Install Package Docker Compose", + "description": "" + }, + "install_package_utils_json": { + "type": "boolean", + "title": "Install Package Utils Json", + "description": "" + }, + "install_package_utils_network": { + "type": "boolean", + "title": "Install Package Utils Network", + "description": "" + }, + "install_ntpclient_and_update_time": { + "type": "boolean", + "title": "Install Ntpclient And Update Time", + "description": "" + }, + "packages_cleaning": { + "type": "boolean", + "title": "Packages Cleaning", + "description": "" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts", + "install_package_basics", + "install_package_firewalls", + "install_package_docker", + "install_package_docker_compose", + "install_package_utils_json", + "install_package_utils_network", + "install_ntpclient_and_update_time", + "packages_cleaning" + ], + "title": "BundleBasicPackagesRequest", + "example": { + "hosts": "r42.vuln-box-00", + "install_ntpclient_and_update_time": true, + "install_package_basics": true, + "install_package_docker": false, + "install_package_docker_compose": false, + "install_package_firewalls": false, + "install_package_utils_json": false, + "install_package_utils_network": false, + "packages_cleaning": true, + "proxmox_node": "px-testing" + } + }, + "BundleCreateAdminVmsItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleCreateAdminVmsItemReply" + }, + "BundleCreateAdminVmsItemRequest": { + "properties": { + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_ip": { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$", + "title": "Vm Ip", + "description": "vm ipv4" + }, + "vm_description": { + "type": "string", + "maxLength": 200, + "title": "Vm Description", + "description": "Description" + } + }, + "type": "object", + "required": [ + "vm_id", + "vm_ip", + "vm_description" + ], + "title": "BundleCreateAdminVmsItemRequest" + }, + "BundleCreateAdminVmsReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleCreateAdminVmsItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleCreateAdminVmsReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleCreateAdminVmsRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "vms": { + "additionalProperties": { + "$ref": "#/components/schemas/BundleCreateAdminVmsItemRequest" + }, + "type": "object", + "title": "Vms", + "description": "Map - vm override vm_id vm_ip vm_description, ... " + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vms" + ], + "title": "BundleCreateAdminVmsRequest", + "example": { + "proxmox_node": "px-testing", + "vms": { + "admin-wazuh": { + "vm_description": "Wazuh - dashboard", + "vm_id": 1000, + "vm_ip": "192.168.42.100" + }, + "admin-web-api-kong": { + "vm_description": "API gateway", + "vm_id": 1020, + "vm_ip": "192.168.42.120" + } + } + } + }, + "BundleCreateStudentVmsItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleCreateStudentVmsItemReply" + }, + "BundleCreateStudentVmsItemRequest": { + "properties": { + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_ip": { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$", + "title": "Vm Ip", + "description": "vm ipv4" + }, + "vm_description": { + "type": "string", + "maxLength": 200, + "title": "Vm Description", + "description": "Description" + } + }, + "type": "object", + "required": [ + "vm_id", + "vm_ip", + "vm_description" + ], + "title": "BundleCreateStudentVmsItemRequest" + }, + "BundleCreateStudentVmsReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleCreateStudentVmsItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleCreateStudentVmsReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleCreateStudentVmsRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "vms": { + "additionalProperties": { + "$ref": "#/components/schemas/BundleCreateStudentVmsItemRequest" + }, + "type": "object", + "title": "Vms", + "description": "Map - vm override vm_id vm_ip vm_description, ... " + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vms" + ], + "title": "BundleCreateStudentVmsRequest", + "example": { + "proxmox_node": "px-testing", + "vms": { + "student-box-01": { + "vm_description": "student R42 student vm", + "vm_id": 3001, + "vm_ip": "192.168.42.160" + } + } + } + }, + "BundleCreateVulnVmsItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleCreateVulnVmsItemReply" + }, + "BundleCreateVulnVmsItemRequest": { + "properties": { + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_ip": { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$", + "title": "Vm Ip", + "description": "vm ipv4" + }, + "vm_description": { + "type": "string", + "maxLength": 200, + "title": "Vm Description", + "description": "Description" + } + }, + "type": "object", + "required": [ + "vm_id", + "vm_ip", + "vm_description" + ], + "title": "BundleCreateVulnVmsItemRequest" + }, + "BundleCreateVulnVmsReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleCreateVulnVmsItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleCreateVulnVmsReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleCreateVulnVmsRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "vms": { + "additionalProperties": { + "$ref": "#/components/schemas/BundleCreateVulnVmsItemRequest" + }, + "type": "object", + "title": "Vms", + "description": "Map - vm override vm_id vm_ip vm_description, ... " + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vms" + ], + "title": "BundleCreateVulnVmsRequest", + "example": { + "proxmox_node": "px-testing", + "vms": { + "vuln-box-00": { + "vm_description": "vulnerable vm 00", + "vm_id": 4000, + "vm_ip": "192.168.42.170" + } + } + } + }, + "BundleDockerComposeItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleDockerComposeItemReply" + }, + "BundleDockerComposeReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleDockerComposeItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleDockerComposeReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleDockerComposeRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "hosts": { + "type": "string", + "pattern": "^[a-zA-Z0-9._:-]+$", + "title": "Hosts", + "description": "Hosts or groups" + }, + "install_package_docker": { + "type": "boolean", + "title": "Install Package Docker", + "description": "" + }, + "install_package_docker_compose": { + "type": "boolean", + "title": "Install Package Docker Compose", + "description": "" + }, + "install_ntpclient_and_update_time": { + "type": "boolean", + "title": "Install Ntpclient And Update Time", + "description": "" + }, + "packages_cleaning": { + "type": "boolean", + "title": "Packages Cleaning", + "description": "" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts", + "install_package_docker", + "install_package_docker_compose", + "install_ntpclient_and_update_time", + "packages_cleaning" + ], + "title": "BundleDockerComposeRequest", + "example": { + "hosts": "r42.vuln-box-00", + "install_ntpclient_and_update_time": true, + "install_package_docker": true, + "install_package_docker_compose": true, + "packages_cleaning": true, + "proxmox_node": "px-testing" + } + }, + "BundleDockerItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleDockerItemReply" + }, + "BundleDockerReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/BundleDockerItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "BundleDockerReply", + "example": { + "rc": 0, + "result": [ + {} + ] + } + }, + "BundleDockerRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "hosts": { + "type": "string", + "pattern": "^[a-zA-Z0-9._:-]+$", + "title": "Hosts", + "description": "Hosts or groups" + }, + "install_package_docker": { + "type": "boolean", + "title": "Install Package Docker", + "description": "" + }, + "install_ntpclient_and_update_time": { + "type": "boolean", + "title": "Install Ntpclient And Update Time", + "description": "" + }, + "packages_cleaning": { + "type": "boolean", + "title": "Packages Cleaning", + "description": "" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts", + "install_package_docker", + "install_ntpclient_and_update_time", + "packages_cleaning" + ], + "title": "BundleDockerRequest", + "example": { + "hosts": "r42.vuln-box-00", + "install_ntpclient_and_update_time": true, + "install_package_docker": true, + "packages_cleaning": true, + "proxmox_node": "px-testing" + } + }, + "BundleDotFilesItemReply": { + "properties": { + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "raw_data" + ], + "title": "BundleDotFilesItemReply" + }, + "BundleDotFilesRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "hosts": { + "type": "string", + "pattern": "^[a-zA-Z0-9._:-]+$", + "title": "Hosts", + "description": "Hosts or groups" + }, + "user": { + "type": "string", + "title": "User", + "description": "targeted username" + }, + "install_vim_dot_files": { + "type": "boolean", + "title": "Install Vim Dot Files", + "description": "Install vim dot file in user directory" + }, + "install_zsh_dot_files": { + "type": "boolean", + "title": "Install Zsh Dot Files", + "description": "Install zsh dot file in user directory" + }, + "apply_for_root": { + "type": "boolean", + "title": "Apply For Root", + "description": "Install dot files in /root" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts", + "user", + "install_vim_dot_files", + "install_zsh_dot_files", + "apply_for_root" + ], + "title": "BundleDotFilesRequest", + "example": { + "apply_for_root": false, + "hosts": "r42.vuln-box-00", + "install_vim_dot_files": true, + "install_zsh_dot_files": true, + "proxmox_node": "px-testing", + "user": "jane" + } + }, + "BundleRevertSnapshotDefaultRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_snapshot_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Snapshot Name", + "description": "Name of the snapshot to create" + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "BundleRevertSnapshotDefaultRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_snapshot_name": "default-snapshot-from-API-220925-1734" + } + }, + "BundleStartStopDefaultRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "BundleStartStopDefaultRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "DebugPingRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": false + }, + "hosts": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9\\._-]+$" + }, + { + "type": "null" + } + ], + "title": "Hosts", + "description": "Targeted ansible hosts" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "hosts" + ], + "title": "DebugPingRequest", + "example": { + "as_json": false, + "hosts": "all", + "proxmox_node": "px-testing" + } + }, + "FirewallAliasAddItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_ListIso_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_fw_alias_cidr": { + "type": "string", + "title": "Vm Fw Alias Cidr" + }, + "vm_fw_alias_name": { + "type": "string", + "title": "Vm Fw Alias Name" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_fw_alias_cidr", + "vm_fw_alias_name", + "vm_id" + ], + "title": "FirewallAliasAddItemReply" + }, + "FirewallAliasAddReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallAliasAddItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallAliasAddReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_add_iptables_alias", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_fw_alias_cidr": "192.168.123.0/24", + "vm_fw_alias_name": "test", + "vm_id": "1000" + } + ] + } + }, + "FirewallAliasAddRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_fw_alias_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-_]+$", + "title": "Vm Fw Alias Name", + "description": "Firewall alias name" + }, + "vm_fw_alias_cidr": { + "type": "string", + "pattern": "^[0-9./]+$", + "title": "Vm Fw Alias Cidr", + "description": "CIDR notation for the alias - eg 192.168.123.0/24" + }, + "vm_fw_alias_comment": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9 _-]*$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Alias Comment", + "description": "Optional comment for the firewall alias" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_fw_alias_name", + "vm_fw_alias_cidr", + "vm_fw_alias_comment" + ], + "title": "FirewallAliasAddRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_fw_alias_cidr": "192.168.123.0/24", + "vm_fw_alias_comment": "this_comment", + "vm_fw_alias_name": "test", + "vm_id": "1000" + } + }, + "FirewallAliasDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "const": "firewall_vm_delete_iptables_alias", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_fw_alias_name": { + "type": "string", + "title": "Vm Fw Alias Name" + }, + "vm_id": { + "type": "integer", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_fw_alias_name", + "vm_id" + ], + "title": "FirewallAliasDeleteItemReply" + }, + "FirewallAliasDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallAliasDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallAliasDeleteReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_delete_iptables_alias", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_fw_alias_name": "test", + "vm_id": "1000" + } + ] + } + }, + "FirewallAliasDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_fw_alias_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-_]+$", + "title": "Vm Fw Alias Name", + "description": "Firewall alias name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_fw_alias_name" + ], + "title": "FirewallAliasDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_fw_alias_name": "test", + "vm_id": "1000" + } + }, + "FirewallAliasListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_ListIptablesAlias_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_fw_alias_cidr": { + "type": "string", + "title": "Vm Fw Alias Cidr" + }, + "vm_fw_alias_name": { + "type": "integer", + "title": "Vm Fw Alias Name" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_fw_alias_cidr", + "vm_fw_alias_name", + "vm_id" + ], + "title": "FirewallAliasListItemReply" + }, + "FirewallAliasListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallAliasListItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallAliasListReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_list_iptables_alias", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_fw_alias_cidr": "192.168.123.0/24", + "vm_fw_alias_name": "test", + "vm_id": "1000" + } + ] + } + }, + "FirewallAliasListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "FirewallAliasListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1000" + } + }, + "FirewallDisableDcItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DisableFirewallDc_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node" + ], + "title": "FirewallDisableDcItemReply" + }, + "FirewallDisableDcReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallDisableDcItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallDisableDcReply", + "example": { + "rc": 0, + "result": [ + { + "action": "storage_list_iso", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "FirewallDisableDcRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "proxmox_api_host": { + "type": "string", + "pattern": "^[A-Za-z0-9\\.:-]*$", + "title": "Proxmox Api Host", + "description": "Proxmox api - ip:port" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "proxmox_api_host" + ], + "title": "FirewallDisableDcRequest", + "example": { + "as_json": true, + "proxmox_api_host": "127.0.0.1:1234", + "proxmox_node": "px-testing" + } + }, + "FirewallDisableNodeItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_EnableFirewallNode_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "node_firewall": { + "type": "string", + "title": "Node Firewall" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "node_firewall" + ], + "title": "FirewallDisableNodeItemReply" + }, + "FirewallDisableNodeReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallDisableNodeItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallDisableNodeReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_node_enable", + "node_firewall": "disabled", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "FirewallDisableNodeRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "FirewallDisableNodeRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "FirewallDisableVmItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_EnableFirewallDc_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "proxmox_api_host": { + "type": "string", + "title": "Proxmox Api Host" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "proxmox_api_host" + ], + "title": "FirewallDisableVmItemReply" + }, + "FirewallDisableVmReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallDisableVmItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallDisableVmReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_disable", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_firewall": "disable", + "vm_id": "1000", + "vm_name": "test" + } + ] + } + }, + "FirewallDisableVmRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "FirewallDisableVmRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1000" + } + }, + "FirewallEnableDcItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_EnableFirewallDc_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "proxmox_api_host": { + "type": "string", + "title": "Proxmox Api Host" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "proxmox_api_host" + ], + "title": "FirewallEnableDcItemReply" + }, + "FirewallEnableDcReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallEnableDcItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallEnableDcReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_disable", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_firewall": "disable", + "vm_id": "100", + "vm_name": "test" + } + ] + } + }, + "FirewallEnableDcRequest": { + "properties": { + "proxmox_api_host": { + "type": "string", + "pattern": "^[A-Za-z0-9\\.:-]*$", + "title": "Proxmox Api Host", + "description": "Proxmox api - ip:port" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_api_host" + ], + "title": "FirewallEnableDcRequest", + "example": { + "as_json": true, + "proxmox_api_host": "127.0.0.1:18007", + "proxmox_node": "px-testing" + } + }, + "FirewallEnableNodeItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_EnableFirewallNode_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "node_firewall": { + "type": "string", + "title": "Node Firewall" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "node_firewall" + ], + "title": "FirewallEnableNodeItemReply" + }, + "FirewallEnableNodeReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallEnableNodeItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallEnableNodeReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_node_enable", + "node_firewall": "enabled", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "FirewallEnableNodeRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "FirewallEnableNodeRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "FirewallEnableVmItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_EnableFirewallVm_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_firewall": { + "type": "string", + "title": "Vm Firewall" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "vm_firewall" + ], + "title": "FirewallEnableVmItemReply" + }, + "FirewallEnableVmReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallEnableVmItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallEnableVmReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_enable", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_firewall": "enabled", + "vm_id": "100", + "vm_name": "test" + } + ] + } + }, + "FirewallEnableVmRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "FirewallEnableVmRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1000", + "vm_name": "test" + } + }, + "FirewallRuleApplyItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_ApplyIptablesRules_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_fw_action": { + "type": "string", + "title": "Vm Fw Action" + }, + "vm_fw_comment": { + "type": "string", + "title": "Vm Fw Comment" + }, + "vm_fw_dest": { + "type": "string", + "title": "Vm Fw Dest" + }, + "vm_fw_dport": { + "type": "string", + "title": "Vm Fw Dport" + }, + "vm_fw_enable": { + "type": "integer", + "title": "Vm Fw Enable" + }, + "vm_fw_iface": { + "type": "string", + "title": "Vm Fw Iface" + }, + "vm_fw_log": { + "type": "string", + "title": "Vm Fw Log" + }, + "vm_fw_pos": { + "type": "integer", + "title": "Vm Fw Pos" + }, + "vm_fw_proto": { + "type": "string", + "title": "Vm Fw Proto" + }, + "vm_fw_source": { + "type": "string", + "title": "Vm Fw Source" + }, + "vm_fw_sport": { + "type": "string", + "title": "Vm Fw Sport" + }, + "vm_fw_type": { + "type": "string", + "title": "Vm Fw Type" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_fw_action", + "vm_fw_comment", + "vm_fw_dest", + "vm_fw_dport", + "vm_fw_enable", + "vm_fw_iface", + "vm_fw_log", + "vm_fw_pos", + "vm_fw_proto", + "vm_fw_source", + "vm_fw_sport", + "vm_fw_type", + "vm_id" + ], + "title": "FirewallRuleApplyItemReply" + }, + "FirewallRuleApplyReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallRuleApplyItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallRuleApplyReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_apply_iptables_rule", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_fw_action": "ACCEPT", + "vm_fw_dport": "80", + "vm_fw_enable": "1", + "vm_fw_proto": "tcp", + "vm_fw_type": "out", + "vm_id": "100" + } + ] + } + }, + "FirewallRuleApplyRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "title": "Proxmox Node", + "description": "Target Proxmox node name." + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true: return JSON output, otherwise raw output.", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_fw_action": { + "type": "string", + "pattern": "^(ACCEPT|DROP|REJECT)$", + "title": "Vm Fw Action", + "description": "Firewall action - ACCEPT, DROP, REJECT" + }, + "vm_fw_dport": { + "type": "string", + "pattern": "^[0-9:-]+$", + "title": "Vm Fw Dport", + "description": "Destination port or port range" + }, + "vm_fw_enable": { + "type": "integer", + "title": "Vm Fw Enable", + "description": "Enable flag - 1 = enabled, 0 = disabled" + }, + "vm_fw_proto": { + "type": "string", + "pattern": "^[a-zA-Z0-9]+$", + "title": "Vm Fw Proto", + "description": "Protocol - tcp, udp, icmp" + }, + "vm_fw_type": { + "type": "string", + "pattern": "^(in|out)$", + "title": "Vm Fw Type", + "description": "Rule type - in or out" + }, + "vm_fw_log": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Log", + "description": "Optional logging level - info, debug,..." + }, + "vm_fw_iface": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Iface", + "description": "Optional network interface name" + }, + "vm_fw_source": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9./]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Source", + "description": "Optional source address or CIDR" + }, + "vm_fw_dest": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9./]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Dest", + "description": "Optional destination address or CIDR" + }, + "vm_fw_sport": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9:-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Sport", + "description": "Optional source port or port range" + }, + "vm_fw_comment": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9 _-]*$" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Comment", + "description": "Optional comment for the rule" + }, + "vm_fw_pos": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Pos", + "description": "Optional position index rule in the chain." + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_fw_action", + "vm_fw_dport", + "vm_fw_enable", + "vm_fw_proto", + "vm_fw_type" + ], + "title": "FirewallRuleApplyRequest", + "example": [ + { + "as_json": true, + "proxmox_node": "px-node-01", + "vm_fw_action": "ACCEPT", + "vm_fw_comment": "Test comment", + "vm_fw_dest": "0.0.0.0/0", + "vm_fw_dport": "22", + "vm_fw_enable": 1, + "vm_fw_iface": "net0", + "vm_fw_log": "debug", + "vm_fw_pos": 5, + "vm_fw_proto": "tcp", + "vm_fw_source": "192.168.1.0/24", + "vm_fw_sport": "1024", + "vm_fw_type": "in", + "vm_id": "1000" + } + ] + }, + "FirewallRuleDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_fw_pos": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Vm Fw Pos", + "description": "Optional position index rule in the chain." + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_fw_pos" + ], + "title": "FirewallRuleDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_fw_pos": 1, + "vm_id": "1000" + } + }, + "FirewallRuleListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_ListIptablesRules_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_fw_action": { + "type": "string", + "title": "Vm Fw Action" + }, + "vm_fw_comment": { + "type": "string", + "title": "Vm Fw Comment" + }, + "vm_fw_dest": { + "type": "string", + "title": "Vm Fw Dest" + }, + "vm_fw_dport": { + "type": "string", + "title": "Vm Fw Dport" + }, + "vm_fw_enable": { + "type": "integer", + "title": "Vm Fw Enable" + }, + "vm_fw_iface": { + "type": "string", + "title": "Vm Fw Iface" + }, + "vm_fw_log": { + "type": "string", + "title": "Vm Fw Log" + }, + "vm_fw_pos": { + "type": "integer", + "title": "Vm Fw Pos" + }, + "vm_fw_proto": { + "type": "string", + "title": "Vm Fw Proto" + }, + "vm_fw_source": { + "type": "string", + "title": "Vm Fw Source" + }, + "vm_fw_sport": { + "type": "string", + "title": "Vm Fw Sport" + }, + "vm_fw_type": { + "type": "string", + "title": "Vm Fw Type" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_fw_action", + "vm_fw_comment", + "vm_fw_dest", + "vm_fw_dport", + "vm_fw_enable", + "vm_fw_iface", + "vm_fw_log", + "vm_fw_pos", + "vm_fw_proto", + "vm_fw_source", + "vm_fw_sport", + "vm_fw_type", + "vm_id" + ], + "title": "FirewallRuleListItemReply" + }, + "FirewallRuleListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/FirewallRuleListItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "FirewallRuleListReply", + "example": { + "rc": 0, + "result": [ + { + "action": "firewall_vm_list_iptables_rule", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_fw_action": "ACCEPT", + "vm_fw_enable": 0, + "vm_fw_log": "nolog", + "vm_fw_pos": 0, + "vm_fw_type": "in", + "vm_id": "100" + } + ] + } + }, + "FirewallRuleListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "FirewallRuleListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1000" + } + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "MassActionRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_ids": { + "items": { + "type": "string" + }, + "type": "array", + "minItems": 1, + "title": "Vm Ids", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_ids" + ], + "title": "MassActionRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_ids": [ + "4000", + "4001" + ] + } + }, + "MassDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "enum": [ + "vm_start", + "vm_stop", + "vm_resume", + "vm_pause", + "vm_stop_force" + ], + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_status": { + "type": "string", + "enum": [ + "running", + "stopped", + "paused" + ], + "title": "Vm Status" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "vm_status" + ], + "title": "MassDeleteItemReply" + }, + "MassDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/MassDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "MassDeleteReply" + }, + "MassDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vms": { + "items": { + "$ref": "#/components/schemas/MassDeleteVmItem" + }, + "type": "array", + "minItems": 1, + "title": "Vms", + "description": "List of virtual machine (vm_id + vm_name)" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vms" + ], + "title": "MassDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vms": [ + { + "id": "4000", + "name": "vuln-box-00" + }, + { + "id": "4001", + "name": "vuln-box-01" + }, + { + "id": "4002", + "name": "vuln-box-02" + } + ] + } + }, + "MassDeleteVmItem": { + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Id", + "description": "Virtual machine id" + }, + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "title": "Name", + "description": "Virtual machine meta name" + } + }, + "type": "object", + "required": [ + "id", + "name" + ], + "title": "MassDeleteVmItem" + }, + "NodeNetworkAddItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "as_json": { + "type": "boolean", + "title": "As Json" + }, + "bridge_ports": { + "type": "string", + "title": "Bridge Ports" + }, + "iface_name": { + "type": "string", + "title": "Iface Name" + }, + "iface_type": { + "type": "string", + "title": "Iface Type" + }, + "iface_autostart": { + "type": "integer", + "title": "Iface Autostart" + }, + "ip_address": { + "type": "string", + "title": "Ip Address" + }, + "ip_netmask": { + "type": "string", + "title": "Ip Netmask" + }, + "ip_gateway": { + "type": "string", + "title": "Ip Gateway" + }, + "ovs_bridge": { + "type": "string", + "title": "Ovs Bridge" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "as_json", + "bridge_ports", + "iface_name", + "iface_type", + "iface_autostart", + "ip_address", + "ip_netmask", + "ip_gateway", + "ovs_bridge" + ], + "title": "NodeNetworkAddItemReply" + }, + "NodeNetworkAddReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/NodeNetworkAddItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "NodeNetworkAddReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_add_interfaces_node", + "bridge_ports": "enp87s0", + "iface_autostart": "1", + "iface_name": "vmbr142", + "ip_address": "192.168.99.2", + "ip_netmask": "255.255.255.0", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "NodeNetworkAddRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "bridge_ports": { + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Bridge Ports", + "description": "Bridge ports" + }, + "iface_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Iface Name", + "description": "Interface name" + }, + "iface_type": { + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+$" + }, + { + "type": "null" + } + ], + "title": "Iface Type", + "description": "Interface type - ethernet, ovs, bridge" + }, + "iface_autostart": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Iface Autostart", + "description": "Autostart flag - 0 = no, 1 = yes" + }, + "ip_address": { + "anyOf": [ + { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$" + }, + { + "type": "null" + } + ], + "title": "Ip Address", + "description": "ipv4 address" + }, + "ip_netmask": { + "anyOf": [ + { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$|^\\/[0-9]{1,2}$" + }, + { + "type": "null" + } + ], + "title": "Ip Netmask", + "description": "ipv4 netmask" + }, + "ip_gateway": { + "anyOf": [ + { + "type": "string", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$" + }, + { + "type": "null" + } + ], + "title": "Ip Gateway", + "description": "ipv4 gateway" + }, + "ovs_bridge": { + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Ovs Bridge", + "description": "OVS bridge name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "iface_name", + "iface_type", + "iface_autostart" + ], + "title": "NodeNetworkAddRequest", + "example": [ + { + "as_json": "true", + "bridge_ports": "enp87s0", + "iface_autostart": 1, + "iface_name": "vmbr142", + "iface_type": "bridge", + "ip_address": "192.168.99.2", + "ip_netmask": "255.255.255.0", + "proxmox_node": "px-testing" + } + ] + }, + "NodeNetworkDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "iface_name": { + "type": "string", + "title": "Iface Name" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "iface_name" + ], + "title": "NodeNetworkDeleteItemReply" + }, + "NodeNetworkDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/NodeNetworkDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "NodeNetworkDeleteReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_delete_interfaces_node", + "iface_name": "vmbr42", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "NodeNetworkDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "iface_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Iface Name", + "description": "Interface name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node", + "iface_name" + ], + "title": "NodeNetworkDeleteRequest", + "example": { + "as_json": true, + "iface_name": "vmbr42", + "proxmox_node": "px-testing", + "storage_name": "local" + } + }, + "NodeNetworkListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_fw_pos": { + "type": "integer", + "title": "Vm Fw Pos" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_fw_pos" + ], + "title": "NodeNetworkListItemReply" + }, + "NodeNetworkListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/NodeNetworkListItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "NodeNetworkListReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_list_interfaces_node", + "iface": "wlp89s0", + "iface_priority": 8, + "ip_settings_method": "manual", + "ip_settings_method6": "manual", + "proxmox_node": "px-testing", + "source": "proxmox" + } + ] + } + }, + "NodeNetworkListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "NodeNetworkListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "Reply_ProxmoxVmsVMID_VmSetCpu": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result" + }, + "log_multiline": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Log Multiline" + } + }, + "type": "object", + "title": "Reply_ProxmoxVmsVMID_VmSetCpu", + "example": { + "rc": 0 + } + }, + "Reply_ProxmoxVmsVMID_VmSetDescription": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result" + }, + "log_multiline": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Log Multiline" + } + }, + "type": "object", + "title": "Reply_ProxmoxVmsVMID_VmSetDescription", + "example": { + "rc": 0 + } + }, + "Reply_ProxmoxVmsVMID_VmSetMemory": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result" + }, + "log_multiline": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Log Multiline" + } + }, + "type": "object", + "title": "Reply_ProxmoxVmsVMID_VmSetMemory", + "example": { + "rc": 0 + } + }, + "Reply_ProxmoxVmsVMID_VmSetName": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result" + }, + "log_multiline": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Log Multiline" + } + }, + "type": "object", + "title": "Reply_ProxmoxVmsVMID_VmSetName", + "example": { + "rc": 0 + } + }, + "Request_ProxmoxVmsVMID_VmSetCpu": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_cores": { + "type": "integer", + "maximum": 128.0, + "minimum": 1.0, + "title": "Vm Cores", + "description": "Number of CPU cores" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_cores" + ], + "title": "Request_ProxmoxVmsVMID_VmSetCpu", + "example": { + "as_json": true, + "proxmox_node": "pve01", + "vm_cores": 4, + "vm_id": "1023" + } + }, + "Request_ProxmoxVmsVMID_VmSetDescription": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_description": { + "type": "string", + "maxLength": 4096, + "title": "Vm Description", + "description": "New description for the virtual machine" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_description" + ], + "title": "Request_ProxmoxVmsVMID_VmSetDescription", + "example": { + "as_json": true, + "proxmox_node": "pve01", + "vm_description": "Production web server", + "vm_id": "1023" + } + }, + "Request_ProxmoxVmsVMID_VmSetMemory": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_memory": { + "type": "integer", + "maximum": 1048576.0, + "minimum": 128.0, + "title": "Vm Memory", + "description": "Memory in megabytes" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_memory" + ], + "title": "Request_ProxmoxVmsVMID_VmSetMemory", + "example": { + "as_json": true, + "proxmox_node": "pve01", + "vm_id": "1023", + "vm_memory": 4096 + } + }, + "Request_ProxmoxVmsVMID_VmSetName": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_name": { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+$", + "title": "Vm Name", + "description": "New name for the virtual machine" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_name" + ], + "title": "Request_ProxmoxVmsVMID_VmSetName", + "example": { + "as_json": true, + "proxmox_node": "pve01", + "vm_id": "1023", + "vm_name": "web-server-01" + } + }, + "SnapshotCreateItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_snapshot_description": { + "type": "string", + "title": "Vm Snapshot Description" + }, + "vm_snapshot_name": { + "type": "string", + "title": "Vm Snapshot Name" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "action", + "proxmox_node", + "source", + "vm_id", + "vm_name", + "vm_snapshot_description", + "vm_snapshot_name", + "raw_data" + ], + "title": "SnapshotCreateItemReply" + }, + "SnapshotCreateReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/SnapshotCreateItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "SnapshotCreateReply", + "example": { + "rc": 0, + "result": [ + { + "action": "snapshot_vm_create", + "proxmox_node": "px-testing", + "raw_data": { + "data": "UPID:px-testing:002D5E30:1706941B:68C196E9:qmsnapshot:1000:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_id": "1000", + "vm_name": "admin-wazuh", + "vm_snapshot_description": "MY_DESCRIPTION", + "vm_snapshot_name": "MY_VM_SNAPSHOT" + } + ] + } + }, + "SnapshotCreateRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_snapshot_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Snapshot Name", + "description": "Name of the snapshot to create" + }, + "vm_snapshot_description": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Snapshot Description", + "description": "Optional description for the snapshot" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "SnapshotCreateRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111", + "vm_snapshot_description": "MY_DESCRIPTION", + "vm_snapshot_name": "MY_VM_SNAPSHOT" + } + }, + "SnapshotDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + } + }, + "type": "object", + "required": [ + "action", + "source" + ], + "title": "SnapshotDeleteItemReply" + }, + "SnapshotDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/SnapshotDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "SnapshotDeleteReply", + "example": { + "rc": 0, + "result": [ + { + "action": "snapshot_vm_delete", + "proxmox_node": "px-testing", + "raw_data": { + "data": "UPID:px-testing:002D6878:17077370:68C19925:qmdelsnapshot:1000:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_id": "1000", + "vm_name": "admin-wazuh", + "vm_snapshot_name": "BBBB" + } + ] + } + }, + "SnapshotDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_snapshot_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Snapshot Name", + "description": "Name of the snapshot to delete" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "SnapshotDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111", + "vm_snapshot_name": "MY_VM_SNAPSHOT" + } + }, + "SnapshotListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + } + }, + "type": "object", + "required": [ + "action", + "source" + ], + "title": "SnapshotListItemReply" + }, + "SnapshotListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/SnapshotListItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "SnapshotListReply", + "example": { + "rc": 0, + "result": [ + { + "action": "snapshot_vm_list", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000", + "vm_snapshot_description": "MY_DESCRIPTION", + "vm_snapshot_name": "MY_VM_SNAPSHOT", + "vm_snapshot_parent": "", + "vm_snapshot_time": 1757517545 + }, + { + "action": "snapshot_vm_list", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000", + "vm_snapshot_description": "You are here!", + "vm_snapshot_name": "current", + "vm_snapshot_parent": "MY_VM_SNAPSHOT", + "vm_snapshot_sha1": "7cc59c988bb8f18601fe076ad239f8b760667270" + } + ] + } + }, + "SnapshotListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "SnapshotListRequest", + "example": { + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "SnapshotRevertItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + } + }, + "type": "object", + "required": [ + "action", + "source" + ], + "title": "SnapshotRevertItemReply" + }, + "SnapshotRevertReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/SnapshotRevertItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "SnapshotRevertReply", + "example": { + "rc": 0, + "result": [ + { + "action": "snapshot_vm_revert", + "proxmox_node": "px-testing", + "raw_data": { + "data": "UPID:px-testing:002D7C57:17096777:68C19E25:qmrollback:1000:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_id": "1000", + "vm_name": "admin-wazuh", + "vm_snapshot_name": "CCCC" + } + ] + } + }, + "SnapshotRevertRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_snapshot_name": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9_-]+$" + }, + { + "type": "null" + } + ], + "title": "Vm Snapshot Name", + "description": "Name of the snapshot to create" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "SnapshotRevertRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111", + "vm_snapshot_name": "CCCC" + } + }, + "StorageDownloadIsoItemReply": { + "properties": { + "action": { + "type": "string", + "const": "storage_download_iso", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "cpu_allocated": { + "type": "integer", + "title": "Cpu Allocated" + }, + "cpu_current_usage": { + "type": "integer", + "title": "Cpu Current Usage" + }, + "disk_current_usage": { + "type": "integer", + "title": "Disk Current Usage" + }, + "disk_max": { + "type": "integer", + "title": "Disk Max" + }, + "disk_read": { + "type": "integer", + "title": "Disk Read" + }, + "disk_write": { + "type": "integer", + "title": "Disk Write" + }, + "net_in": { + "type": "integer", + "title": "Net In" + }, + "net_out": { + "type": "integer", + "title": "Net Out" + }, + "ram_current_usage": { + "type": "integer", + "title": "Ram Current Usage" + }, + "ram_max": { + "type": "integer", + "title": "Ram Max" + }, + "vm_status": { + "type": "string", + "title": "Vm Status" + }, + "vm_uptime": { + "type": "integer", + "title": "Vm Uptime" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "cpu_allocated", + "cpu_current_usage", + "disk_current_usage", + "disk_max", + "disk_read", + "disk_write", + "net_in", + "net_out", + "ram_current_usage", + "ram_max", + "vm_status", + "vm_uptime" + ], + "title": "StorageDownloadIsoItemReply" + }, + "StorageDownloadIsoRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "proxmox_storage": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "title": "Proxmox Storage", + "description": "Target Proxmox storage name" + }, + "iso_file_content_type": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Iso File Content Type", + "description": "MIME type of the ISO file" + }, + "iso_file_name": { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+\\.iso$", + "title": "Iso File Name", + "description": "ISO file name - must end with .iso" + }, + "iso_url": { + "type": "string", + "pattern": "^https?://[^\\s]+$", + "title": "Iso Url", + "description": "http|https URL where the ISO will be downloaded from." + } + }, + "type": "object", + "required": [ + "proxmox_node", + "proxmox_storage", + "iso_file_content_type", + "iso_file_name", + "iso_url" + ], + "title": "StorageDownloadIsoRequest", + "example": { + "as_json": true, + "iso_file_content_type": "iso", + "iso_file_name": "ubuntu-24.04-live-server-amd64.iso", + "iso_url": "https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso", + "proxmox_node": "px-testing", + "storage_name": "local" + } + }, + "StorageListIsoItemReply": { + "properties": { + "action": { + "type": "string", + "const": "storage_list_iso", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "iso_content": { + "type": "string", + "title": "Iso Content" + }, + "iso_ctime": { + "type": "integer", + "title": "Iso Ctime" + }, + "iso_format": { + "type": "string", + "title": "Iso Format" + }, + "iso_size": { + "type": "integer", + "title": "Iso Size" + }, + "iso_vol_id": { + "type": "string", + "title": "Iso Vol Id" + }, + "local": { + "type": "string", + "title": "Local" + }, + "storage_name": { + "type": "string", + "title": "Storage Name" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "iso_content", + "iso_ctime", + "iso_format", + "iso_size", + "iso_vol_id", + "local", + "storage_name" + ], + "title": "StorageListIsoItemReply" + }, + "StorageListIsoRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "storage_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Storage Name", + "description": "Proxmox storage name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "storage_name" + ], + "title": "StorageListIsoRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "storage_name": "local" + } + }, + "StorageListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "storage_list", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "storage_active": { + "type": "integer", + "title": "Storage Active" + }, + "storage_content_types": { + "type": "string", + "title": "Storage Content Types" + }, + "storage_is_enable": { + "type": "integer", + "title": "Storage Is Enable" + }, + "storage_is_share": { + "type": "integer", + "title": "Storage Is Share" + }, + "storage_name": { + "type": "string", + "title": "Storage Name" + }, + "storage_space_available": { + "type": "integer", + "title": "Storage Space Available" + }, + "storage_space_total": { + "type": "integer", + "title": "Storage Space Total" + }, + "storage_space_used": { + "type": "integer", + "title": "Storage Space Used" + }, + "storage_space_used_fraction": { + "type": "number", + "title": "Storage Space Used Fraction" + }, + "storage_type": { + "type": "string", + "title": "Storage Type" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "storage_active", + "storage_content_types", + "storage_is_enable", + "storage_is_share", + "storage_name", + "storage_space_available", + "storage_space_total", + "storage_space_used", + "storage_space_used_fraction", + "storage_type" + ], + "title": "StorageListItemReply" + }, + "StorageListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "storage_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Storage Name", + "description": "Proxmox storage name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "storage_name" + ], + "title": "StorageListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "storage_name": "local" + } + }, + "StorageListTemplateItemReply": { + "properties": { + "action": { + "type": "string", + "const": "storage_list_template", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "storage_name": { + "type": "string", + "title": "Storage Name" + }, + "template_content": { + "type": "string", + "title": "Template Content" + }, + "template_ctime": { + "type": "integer", + "title": "Template Ctime" + }, + "template_format": { + "type": "string", + "title": "Template Format" + }, + "template_size": { + "type": "integer", + "title": "Template Size" + }, + "template_vol_id": { + "type": "string", + "title": "Template Vol Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "storage_name", + "template_content", + "template_ctime", + "template_format", + "template_size", + "template_vol_id" + ], + "title": "StorageListTemplateItemReply" + }, + "StorageListTemplateReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/StorageListTemplateItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "StorageListTemplateReply", + "example": { + "rc": 0, + "result": [ + { + "action": "storage_list_template", + "proxmox_node": "px-testing", + "source": "proxmox", + "storage_name": "local", + "template_content": "vztmpl", + "template_ctime": 1749734175, + "template_format": "tzst", + "template_size": 126515062, + "template_vol_id": "local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst" + } + ] + } + }, + "StorageListTemplateRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "storage_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Storage Name", + "description": "Proxmox storage name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "storage_name" + ], + "title": "StorageListTemplateRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "storage_name": "local" + } + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + }, + "VmActionItemReply": { + "properties": { + "action": { + "type": "string", + "enum": [ + "vm_start", + "vm_stop", + "vm_resume", + "vm_pause", + "vm_stop_force" + ], + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name" + ], + "title": "VmActionItemReply" + }, + "VmActionReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmActionItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmActionReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_delete", + "proxmox_node": "px-testing", + "raw_data": { + "data": "UPID:px-testing:0033649C:1D2619CC:68D143C5:qmdestroy:4001:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_id": 4001, + "vm_name": "vuln-box-01" + }, + { + "action": "vm_delete", + "proxmox_node": "px-testing", + "raw_data": { + "data": "UPID:px-testing:003364A6:1D261A84:68D143C6:qmdestroy:4002:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_id": 4002, + "vm_name": "vuln-box-02" + } + ] + } + }, + "VmActionRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmActionRequest", + "example": { + "proxmox_node": "px-testing", + "vm_id": "2000" + } + }, + "VmCloneItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_clone", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_id_clone_from": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id Clone From" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_description": { + "type": "string", + "title": "Vm Description" + }, + "raw_info": { + "type": "string", + "title": "Raw Info", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_id_clone_from", + "vm_name", + "vm_description", + "raw_info" + ], + "title": "VmCloneItemReply" + }, + "VmCloneReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmCloneItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmCloneReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_clone", + "proxmox_node": "px-testing", + "raw_info": { + "data": "UPID:px-testing:0027CE9B:167F1A2C:68C03C17:qmclone:4004:API_master@pam!API_master:" + }, + "source": "proxmox", + "vm_description": "my description", + "vm_id": "5004", + "vm_id_clone_from": "4004", + "vm_name": "test-cloned" + } + ] + } + }, + "VmCloneRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_new_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm New Id", + "description": "New virtual machine id" + }, + "vm_description": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9\\s.,_\\-]*$" + }, + { + "type": "null" + } + ], + "title": "Vm Description", + "description": "Virtual machine meta description field", + "default": "cloned-vm" + }, + "vm_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Vm Name", + "description": "Virtual machine meta name" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_new_id", + "vm_name" + ], + "title": "VmCloneRequest", + "example": { + "proxmox_node": "px-testing", + "vm_description": "my description", + "vm_id": "2000", + "vm_name": "test-cloned", + "vm_new_id": "3000" + } + }, + "VmCreateItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_create", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_cpu": { + "type": "string", + "title": "Vm Cpu" + }, + "vm_cores": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Cores" + }, + "vm_sockets": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Sockets" + }, + "vm_memory": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Memory" + }, + "vm_net0": { + "type": "string", + "title": "Vm Net0" + }, + "vm_scsi0": { + "type": "string", + "title": "Vm Scsi0" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by Proxmox" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "vm_cpu", + "vm_cores", + "vm_sockets", + "vm_memory", + "vm_net0", + "vm_scsi0", + "raw_data" + ], + "title": "VmCreateItemReply" + }, + "VmCreateReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmCreateItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmCreateReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_create", + "proxmox_node": "px-testing", + "raw_data": "UPID:px-testing:00281144:16855865:68C04C13:qmcreate:9998:API_master@pam!API_master:", + "source": "proxmox", + "vm_cores": 2, + "vm_cpu": "host", + "vm_id": 9998, + "vm_memory": 2042, + "vm_name": "vm-with-local-iso-2", + "vm_net0": "virtio,bridge=vmbr0", + "vm_scsi0": "local-lvm:42,format=raw", + "vm_sockets": 1 + } + ] + } + }, + "VmCreateRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_name": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Vm Name", + "description": "Virtual machine meta name" + }, + "vm_cpu": { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+$", + "title": "Vm Cpu", + "description": "CPU type/model - host)" + }, + "vm_cores": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Cores", + "description": "Number of cores per socket" + }, + "vm_sockets": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Sockets", + "description": "Number of CPU sockets" + }, + "vm_memory": { + "type": "integer", + "minimum": 128.0, + "title": "Vm Memory", + "description": "Memory in MiB" + }, + "vm_disk_size": { + "anyOf": [ + { + "type": "integer", + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Vm Disk Size", + "description": "Disk size in GiB - optional" + }, + "vm_iso": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+:iso/.+\\.iso$" + }, + { + "type": "null" + } + ], + "title": "Vm Iso", + "description": "ISO volume path like 'local:iso/xxx.iso' - optional" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_name", + "vm_cpu", + "vm_cores", + "vm_sockets", + "vm_memory" + ], + "title": "VmCreateRequest", + "example": { + "proxmox_node": "px-testing", + "vm_cores": 2, + "vm_cpu": "host", + "vm_disk_size": 42, + "vm_id": "1111", + "vm_iso": "local:iso/ubuntu-24.04.2-live-server-amd64.iso", + "vm_memory": 2042, + "vm_name": "new-vm", + "vm_sockets": 1 + } + }, + "VmDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_delete", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "raw_data" + ], + "title": "VmDeleteItemReply" + }, + "VmDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmDeleteReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_delete", + "proxmox_node": "px-testing", + "raw_data": "UPID:px-testing:123123:1123D4:68BFF2C7:qmdestroy:1023:API_master@pam!API_master:", + "source": "proxmox", + "vm_id": 1023, + "vm_name": "admin-web-deployer-ui" + } + ] + } + }, + "VmDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "VmGetConfigCdromItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config_cdrom", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_cdrom_device": { + "type": "string", + "title": "Vm Cdrom Device" + }, + "vm_cdrom_iso": { + "type": "string", + "title": "Vm Cdrom Iso" + }, + "vm_cdrom_media": { + "type": "string", + "title": "Vm Cdrom Media" + }, + "vm_cdrom_size": { + "type": "string", + "title": "Vm Cdrom Size" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_cdrom_device", + "vm_cdrom_iso", + "vm_cdrom_media", + "vm_cdrom_size" + ], + "title": "VmGetConfigCdromItemReply" + }, + "VmGetConfigCdromReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmGetConfigCdromItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmGetConfigCdromReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_get_config_cdrom", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_cdrom_device": "ide2", + "vm_cdrom_iso": "local:1000/vm-1000-cloudinit.qcow2", + "vm_cdrom_media": "cdrom", + "vm_cdrom_size": "4M", + "vm_id": "1000" + } + ] + } + }, + "VmGetConfigCdromRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmGetConfigCdromRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "VmGetConfigCpuItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config_cpu", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_arch": { + "type": "string", + "title": "Vm Arch" + }, + "vm_cores": { + "type": "string", + "title": "Vm Cores" + }, + "vm_sockets": { + "type": "string", + "title": "Vm Sockets" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_arch", + "vm_cores", + "vm_sockets" + ], + "title": "VmGetConfigCpuItemReply" + }, + "VmGetConfigCpuReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmGetConfigCpuItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmGetConfigCpuReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_get_config_cpu", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_arch": "host", + "vm_cores": "2", + "vm_id": "1000", + "vm_sockets": "1" + } + ] + } + }, + "VmGetConfigCpuRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmGetConfigCpuRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "VmGetConfigItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "raw_data": { + "type": "string", + "title": "Raw Data", + "description": "Raw string returned by proxmox" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "raw_data" + ], + "title": "VmGetConfigItemReply" + }, + "VmGetConfigRamItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config_ram", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_ram_allocated": { + "type": "string", + "title": "Vm Ram Allocated" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_ram_allocated" + ], + "title": "VmGetConfigRamItemReply" + }, + "VmGetConfigRamReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmGetConfigRamItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmGetConfigRamReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_get_config_ram", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000", + "vm_ram_allocated": "8192" + } + ] + } + }, + "VmGetConfigRamRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmGetConfigRamRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "VmGetConfigReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmGetConfigItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmGetConfigReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_get_config", + "proxmox_node": "px-testing", + "raw_data": { + "data": { + "balloon": 0, + "boot": "c", + "bootdisk": "scsi0", + "cipassword": "**********", + "ciuser": "alice", + "cores": 2, + "cpu": "host", + "digest": "29bec92_redacted", + "ide2": "local:1000/vm-1000-cloudinit.qcow2,media=cdrom,size=4M", + "ipconfig0": "ip=192.168.42.100/24,gw=192.168.42.1", + "memory": "8192", + "meta": "creation-qemu=9.0.2,ctime=1757418890", + "name": "admin-wazuh", + "net0": "virtio=BC:24:11:CB:B3:C7,bridge=vmbr0", + "scsi0": "local-lvm:vm-1000-disk-0,size=64G", + "scsihw": "virtio-scsi-pci", + "serial0": "socket", + "smbios1": "uuid=82c50ddc-a24f-4cbc-a013-c0e846f230fc", + "sockets": 1, + "sshkeys": "ssh-ed25519%20AAAAC....redacted", + "tags": "admin", + "vga": "serial0", + "vmgenid": "c7426562-ad4b-4719-81a1-72328f7ec018" + } + }, + "source": "proxmox", + "vm_id": "1000" + } + ] + } + }, + "VmGetConfigRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmGetConfigRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111" + } + }, + "VmListActionEnum": { + "type": "string", + "enum": [ + "vm_list", + "vm_start", + "vm_stop", + "vm_resume", + "vm_pause", + "vm_stop_force" + ], + "title": "VmListActionEnum" + }, + "VmListInfoReply": { + "properties": { + "action": { + "$ref": "#/components/schemas/VmListActionEnum" + }, + "source": { + "type": "string", + "title": "Source", + "description": "data source provider", + "default": "proxmox" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "vm_status": { + "$ref": "#/components/schemas/VmListStatusEnum" + }, + "vm_id": { + "type": "integer", + "title": "Vm Id" + }, + "vm_uptime": { + "type": "integer", + "title": "Vm Uptime" + }, + "vm_meta": { + "$ref": "#/components/schemas/VmListMetaReply" + } + }, + "type": "object", + "required": [ + "action", + "proxmox_node", + "vm_name", + "vm_status", + "vm_id", + "vm_uptime", + "vm_meta" + ], + "title": "VmListInfoReply" + }, + "VmListMetaReply": { + "properties": { + "cpu_current_usage": { + "type": "integer", + "title": "Cpu Current Usage" + }, + "cpu_allocated": { + "type": "integer", + "title": "Cpu Allocated" + }, + "disk_current_usage": { + "type": "integer", + "title": "Disk Current Usage" + }, + "disk_read": { + "type": "integer", + "title": "Disk Read" + }, + "disk_write": { + "type": "integer", + "title": "Disk Write" + }, + "disk_max": { + "type": "integer", + "title": "Disk Max" + }, + "ram_current_usage": { + "type": "integer", + "title": "Ram Current Usage" + }, + "ram_max": { + "type": "integer", + "title": "Ram Max" + }, + "net_in": { + "type": "integer", + "title": "Net In" + }, + "net_out": { + "type": "integer", + "title": "Net Out" + } + }, + "type": "object", + "required": [ + "cpu_current_usage", + "cpu_allocated", + "disk_current_usage", + "disk_read", + "disk_write", + "disk_max", + "ram_current_usage", + "ram_max", + "net_in", + "net_out" + ], + "title": "VmListMetaReply" + }, + "VmListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN CODE (0 = OK) " + }, + "result": { + "items": { + "items": { + "$ref": "#/components/schemas/VmListInfoReply" + }, + "type": "array" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "rc", + "result" + ], + "title": "VmListReply" + }, + "VmListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "VmListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "VmListStatusEnum": { + "type": "string", + "enum": [ + "running", + "stopped", + "paused" + ], + "title": "VmListStatusEnum" + }, + "VmListUsageItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_list_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "integer", + "minimum": 1.0, + "title": "Vm Id" + }, + "vm_name": { + "type": "string", + "title": "Vm Name" + }, + "cpu_allocated": { + "type": "integer", + "title": "Cpu Allocated" + }, + "cpu_current_usage": { + "type": "integer", + "title": "Cpu Current Usage" + }, + "disk_current_usage": { + "type": "integer", + "title": "Disk Current Usage" + }, + "disk_max": { + "type": "integer", + "title": "Disk Max" + }, + "disk_read": { + "type": "integer", + "title": "Disk Read" + }, + "disk_write": { + "type": "integer", + "title": "Disk Write" + }, + "net_in": { + "type": "integer", + "title": "Net In" + }, + "net_out": { + "type": "integer", + "title": "Net Out" + }, + "ram_current_usage": { + "type": "integer", + "title": "Ram Current Usage" + }, + "ram_max": { + "type": "integer", + "title": "Ram Max" + }, + "vm_status": { + "type": "string", + "title": "Vm Status" + }, + "vm_uptime": { + "type": "integer", + "title": "Vm Uptime" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_name", + "cpu_allocated", + "cpu_current_usage", + "disk_current_usage", + "disk_max", + "disk_read", + "disk_write", + "net_in", + "net_out", + "ram_current_usage", + "ram_max", + "vm_status", + "vm_uptime" + ], + "title": "VmListUsageItemReply" + }, + "VmListUsageReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmListUsageItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmListUsageReply", + "example": { + "rc": 0, + "result": [ + { + "cpu_allocated": 1, + "cpu_current_usage": 0, + "disk_current_usage": 0, + "disk_max": 34359738368, + "disk_read": 0, + "disk_write": 0, + "net_in": 280531583, + "net_out": 6330590, + "ram_current_usage": 1910544625, + "ram_max": 4294967296, + "vm_id": 1020, + "vm_name": "admin-web-api-kong", + "vm_status": "running", + "vm_uptime": 79940 + } + ] + } + }, + "VmListUsageRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + } + }, + "type": "object", + "required": [ + "proxmox_node" + ], + "title": "VmListUsageRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing" + } + }, + "VmNetworkAddItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_fw_pos": { + "type": "integer", + "title": "Vm Fw Pos" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_fw_pos" + ], + "title": "VmNetworkAddItemReply" + }, + "VmNetworkAddReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmNetworkAddItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmNetworkAddReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_add_interfaces_vm", + "iface_model": "virtio", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000" + } + ] + } + }, + "VmNetworkAddRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "iface_model": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Iface Model", + "description": "Interface model- virtio, e1000, rtl8139" + }, + "iface_bridge": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-Za-z0-9._-]+$" + }, + { + "type": "null" + } + ], + "title": "Iface Bridge", + "description": "Bridge name for interface - vmbr0, vmbr142" + }, + "vm_vmnet_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Vm Vmnet Id", + "description": "Network device index - 0, 1, 2, ..." + }, + "iface_trunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Iface Trunks", + "description": "Enable trunk - allow multiple vlan on interface" + }, + "iface_tag": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Iface Tag", + "description": "VLAN tag id" + }, + "iface_rate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Iface Rate", + "description": "Limit bandwith - Mbps - 0 to x" + }, + "iface_queues": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Iface Queues", + "description": "Allocated amount allocated tx/rx on interface" + }, + "iface_mtu": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Iface Mtu", + "description": "MTU" + }, + "iface_macaddr": { + "anyOf": [ + { + "type": "string", + "pattern": "^(?:[0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$" + }, + { + "type": "null" + } + ], + "title": "Iface Macaddr", + "description": "MAC address - hexa format" + }, + "iface_link_down": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Iface Link Down", + "description": "Force to set down the interface" + }, + "iface_firewall": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Iface Firewall", + "description": "Apply firewall rules on this interface" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "iface_model", + "iface_bridge", + "vm_vmnet_id", + "iface_trunks", + "iface_tag", + "iface_rate", + "iface_queues", + "iface_mtu", + "iface_macaddr", + "iface_link_down", + "iface_firewall" + ], + "title": "VmNetworkAddRequest", + "example": { + "as_json": true, + "iface_bridge": "vmbr142", + "iface_model": "virtio", + "proxmox_node": "px-testing", + "storage_name": "local", + "vm_id": "1000", + "vm_vmnet_id": "1" + } + }, + "VmNetworkDeleteItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + }, + "vm_fw_pos": { + "type": "integer", + "title": "Vm Fw Pos" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id", + "vm_fw_pos" + ], + "title": "VmNetworkDeleteItemReply" + }, + "VmNetworkDeleteReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmNetworkDeleteItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmNetworkDeleteReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_delete_interfaces_vm", + "iface_model": "virtio", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000" + } + ] + } + }, + "VmNetworkDeleteRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_vmnet_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Vm Vmnet Id", + "description": "Network device index - 0, 1, 2, ..." + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_vmnet_id" + ], + "title": "VmNetworkDeleteRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "storage_name": "local", + "vm_id": "1000", + "vm_vmnet_id": 1 + } + }, + "VmNetworkListItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_DeleteIptablesRule_usage", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + }, + "proxmox_node": { + "type": "string", + "title": "Proxmox Node" + }, + "vm_id": { + "type": "string", + "title": "Vm Id" + } + }, + "type": "object", + "required": [ + "action", + "source", + "proxmox_node", + "vm_id" + ], + "title": "VmNetworkListItemReply" + }, + "VmNetworkListReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmNetworkListItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmNetworkListReply", + "example": { + "rc": 0, + "result": [ + { + "action": "network_list_interfaces_vm", + "proxmox_node": "px-testing", + "source": "proxmox", + "vm_id": "1000", + "vm_network_bridge": "vmbr0", + "vm_network_device": "net0", + "vm_network_mac": "AA:BB:CC:DD:EE:FF", + "vm_network_type": "virtio" + } + ] + } + }, + "VmNetworkListRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id" + ], + "title": "VmNetworkListRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1001" + } + }, + "VmSetTagItemReply": { + "properties": { + "action": { + "type": "string", + "const": "vm_get_config", + "title": "Action" + }, + "source": { + "type": "string", + "const": "proxmox", + "title": "Source" + } + }, + "type": "object", + "required": [ + "action", + "source" + ], + "title": "VmSetTagItemReply" + }, + "VmSetTagReply": { + "properties": { + "rc": { + "type": "integer", + "title": "Rc", + "description": "RETURN code (0 = OK)", + "default": 0 + }, + "result": { + "items": { + "$ref": "#/components/schemas/VmSetTagItemReply" + }, + "type": "array", + "title": "Result" + } + }, + "type": "object", + "required": [ + "result" + ], + "title": "VmSetTagReply", + "example": { + "rc": 0, + "result": [ + { + "action": "vm_set_tag", + "source": "proxmox", + "tags": "group_01,group_02" + } + ] + } + }, + "VmSetTagRequest": { + "properties": { + "proxmox_node": { + "type": "string", + "pattern": "^[A-Za-z0-9-]*$", + "title": "Proxmox Node", + "description": "Proxmox node name" + }, + "as_json": { + "type": "boolean", + "title": "As Json", + "description": "If true : JSON output else : raw output", + "default": true + }, + "vm_id": { + "type": "string", + "pattern": "^[0-9]+$", + "title": "Vm Id", + "description": "Virtual machine id" + }, + "vm_tag_name": { + "type": "string", + "pattern": "^[A-Za-z0-9_, -]+$", + "title": "Vm Tag Name", + "description": "Comma separated list of tags to assign to the virtual machine" + } + }, + "type": "object", + "required": [ + "proxmox_node", + "vm_id", + "vm_tag_name" + ], + "title": "VmSetTagRequest", + "example": { + "as_json": true, + "proxmox_node": "px-testing", + "vm_id": "1111", + "vm_tag_name": "group_01,group_02" + } + } + } + } +}