Description
Hi there,
I find myself using the power of $ref
to reference external components in my API definitions, which is great as allows component reuse. But I find myself with this kind of code in my API definitions, where the links to external components are very long and hard to read:
/foo/validate/{bar}:
post:
tags:
- Foo
summary: Validate Foo
operationId: validateFoo
parameters:
# path
- $ref: '#/components/parameters/bar'
requestBody:
$ref: '#/components/requestBodies/FooValidation'
responses:
'200':
$ref: '#/components/responses/FooValidation'
'400':
$ref: 'http://repos.my-organization.foo/artifactory/libs-release-local/foo/myproject/api/contract/apicomponents-errors/1.0/apicomponents-errors-1.0-api.yaml#/components/responses/BadRequest'
'401':
$ref: 'http://repos.my-organization.foo/artifactory/libs-release-local/foo/myproject/api/contract/apicomponents-errors/1.0/apicomponents-errors-1.0-api.yaml#/components/responses/Unauthorized'
'403':
$ref: 'http://repos.my-organization.foo/artifactory/libs-release-local/foo/myproject/api/contract/apicomponents-errors/1.0/apicomponents-errors-1.0-api.yaml#/components/responses/Forbidden'
'500':
$ref: 'http://repos.my-organization.foo/artifactory/libs-release-local/foo/myproject/api/contract/apicomponents-errors/1.0/apicomponents-errors-1.0-api.yaml#/components/responses/InternalServerError'
I would really like to know if is there any way to define the base-path of that URLs in some kind of variable or YAML tag, so I could lead to $ref
s of this form:
$ref: '{apicomponents-errors}#/components/schemas/Something'
where I could define apicomponents-errors: http://...
just once.
This is not only for better readability, but to allow update the versions all-in-once, as you can see from this example that the referenced components are versioned by its URL.
I have no idea if such kind of feature exists or can be implemented in OAS 3.
P.S. This does not only applies to schemas, but any kind of ref.