openapi: "3.0.3" info: title: Deep recursive cyclic refs example version: "1.0" paths: /foo: $ref: ./paths/foo.yml components: schemas: FilterColumnIncludes: type: object properties: $includes: $ref: '#/components/schemas/FilterPredicate' additionalProperties: false maxProperties: 1 minProperties: 1 FilterPredicate: oneOf: - $ref: '#/components/schemas/FilterValue' - type: array items: $ref: '#/components/schemas/FilterPredicate' minLength: 1 - $ref: '#/components/schemas/FilterPredicateOp' - $ref: '#/components/schemas/FilterPredicateRangeOp' FilterPredicateOp: type: object properties: $any: oneOf: - type: array items: $ref: '#/components/schemas/FilterPredicate' $none: oneOf: - $ref: '#/components/schemas/FilterPredicate' - type: array items: $ref: '#/components/schemas/FilterPredicate' additionalProperties: false maxProperties: 1 minProperties: 1 FilterPredicateRangeOp: type: object properties: $lt: $ref: '#/components/schemas/FilterRangeValue' additionalProperties: false maxProperties: 2 minProperties: 2 FilterRangeValue: oneOf: - type: number - type: string FilterValue: oneOf: - type: number - type: string - type: boolean