Skip to content
Open
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
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.24",
version: "1.0.25",
contact: #{
name: "HyperFleet Team",
url: "https://github.com/openshift-hyperfleet",
Expand Down
4 changes: 2 additions & 2 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.24",
"version": "1.0.25",
"type": "module",
"exports": {
"./*": "./*"
Expand Down
14 changes: 1 addition & 13 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.24
version: 1.0.25
contact:
name: HyperFleet Team
url: https://github.com/openshift-hyperfleet
Expand Down Expand Up @@ -1794,19 +1794,16 @@ components:
description: Timestamp when the resource was last updated
created_by:
type: string
format: email
description: Identity that created the resource
updated_by:
type: string
format: email
description: Identity that last updated the resource
deleted_time:
type: string
format: date-time
description: Timestamp when deletion was requested; omitted if not marked for deletion
deleted_by:
type: string
format: email
description: Identity that requested deletion; omitted if not marked for deletion
generation:
type: integer
Expand Down Expand Up @@ -2074,19 +2071,16 @@ components:
description: Timestamp when the resource was last updated
created_by:
type: string
format: email
description: Identity that created the resource
updated_by:
type: string
format: email
description: Identity that last updated the resource
deleted_time:
type: string
format: date-time
description: Timestamp when deletion was requested; omitted if not marked for deletion
deleted_by:
type: string
format: email
description: Identity that requested deletion; omitted if not marked for deletion
generation:
type: integer
Expand Down Expand Up @@ -2231,19 +2225,16 @@ components:
description: Timestamp when the resource was last updated
created_by:
type: string
format: email
description: Identity that created the resource
updated_by:
type: string
format: email
description: Identity that last updated the resource
deleted_time:
type: string
format: date-time
description: Timestamp when deletion was requested; omitted if not marked for deletion
deleted_by:
type: string
format: email
description: Identity that requested deletion; omitted if not marked for deletion
generation:
type: integer
Expand Down Expand Up @@ -2459,19 +2450,16 @@ components:
description: Timestamp when the resource was last updated
created_by:
type: string
format: email
description: Identity that created the resource
updated_by:
type: string
format: email
description: Identity that last updated the resource
deleted_time:
type: string
format: date-time
description: Timestamp when deletion was requested; omitted if not marked for deletion
deleted_by:
type: string
format: email
description: Identity that requested deletion; omitted if not marked for deletion
example:
kind: MyResource
Expand Down
6 changes: 3 additions & 3 deletions shared/models/common/model.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -156,16 +156,16 @@ model APIMetadata {
@format("date-time") updated_time: string;

@doc("Identity that created the resource")
@format("email") created_by: string;
created_by: string;

@doc("Identity that last updated the resource")
@format("email") updated_by: string;
updated_by: string;

@doc("Timestamp when deletion was requested; omitted if not marked for deletion")
@format("date-time") deleted_time?: string;

@doc("Identity that requested deletion; omitted if not marked for deletion")
@format("email") deleted_by?: string;
deleted_by?: string;
Comment on lines +159 to +168

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Cross-repo contract break risk: identity fields widened to string while downstream still enforces email types (CWE-436).

APIMetadata.*_by is now unconstrained string, but openshift-hyperfleet/hyperfleet-api presenters still cast these fields to openapi_types.Email and use email converters. Release this spec change only with coordinated downstream type updates to avoid integration and serialization mismatches.

As per path instructions, "Validate changes against HyperFleet architecture standards from the linked architecture repository."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@shared/models/common/model.tsp` around lines 159 - 168, The identity fields
in the shared model were widened to plain string, but downstream consumers still
treat them as email-typed values. Update the contract and any dependent
presenters/serializers together, especially the APIMetadata created_by and
updated_by fields and their downstream Email conversions, so the schema change
is released only with matching type handling in the HyperFleet API path.

Sources: Path instructions, Linked repositories

}

model Page<Kind> {
Expand Down