Generated from apidoc.js. NOT an official Proxmox specification. See https://pve.proxmox.com/pve-docs/api-viewer/ for the upstream documentation.

Maintainers

Package info

github.com/client-api/pve-php

Homepage

pkg:composer/client-api/pve

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2026.5.23 2026-05-23 09:25 UTC

This package is auto-updated.

Last update: 2026-05-23 14:56:54 UTC


README

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.

Install

composer require client-api/pve

Usage

<?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.

Compound configs

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);

Indexed families

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" }

License

Apache 2.0 — see LICENSE.