0
votes

Generted swagger.json is missing securityscheme component. When I copy the url json and paste it in swagger editor, I get - enter image description here

The generated yaml in swagger.json file is like below -

openapi: 3.0.3
info:
  title: Test YAML
  version: 1.0.0
servers:
  - url: 'localhost'
    description: Inferred Url
tags:
  - name: device-controller
    description: the device API
  - name: api-controller
    description: API
paths:
  /api/device:
    get:
      tags:
        - ABCD
      summary: Device SUMMARY.
      description: Device DESCRIPTION.
      operationId: getDevice
      parameters:
        - name: X-Request-ID
          in: header
          description: 'request Id, will return in the response headers, and appear in logs'
          required: false
          schema:
            type: string
      responses:
        '200':
          description: list of commands set
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommandSet'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - BasicAuth: []
components:
  schemas:
    CommandSet:
      title: CommandSet
      required:
        - name
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 07da6fd8-5abc-4dc4-bcec-df309d123d17
        name:
          type: string
          example: Deny
    Error:
      title: Error
      type: object
      properties:
        code:
          type: string
          example: '400'
        message:
          type: string
          example: Bad Request

it is missing

components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic

I have defined under resource folder the following yaml file

openapi: 3.0.2
info:
  title: Policy APIs
  description: 'Policy APIs for manage Policy Sets, authorization policies, authentication policies, and policy elements.'
  version: 1.0.0
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
  contact:
    email: [email protected]
servers:
  - url: 'https://{server}/v1/policy'
    variables:
      server:
        default: localhost
        description: The host where the API is rooted
security:
  - BasicAuth: []
paths:
  /device-admin/command-sets:
    parameters:
      - $ref: '#/components/parameters/XRequestIdHeader'
    get:
      summary: Device Admin - Return list of command sets.
      description: Device Admin - Return list of command sets.
      operationId: getDeviceAdminCommandSets
      tags:
        - Device Administration - Command Set
      responses:
        '200':
          description: list of commands set
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommandSet'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
  parameters:
    XRequestIdHeader:
      in: header
      name: X-Request-ID
      description: 'request Id, will return in the response headers, and appear in logs'
      schema:
        type: string
      required: false
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example: '{code: 404, message: The specified resource was not found}'
  schemas:
    CommandSet:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: DenyAllCommands
          description: Command used in Device Admin authorization policies
        id:
          type: string
          format: uuid
          example: 07da6fd8-5abc-4dc4-bcec-df309dbf4d17
    Error:
      type: object
      properties:
        code:
          type: string
          example: 400
        message:
          type: string
          example: Bad Request

How to get the securityscheme component in the swagger url definition. I am using oas 3.x and openapi generator tool to generate the java code.

1

1 Answers

0
votes

In OpenAPI 3.0, you use the servers array to specify one or more base URLs for your API. servers replaces the host, basePath and schemes keywords used in OpenAPI 2.0. Each server has an url and an optional Markdown-formatted description.

https://swagger.io/docs/specification/api-host-and-base-path/

Add server array in swagger spec