There's a fair amount that's been written [https://clearbit.com/blog/versioning-apis] on how to version APIs, but what nobody talks about is what goes on behind the scenes--how versioning is implemented at a code level. One reason behind this is that the implementation is often a mess, a nestled spaghetti of conditional statements littering your codebase that usually looks something like this: if params[:version] == 1 show_something else show_something_else end At Clearbit we've been con