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

Clarify the meaning of info.version #3872

Closed
dret opened this issue Jun 2, 2024 · 15 comments
Closed

Clarify the meaning of info.version #3872

dret opened this issue Jun 2, 2024 · 15 comments
Assignees
Labels
clarification requests to clarify, but not change, part of the spec metadata tags, info, license, contact, markdown usage, etc. versioning describing versions of APIs/endpoints/operations
Milestone

Comments

@dret
Copy link
Contributor

dret commented Jun 2, 2024

Looking around a little bit and conducting a LinkedIn poll (not very scientific, I agree, but still interesting), it seems that few people understand what info.version is for.

https://www.linkedin.com/feed/update/urn:li:activity:7202896718634315776/

Almost nobody knows the right answer (11% right now but the poll is still open), and there are many documents/tutorials out there that explicitly say that it's the API version (which 56% think is the correct answer).

The current spec text is less than clear. There are two general ways to go:

  • Make the text more clear and live with the fact that a good amount of guidance and usage out there is not following the spec.
  • Adjust to reality which technically would be a breaking change but since arguably most usage out there is "wrong", it would actually un-break things in a semantically weird but pragmatically interesting way.
@handrews handrews self-assigned this Jun 2, 2024
@handrews handrews added clarification requests to clarify, but not change, part of the spec versioning describing versions of APIs/endpoints/operations metadata tags, info, license, contact, markdown usage, etc. labels Jun 2, 2024
@handrews handrews added this to the v3.0.4 milestone Jun 2, 2024
@handrews
Copy link
Member

handrews commented Jun 2, 2024

@dret I think the best we can do here is clarify in 3.0.4/3.1.1, and maybe in 3.2 we could make this field not required and add an apiVersion field alongside it?

@dret
Copy link
Contributor Author

dret commented Jun 2, 2024 via email

@handrews
Copy link
Member

handrews commented Jun 3, 2024

@dret as noted in discussion with @darrelmiller it really seems like version is the version of the specific OpenAPI Description document, not the entire description. This is because an OpenAPI 3.1 document that is a syntactically complete document (includes an OpenAPI Object at the root) but only has components (not paths or webhooks) will still have a required info field with an Info Object, which will have its own required version field. Such a components-only document is expected to be shared by multiple APIs, each of which would have its Info Object and version field in its own entry document.

So I think that's what we need to clarify. I don't see how any other definition of the version field can work in 3.1. Once we accept either PR #3823 or PR #3855, it should also be a bit more clear how to handle document versioning and documents that are not complete.

@dret
Copy link
Contributor Author

dret commented Jun 3, 2024 via email

@handrews
Copy link
Member

handrews commented Jun 4, 2024

@dret I'm just not sure how to say that it's not the API version any more clearly than we already do:

The version of the OpenAPI document (which is distinct from the OpenAPI Specification version or the API implementation version).

@dret
Copy link
Contributor Author

dret commented Jun 5, 2024 via email

@dret
Copy link
Contributor Author

dret commented Jun 5, 2024

For anybody interested in the final results of the poll, here they are:

image

@karenetheridge
Copy link
Member

karenetheridge commented Jun 5, 2024

/info/version is a valuable field for the implementation to know what version of the spec the document is written to adhere to, so it can know how to parse it. This is important to know as there are syntactic and behavioural differences between 3.0.x and 3.1.x, and these differences will grow over time with future revisions.

An implementation needs to know what assumptions the document author made when writing it, and to know how to parse the document. Removing it or making it optional allows implementations to give ambiguous or incorrect behaviour.

(edit: I mistakenly said /api/version in the copy of this that went to email.)

@dret
Copy link
Contributor Author

dret commented Jun 5, 2024 via email

@handrews
Copy link
Member

handrews commented Jun 5, 2024

@karenetheridge I think you're mixing #/openapi (the version of OAS) and #/info/version (the version of the document, which is meaningless to tools).

@handrews
Copy link
Member

handrews commented Jun 5, 2024

Note that as far as API versioning goes, it's a complex topic with several issues open, mostly around the granularity of versioning.

@handrews
Copy link
Member

handrews commented Jun 5, 2024

@dret I've updated PR #3861 with a fix removing "implementation" and rewording things a bit.

@dret
Copy link
Contributor Author

dret commented Jun 5, 2024 via email

@miqui
Copy link
Contributor

miqui commented Jun 16, 2024

Closing this issue since PR #3861 has been merged (i.e., a decision on the clarification was reached)

@miqui miqui closed this as completed Jun 16, 2024
@handrews
Copy link
Member

@miqui I've generally been keeping issues open until the PRs have been merged for at least both 3.0.4 and 3.1.1. I had been holding things open until 3.2 was merged as well but I'm holding off on porting some things to 3.2 until after the patch releases are done so I'd say issues don't have to wait for PRs for that release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clarification requests to clarify, but not change, part of the spec metadata tags, info, license, contact, markdown usage, etc. versioning describing versions of APIs/endpoints/operations
Projects
None yet
Development

No branches or pull requests

4 participants