The famous dig from Jamie Zawinski:
Some people, when confronted with a problem, think "I know, I'll use versioning." Now they have 2.1.0 problems.
My assertion is that integration versioning should be a last resort, used in specific situations. If you own both sides of the integration contract then do not version.
Versioning is in effect kicking the can down the road for your future self, or worse - leaving it for someone with no knowledge of the interface.
By following Postel's Law, using abstraction layers, micro-service boilerplate and not being afraid of regression testing (I.e. modern IT practices) we have simple to change components which we can track and upgrade.