OpenAPI 是否允许 $ref 到_specific_枚举值?

Does OpenAPI allow a $ref to a _specific_ enum value?

假设在我的 OpenAPI v3 描述中,我有以下 /componenets/schemas 条目(使用 YAML)格式:

WidgetTypes:
  type: string
  enum:
    - WIDGET_A
    - WIDGET_B
    - WIDGET_C

WidgetTypes 模式因此是一个命名的(即值 $ref)枚举 'class'。在 API 规范的其他各个地方,我们现在可以引用这些枚举值,例如也许有一个 API 路径,其中一个路径元素必须来自 WidgetTypes 集合。

现在,我还有一些额外的模式(即对象数据模型),并且可能存在 specific WidgetType 值是 constant 该对象类型。一个例子:

MySpecificWidgetA:
  type: object
  properties:
    someField1:
      type: string
    someField2:
      type: number
    widgetType:
      type: string
      enum:
        - WIDGET_A

这感觉像是完成此任务的天真的方法,因为现在 MySpecificWidgetAwidgetType 字段是一个字符串,来自可能的 WidgetType 的集合,但没有实际提到 WidgetType 强制执行此 。 在精神上,我想断言 MySpecificWidgetA.widgetType 特定值 来自 WidgetType 枚举模式(在本例中为 WIDGET_A) . 仅使用 $ref: '#/components/schemas/WidgetType' 通过验证,但没有完成我想要的:它声明 widgetType 只是来自该集合的值......我希望它是 restricted 该集合的值(即常量)。

我已经尝试用 $ref 其他几种方法来获得 widgetType 的值,包括(但没有成功):

$ref: '#/components/schemas/WidgetType/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/WIDGET_A'
$ref: '#/components/schemas/WidgetType/enum/0' 

(最后一个不是很有用,只是测试了 $ref 使用的确切 JSON 指针格式。)

None 以上这些尝试通过了 OpenAPI v3 验证...有谁知道是否可以(通过 $ref 或其他机制)引用 来自定义的枚举架构元素的特定值

JSON 架构不允许这样做。 $ref 只允许解析为其他模式对象,不能解析为单个数据点。