Apicurio / apicurio-registry

An API/Schema registry - stores APIs and Schemas.
https://www.apicur.io/registry/
Apache License 2.0
587 stars 260 forks source link

Deletion of specific versions (or updating specific versions) #2554

Open darrellme opened 2 years ago

darrellme commented 2 years ago

Hi

Are there any plans, or could there be any plans, to allow for the updating of a specific version. For example, I don't want to have our clients to have to create a new version if they are merely updating the description of a parameter, or they have made a typo in the open api spec. So having the ability to update a specific version would be incredibly helpful

Thanks

Darrell Merryweather

EricWittmann commented 2 years ago

I think the answer to this is generally "no". It is a core design principal of a registry that the content is immutable. You give some reasonable use cases where someone might want mutability of the content. However, the risk of allowing users to arbitrarily modify content is high. It would allow a user to pull the rug out from under another user without any notice.

Perhaps we could introduce a global configuration option that would enable edits, but I'm not sure...

@Apicurio/developers any thoughts?

darrellme commented 2 years ago

I understand, to a certain extent. Perhaps something like a 'publish' mechanism could be used, where you can have a version in draft, and until its published, its mutable. Once published then it becomes immutable

Just a thought.

One issue we had with this with was with testing the functionality whilst we were developing some functionality, it slowed things quite a lot having to ensure that it was a new version number with every submit, and we ended up with some very large number of versions

Thanks

Darrell

EricWittmann commented 2 years ago

I think this is fair/interesting idea. Basically a two-phase commit. I wonder what the functional difference is between a draft and final version, though. If draft versions are still downloadable/usable by clients, then what is the difference. In other words, if I want to ensure that my production Kafka clients fail when trying to pull draft content, how do I do that?

Perhaps an opt-in model for draft content. Where the GET operations for artifacts will fail for draft content by default. Clients would need to pass a request header or query param or something to allow fetching of draft content.

EricWittmann commented 2 years ago

Thoughts @Apicurio/developers ?

ozarkblue commented 1 year ago

like this idea . this will add some governance and collaboration too to manage schema and get that approved. Worked on similar governance tool with workflow for approval and role assignment to user etc - a lot more to ask though.

To achieve this functionality I've configured a CI flow through GitOps where our developer will coordinate in Git repo ,outside registry , and once final version of schema reviewed and merged to master branch it triggers the CI and pushes the content into registry, and create a new version.

EricWittmann commented 1 year ago

I agree that perhaps GitOps is the answer to this. We continue to discuss gitops, not only for Apicurio Registry but across multiple related red hat projects. Expect some changes to support GitOps workflows in the future. Not quite sure when exactly yet, but it's progressing.