How to define an optional parameter in path using swagger

Hedeshy picture Hedeshy · Jan 26, 2016 · Viewed 62.2k times · Source

There is a function in my REST web service working with GET method and it has two optional parameters.

I tried to define it in Swagger but I encountered an error, Not a valid parameter definition, after I set the required as false.

I found out that if I set the required value as true the error will be gone. Here is a sample of my Swagger code.

...
paths:
  '/get/{param1}/{param2}':
    get:
      ...
      parameters:
      - name: param1
        in: path
        description: 'description regarding param1'
        required: false
        type: string
      - name: param2
        in: path
        description: 'description regarding param2'
        required: false
        type: string

I didn't experience this with parameters in body or the the ones in query. I think this problem is only related to parameters in path. I could not find any solution in swagger specification files either.

Is there any other way to define optional parameters in Swagger or do I have any mistake in my code?

Any help would be appreciated.

Answer

William Cheng picture William Cheng · Jan 27, 2016

Given that path parameter must be required according to the OpenAPI/Swagger spec, you can consider adding 2 separate endpoints with the following paths:

  • /get/{param1}/{param2} when param2 is provided
  • /get/{param1}/ when param2 is not provided