Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions upgrading/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ Each version upgrade guide covers:

- [Upgrading from OpenAPI 3.0 to 3.1](v3.0-to-v3.1): Learn about the significant changes and how to migrate your API descriptions.
- [Upgrading from OpenAPI 3.1 to 3.2](v3.1-to-v3.2): Discover the latest features and migration path for the newest version.
- [Upgrading from Overlay 1.0 to 1.1](overlay-v1.0-to-v1.1): Discover the latest features and migration path for the newest version.

Choose the appropriate guide based on your current OpenAPI version and target version.
110 changes: 110 additions & 0 deletions upgrading/overlay-v1.0-to-v1.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
layout: default
title: Overlay - Upgrading Between Versions 1.0 and 1.1
parent: Upgrading Between Versions
nav_order: 1
---

# Overlay - Upgrading Between Versions 1.0 and 1.1

Overlay 1.1 adds powerful new copy features, and upgrading from 1.0 is as simple as updating the version number. This guide walks you through that quick transition.

## Getting started

Begin by updating the version number in your Overlay document. Locate this line in your JSON or YAML file:

```yaml
overlay: 1.0.0
```

Update it to:

```yaml
overlay: 1.1.0
```

## Copy elements from the OpenAPI document
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not include the optional features in the upgrade guide. Signpost the docs by all means, but let's put the actual upgrading things in this document (or at least, make it clear that these are optional steps and put them later in the document). Many users will not need this feature but may want to upgrade.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the main appeal of upgrading is to use the copy feature. Yes we have additional minor improvements in this new version, and some required "technical upgrades" that I suspect will only impact very few users.

May I suggest dividing this document in two sections: the required upgrade steps, i.e. things won't works in 1.1 if you don't take these steps. And the optional steps, those are things you want to consider as you've upgraded to v1.1 (copy, info description, etc...)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I just remember something. I used the upgrade guide for OpenAPI from v3.1 to v3.2 as an inspiration to write this one.
It's FULL of optional upgrades (like using the new query operation for instance) that people might want to consider and benefit from, but that are not strictly required to get a document compliant with the 3.2.0 spec.

So I'm not sure why this upgrade guide, which will "sit" right next to the OpenAPI one, should be any different in terms of content?


The following example illustrates how you can now use the copy action to update a target node with a value from the document being processed. Saving you from having duplicate definitions in your overlay document.

```yaml
overlay: 1.0.0
info:
title: Copy a schema component
version: 1.1.0
actions:
- target: '$.components.schemas'
description: Ensure the target schema is present
update:
Bar: {}
- target: '$.components.schemas['Bar']'
copy: '$.components.schemas['Foo']'
description: Copy the Foo Schema to Bar
```

## Name the file according to the convention for better tooling integration

You might want to rename your overlay documents to end with `.overlay.yaml|json` to get better integration with tooling.

## Ensure your JSONPath are RFC 9535 for better interoperability

### Missing square brackets around property names

This example JSONPath query expression, which filters path items based on an OpenAPI extension property:

```jsonpath
$.paths.*.get[?(@.x-oai-traits[?(@ == 'paged')])]
```

Should in fact be:

```jsonpath
$.paths.*.get[?(@['x-oai-traits'][?(@ == 'paged')])]
```

Because square brackets are required for property selection.

### Use of the undefined `in` keyword

This example JSONPath query expression, which selects tags matching *Enterprise-Only*:

```jsonpath
$.paths..[?('Enterprise-Only' in @.tags)]
```

Should instead be:

```jsonpath
$.paths..[?(@.tags[?(@ == 'Enterprise-Only')])]
```

Since the `in` keyword is undefined in the RFC.

## Removing/Updating primitive values is now fully supported
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did we add this feature and do the tools support it?

Copy link
Member Author

@baywet baywet Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this PR OAI/Overlay-Specification#225
And yes clio supports it, some others do


```yaml
overlay: 1.1.0
info:
title: Targeted Overlay
version: 1.0.0
actions:
- target: $.paths['/foo'].get.description
update: This is the new description
- target: $.paths['/bar'].get.description
update: This is the updated description
```

Before it used to require updating the parent object.

## Add a description to your overlay document

The Overlay information section now supports a new description field. Adding a detailed description to your overlay documents is a great way to convey the purpose and nature of your documents.

```yaml
overlay: 1.1.0
info:
title: Overlay with description
version: 1.0.0
description: This overlay document has a long description thanks to the new field.
actions: []
```