One can also generate API clients or server stubs using the online openapi-generator.
Here are the public online services:
- latest stable version: http://api.openapi-generator.tech
- latest master: http://api-latest-master.openapi-generator.tech (updated with latest master every hour)
The server is sponsored by Linode
(These services are beta and do not have any guarantee on service level)
If you prefer to run the service locally, here are the steps:
mvn clean install
cd modules/openapi-generator-online
mvn spring-boot:run
💡 The online openapi-generator can be run via Docker as well.
For example, to generate Ruby API client, simply send the following HTTP request using curl:
curl -X POST -H "content-type:application/json" -d '{"openAPIUrl":"https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"}' http://localhost:8080/api/gen/clients/ruby
Then you will receieve a JSON response with the URL to download the zipped code.
To customize the SDK, you can POST
to http://localhost:8080/gen/clients/{language}
with the following HTTP body:
{
"options": {},
"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"
}
in which the options
for a language can be obtained by submitting a GET
request to http://locahost:8080/api/gen/clients/{language}
:
For example, curl http://localhost:8080/api/gen/clients/python
returns
"packageName":{
"opt":"packageName",
"description":"python package name (convention: snake_case).",
"type":"string",
"default":"openapi_client"
},
"packageVersion":{
"opt":"packageVersion",
"description":"python package version.",
"type":"string",
"default":"1.0.0"
},
"sortParamsByRequiredFlag":{
"opt":"sortParamsByRequiredFlag",
"description":"Sort method arguments to place required parameters before optional parameters.",
"type":"boolean",
"default":"true"
}
{}
To set package name to pet_store
, the HTTP body of the request is as follows:
{
"options": {
"packageName": "pet_store"
},
"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"
}
and here is the curl command:
curl -H "Content-type: application/json" -X POST -d '{"options": {"packageName": "pet_store"},"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"}' http://localhost:8080/api/gen/clients/python
Instead of using openAPIUrl
with an URL to the OpenAPI spec, one can include the spec in the JSON payload with spec
, e.g.
{
"options": {},
"spec": {
"swagger": "2.0",
"info": {
"version": "1.0.0",
"title": "Test API"
},
...
}
}