One of the motivations of providing an API (web or otherwise) is to insulate the client from implementation changes. So if a change to your implementation must ripple out into the API, you've lost the plot somewhere.
Resources you should review
Here's a key takeaway from Webber
The web is not your domain, it's a document management system. All the HTTP verbs apply to the document management domain. URIs do NOT map onto domain objects - that violates encapsulation. Work (ex: issuing commands to the domain model) is a side effect of managing resources. In other words, the resources are part of the anti-corruption layer. You should expect to have many many more resources in your integration domain than you do business objects in your business domain.
OK, down into your issue
I've read articles on creating versions but I cannot imagine how it can be done in a situation like this. v2 will use the most recent version of Customer class but then v1 will be unavailable (in other words it's response has changed) as v1's Customer class version does not exist anymore. Some were suggesting to use different packages for each versions and I don't think it's appropriate because that means all of the business logic that uses these persistence classes will also have to be put into different packages according to their versions.
Here are the key ideas: the semantic meaning of "Customer" doesn't seem to be changing; your old clients have every right to expect the old representation will continue to work. So the first idea to integrate into your design is that the integration resource that provides a differently shaped representation of the Customer is a different resource in your API.
So there "should" be an old endpoint that returns the old representation, and a newer endpoint that retrieves the new one.
Second point is that you should be putting some design effort into your contracts up front (obviously, this isn't critical in an exercise where you control both the server and the only client; but if this intended to be a learning exercise, it is). That means, among other things, taking care to understand which elements in a representation are mandatory, and which are optional.
The client only has a right to expect that mandatory fields will be present. Optional fields may be present, but the client has to be written robustly enough to handle the case where they are not (a typical implementation will have a default value to stand in if the server doesn't provide one). Furthermore, the clients must expect that new fields may appear, and these must be ignored.
Sometimes known as weak schema, this approach should be familiar if you have looked into the details of avro, protocol buffers, and so on. It basically means building into your representation (message) design the ability to extend it in the future.