All notable changes to the HyperFleet API specification will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.23 - 2026-06-22
kindfield onObjectReferenceis now required (was optional but API validates as mandatory)
- Unused
ObjectReference2<Kind>generic model
1.0.22 - 2026-06-18
- Added missing
kindfield to NodePool creation example
1.0.21 - 2026-06-02
kindproperty fromClusterList,NodePoolList,AdapterStatusList, andResourceListlist response schemas (HYPERFLEET-1143)
1.0.20 - 2026-06-02
- Typed error response models (
BadRequestResponse,UnauthorizedResponse,NotFoundResponse,ConflictResponse) now emit anapplication/problem+jsonbody schema per RFC 9457 (HYPERFLEET-993) UnauthorizedResponse(401) added to all status and force-delete endpointsConflictResponse(409) removed from status create/update endpoints (upsert semantics make conflict impossible)- Default
Errorresponse added to status create/update endpoints where it was previously missing
pageandpageSizequery parameters have@minValue(1)constraints (HYPERFLEET-993)- Error models scoped to
namespace HyperFleet {}block to avoid collision with TypeSpec.Http built-ins - Error example constants extracted to
shared/models/common/example_errors.tsp
1.0.18 - 2026-05-26
- Restructured TypeSpec sources into
core/andshared/directories (HYPERFLEET-1103) - Removed GCP provider from core repository; GCP contracts now live in a dedicated
hyperfleet-api-spec-gcprepository (HYPERFLEET-1103) build-schema.shsimplified: no provider argument required, generates core OpenAPI only- CI/CD workflows updated to reflect new
main.tsplocation at repository root
1.0.17 - 2026-05-21
- Generic
Resourcetype withkinddiscriminator and JSONBspecfield, replacing per-entity model hierarchies for new resource types (HYPERFLEET-1083) ResourceCreateRequest,ResourcePatchRequest,ResourceList,ResourceStatustypes in core contract- Generic
/resourcesCRUD routes in core contract (GET list, GET by ID, POST, PATCH, DELETE) per design doc Section 3.2 /channelsand/channels/{channel_id}/versionsCRUD routes in GCP contractreferencesfield on Resource for non-ownership associations between entities (Section 9)ChannelSpecvalidation schema in GCP contract (is_default,enabled_regex)VersionSpecvalidation schema in GCP contract (raw_version,enabled,is_default,release_image,end_of_life_time)KindChannelandKindVersionkind aliases in GCP contract
GET /resources/{id}/statusesandPOST /resources/{id}/force-deletemoved to core contractGET /clusters/{id}/statusesandGET /nodepools/{id}/statusesmoved to core contract
1.0.16 - 2026-05-20
channelGroupoptional field toReleaseSpecin GCP cluster model (GCP-696)
1.0.15 - 2026-05-18
ForceDeleteRequestmodel with requiredreasonfield (HYPERFLEET-1075)- POST
/clusters/{cluster_id}/force-deleteinternal endpoint for force-deleting stuck clusters (HYPERFLEET-1075) - POST
/clusters/{cluster_id}/nodepools/{nodepool_id}/force-deleteinternal endpoint for force-deleting stuck nodepools (HYPERFLEET-1075)
1.0.14 - 2026-05-15
- Deprecated
Readycondition type fromConditionType, status model documentation, and all examples (HYPERFLEET-1052) ExampleReadyReasonandExampleReadyMessageconstants
- Search example updated from
status.conditions.Readytostatus.conditions.Reconciled postClusterdocumentation updated to list onlyLastKnownReconciledandReconciledas mandatory conditions
1.0.13 - 2026-05-13
- POST endpoints from internal status API (
/clusters/{cluster_id}/statusesand/clusters/{cluster_id}/nodepools/{nodepool_id}/statuses)
- Internal status API now uses only PUT endpoints with upsert semantics for adapter status updates
- Improved documentation for PUT endpoints to clarify upsert behavior by adapter name
1.0.12 - 2026-05-11
- Aligned condition example reason/message fields with actual aggregation code output (HYPERFLEET-1017)
- Updated condition reason strings to use CamelCase format (
AllAdaptersReconciled,ReconciledAll) instead of full sentences - Updated condition message strings to match actual aggregation logic output
1.0.11 - 2026-05-07
- CI workflow (
ci.yml) that runs on every PR and push to main: rebuilds all schemas, checks consistency against committed files, lints withspectral:oasruleset, and enforces version bump against latest release tag - Go module (
go.mod+schemas/schemas.go) exposing all four generated schemas via//go:embedasembed.FS, enabling downstream consumers to import versioned schemas as a Go module dependency .spectral.yamlwithspectral:oasruleset for OpenAPI 3.0 linting
- Release workflow now triggers automatically on push to main instead of requiring a manual tag push; auto-creates annotated tag from version in
main.tspand attaches all four schema artifacts (core-openapi.yaml,core-swagger.yaml,gcp-openapi.yaml,gcp-swagger.yaml) - Bumped
actions/checkoutandactions/setup-nodeto v6 - Renamed aggregated condition
AvailabletoLastKnownReconciledin cluster and nodepool status conditions (HYPERFLEET-1017) - Updated condition examples and descriptions to reflect
LastKnownReconciledsemantics - Fixed typo
Avaliable→Availablein adapter example constants (HYPERFLEET-971) - Improved README.md structure to align with HyperFleet documentation standards
Error.instancefield format changed fromuritouri-referenceper RFC 9457 (instance identifies a specific occurrence and may be a relative URI reference)build-schema.shnow resolvestspfromnode_modules/.bin/instead of requiring a global install, eliminating version mismatch between the globally installed compiler and the lockfile-pinned version
1.0.10 - 2026-05-05
- 409 Conflict response to cluster patch (PATCH
/clusters/{cluster_id}) for soft-deleted cluster rejection - 409 Conflict response to nodepool create (POST
/clusters/{cluster_id}/nodepools) for soft-deleted cluster rejection - 409 Conflict response to nodepool patch (PATCH
/clusters/{cluster_id}/nodepools/{nodepool_id}) for soft-deleted cluster rejection
1.0.9 - 2026-05-04
- PUT endpoint for cluster adapter statuses (PUT
/clusters/{cluster_id}/statuses) with upsert semantics - PUT endpoint for nodepool adapter statuses (PUT
/clusters/{cluster_id}/nodepools/{nodepool_id}/statuses) with upsert semantics
1.0.8 - 2026-04-28
- "Reconciled" condition type to resource status conditions
- "Finalized" condition type to adapter status conditions
- Inconsistent
observed_generationvalues across examples
1.0.7 - 2026-04-20
- PATCH endpoint for clusters (PATCH
/clusters/{cluster_id}) withClusterPatchRequest - PATCH endpoint for nodepools (PATCH
/clusters/{cluster_id}/nodepools/{nodepool_id}) withNodePoolPatchRequest
1.0.6 - 2026-04-13
- DELETE endpoint for clusters with soft-delete semantics (returns 202, sets
deleted_time) - DELETE endpoint for nodepools with soft-delete semantics and cascade support
deleted_timeanddeleted_byoptional fields to API metadata
- Renamed
APICreatedResourcemodel toAPIMetadatato reflect broader scope
1.0.2 - 2026-01-13
- GitHub Actions workflow for automated releases
- Standard schema component naming convention for provider schemas
- Generation field to NodePool models
- Standardized TypeSpec schema definitions with enums and validation enhancements
- Refactored to support oapi-codegen compatibility
- Updated OWNERS file to not block approval by bot
- Release GitHub Action to install tsp compiler
1.0.0 - 2025-11-25
First official stable release of the HyperFleet API specification.
- Complete CRUD operations for clusters, nodepools, and statuses
- Status tracking and reporting with comprehensive history management
- Core API variant with generic cluster spec
- GCP API variant with GCP-specific cluster spec
- Kubernetes-style timestamp conventions
- List-based pagination for resource collections
- Separate public and internal status endpoints
- Interactive API documentation