Files
proxmox-api-simulator/docs/api-viewer-research.md
T
2026-07-12 23:16:56 +03:00

3.6 KiB

Proxmox VE API Viewer research

Research was performed on 2026-07-12 against the official documentation hosted by Proxmox Server Solutions GmbH.

Discovered source

The HTML application at https://pve.proxmox.com/pve-docs/api-viewer/ loads ExtJS and one application resource, apidoc.js. The machine-readable API tree is not fetched from a separate JSON endpoint: it is embedded at the start of apidoc.js as a JavaScript declaration named apiSchema. The remainder of that file renders the tree and method documentation.

At retrieval, the artifact was 4,277,440 bytes with SHA-256 f2b77b57c71f3781a0993cc5062940ef31e0843fd9a6bcfdb4de4dd2001d6d9e. The server reported Last-Modified: Fri, 03 Jul 2026 09:08:20 GMT and ETag "4144c0-655b144140900".

The adjacent official documentation index identifies the generated documentation as Proxmox VE 9.2.3, dated Fri Jul 3 11:08:20 CEST 2026. Its timestamp matches the artifact's HTTP last-modified time after timezone conversion. This is strong evidence that the current unversioned viewer belongs to that documentation build, but the artifact does not contain a dedicated top-level snapshot-version field. Importers must therefore record the index version and HTTP metadata as provenance rather than infer a version from an API method schema.

Format and limitations

apiSchema is a nested tree of path nodes. Nodes may contain children, an info mapping keyed by HTTP method, path, text, and leaf. Method objects contain parameter and return schemas, permissions, descriptions, and flags. The schema resembles JSON Schema but is a Proxmox-specific dialect and includes fields such as typetext, format_description, instance-types, and numeric booleans. Unknown fields must be retained.

The artifact is executable JavaScript, not JSON. A parser must extract only the declaration value without evaluating the downloaded program. The URL is unversioned and changes in place. Formatting, declaration syntax, variable name, tree shape, or bundling may change without notice. Documentation describes the declared contract; it does not prove runtime behavior or exact error text for a particular installed cluster.

Offline fallback and sample

The repository stores an extracted, otherwise semantically unmodified /version node at tests/fixtures/api-viewer/pve-9.2.3-version.json. It is deliberately small enough for deterministic parser tests and retains all fields from that source node. Its checksum is recorded in the companion provenance file. Network retrieval is research/import functionality only; the default test suite must use this checked-in fixture.

The fixture is not a complete snapshot and must never be used to claim broad Proxmox compatibility. Full imports should preserve the immutable raw apidoc.js, response metadata, retrieval timestamp, and checksum outside the small test-fixture path.

Parser boundary

app.contracts.source.ApiViewerParser accepts either the saved JSON sample or the official JavaScript wrapper. It locates the exact const apiSchema assignment, scans the balanced JSON value while respecting escaped strings, and decodes only that value; no downloaded JavaScript is evaluated. Recoverable tree variations produce structured warnings and unknown node fields remain in the parsed dictionaries. SourceImporter and LocalFileImporter keep artifact retrieval separate from parsing so later remote imports can enforce their own network policy.