Skip to content

Fix the nullability of the Status property of Responses items - #1346

Open
joseharriaga wants to merge 7 commits into
mainfrom
joseharriaga/item-status
Open

Fix the nullability of the Status property of Responses items#1346
joseharriaga wants to merge 7 commits into
mainfrom
joseharriaga/item-status

Conversation

@joseharriaga

Copy link
Copy Markdown
Contributor

The status properties of Responses items were not defined as optional in the base TypeSpec. This error in the spec remained hidden because the properties went through a series of overlapping customizations in client.tsp, the OpenAILibraryVisitor, and Custom code that correctly exposed the Status as nullable in the .NET library. However, these same customizations resulted in incorrect deserialization code that would fail when the value of status was null. In other words: Even though the property was nullable, our deserialization logic was not accepting null as valid. This change fixes the base TypeSpec and removes the overlapping customizations.

joseharriaga and others added 2 commits August 28, 2026 10:53
* Fix optional response item statuses

Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>

* Complete optional response item status fixes

Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>

* Restore required apply patch output status

Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>

* Regenerate API listings

Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 28, 2026 21:45
@joseharriaga
joseharriaga requested a review from MaiLinhP as a code owner August 28, 2026 21:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR aligns the Responses item status field nullability across the TypeSpec source, codegen customization layer, and generated .NET models so that deserialization correctly accepts "status": null without throwing, while also removing now-redundant custom overrides.

Changes:

  • Updates the base Responses TypeSpec item models to make many status properties optional and relocates the apply-patch output status note to the base spec.
  • Removes overlapping status customizations from the client TSP layer and the codegen OpenAILibraryVisitor.
  • Regenerates .NET Responses models/serializers so Status is nullable and deserializers skip JsonValueKind.Null for status, and removes the corresponding custom partial Status properties.

Reviewed changes

Copilot reviewed 14 out of 45 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
specification/client/responses.client.tsp Removes per-item status lifecycle visibility overrides now handled by the base spec/codegen.
specification/base/typespec/responses/models_items.tsp Makes multiple item status properties optional; documents apply-patch output status requirement in the base model.
OpenAI.Responses/src/Generated/Models/WebSearchCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/WebSearchCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/ReasoningResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/ReasoningResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/MessageResponseItem.Serialization.cs Removes no-longer-relevant generator customization comments for status write guard.
OpenAI.Responses/src/Generated/Models/MessageResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/InternalUnknownResponsesMessageItemResource.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/InternalResponsesUserMessage.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/InternalResponsesSystemMessage.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/InternalResponsesDeveloperMessage.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/InternalResponsesAssistantMessage.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/InternalLocalShellToolCallOutputItemResource.Serialization.cs Makes status write conditional on Optional.IsDefined; skips status: null in deserialization.
OpenAI.Responses/src/Generated/Models/InternalLocalShellToolCallOutputItemResource.cs Updates Status to nullable and adjusts constructors accordingly.
OpenAI.Responses/src/Generated/Models/InternalLocalShellToolCallItemResource.Serialization.cs Makes status write conditional on Optional.IsDefined; skips status: null in deserialization.
OpenAI.Responses/src/Generated/Models/InternalLocalShellToolCallItemResource.cs Updates Status to nullable and adjusts constructors accordingly.
OpenAI.Responses/src/Generated/Models/ImageGenerationCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/ImageGenerationCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/FunctionCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/FunctionCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/FunctionCallOutputResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/FunctionCallOutputResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/FileSearchCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/FileSearchCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/ComputerCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/ComputerCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/ComputerCallOutputResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/ComputerCallOutputResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/CodeInterpreterCallResponseItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/CodeInterpreterCallResponseItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Generated/Models/ApplyPatchCallItem.Serialization.cs Skips status when JSON value is null during deserialization.
OpenAI.Responses/src/Generated/Models/ApplyPatchCallItem.cs Adds generated nullable Status property.
OpenAI.Responses/src/Custom/Items/WebSearchTool/WebSearchCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/Reasoning/ReasoningResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/Message/MessageResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/ImageGenerationTool/ImageGenerationCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/FunctionTool/FunctionCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/FunctionTool/FunctionCallOutputResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/FileSearchTool/FileSearchCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/ComputerTool/ComputerCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/ComputerTool/ComputerCallOutputResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/CodeInterpreterTool/CodeInterpreterCallResponseItem.cs Removes custom Status property override now generated correctly.
OpenAI.Responses/src/Custom/Items/ApplyPatch/ApplyPatchCallItem.cs Removes custom Status property override now generated correctly.
codegen/generator/src/OpenAILibraryVisitor.cs Removes status-specific type mappings (but leaves an unused field that should be cleaned up).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread codegen/generator/src/OpenAILibraryVisitor.cs
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 28, 2026 21:55
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>
Copilot AI and others added 2 commits August 28, 2026 21:59
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 46 changed files in this pull request and generated 1 comment.

Comment thread specification/client/responses.client.tsp
Copilot AI review requested due to automatic review settings August 28, 2026 22:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 46 changed files in this pull request and generated no new comments.

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

specification/base/typespec/responses/models_items.tsp:1067

  • This change edits the base TypeSpec under specification/base/typespec/, but the repo’s spec-ingestion guidance treats the base spec as an exact upstream copy (local fixes should live in specification/client/ or be applied upstream and then re-synced). Keeping local patches here risks the next spec ingestion overwriting this fix and reintroducing the null-status bug.

Comment thread codegen/generator/src/OpenAILibraryVisitor.cs
Co-authored-by: joseharriaga <45773732+joseharriaga@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 31, 2026 18:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 46 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants