Skip to content

[Bug]: Difficulty expressing optional type field for tool output submission across versions #8533

@mike-taylor99

Description

@mike-taylor99

Describe the bug

We recently introduced a type field in the tool output submission payload to support a new tool for computer use. This field is optional and the API implementation is fully backward compatible—if type is omitted, the backend defaults to function tool output.
However, reflecting this optional field cleanly in TypeSpec has been challenging. Specifically:

I attempted to union the non-discriminated (legacy) format with the new discriminated format using type, but ran into limitations.
As a workaround, I updated the shared type definition across all versions to include the type field, while documenting that it is still optional in the API.
This was necessary to avoid breaking the spec and to ensure both formats are accepted.
I’ve documented that type is optional and both formats are supported, but I’m open to better ways to isolate this change to newer versions or express it more cleanly.

Ask:
A better way to represent this optional type field without modifying stable versions and without breaking generated SDK code? Ideally, I’d like to support both formats while keeping the spec clean and version-safe.

Thanks!

Reproduction

Please reference SubmitToolOutput in this PR for the scenario described above:
Azure/azure-rest-api-specs#36325

Checklist

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions