**Language / Язык:** [English](soap.md) | [Русский](../ru/domains/soap.md) # SOAP / VIM Minimal VIM SDK for pyvmomi / govmomi-style clients (Terraform's `hashicorp/vsphere` provider, Pulumi, govc): [`app/vsphere/soap/router.py`](../../app/vsphere/soap/router.py), [`property_collector.py`](../../app/vsphere/soap/property_collector.py), [`pbm.py`](../../app/vsphere/soap/pbm.py). ## Endpoint All operations POST a SOAP envelope to `/sdk` (also `/sdk/`). Auxiliary routes: | Method | Path | Notes | |---|---|---| | GET | `/sdk/vimService.wsdl` (alias `/sdk/vim.wsdl`) | WSDL stub advertising the implemented operation list | | GET | `/sdk/about.do` (alias `/about.do`) | Human-readable "VMware vCenter Server" page | | POST | `/sdk/vim25/{version}/SessionManager/SessionManager/Login` | JSON-body login variant used by some SDKs | ## Implemented operations - `RetrieveServiceContent`, `Login`, `Logout` - `RetrieveProperties`, `RetrievePropertiesEx`, **ContinueRetrievePropertiesEx** (pagination tokens; `` plural), `CreateFilter`, `WaitForUpdatesEx` (version tokens; empty polls), `CreateContainerView`, `DestroyPropertyFilter` - `FindByInventoryPath` (paths omit the root `Datacenters` folder, matching govmomi conventions), `FindByUuid`, `FindByDnsName`, `FindByIp`, `FindChild` - `CreateVM_Task`, `CreateChildVM_Task`, `CreateFolder`, `PowerOnVM_Task`, `PowerOffVM_Task`, `CloneVM_Task`, `CreateSnapshot_Task`, `Rename_Task`, `ReconfigVM_Task`, `RelocateVM_Task`, `Destroy_Task`, `CustomizeVM_Task`, `CancelTask`, `CurrentTime` - Guest file ops: `InitiateFileTransferToGuest`, `InitiateFileTransferFromGuest`, `ListFilesInGuest`, `DeleteFileInGuest`, `MakeDirectoryInGuest` - Import/upload: `ImportVApp_Task`, `CreateImportSpec`, `HttpNfcLeaseComplete`, `HttpNfcLeaseProgress`, `HttpNfcLeaseAbort`, `HttpNfcLeaseGetManifest` (paired with the REST `/nfc/{lease}` endpoints — see [Content library](content-library.md)) - `QueryConfigOption`, `QueryConfigOptionEx`, `QueryConfigOptionDescriptor`, `QueryConfigTarget` - PBM (`/pbm`) stub for storage-policy-aware clients ## Highlights - `Login` issues the same underlying session as REST (`vmware-api-session-id` cookie/header, plus a `vmware_soap_session` cookie) — see [Session](session.md). - `VIM_VERSION` is pinned to `8.0.2` with ≤3 dotted components, since `hashicorp/vsphere` parses `AboutInfo.version` strictly. - Type-strict MOR lookup rejects a `VirtualApp:resgroup-*` reference from resolving as a plain `ResourcePool` — matters for the Terraform `CreateVM_Task` resource path. - Task-returning operations create a real row in `vsphere_tasks` (shared with REST — see [Tasks](tasks.md)), including `info.result` MoRefs on create/clone. - PropertyCollector filters, ContainerViews, and WaitForUpdatesEx version tokens persist in `vsphere_pc_state` (migration `013`) across process restarts within a lab. - `Folder.childType` is emitted as `ArrayOfString`; string properties carry `xsi:type="xsd:string"` so govmomi's decoder accepts them; `Datastore.host` is `ArrayOfDatastoreHostMount`; `Cluster`/`Host` expose `environmentBrowser`. See [Clients](../clients.md) for pyvmomi/govmomi/Terraform/Pulumi connection examples and [examples/python/vsphere_soap_smoke.py](../../examples/python/vsphere_soap_smoke.py) for a minimal raw-XML smoke.