T K
T K

Reputation: 11

Describing properties in swagger example

Try to add multiline example in definition of JSON response in swagger. Need to get structure like

{
    "result": {
        "urls": {
            "site/index": true,
            "site/create": true,
            "site/update": true,
            "site/delete": true,
            "site/types": true,
            "site/save": false
        }
    }
} 

but now everything I've got only

{
  "result": {
    "urls": [
      {
        "site/index": true
      },
      {
        "site/create": true
      },
      {
        "site/update": true
      },
      {
        "site/delete": true
      },
      {
        "site/types": true
      },
      {
        "site/save": false
      }
    ]
  }
}

My YAML file looks like

swagger: "2.0"
info:
  description: "xxx"
  version: 1.2.8
  title: "xxx"
host: "xxx"
basePath: "xxx"
schemes:
- "https"

consumes:
  - application/json
produces:
  - application/json            

  /site/check:
    post:
      summary: ""
      description: ""
      parameters:
        - in: body
          name: urls
          required: true
          schema:
            $ref: '#/definitions/CheckAccess'
      responses:
        200:
          description: OK
          schema:
            $ref: '#/definitions/CheckAccessOKResponse'


definitions:      
  CheckAccess:
    properties:
      urls:
        type: string 
        example:
          - "site/index"
          - "site/create"
          - "site/update"
          - "site/delete"
          - "site/types"
          - "site/save"
    required:  
      - urls

  CheckAccessOKResponse:
    properties:
      result:
        type: object
        properties:
          urls:
            type: object
            example:
              - "site/index": true
              - "site/create": true
              - "site/update": true
              - "site/delete": true
              - "site/types": true
              - "site/save": false

Strings in example can be different, it's just a block of paths. How can I fix my example or structure of CheckAccessOKResponse to get the needed view of JSON? Thank you.

Upvotes: 1

Views: 805

Answers (1)

Helen
Helen

Reputation: 97991

Remove the leading dashes from the example value list. Dashes indicate array items, you don't need that.

Also, result.urls is currently defined as a free-form object, but you probably want a string-to-boolean map instead.

  CheckAccessOKResponse:
    properties:
      result:
        type: object
        properties:
          urls:
            type: object
            additionalProperties:  # <--- this means the object is
              type: boolean        #      a string-to-boolean map
            example:
              "site/index": true   # <--- no leading dashes
              "site/create": true
              "site/update": true
              "site/delete": true
              "site/types": true
              "site/save": false

Upvotes: 1

Related Questions