Online
Hosted
We offer online services, publicly and free of charge:
- latest stable version: http://api.openapi-generator.tech
- latest master: http://api-latest-master.openapi-generator.tech (updated with latest master every hour)
These services are beta and do not have any guarantee on service level
Docker Image
The openapi-generator-online Docker image can act as a self-hosted web application and API for generating code. This container can be incorporated into a CI pipeline, and requires at least two HTTP requests and some docker orchestration to access generated code.
Example usage:
# Start container at port 8888 and save the container idCID=$(docker run -d -p 8888:8080 openapitools/openapi-generator-online)# allow for startupsleep 10# Get the IP of the running container (optional)GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' ${CID})# Execute an HTTP request to generate a Ruby clientcurl -X POST --header 'Content-Type: application/json' \--header 'Accept: application/json' \-d '{"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml"}' \'http://localhost:8888/api/gen/clients/ruby'# Example output:# {"code":"c2d483.3.4672-40e9-91df-b9ffd18d22b8","link":"http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8"}# Download the generated zip file (using "code" provided from your output)wget http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8# Unzip the fileunzip c2d483.3.4672-40e9-91df-b9ffd18d22b8# Shutdown the openapi generator imagedocker stop ${CID} && docker rm ${CID}
Local/Self-hosting
If you prefer to run the service locally, here are the steps:
mvn clean installcd modules/openapi-generator-onlinemvn 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/3_0/petstore.yaml"}' \http://localhost:8080/api/gen/clients/ruby
Then you will receive a JSON response with the URL to download the zipped code.
To customize the SDK, you can POST
to http://localhost:8080/gen/clients/{generator}
with the following HTTP body:
{"options": {},"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml"}
Here, the options
for a language can be obtained by submitting a GET
request to http://locahost:8080/api/gen/clients/{generator}
:
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/3_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/3_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
:
{"options": {},"spec": {"swagger": "2.0","info": {"version": "1.0.0","title": "Test API"},...}}