Skip to content

sdk(flat): required requestBody object properties become optional #3455

@vcombey

Description

@vcombey

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.

Metadata

Metadata

Labels

bug 🔥Broken or incorrect behavior.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions