title: Versioning RESTful services?
body: <p>I have a RESTful web service deployed at <a href="http://example.com/v1/SomeResource" rel="noreferrer">http://example.com/v1/SomeResource</a>. One day, a new protocol version (<strong>that is not backwards compatible</strong>) is deployed to <a href="http://example.com/v2/SomeResource" rel="noreferrer">http://example.com/v2/SomeResource</a>. From the client of view, this upgrade could occur at any time between two HTTP requests.</p>
  
  <p>How does the server indicate to the client that it no longer supports v1 calls and the client is expected to upgrade to v2? Is there an appropriate response code I can use?</p>
  
  <p>I would want to provide the client with the following information:</p>
  
  <ol>
  <li>An incompatible upgrade has taken place. There is no way for the client to use the new service because the protocol could be totally different.</li>
  <li>The URL of the new client software.</li>
  <li>A message explaining to the users that they must upgrade.</li>
  </ol>