PHP SDK for the Proxmox Virtual Environment API. Generated from
the upstream apidoc.js from Proxmox VE via openapi-generator-cli with custom
Mustache template overrides.
Not an official Proxmox project. Community SDK derived from the upstream
apidoc.js. Always verify against the upstream API viewer. https://pve.proxmox.com/.
Requires PHP ≥ 7.4.
composer require client-api/pve<?php
require 'vendor/autoload.php';
use ClientApi\Pve\Configuration;
use ClientApi\Pve\Pve;
$cfg = Configuration::getDefaultConfiguration()
->setHost('https://pve1.example.com:8006/api2/json')
->setApiKey('Authorization', 'PVEAPIToken=user@realm!tokenid=uuid-secret');
$pve = new Pve($cfg);
// Per-tag accessors are lazily instantiated and share the same Configuration.
$status = $pve->qemu()->qemuVmStatus(node: 'pve1', vmid: 100);
$nodes = $pve->nodes()->nodesGetNodes();The unified Pve class wraps each per-tag API class (QemuApi,
LxcApi, ClusterApi, NodesApi, …) so consumers don't need to
instantiate them individually.
PVE encodes many fields as CLI-style shorthand strings
(net0=virtio,bridge=vmbr0,firewall=1). Round-trip helpers are
emitted for every compound config schema:
use ClientApi\Pve\Model\PveQemuNetConfig;
$cfg = new PveQemuNetConfig([
'model' => 'virtio',
'bridge' => 'vmbr0',
'firewall' => 1,
]);
$shorthand = $cfg->toShorthand();
// → 'virtio,bridge=vmbr0,firewall=1'
$parsed = PveQemuNetConfig::fromShorthand($shorthand);Numbered properties (net0..net31, mp0..mp255, …) are exposed on
every model as a single collapsed getNets() / setNets() accessor.
The per-index getNet0/setNet0/… methods are filtered out of the
class surface (the wire format is preserved internally via a __call
magic dispatcher):
$req->setNets([
0 => 'virtio,bridge=vmbr0',
3 => 'e1000,bridge=vmbr1',
]);
// Wire format: { "net0": "virtio,bridge=vmbr0", "net3": "e1000,bridge=vmbr1" }Apache 2.0 — see LICENSE.