<div dir="ltr">Edison,<div><br></div><div>This is definitely a step in the right direction if we can pull it off. </div><div><br></div><div>Given the previous experiences and the current situation of how and where we store the information currently and how we generate the website for the API(s), can you please outline </div><div>- what would be the impact to projects?</div><div>- what steps they would have to take?</div><div><br></div><div>Also, the whole point of having these definitions is that the generated code works. Do we have a sample/mock API where we can show that the Action and Microversions can be declared to reflect reality and it can actually work with the generated code?</div><div><br></div><div>Thanks,</div><div>Dims</div><div><br></div><div><div class="gmail_quote"><div dir="ltr">On Wed, Aug 29, 2018 at 2:37 AM Edison Xiang <<a href="mailto:xiang.edison@gmail.com">xiang.edison@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi team,<div><br></div><div>As we know, Open API 3.0 was released on July, 2017, it is about one year ago.</div><div>Open API 3.0 support some new features like anyof, oneof and allof than Open API 2.0(Swagger 2.0).</div><div>Now OpenStack projects do not support Open API.</div><div>Also I found some old emails in the Mail List about supporting Open API 2.0 in OpenStack.</div><div><br></div><div>Some limitations are mentioned in the Mail List for OpenStack API:</div><div>1. The POST */action APIs.<br></div><div>    These APIs are exist in lots of projects like nova, cinder. </div><div>    These APIs have the same URI but the responses will be different when the request is different.</div><div>2. Micro versions.</div><div>    These are controller via headers, which are sometimes used to describe behavioral changes in an API, not just request/response schema changes.<br></div><div><br></div><div>About the first limitation, we can find the solution in the Open API 3.0.</div><div>The example [2] shows that we can define different request/response in the same URI by anyof feature in Open API 3.0.</div><div><br></div><div>About the micro versions problem, I think it is not a limitation related a special API Standard.</div><div>We can list all micro versions API schema files in one directory like nova/V2,</div><div>or we can list the schema changes between micro versions as tempest project did [3].</div><div><br></div><div>Based on Open API 3.0, it can bring lots of benefits for OpenStack Community and does not impact the current features the 

Community has.</div><div>For example, we can automatically generate API documents, different language Clients(SDK) maybe for different micro versions, </div><div>and generate cloud tool adapters for OpenStack, like ansible module, terraform providers and so on.</div><div>Also we can make an API UI to provide an online and visible API search, API Calling for every OpenStack API.</div><div>3rd party developers can also do some self-defined development.</div><div><br></div><div>[1] <a href="https://github.com/OAI/OpenAPI-Specification" target="_blank">https://github.com/OAI/OpenAPI-Specification</a></div><div>[2] <a href="https://github.com/edisonxiang/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml#L94-L109" target="_blank">https://github.com/edisonxiang/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml#L94-L109</a></div><div>[3] <a href="https://github.com/openstack/tempest/tree/master/tempest/lib/api_schema/response/compute" target="_blank">https://github.com/openstack/tempest/tree/master/tempest/lib/api_schema/response/compute</a></div><div><br></div><div>Best Regards,</div><div>Edison Xiang</div><div><br></div></div></div></div></div>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Davanum Srinivas :: <a href="https://twitter.com/dims" target="_blank">https://twitter.com/dims</a></div></div></div>