OpenApi required property in nested objects not working

16,604

Solved!

I used components and schemas, but I think this could be a bug, opened an issue on swagger editor repo: https://github.com/swagger-api/swagger-editor/issues/1952

openapi: 3.0.0
info:
    title: Example API
    description: Example API specification
    version: 0.0.2
servers:
  - url: https://example/api

paths:
  /secure/oauth/services/v2/Nested:
    post:
      summary: Try nested
      description: Used to post Nested obj
      requestBody:
        required: true
        content:
          application/json:
            schema:
                type: object 
                required:
                - id
                - nestedobj
                properties:
                    id:
                      type: integer
                      description: id of nested obj
                    nestedobj:
                      $ref: '#/components/schemas/nestedobj'
      responses:
        '200':
          description: Nested object OK

components:
  schemas:
    element:
      type: object
      required:
      - fieldArray1
      properties:
        fieldArray1:
          type: string
          description: field array
        fieldArray2:
          type: number
    nestedobj:
      type: object
      required:
      - field1
      description: nested object
      properties:
        field1:
          $ref: '#/components/schemas/woah'
        field2:
          type: string
    woah:
      type: object
      required:
      - woahthis
      description: woah this
      properties:
        field3:
          type: array
          items:
            $ref: '#/components/schemas/element'
        woahthis:
          type: number
          description: numeber woah this

EDIT 23/08/21: I opened a bug in swagger-codegen github in april 2019 but it still has no response whatsoever

Share:
16,604
mbianchidev
Author by

mbianchidev

It's all in my website :D

Updated on June 04, 2022

Comments

  • mbianchidev
    mbianchidev almost 2 years

    I need to describe an api having in request body an object with required fields and one of these fields it's an object itself having another set of required fields.

    I'm using open api v3 and swagger editor (https://editor.swagger.io/) After i put my .yaml file onto the editor I generate an html client (> generate client > html). Then I open the static page index.html generated in the .zip file obtaning this schema:

    Table of Contents
    body
    secureoauthservicesv2Nested_nestedobj
    body
    id
    Integer id of nested obj
    nestedobj
    secureoauthservicesv2Nested_nestedobj
    secureoauthservicesv2Nested_nestedobj
    nested object
    field1 (optional)
    String
    field2 (optional)
    String
    

    I expect field1 to be required and field2 to be optional but it's not.

    This is my .yaml file

    openapi: 3.0.0
    info:
        title: Example API
        description: Example API specification
        version: 0.0.1
    servers:
      - url: https://example/api
    
    paths:
      /secure/oauth/services/v2/Nested:
        post:
          summary: Try nested
          description: Used to post Nested obj
          requestBody:
            required: true
            content:
              application/json:
                schema:
                    type: object 
                    required:
                    - id
                    - nestedobj
                    properties:
                        id:
                          type: integer
                          description: id of nested obj
                        nestedobj:
                          type: object 
                          required:
                          - field1
                          description: nested object
                          properties:
                            field1:
                              type: string
                            field2:
                              type: string
          responses:
            '200':
              description: Nested object OK