Summary
When using @hey-api/sdk with paramsStructure: 'flat', required properties from an object request body are generated as optional in method signatures.
Reproduction
Config:
sdk({
paramsStructure: 'flat',
})
OpenAPI operation (simplified):
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [owner]
properties:
owner:
type: string
contact_list:
type: string
Actual output
Generated SDK method signature is optional:
delAll(parameters?: {
owner?: string;
contact_list?: string;
})
Expected output
owner should be required (and parameters required because at least one flattened field is required):
delAll(parameters: {
owner: string;
contact_list?: string;
})
Notes
This only affects flattened request-body properties in paramsStructure: 'flat'.
Path/query requiredness works as expected.
Suspected cause
In getSignatureParameters(), requiredness is read from property.required (which does not exist on schema properties), instead of operation.body.schema.required.
Summary
When using
@hey-api/sdkwithparamsStructure: 'flat', required properties from an object request body are generated as optional in method signatures.Reproduction
Config:
OpenAPI operation (simplified):
Actual output
Generated SDK method signature is optional:
Expected output
ownershould be required (andparametersrequired because at least one flattened field is required):Notes
This only affects flattened request-body properties in
paramsStructure: 'flat'.Path/query requiredness works as expected.
Suspected cause
In
getSignatureParameters(), requiredness is read fromproperty.required(which does not exist on schema properties), instead ofoperation.body.schema.required.