@kubevirt-ui-ext/kubevirt-api
v2.0.0
Published
kubevirt OpenAPI automation for TypeScript
Downloads
2,622
Readme
kubevirt-api

TypeScript types for KubeVirt, Kubernetes, CDI, NMState, and related OpenShift Console models.
Documentation
Auto generated API reference: KubeVirt API Docs
Packages
| Export | Source |
|--------|--------|
| @kubevirt-ui/kubevirt-api/kubevirt | kubevirt OpenAPI swagger |
| @kubevirt-ui/kubevirt-api/kubernetes | kubernetes OpenAPI swagger |
| @kubevirt-ui/kubevirt-api/containerized-data-importer | CDI OpenAPI swagger |
| @kubevirt-ui/kubevirt-api/nmstate | kubernetes-nmstate CRDs |
| @kubevirt-ui/kubevirt-api/virt-template | virt-template CRDs |
| @kubevirt-ui/kubevirt-api/console | OpenShift Console models |
KubeVirt API reference: http://kubevirt.io/api-reference/master/index.html
Usage
yarn add @kubevirt-ui/kubevirt-apiimport { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes';
import { V1VirtualMachine } from '@kubevirt-ui/kubevirt-api/kubevirt';
import { V1beta1DataVolume } from '@kubevirt-ui/kubevirt-api/containerized-data-importer';
import { VirtualMachineModelGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console/models';
import VirtualMachineModel from '@kubevirt-ui/kubevirt-api/console/models/VirtualMachineModel';Each package exports TypeScript interfaces only. There is no runtime, no serializers, and no generated API client.
Update API
- Install dependencies:
yarnPin upstream versions in
scripts/versions.jsonif needed.Remove previously generated output (preserves
kubevirt/test/andnmstate/custom-models/):
yarn clean:all- Generate types:
yarn generate- Validate and build:
yarn test
yarn build- Generate docs (optional):
yarn generate:docsGeneration pipeline
All generation is handled by a single script:
yarn generate # runs scripts/generate-types.shSwagger-based packages
Used for kubevirt, kubernetes, and containerized-data-importer:
- Download upstream swagger JSON
- Generate types with
swagger-typescript-api(--no-client --modular --patch, plusscripts/swagger-type-names.config.cjsfor K8s naming) - Split the output into one file per interface via
scripts/split-data-contracts.mjs
CRD-based packages
Used for nmstate and virt-template:
- Download upstream CRD YAML into
<package>/.crds/ - Convert CRDs to OpenAPI with
crdtoapi→<package>/.openapi.yaml - Generate interfaces with
crdtotypes→<package>/models/
Console models
OpenShift Console model definitions are fetched from upstream and written to console/core/index.ts. Models that already exist under console/models/ are deduplicated automatically.
Scripts
| File | Purpose |
|------|---------|
| scripts/generate-types.sh | Main generation entrypoint |
| scripts/versions.json | Pinned upstream source versions |
| scripts/swagger-type-names.config.cjs | K8s type naming and format: byte → string for swagger-typescript-api |
| scripts/split-data-contracts.mjs | Split swagger output into one type per file |
Intermediate artifacts (.crds/, .openapi.yaml, swagger-*.json) are written next to each package and ignored by git.
Tests
KubeVirt type tests live in kubevirt/test/. Each file exports a testObject literal that must satisfy the corresponding generated interface.
yarn test # tsc --noEmitTests without a matching upstream type are kept under kubevirt/test/orphaned/ and excluded from compilation.
Breaking changes (v2)
This generation refactor removes runtime exports that were previously produced by openapi-generator:
- No
runtime.ts - No
apis/clients - No
*FromJSON/*ToJSONhelpers
