Yep - whole new route, grouped under a specific version namespace.
How DRY you keep your code is an age-old debate 😆 - presumably if the code is due to be removed (fairly) soon then extracting out the common logic may be premature (as long as the coverage is still there). "The pros" as you refer to also cannot decide!
If you find that there is a lot of code in your handlers then that may be a signal that there is another function waiting to be extracted anyway, so that the handler responsibility is just to unpack the request, pass it on, then deal with the response (all of which will organise vary between v1 and V2. And in Kotlin there is nothing to stop you putting v1 and V2 code in the same file