-
-
Notifications
You must be signed in to change notification settings - Fork 585
Open
Labels
bugSomething isn't workingSomething isn't workingopenapi-tsRelevant to the openapi-typescript libraryRelevant to the openapi-typescript library
Description
openapi-typescript version
7.8.0
Node.js version
22.7.0
OS + version
MacOS 26.0.1
Description
When generating TypeScript types from our OpenAPI 3.1 spec, we noticed that properties with a default value but not listed in the schema’s required array are generated as required in the resulting TypeScript types. According to the OpenAPI spec these should be optional.
Reproduction
OpenAPI Schema Example:
{
"SomethingCreate": {
"type": "object",
"properties": {
"user": { "$ref": "#/components/schemas/UReference" },
"role": { "$ref": "#/components/schemas/RReference" },
"reserved": {
"type": "boolean",
"default": false
},
"send_invite": {
"type": "boolean",
"default": false
}
},
"required": ["user", "role"]
}
}
Generated TypeScript Output:
SomethingCreate: {
user: components["schemas"]["UReference"];
role: components["schemas"]["RReference"];
reserved: boolean;
send_invite: boolean;
};
Expected result
reserved
and send_invite
should be optional in the generated TypeScript, since they are not in the required array.
Actual Behavior:
Both are generated as required properties.
Is this a bug or expected behavior? If it’s a bug, could you clarify if there’s a workaround or if a fix is planned?
Thank you!
Required
- My OpenAPI schema is valid and passes the Redocly validator (
npx @redocly/cli@latest lint
)
Extra
- I’m willing to open a PR (see CONTRIBUTING.md)
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingopenapi-tsRelevant to the openapi-typescript libraryRelevant to the openapi-typescript library