Skip to content

Issue with enum query parameter with a default value #287

Open
@AlJohri

Description

@AlJohri

If a query parameter is of type enum and has a default value, the swagger parameter for default should be appropriately set and required should be set to true.

Here is an example below.

what's happening

(GET "/all/" request
     :description "Return a list of articles."
     :return [(dissoc t/Article :is_html :text)]
     :responses default-responses
     :query-params [{sort :- (describe (s/enum :published_at :last_processed_at) "The sort type. Defaults to published_at.") "published_at"}]
     (return (domain/get-all-articles db (org request) :days 1)))

The sort parameter above can be either published_at or last_processed_at where it defaults to the former.

The JSON output for the route above is:

"parameters": [
  {
    "in": "query",
    "name": "sort",
    "description": "The sort type. Defaults to published_at.",
    "required": false,
    "type": "string",
    "enum": [
      "last_processed_at",
      "published_at"
    ]
  }
]

And the UI renders like this:

screen shot 2017-03-18 at 9 59 34 pm

expectation

I would expect the select box in the UI to start off with the published_at pre-selected and not allow a nil option.
I would expect the json output to have required set to true and a default value set to published_at.

Thanks for your time!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugupstream-problemThe problem is caused by a bug in a dependency.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions