Skip to content
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

Support API-wide version information #4212

Open
dret opened this issue Nov 21, 2024 · 7 comments
Open

Support API-wide version information #4212

dret opened this issue Nov 21, 2024 · 7 comments
Labels
metadata tags, info, license, contact, markdown usage, etc. registries Related to any or all spec.openapis.org-hosted registries
Milestone

Comments

@dret
Copy link
Contributor

dret commented Nov 21, 2024

This could be used to represent the version information of the described API. The current version field is oftentimes misunderstood and misused to represent the API version information. Having a registry-based extension could help as a quick fix, and new versions (3.2 and/or 4) will hopefully fix the current gap at the standards level.

The risk is that this could then be used in newer versions as well. I don't know how much this should be see as an argument against the proposal.

@handrews handrews added metadata tags, info, license, contact, markdown usage, etc. registries Related to any or all spec.openapis.org-hosted registries labels Nov 21, 2024
@handrews
Copy link
Member

@dret We should see if we're going to put an api-version field in 3.2, and then if we put an x- version in the registry for <=3.1, we can make it clear that there is a migration path.

I just went to look for an issue for this to put into 3.2 and it looks like we don't actually have one? I really thought we did... I guess I'll just link to this issue for now (in discussion #4210).

@dret
Copy link
Contributor Author

dret commented Nov 21, 2024 via email

@lornajane
Copy link
Contributor

Agreed not to add this as an extension, let's discuss if we can add it as a formal field in 3.2 to describe an API description that applies to only one version of an API, for APIs where that makes sense.

@lornajane
Copy link
Contributor

Related: OAI/sig-moonwalk#82

@dret
Copy link
Contributor Author

dret commented Nov 29, 2024

All good for me. Let's discuss what the best path looks like. My goal is to be able to represent version information about an API in OpenAPI. Ideally there would be a recommendation how to do it in existing versions as well.

@handrews handrews changed the title Add x-api-version to extension registry Support API-wide version information Jan 25, 2025
@handrews
Copy link
Member

I've updated the title of this issue because my eyes just kept sliding over the x- as "this isn't relevant to me..."

I think we all know that there are many ways to version an API, and we're not going to figure out how to support all of them at once. Some are in-band, so there's really no need.

This is just to handle an out-of-band version field that applies to the entire API described by the OAD. I am sure someone will use it to duplicate version information already present in the Server Object URL, but we can't really prevent that from happening so I vote to just not worry about it- if people want to be redundant, they can deal with keeping things in sync. Or not.


The current version field is described as follows in 3.1.1:

REQUIRED. The version of the OpenAPI Document (which is distinct from the OpenAPI Specification version or the version of the API being described or the version of the OpenAPI Description).

Other fields in the Info Object say they apply to "the API", which we never explicitly define but probably ought to define as "all paths and webhooks described when treating this document as the entry document."

I think this means that any apiVersion field MUST apply only when the document is used as an entry document. apiVersion fields found in referenced documents MUST be ignored (this supports the use case where one API uses components from another API's entry document- not a use case I would recommend, but one that will no doubt happen).

@dret
Copy link
Contributor Author

dret commented Jan 27, 2025

This all sounds good to me. There should be some model of how to decide what the "effective" API version is (if there are conflicting declarations), and using the entry document as an authoritative source sounds like a very reasonable model to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
metadata tags, info, license, contact, markdown usage, etc. registries Related to any or all spec.openapis.org-hosted registries
Projects
None yet
Development

No branches or pull requests

3 participants