I'm trying to define query parameters that reference an existing schema but override it's default value, but this override seems to be ignored. Is it possible to do this?
For example, I have a reusable schema defined as
PageNumber:
type: integer
example: 10
I have various endpoints that reference this schema as query parameters, however they each have their own default value; some endpoints default to 10, others default to 20, etc.
/example/1:
get:
parameters:
- name: pageNumber
in: query
schema:
$ref: '#/components/schemas/PageNumber'
default: 10
responses:
...
/example/2:
get:
parameters:
- name: pageNumber
in: query
schema:
$ref: '#/components/schemas/PageNumber'
default: 20
responses:
...
The problem is that the default
value seems to be ignored when a parameters schema references an existing schema.
However if I update the parameters no not reference the existing schema and instead define the schema inline, the default value is used:
/example/1:
get:
parameters:
- name: pageNumber
in: query
schema:
type: number
default: 10
Is it possible to override and apply this default value?
Try using allOf
paths:
/example-1:
get:
tags:
- stack
summary:
description:
operationId:
parameters:
- name: pageNumber
in: query
schema:
allOf:
- $ref: "#/components/schemas/PageNumber"
- default: 20
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
components:
schemas:
PageNumber:
type: number
example: 10
default: 10
You can see the example
still resolves from the component schema but the default
value is overridden