Skip to content

Commit f5d888c

Browse files
committed
Use $ref to definitions in oneOf for Parameter loc
I'd like to use a JSON Merge Patch (RFC 7386) document to add keywords for the OAS compliance parser project. JSON Merge Patch does not handle arrays well, so moving these to their own definitions and having the "oneOf" directly in the "Parameter" definition (avoiding duplicate "description" fields on the same instance location) allows merge-patch to work where I need it. Otherwise, JSON Patch (RFC 6902) will be needed, which is less intuitive. The 3.1 schema already uses "$defs" here.
1 parent bcb0c45 commit f5d888c

File tree

1 file changed

+47
-37
lines changed

1 file changed

+47
-37
lines changed

schemas/v3.0/schema.yaml

+47-37
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,12 @@ definitions:
331331
patternProperties:
332332
'^x-': {}
333333
additionalProperties: false
334-
334+
dependencies:
335+
discriminator:
336+
anyOf:
337+
- required: [allOf]
338+
- required: [anyOf]
339+
- required: [oneOf]
335340
Discriminator:
336341
type: object
337342
required:
@@ -706,46 +711,51 @@ definitions:
706711
allOf:
707712
- $ref: '#/definitions/ExampleXORExamples'
708713
- $ref: '#/definitions/SchemaXORContent'
709-
- $ref: '#/definitions/ParameterLocation'
710-
711-
ParameterLocation:
712-
description: Parameter location
713714
oneOf:
714-
- description: Parameter in path
715-
required:
716-
- required
717-
properties:
718-
in:
719-
enum: [path]
720-
style:
721-
enum: [matrix, label, simple]
722-
default: simple
723-
required:
724-
enum: [true]
715+
- $ref: '#/definitions/PathParameter'
716+
- $ref: '#/definitions/QueryParameter'
717+
- $ref: '#/definitions/HeaderParameter'
718+
- $ref: '#/definitions/CookieParameter'
725719

726-
- description: Parameter in query
727-
properties:
728-
in:
729-
enum: [query]
730-
style:
731-
enum: [form, spaceDelimited, pipeDelimited, deepObject]
732-
default: form
720+
PathParameter:
721+
description: Parameter in path
722+
required:
723+
- required
724+
properties:
725+
in:
726+
enum: [path]
727+
style:
728+
enum: [matrix, label, simple]
729+
default: simple
730+
required:
731+
enum: [true]
733732

734-
- description: Parameter in header
735-
properties:
736-
in:
737-
enum: [header]
738-
style:
739-
enum: [simple]
740-
default: simple
733+
QueryParameter:
734+
description: Parameter in query
735+
properties:
736+
in:
737+
enum: [query]
738+
style:
739+
enum: [form, spaceDelimited, pipeDelimited, deepObject]
740+
default: form
741741

742-
- description: Parameter in cookie
743-
properties:
744-
in:
745-
enum: [cookie]
746-
style:
747-
enum: [form]
748-
default: form
742+
HeaderParameter:
743+
description: Parameter in header
744+
properties:
745+
in:
746+
enum: [header]
747+
style:
748+
enum: [simple]
749+
default: simple
750+
751+
CookieParameter:
752+
description: Parameter in cookie
753+
properties:
754+
in:
755+
enum: [cookie]
756+
style:
757+
enum: [form]
758+
default: form
749759

750760
RequestBody:
751761
type: object

0 commit comments

Comments
 (0)