**Language / Язык:** [English](appliance.md) | [Русский](../ru/domains/appliance.md)

# Appliance

vCenter Server Appliance (VCSA) surfaces — version, health, networking,
timesync:
[`app/vsphere/rest/appliance_ext.py`](../../app/vsphere/rest/appliance_ext.py),
[`app/vsphere/domain/appliance.py`](../../app/vsphere/domain/appliance.py).

## Endpoints

| Method | Path | Notes |
|---|---|---|
| GET | `/api/appliance/system/version` | Readable without a session; reflects the active catalog major's label |
| GET | `/api/appliance/health/system` | Overall health summary |
| GET/PUT/POST | `/api/appliance/networking` | Hostname, DNS, default gateway, interfaces, proxy |
| GET/PUT/POST | `/api/appliance/networking/dns/hostname` \| `/dns/servers` \| `/dns/domains` | Focused mirrors kept in sync with `/networking` |
| GET | `/api/appliance/timesync` | NTP mode + servers |
| GET | `/api/vcenter/certificate-management/vcenter/tls[-csr]` \| `/trusted-root-chains` | Machine-cert / CSR / trust-chain stand-ins |

## Highlights

- Defaults model a realistic single-nic VCSA (`vcenter.lab.local`,
  `192.168.1.50/24`, gateway `192.168.1.1`, `8.8.8.8`/`1.1.1.1` DNS).
- `save_networking` keeps the focused DNS mirrors
  (`/dns/hostname`, `/dns/servers`, `/dns/domains`) consistent with the full
  `/networking` document so both shapes of Automation API client work.
- State is idempotently seeded once per fresh database
  (`seed_appliance_state`) and persists in `vsphere_api_state`.
- The TLS/certificate-management endpoints are seeded stand-ins, not a real
  VECS certificate store — see [API coverage](../api-coverage.md).

`/api/appliance/system/version` intentionally does not require a session in
this lab build (real vCenter behavior varies by version) so smoke scripts can
check availability before authenticating.
