Swagger Editor shows the "Schema error: should NOT have additional properties" error for a path parameter

79,912

Solution 1

The error message is misleading. The actual error is that your path parameter is missing required: true. Path parameters are always required, so remember to add required: true to them.

Solution 2

Had the same problem. I accidentally mixed up the syntax from Swagger 2.0 with Openapi 3.0.x. In Openapi 3.0.x, definitions are redefined as components. In the online editor you can click on the button Edit > Convert to OpenAPI 3 to use Openapi 3.0.x.

Read more about components here.

Remark:

OAS 3 is the latest version of the OpenAPI Specification.

Solution 3

For me the cause of the error was a missing a leading slash in the path (internal/resource instead of /internal/resource).

And yes the error message is extremely unhelpful.

Share:
79,912

Related videos on Youtube

Emanuel Ey
Author by

Emanuel Ey

SOreadytohelp

Updated on February 14, 2022

Comments

  • Emanuel Ey
    Emanuel Ey about 2 years

    I'm using http://editor.swagger.io to design an API and I get an error which I don't know how to address:

    Schema error at paths['/employees/{employeeId}/roles'].get.parameters[0]
    should NOT have additional properties
    additionalProperty: type, format, name, in, description
    Jump to line 24
    

    I have other endpoints defined in a similar way, and don't get this error. I wondered if I had some issue with indentation or unclosed quotes, but that doesn't seem to be the case. Google also did not seem to provide any useful results.

    swagger: "2.0"
    info:
      description: Initial draft of the API specification
      version: '1.0'
      title: App 4.0 API
    host: api.com
    basePath: /v1
    tags:
      - name: employees
        description: Employee management
    schemes:
      - https
    paths:
      /employees/{employeeId}/roles:
        get:
          tags:
            - employees
          summary: "Get a specific employee's roles"
          description: ''
          operationId: findEmployeeRoles
          produces:
            - application/json
          parameters:
            - name: employeeId   <====== Line 24
              in: path
              description: Id of employee whose roles we are fetching
              type: integer
              format: int64
          responses:
            '200':
              description: successful operation
              schema:
                type: array
                items:
                  $ref: '#/definitions/Role'
            '403':
              description: No permission to see employee roles
            '404':
              description: EmployeeId not found
    

    Any Hints?

  • absay
    absay over 5 years
    I have required: true in my definition and I'm still getting that error.
  • Mocas
    Mocas over 3 years
    In my case, I had required true and still the same error, found that the issue was indentation of get misplaced
  • Wayne Conrad
    Wayne Conrad almost 3 years
    The tip to use the online editor to get a better error message was key to solving my problem.
  • Akhha8
    Akhha8 over 2 years
    your link to editor.swagger.io works, better error messages, thanks!