在参数内使用ENUM定义(SWAGGER)

时间:2017-04-12 21:04:10

标签: swagger jsonschema

我希望能够使用此ENUM定义:

  goalStatus:
    type: string
    enum:
      - ACTIVE
      - COMPLETED
      - FULFILLED
      - DELETED

...在参数定义中,我继续收到错误:

get:
  description: Returns all goals for a customer
  operationId: listGoals
  parameters:
    - name: status
      in: query
      description: filter by goal status
      required: false
      schema:
        $ref: "#/definitions/goalStatus"

错误:

  

Swagger错误:不是有效的参数定义

1 个答案:

答案 0 :(得分:2)

不幸的是,OpenAPI 2.0(fka.Swagger)没有使用架构对象定义query参数。因此,您不能使用对goalStatus定义的引用(它适用于body参数)。

您可以做的是定义一个可重用的参数,但如果您想在其他定义中重用此枚举,则必须将其定义两次(一次在参数中定义一次)。即将推出的OpenAPI 3.0版本允许使用模式定义所有参数类型来解决此问题。

以下是使用可重用参数的2.0版示例:

swagger: '2.0'

info:
  version: 1.0.0
  title: Parameter with enum example

paths:
  /goals:
    get:
      description: Returns all goals for a customer
      operationId: listGoals
      parameters:
        - $ref: "#/parameters/goalFilter"
      responses:
        200:
          description: OK

parameters:
  goalFilter:
    name: status
    in: query
    description: filter by goal status
    required: false
    type: string
    enum:
      - ACTIVE
      - COMPLETED
      - FULFILLED
      - DELETED