microsoft / microsoft/typespec

[Bug]: [http] Reference models marked as `@discriminated` with none envelope should inlcude `kind` property

Open
#7,141 1 comment 0 reactions 0 assignees View on GitHub
design:needed emitter:openapi3 triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Describe the bug

For [the case marked `@discriminated` with none envelope](https://typespec.io/docs/standard-library/discriminated-types/#inject-discriminator-inline), the real payload for Cat and Dog models would be required with `kind` payload. But it is not included. According to [OpenAPI 3.0 doc](https://swagger.io/docs/specification/v3_0/data-models/inheritance-and-polymorphism/#discriminator), the discriminator property is required for these models.

```
The discriminator is used with anyOf or oneOf keywords only. It is important that all the models mentioned below anyOf or oneOf contain the property that the discriminator specifies...
```

```ts
@discriminated(#{ envelope: "none" })
union Pet {
cat: Cat,
dog: Dog,
}

model Cat {
name: string;
meow: boolean;
}

model Dog {
name: string;
bark: boolean;
}
```

![Image](https://github.com/user-attachments/assets/e5479e65-ac38-48ed-8805-e76b6ba58ad2)

### Reproduction

[playground](https://typespec.io/playground/?options=%7B%7D&c=aW1wb3J0ICJAdHlwZXNwZWMvaHR0cCI7CtIZcmVzdNUZb3BlbmFwaTMiOwoKQHNlcnZpY2UoI3sgdGl0bGU6ICJXaWRnZXQgU8YaIiB9KQpuYW1lc3BhY2UgRGVtb8caOwp1c2luZyBSZXN0yAxIdHRwyAxPcGVuQVBJxGZkaXNjcmltaW5hdGVkxGxlbnZlbG9wxG9ub27GZXVuaW9uIFBldCB7CiAgY2F0OiBDYXQsCiAgZG9nOiBEb2csCn0KCm1vZGVsxBrFJ%2BQAmjogc3RyaW5nOwogIG1lb3c6IGJvb2xlYW47yjBEb2fVMGJhcmvMMA%3D%3D&e=%40typespec%2Fopenapi3)

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Check that there isn't already an issue that request the same bug to avoid creating a duplicate.
- [x] Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/Microsoft/typespec/discussions).
- [x] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.