Description
I was trying to implement the spec as part of Apigee's apigee-go-gen tool, and ran into this issue while creating some test cases.
The example JSON Path expression from this example: https://github.com/OAI/Overlay-Specification/blob/main/versions/1.0.0.md?plain=1#L197 could not be parsed successfully by library at from: https://github.com/vmware-labs/yaml-jsonpath
$.paths.*.get.parameters[[email protected]=='filter' && @.in=='query']
I had to modify it by adding grouping parenthesis, and then it worked:
$.paths.*.get.parameters[?(@.name=='filter' && @.in=='query)']
I also tried with various other online tools and it seems like they all need parenthesis. I am not a JSONPath expert, so I am opening this issue. Please clarify or fix the example.
As a separate nitpick ... if I understand correctly, the example is attempting to change the schema property to use a $ref instead of it being inlined. However, that's not what's it's actually doing, it's adding the $ref field to the schema object. So you end up with a schema object that is both in-lined, and also $ref. Should not the example first remove the schema object, and then update the operation with the schema using $ref, ... e.g.
overlay: 1.0.0
info:
title: Update many objects at once
version: 1.0.0
actions:
- target: $.paths.*.get
update:
x-safe: true
- target: $.components.schemas
update:
filterSchema:
type: string
default: available
enum:
- available
- pending
- sold
- target: $.paths.*.get.parameters[?(@.name=='filter' && @.in=='query')].schema
remove: true
- target: $.paths.*.get.parameters[?(@.name=='filter' && @.in=='query')]
update:
schema:
$ref: '#/components/schemas/filterSchema'