# Create update methods (add,replace,merge,delete)? Is merge necessary?
# Multiple additions or updates to the same target is more efficient with merge

# Different than JSON Patch because is works in JSON and YAML
# Has info object and spec version
# values
    
overlay: 1.0.0
info:
  title: An example of an overlay that captures changes to an API
  version: 1.0.0
updates:
# Add a property to a schema
- target: components.schemas."todo".properties   
  merge:
    createdBy:
      type: string
# Add constraints to a schema
- target: components.schemas."todo"
  merge:
    additionalProperties: false
- target: components.schemas."todo"
  merge:
    type: ["object","null"]
#Change a schema
- target: components.schemas."todo"
  replace:
    type: integer
# Add multiple constraints to a schema using merge
- target: components.schemas."todo"
  merge:
    additionalProperties: false
    type: ["object","null"]
# Add multiple constraints to a schema using merge
- target: components.schemas."todo"
  merge:
    additionalProperties: false
    type: ["object","null"]
    properties: 
      someprop:
        type: string
# Add an operation
- target: paths."/foo"
  add:  
    delete:
        description: delete a foo
        responses:
          200: 
            description: ok
# Add a path
- target: paths
  add:  
    "/items":
      get:
        responses:
          200:
            description: ok
# Add an optional query parameter
- target: paths."/bar".parameters
  add:  
    name: skip
    in: query
    type: string
# Mark an operation as deprecated

# Change the value of a JSON schema constraint
# Update the version of the API
# Change the license of an API
# Add support for a new request media type
# Add support for a new response media type
