Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.0.26] - 2026-07-09

### Added

- 204 No Content response to PUT cluster, nodepool, and resource statuses endpoints (HYPERFLEET-1154)

## [1.0.25] - 2026-06-23

### Changed

- Remove `@format("email")` constraint from `created_by`, `updated_by`, and `deleted_by` audit fields (HYPERFLEET-1278)

## [1.0.24] - 2026-06-24

### Changed
Expand Down Expand Up @@ -228,7 +240,9 @@ First official stable release of the HyperFleet API specification.
- Interactive API documentation

<!-- Links -->
[Unreleased]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.23...HEAD
[Unreleased]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.26...HEAD
[1.0.26]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.25...v1.0.26
[1.0.25]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.24...v1.0.25
[1.0.23]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.22...v1.0.23
[1.0.22]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.21...v1.0.22
[1.0.21]: https://github.com/openshift-hyperfleet/hyperfleet-api-spec/compare/v1.0.20...v1.0.21
Expand Down
3 changes: 2 additions & 1 deletion core/services/resources-internal.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,13 @@ interface ResourceStatuses {
@put
@summary("Adapter creates or updates resource status")
@operationId("putResourceStatuses")
@doc("Adapters call this endpoint to report status for a resource after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name).")
@doc("Adapters call this endpoint to report status for a resource after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).")
putResourceStatuses(
@path resource_id: string,
@body body: AdapterStatusCreateRequest,
):
| (CreatedResponse & AdapterStatus)
| { @statusCode statusCode: 204; }
| Error
| BadRequestResponse
| UnauthorizedResponse
Expand Down
6 changes: 4 additions & 2 deletions core/services/statuses-internal.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ interface ClusterStatuses {
@put
@summary("Adapter creates or updates cluster status")
@operationId("putClusterStatuses")
@doc("Adapters call this endpoint to report the status for a cluster after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified cluster status.")
@doc("Adapters call this endpoint to report the status for a cluster after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified cluster status. Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).")
putClusterStatuses(
/**
* Cluster ID
Expand All @@ -48,6 +48,7 @@ interface ClusterStatuses {
@body body: AdapterStatusCreateRequest,
):
| (CreatedResponse & AdapterStatus)
| { @statusCode statusCode: 204; }
| Error
| BadRequestResponse
| UnauthorizedResponse
Expand Down Expand Up @@ -82,7 +83,7 @@ interface NodePoolStatuses {
@put
@summary("Adapter creates or updates nodepool status")
@operationId("putNodePoolStatuses")
@doc("Adapters call this endpoint to report the status for a nodepool after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified nodepool status.")
@doc("Adapters call this endpoint to report the status for a nodepool after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified nodepool status. Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).")
putNodePoolStatuses(
/**
* Cluster ID
Expand All @@ -97,6 +98,7 @@ interface NodePoolStatuses {
@body body: AdapterStatusCreateRequest,
):
| (CreatedResponse & AdapterStatus)
| { @statusCode statusCode: 204; }
| Error
| BadRequestResponse
| UnauthorizedResponse
Expand Down
2 changes: 1 addition & 1 deletion main.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ using OpenAPI;
*/
@service(#{ title: "HyperFleet API" })
@info(#{
version: "1.0.25",
version: "1.0.26",
contact: #{
name: "HyperFleet Team",
url: "https://github.com/openshift-hyperfleet",
Expand Down
36 changes: 2 additions & 34 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hyperfleet",
"version": "1.0.25",
"version": "1.0.26",
"type": "module",
"exports": {
"./*": "./*"
Expand Down
14 changes: 10 additions & 4 deletions schemas/core/openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
openapi: 3.0.0
info:
title: HyperFleet API
version: 1.0.25
version: 1.0.26
contact:
name: HyperFleet Team
url: https://github.com/openshift-hyperfleet
Expand Down Expand Up @@ -822,7 +822,7 @@ paths:
put:
operationId: putNodePoolStatuses
summary: Adapter creates or updates nodepool status
description: Adapters call this endpoint to report the status for a nodepool after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified nodepool status.
description: Adapters call this endpoint to report the status for a nodepool after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified nodepool status. Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).
parameters:
- name: cluster_id
in: path
Expand All @@ -843,6 +843,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/AdapterStatus'
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
'400':
description: The server could not understand the request due to invalid syntax.
content:
Expand Down Expand Up @@ -931,7 +933,7 @@ paths:
put:
operationId: putClusterStatuses
summary: Adapter creates or updates cluster status
description: Adapters call this endpoint to report the status for a cluster after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified cluster status.
description: Adapters call this endpoint to report the status for a cluster after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). This allows HyperFleet to aggregate multiple adapter perspectives into a unified cluster status. Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).
parameters:
- name: cluster_id
in: path
Expand All @@ -946,6 +948,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/AdapterStatus'
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
'400':
description: The server could not understand the request due to invalid syntax.
content:
Expand Down Expand Up @@ -1367,7 +1371,7 @@ paths:
put:
operationId: putResourceStatuses
summary: Adapter creates or updates resource status
description: Adapters call this endpoint to report status for a resource after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name).
description: Adapters call this endpoint to report status for a resource after each evaluation. The adapter's status entry is created if it doesn't exist, or updated if it does (upserted by adapter name). Returns 400 Bad Request when mandatory conditions (Available, Applied, Health) are missing or Available has an invalid status value. Returns 204 No Content when the report is silently discarded (e.g., stale generation, duplicate observed time, or subsequent Unknown Available status).
parameters:
- name: resource_id
in: path
Expand All @@ -1381,6 +1385,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/AdapterStatus'
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
'400':
description: The server could not understand the request due to invalid syntax.
content:
Expand Down