<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
On Apr 20, 2015, at 2:19 PM, Douglas Mendizabal <<a href="mailto:douglas.mendizabal@RACKSPACE.COM">douglas.mendizabal@RACKSPACE.COM</a>> wrote:<br>
<div><br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;">
<div>Hi openstack-dev@</div>
<div><br>
</div>
<div>I was wondering if the API Working Group had an opinion on how to deal with minor changes to the api?  For example, what if you wanted to add a new attribute to a JSON response?  I would think that a minor change like that could be done without having
 to create a new versioned endpoint.  So a newer release would just add the new attribute without having to create a new /v1.1/ endpoint.</div>
</div>
</blockquote>
<div><br>
</div>
<div>I’d suggest (like others have already) doing microversions like Nova [1]. Creating a new endpoint would be a cruel thing to do to your clients, especially considering it’s a seemingly backwards compatible change.</div>
<div><br>
</div>
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;">
<div>However, minor changes like that could still possibly break clients that are not expecting them.  For example, a client that uses the json response as arguments to a method via **kwargs would start seeing TypeErrors for unexpected arguments.</div>
</div>
</blockquote>
<div><br>
</div>
</div>
And let us not forget statically typed languages. But even there adding a new attribute isn’t that big of a deal. If there’s an unexpected attribute in a response, it can simply be ignored. No harm done.
<div><br>
</div>
<div>But the user might not even be aware the new attribute is available unless they’re not looking at their request/response logs. Hence the need for microversions.<br>
<div><br>
</div>
<div>Everett</div>
<div><br>
</div>
<div>[1] <a href="http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/api-microversions.html">http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/api-microversions.html</a></div>
</div>
</body>
</html>