Reputation: 2854
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?
Upvotes: 65
Views: 145318
Reputation: 5078
In my case it had the wrong indentation for the example. It was:
content:
application/json:
schema:
$ref: '#/components/schemas/someresponse'
examples:
example1:
value:
param1: "some string"
param2: "123"
Rather than:
content:
application/json:
schema:
$ref: '#/components/schemas/someresponse'
examples:
example1:
value:
param1: "some string"
param2: "123"
But the VScode open api preview with swaggerUI didn't show any errors and everything looked valid.
Upvotes: 2
Reputation: 51
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.
Upvotes: 5
Reputation: 1899
In my case I was missing parameter definition in api definition
- name: parameterName
in: query
description: parameter's description here.
required: false
schema:
type: string
Upvotes: 2
Reputation: 743
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.
Upvotes: 34
Reputation: 355
The syntax requires might require two parameters, as mentioned by Helen required: true
is need so is type:DataType
. The error is misleading.
Upvotes: 0
Reputation: 98001
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.
Upvotes: 41