Example 3 - Overriding keys example
This example shows how the objects imported via an $xref key can have additional keys which will be merged in with the referenced object.
Input
input.yaml
paths:
/thing:
get:
# hashes in the path toggle between '/'-as-JSON-Pointer separators
# and '/' as characters in the key
$xref: 'paths.yaml#/paths/#/thing#/get'
post:
# objects defined by xref can have other fields defined
# which are merged in with the xref'ed object
$xref: 'paths.yaml#/paths/#/thing#/post'
parameters:
old-parameter:
description: some old parameter whose definition has changed
new-parameter:
description: the new parameter in v2 of the API that isn't in v1
paths.yaml
paths:
/thing:
get:
operationId: getThings
description: get all the things
parameters:
responses:
200:
schema:
type: object
title: getThingsOKResponse
properties:
status:
description: OK
type: string
thing:
type: array
items:
$ref: 'objects.yaml#/definitions/ThingObject'
post:
operationId: addThing
description: |
Adds a new `Thing`.
* Things must be uniquely identifiable by `name`.
* The `id` of the thing must be empty; the newly created `id` will be returned in the response object.
parameters:
thing:
$ref: 'objects.yaml#/definitions/ThingObject'
old-parameter:
description: this description will be overridden in input.yaml
responses:
200:
schema:
type: object
title: getThingsOKResponse
properties:
status:
description: OK
type: string
thing:
type: array
items:
$ref: 'objects.yaml#/definitions/ThingObject'
Output
---
paths:
/thing:
post:
operationId: addThing
description: |
Adds a new `Thing`.
* Things must be uniquely identifiable by `name`.
* The `id` of the thing must be empty; the newly created `id` will be returned in the response object.
responses:
200: null
schema:
type: object
title: getThingsOKResponse
properties:
thing:
type: array
items:
$ref: objects.yaml#/definitions/ThingObject
status:
type: string
description: OK
parameters:
thing:
$ref: objects.yaml#/definitions/ThingObject
old-parameter:
description: some old parameter whose definition has changed
new-parameter:
description: the new parameter in v2 of the API that isn't in v1
get:
operationId: getThings
description: get all the things
responses:
200: null
schema:
type: object
title: getThingsOKResponse
properties:
thing:
type: array
items:
$ref: objects.yaml#/definitions/ThingObject
status:
type: string
description: OK
parameters: null