Versioning default behavior of the API is: if you don’t provide a version parameter we default on the latest one and return responses based on that. Purposes have a version field following the Semantic Versioning standard. When updating a purpose object you are required to provide the version of that update. Minor versions won't have any implication on given permissions. Major version changes of purposes have implications on given permissions, meaning that permissions given to the same purpose become invalidated on major version changes. This affects what is returned for a user’s permission state.
As an example, if the user has given permission to a purpose version 1.0.0 and then you bump the version of that same purpose to version 2.0.0, the given permission is invalidated. Meaning that you need to ask permission (consent) from the user for that same purpose again.
An audit log is created for each update to all models.