<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">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">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">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>