-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Draft release notes for 3.2.0 and 3.1.2 #4600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@lornajane So far looks good to me. |
Co-authored-by: Vincent Biret <[email protected]>
should add more detailed info on new keywords in MediaType object. |
@jeremyfiel can you say something about what's missing? (I obviously don't know or it wouldn't be missing ...) I did just update with some of the changes from the last couple of weeks, but I don't think there is anything here that would match what you're asking for. |
I'd like to propose a slightly different ordering to improve the storytelling around this release:
This would give us a flow more like the following: 3.2 UpdatesTagsData Modeling and RepresentationOAS v3.2 makes significant progress towards more consistent, modular, and extensible media type and parameter support, while also expanding the set of media types supported in response to both emerging and legacy use cases. In addition, we have removed ambiguity regarding how to present examples in a variety of complex scenarios. Media Type RegistrySequential and Streaming Media TypesParameters and HeadersMultipart Media TypesXMLCode GenerationExample ObjectAdditional Major AdditionsNote: This subsection ordering within this section makes sense to me, but I do not feel strongly about it. MethodsDocument Identification and Reference ResolutionSecuritySmaller ImprovementsServers, Paths, and Runtime ExpressionsResponsesUpdated to New Versions of Other Standardsetc. |
There's about 50% more spec change since I wrote this draft, re ordering definitely in our future! Thanks for the outline , I'll be trying to catch up this week |
Co-authored-by: Henry Andrews <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
Co-authored-by: Henry Andrews <[email protected]>
Started adding the suggested structure (in 3 parts: digestible high level features, the masterpieces of data modeling, and then everything else), but I note that we don't have all the sections you mentioned @handrews , in particular:
|
Co-authored-by: Ralf Handl <[email protected]>
Co-authored-by: Ralf Handl <[email protected]>
…ecent minor additions
@handrews Could you take a look at the multipart media types section I just added? We had it as |
@lornajane Nice job!! Looks GREAT to me. |
Co-authored-by: Ralf Handl <[email protected]>
This is chaos, I'll be restructuring to make much slimmer release notes, an upgrade guide for the learn site and an announcement blog post (with the option to drill in with blog posts on more topics). I don't have a lot of time for the next week or so but I'll push updates when I can - since I'll mostly be moving content around, feedback on this current version is still very helpful if you have any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! Only minor suggestions.
Co-authored-by: Ralf Handl <[email protected]>
- Other URL/URI handling does not change between 3.1 and 3.2 (but bears a recap in case you're wondering how it all goes together): | ||
- Other URLs, such as to external documentation or a license, are resolved against the base URI. | ||
- Relative links inside `description` fields are resolved relative to their rendered context, such as your published API documentation page. | ||
- API endpoints are resolved against the URL in the Server Object, which itself might be relative and resolved against the base URI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- API endpoints are resolved against the URL in the Server Object, which itself might be relative and resolved against the base URI. | |
- API endpoints (such as /paths entries, and authentication URLs) are resolved against the URL in the Server Object, which itself might be relative and resolved against the base URI. |
|
||
- Support for sequential media types such as `text/event-stream` for server-sent events (SSE) and `multipart/mixed`, `application/jsonl`, `application/json-seq` and others for sequential data. | ||
- Responses can be a repeating data structure, and are treated as if they are an array of schema objects. | ||
- Use `itemSchema` in a mediatype entry to describe each item. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Use `itemSchema` in a mediatype entry to describe each item. | |
- Use `itemSchema` in a media-type entry to describe each item. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why hyphenation? AFAICT we don't hyphenate it anywhere in the OAS. I'd go with:
- Use `itemSchema` in a mediatype entry to describe each item. | |
- Use `itemSchema` in a Media Type Object to describe each item. |
to avoid any confusion over what an "entry" is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We also don't say "mediatype" either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@karenetheridge agreed
#### Describe examples in both structured and serialized forms | ||
|
||
- The Example Object (used in `examples` fields) gets two new fields: `dataValue` and `serializedValue`. | ||
- `dataValue` describes the example in structured format. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `dataValue` describes the example in structured format. | |
- `dataValue` describes the example in structured format (deserialized into the JSON document model, suitable for evaluating with a `schema`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @karenetheridge , although if this wording is seen as too detailed, "suitable for evaluating with a schema
" or "suitable for evaluating with a Schema Object" is the most important part to me.
|
||
#### Minor updates that are worth a mention | ||
|
||
- Non-Schema examples no longer "override" Schema examples; tools are free to use the most appropriate example for any given use case. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please let's not include this. No one can remember what "override" meant, and given the widespread incorrect implementation of the thing usually doing the "override", this is hard to even explain. Just let that language quietly disappear. As best we can tell, it had no practical implications but was instead a somewhat philosophical statement about which examples are closest to the wire format.
|
||
#### Minor updates that are worth a mention | ||
|
||
- Non-Schema examples no longer "override" Schema examples; tools are free to use the most appropriate example for any given use case. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is what is intended? This is like "James while John had had had had had had had had had had had a better effect on the teacher"
- Non-Schema examples no longer "override" Schema examples; tools are free to use the most appropriate example for any given use case. | |
- Non-Schema `example`s no longer "override" Schema `example`s; tools are free to use the most appropriate `example` for any given use case. |
|
||
- Additional updates | ||
|
||
- Non-Schema examples no longer "override" Schema examples; tools are free to use the most appropriate example for any given use case. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Non-Schema examples no longer "override" Schema examples; tools are free to use the most appropriate example for any given use case. | |
- Non-Schema `example`s no longer "override" Schema `example`s; tools are free to use the most appropriate `example` for any given use case. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still say just drop this from the changelog entirely. The suggested change is not quite correct as there are also two different examples
es as well as two different example
s. And all of them interact in different ways. This is just removing confusing language that doesn't do anything. It shouldn't be announced any more than announcing we fixed some spelling or something.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@karenetheridge after your Slack comments about an hour or so ago, I re-read this suggestion again, and my comment stands.
Also, why do you object to just dropping this line from the change log? What benefit is there here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't object. I made these comments before you suggested dropping them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@karenetheridge apologies, it's gotten a little hard to follow it all!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lornajane thanks for the continued great work! Here's more suggestions, please feel free to reword them further. I know I tend to include too much detail or make the language too specification-like for this.
|
||
- Support the new `query` method alongside the existing `get`/`post`/`put`/`delete`/`options`/`head`/`patch`/`trace`. | ||
Query is a new method in the HTTP standard, designed to allow complex filtering query data to be sent in the body of a request when it doesn't fit in the query string. | ||
- Under an `additionalOperations` entry in a Path, use any other methods not listed as keys using the correct capitalization, e.g. `LINK`. Do NOT add `HEAD` under this, use the existing sibling `head`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion for flow, I do not feel at all strongly about it.
- Under an `additionalOperations` entry in a Path, use any other methods not listed as keys using the correct capitalization, e.g. `LINK`. Do NOT add `HEAD` under this, use the existing sibling `head`. | |
- Under an `additionalOperations` entry in a Path, use any other methods not listed as keys using the correct capitalization, e.g. you can add `LINK` under this field, but do NOT add `HEAD`; use the existing Operation Object `head` field. |
#### Document identity and URL resolution | ||
|
||
- Additional top-level field `$self` is added to allow users to define the base URI of the document, used to resolve relative references. | ||
If no `$self` field is defined, then the retrieval URI is used - just as it was in previous versions of OpenAPI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The retrieval URI is not always correct.
If no `$self` field is defined, then the retrieval URI is used - just as it was in previous versions of OpenAPI. | |
If no `$self` field is defined, then just as in previous versions of the OAS, the base URI according to RFC3986 Section 5.1.2 – 5.1.4 is used. This is most often the retrieval URI, but see the new Appendix G for examples of all possible sources. |
- `serializedValue` shows how the example will be formatted when it is sent/received by the API. | ||
- The existing `value` field can still be used, which means that you can safely upgrade to 3.2 and then revisit these fields and update them to use either `dataValue` or `serializedValue` as appropriate. | ||
Use the new fields for examples you add after upgrading to 3.2. | ||
- The existing `externalValue` field can still be used to give a reference to an example, but this is now clearly documented as being a serialized value. | ||
- There are lots of examples of the examples (ha!) and clear documentation of how the fields can be combined. | ||
- Summary of what to do: use `examples` over `example`, and use `dataValue` to show a clear, structured example of the data. | ||
If your use case could benefit from an example of how the data will look when it's transmitted, use `serializedValue` as well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I trimmed the "but this is now documented" partially for flow, but partially because it was always clear (Dan's investigation didn't find any examples of incorrect implementations).
- `serializedValue` shows how the example will be formatted when it is sent/received by the API. | |
- The existing `value` field can still be used, which means that you can safely upgrade to 3.2 and then revisit these fields and update them to use either `dataValue` or `serializedValue` as appropriate. | |
Use the new fields for examples you add after upgrading to 3.2. | |
- The existing `externalValue` field can still be used to give a reference to an example, but this is now clearly documented as being a serialized value. | |
- There are lots of examples of the examples (ha!) and clear documentation of how the fields can be combined. | |
- Summary of what to do: use `examples` over `example`, and use `dataValue` to show a clear, structured example of the data. | |
If your use case could benefit from an example of how the data will look when it's transmitted, use `serializedValue` as well. | |
- For UTF-8 compatible serializations, `serializedValue` shows how the example will be formatted when it is sent/received by the API. | |
- The existing `externalValue` field supports non-UTF-8-compatible serializations, and can still be used to give a reference to an example. | |
- The existing `value` field can still be used, which means that you can safely upgrade to 3.2 and then revisit these fields and update them to use either `dataValue` or `serializedValue` as appropriate. | |
Use the new fields for examples you add after upgrading to 3.2. | |
- There are lots of examples of the examples (ha!) and clear documentation of how the fields can be combined. | |
- Summary of what to do: use `examples` over `example`, and use `dataValue` to show a clear, structured example of the schema-ready data. | |
If your use case could benefit from an example of how the data will look when it's transmitted, use `serializedValue` as well. |
- New field `defaultMapping` to indicate which schema to use if the `propertyName` is not set, or if the value is unrecognized. | ||
- No change from previous versions: use `discriminator` to hint which entry in `anyOf` or `oneOf` is expected. | ||
- No change from previous versions: use `mapping` to link the discriminator property value to the Schema name if they aren't an exact match. | ||
- Implementations now SHOULD (rather than MAY) support templates/generics using `$dynamicRef`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This probably belongs somewhere else, like the miscellaneous section at the end- it's not related to discriminator, and isn't really a polymorphism thing either. Or if it stays here, it should go at the top or bottom and not among the Discriminator-specific things.
|
||
#### Editorial changes | ||
|
||
- Extensive additions around media types, encoding, sequential media types, SSE examples, working with binary data. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Extensive additions around media types, encoding, sequential media types, SSE examples, working with binary data. | |
- Re-organization of the top-level sections to group more content with the most relevant Objects and bring the start of the Objects and Fields (formerly Schema) section close to the top of the OAS. | |
- Substantial streamlining and simplification of document parsing, relative URI-reference resolution, and implicit connection resolution, including examples of base URI determination | |
- Extensive additions around media types, encoding, sequential media types, SSE examples, working with binary data. |
``` | ||
|
||
#### Minor updates that are worth a mention | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If PR #4927 is merged (probably needs rewriting as this is my perspective):
- The `openapi` field now only requires the major and minor version (e.g. `openapi: "3.2"`) to emphasize that patch within a minor release line clarify and replace earlier patch releases, and are not distinct versions with their own behavior. |
Co-authored-by: Henry Andrews <[email protected]> Co-authored-by: Karen Etheridge <[email protected]>
Opening this as a pull request purely as a good way to collaborate - DO NOT MERGE.
The content will be added to the github release.