Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Issues
  • #1782
Closed
Open
Issue created Dec 30, 2018 by Administrator@rootContributor

[KOTLIN][SPRING] Required requestBody should not be optional

Created by: mindhaq

Description

In my operation definition, I have a requestBody with required: true. However, the generated code makes the parameter in the controller and subsequent service optional.

openapi-generator version

I tried 3.3.4 and current master

OpenAPI declaration file content or url

Spec:

paths:
  /sysmails/{key}:
    parameters:
      - name: key
        in: path
        required: true
        schema:
          $ref: "#/components/parameters/SysMailKey"
    put:
      operationId: updateSysMailAtKey
      description: Update SysMail template
      requestBody:
        description: Template data
        required: true
        content:
          application/json:
            schema:
              title: SysMailFormData
              description: Data to update a SysMail template.
              type: object
              required:
                - subject
                - body
              properties:
                subject:
                  $ref: "#/components/schemas/SysMailSubject"
                body:
                  $ref: "#/components/schemas/SysMailBody"

Generated code:

    @RequestMapping(
            value = ["/sysmails/{key}"],
            produces = ["application/json"], 
            consumes = ["application/json"],
            method = [RequestMethod.PUT])
    fun updateSysMailAtKey( @PathVariable("key") key: String, @Valid @RequestBody sysMailFormData: SysMailFormData?): ResponseEntity<SysMail> {
        return ResponseEntity(service.updateSysMailAtKey(key, sysMailFormData), HttpStatus.OK)
    }

Parameter SysMailFormData is optional, which it shouldn't.

Command line used for generation
java -jar openapi-generator-cli.jar \
    generate \
    --input-spec ./sysmails-1.x.yml \
    --output ../ \
    --generator-name kotlin-spring \
    --config config.kotlin.json \
    --enable-post-process-file \
    --model-name-suffix Dto

config.kotlin.json

{
  "serviceInterface": true,
  "swaggerAnnotations": false,
  "serviceImplementation": true,
  "gradleBuildFile": false
}
Steps to reproduce

Run generator with configuration above

Related issues/PRs

Here someone reported the other way round: required:false resulted in non-optional parameters.

https://github.com/OpenAPITools/openapi-generator/issues/1106

Suggest a fix/enhancement

The code template should be adjusted.

Assignee
Assign to
Time tracking