diff --git a/0cae4475.84b1df42.js b/0cae4475.84b1df42.js
deleted file mode 100644
index 387c8d3c86e..00000000000
--- a/0cae4475.84b1df42.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{139:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return p})),n.d(t,"metadata",(function(){return c})),n.d(t,"rightToc",(function(){return l})),n.d(t,"default",(function(){return s}));var a=n(1),o=n(9),r=(n(0),n(308)),p={id:"online",title:"Online"},c={id:"online",title:"Online",description:"## Hosted",source:"@site/../docs/online.md",permalink:"/docs/online",editUrl:"https://github.com/OpenAPITools/openapi-generator/edit/master/website/../docs/online.md",lastUpdatedBy:"Alessio Zurru",lastUpdatedAt:1593619988,sidebar:"docs",previous:{title:"Plugins",permalink:"/docs/plugins"},next:{title:"Usage",permalink:"/docs/usage"}},l=[{value:"Hosted",id:"hosted",children:[]},{value:"Docker Image",id:"docker-image",children:[]},{value:"Local/Self-hosting",id:"localself-hosting",children:[]}],i={rightToc:l};function s(e){var t=e.components,n=Object(o.a)(e,["components"]);return Object(r.b)("wrapper",Object(a.a)({},i,n,{components:t,mdxType:"MDXLayout"}),Object(r.b)("h2",{id:"hosted"},"Hosted"),Object(r.b)("p",null,"We offer online services, publicly and free of charge:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"latest stable version: ",Object(r.b)("a",Object(a.a)({parentName:"li"},{href:"http://api.openapi-generator.tech"}),"http://api.openapi-generator.tech")),Object(r.b)("li",{parentName:"ul"},"latest master: ",Object(r.b)("a",Object(a.a)({parentName:"li"},{href:"http://api-latest-master.openapi-generator.tech"}),"http://api-latest-master.openapi-generator.tech")," (updated with latest master every hour)")),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},Object(r.b)("strong",{parentName:"p"},"Hosting Sponsor"),Object(r.b)("br",{parentName:"p"}),"\n",Object(r.b)("a",Object(a.a)({parentName:"p"},{href:"https://www.linode.com/"}),Object(r.b)("img",Object(a.a)({parentName:"a"},{src:"https://www.linode.com/media/images/logos/standard/light/linode-logo_standard_light_small.png",alt:"Linode Logo"}))))),Object(r.b)("p",null,"These services are beta and do not have any guarantee on service level"),Object(r.b)("h2",{id:"docker-image"},"Docker Image"),Object(r.b)("p",null,"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."),Object(r.b)("p",null,"Example usage:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-bash"}),'# Start container at port 8888 and save the container id\nCID=$(docker run -d -p 8888:8080 openapitools/openapi-generator-online)\n\n# allow for startup\nsleep 10\n\n# Get the IP of the running container (optional)\nGEN_IP=$(docker inspect --format \'{{.NetworkSettings.IPAddress}}\' ${CID})\n\n# Execute an HTTP request to generate a Ruby client\ncurl -X POST --header \'Content-Type: application/json\' \\\n --header \'Accept: application/json\' \\\n -d \'{"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"}\' \\\n \'http://localhost:8888/api/gen/clients/ruby\'\n\n# Example output:\n# {"code":"c2d483.3.4672-40e9-91df-b9ffd18d22b8","link":"http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8"}\n\n# Download the generated zip file (using "code" provided from your output) \nwget http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8\n\n# Unzip the file\nunzip c2d483.3.4672-40e9-91df-b9ffd18d22b8\n\n# Shutdown the openapi generator image\ndocker stop ${CID} && docker rm ${CID}\n')),Object(r.b)("h2",{id:"localself-hosting"},"Local/Self-hosting"),Object(r.b)("p",null,"If you prefer to run the service locally, here are the steps:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-bash"}),"mvn clean install\ncd modules/openapi-generator-online\nmvn spring-boot:run\n")),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},"The online openapi-generator can be run via ",Object(r.b)("a",Object(a.a)({parentName:"p"},{href:"#docker-image"}),"Docker")," as well.")),Object(r.b)("p",null,"For example, to generate Ruby API client, simply send the following HTTP request using curl:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-bash"}),'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"}\' \\\n http://localhost:8080/api/gen/clients/ruby\n')),Object(r.b)("p",null,"Then you will receive a JSON response with the URL to download the zipped code."),Object(r.b)("p",null,"To customize the SDK, you can ",Object(r.b)("inlineCode",{parentName:"p"},"POST")," to ",Object(r.b)("inlineCode",{parentName:"p"},"http://localhost:8080/gen/clients/{generator}")," with the following HTTP body:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-json"}),'{\n "options": {},\n "openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"\n}\n')),Object(r.b)("p",null,"Here, the ",Object(r.b)("inlineCode",{parentName:"p"},"options")," for a language can be obtained by submitting a ",Object(r.b)("inlineCode",{parentName:"p"},"GET")," request to ",Object(r.b)("inlineCode",{parentName:"p"},"http://locahost:8080/api/gen/clients/{generator}"),":"),Object(r.b)("p",null,"For example, ",Object(r.b)("inlineCode",{parentName:"p"},"curl http://localhost:8080/api/gen/clients/python")," returns"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-json"}),' "packageName":{\n "opt":"packageName",\n "description":"python package name (convention: snake_case).",\n "type":"string",\n "default":"openapi_client"\n },\n "packageVersion":{\n "opt":"packageVersion",\n "description":"python package version.",\n "type":"string",\n "default":"1.0.0"\n },\n "sortParamsByRequiredFlag":{\n "opt":"sortParamsByRequiredFlag",\n "description":"Sort method arguments to place required parameters before optional parameters.",\n "type":"boolean",\n "default":"true"\n }\n\n{}\n')),Object(r.b)("p",null,"To set package name to ",Object(r.b)("inlineCode",{parentName:"p"},"pet_store"),", the HTTP body of the request is as follows:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-json"}),'{\n "options": {\n "packageName": "pet_store"\n },\n "openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"\n}\n')),Object(r.b)("p",null,"and here is the curl command:"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-bash"}),'curl -H "Content-type: application/json" \\\n -X POST \\\n -d \'{"options": {"packageName": "pet_store"},"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml"}\' \\\n http://localhost:8080/api/gen/clients/python\n')),Object(r.b)("p",null,"Instead of using ",Object(r.b)("inlineCode",{parentName:"p"},"openAPIUrl")," with an URL to the OpenAPI spec, one can include the spec in the JSON payload with ",Object(r.b)("inlineCode",{parentName:"p"},"spec"),":"),Object(r.b)("pre",null,Object(r.b)("code",Object(a.a)({parentName:"pre"},{className:"language-json"}),'{\n "options": {},\n "spec": {\n "swagger": "2.0",\n "info": {\n "version": "1.0.0",\n "title": "Test API"\n },\n ...\n }\n}\n')))}s.isMDXComponent=!0},308:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var a=n(0),o=n.n(a);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=o.a.createContext({}),s=function(e){var t=o.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c({},t,{},e)),n},b=function(e){var t=s(e.components);return o.a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=Object(a.forwardRef)((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,i=l(e,["components","mdxType","originalType","parentName"]),b=s(n),d=a,m=b["".concat(p,".").concat(d)]||b[d]||u[d]||r;return n?o.a.createElement(m,c({ref:t},i,{components:n})):o.a.createElement(m,c({ref:t},i))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,p=new Array(r);p[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,p[1]=c;for(var i=2;i=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=o.a.createContext({}),s=function(e){var t=o.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c({},t,{},e)),n},b=function(e){var t=s(e.components);return o.a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=Object(a.forwardRef)((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,i=l(e,["components","mdxType","originalType","parentName"]),b=s(n),d=a,m=b["".concat(p,".").concat(d)]||b[d]||u[d]||r;return n?o.a.createElement(m,c({ref:t},i,{components:n})):o.a.createElement(m,c({ref:t},i))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,p=new Array(r);p[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,p[1]=c;for(var i=2;i use Swagger core v3 (see ",Object(o.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/OpenAPITools/openapi-generator/issues/27%5B#27%5D"}),"https://github.com/OpenAPITools/openapi-generator/issues/27[#27]"),")"))),Object(o.b)("li",{parentName:"ul"},"Documentation"),Object(o.b)("li",{parentName:"ul"},"Static pages, preferably on gh-pages, devoted to each generator"),Object(o.b)("li",{parentName:"ul"},"Explain generator options"),Object(o.b)("li",{parentName:"ul"},"Centralized docs on generated code usage/examples/configuration")),Object(o.b)("h2",{id:"medium-term"},"Medium-term"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Feature set, well-defined API (code and templates), and extensibility improvements.")),Object(o.b)("h3",{id:"api"},"API"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Typed representation of the model bound to our templates. As it is, everything is treated an an Object, and this can lead to changes in the interface which might be unexpected from the template perspective."),Object(o.b)("li",{parentName:"ul"},"Feature set (potential generators to add; not an exhaustive list)",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Azure functions (node.js, server)"),Object(o.b)("li",{parentName:"ul"},"Finagle HTTP Client (Scala, client)"),Object(o.b)("li",{parentName:"ul"},"Finagle Http Server (Scala, server)"),Object(o.b)("li",{parentName:"ul"},"Finatra (Scala, server)"),Object(o.b)("li",{parentName:"ul"},"Kotlin Spring MVC/Springboot (server)"),Object(o.b)("li",{parentName:"ul"},"C++ Server, any framework (server)")))),Object(o.b)("h3",{id:"general"},"General"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Migrate from Maven to Gradle"),Object(o.b)("li",{parentName:"ul"},"Java 9+ support"),Object(o.b)("li",{parentName:"ul"},"Feature set (other options to investigate)"),Object(o.b)("li",{parentName:"ul"},"SPI plugins",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Templating engine"),Object(o.b)("li",{parentName:"ul"},"Language extensions"),Object(o.b)("li",{parentName:"ul"},"Custom extensions (e.g. allowing users to load support for ",Object(o.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/Azure/azure-rest-api-specs%5Bazure-rest-api-specs%5D"}),"https://github.com/Azure/azure-rest-api-specs[azure-rest-api-specs]"),")"))),Object(o.b)("li",{parentName:"ul"},"Customizable templating engines (handlebars support)"),Object(o.b)("li",{parentName:"ul"},"Unit-testing templates (to previously mentioned explicit type as an interface to the template)"),Object(o.b)("li",{parentName:"ul"},"Reduce coupling"),Object(o.b)("li",{parentName:"ul"},"Make types extending ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," become the generation entrypoint"),Object(o.b)("li",{parentName:"ul"},"Allow current ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," types to define templating engine"),Object(o.b)("li",{parentName:"ul"},"Allow current ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," types to modify workflow (currently encapsulated in ",Object(o.b)("inlineCode",{parentName:"li"},"DefaultGenerator")," and tightly coupled to the template engine"),Object(o.b)("li",{parentName:"ul"},'Clearer reuse of "language" features, outside of "generator" types. That is, rather than enforcing polymorphic sharing of "language" which currently allows the super type to redefine framework-specific mapping functionality, generators could compose one or more language support types.'),Object(o.b)("li",{parentName:"ul"},"Define template deprecation/removal process")),Object(o.b)("h2",{id:"long-term"},"Long-term"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Expanding tooling offered, integrations, potentially SaaS offering to partially fund efforts.")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Generator UI wrappers",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Move jimschubert/intellij-swagger-codegen plugin under the org, and rename"),Object(o.b)("li",{parentName:"ul"},"Look into an Eclipse UI wrapper around the generator"),Object(o.b)("li",{parentName:"ul"},"Look at Visual Studio Code (and/or Atom, sublime text) integration"))),Object(o.b)("li",{parentName:"ul"},"Provide a native GUI for viewing/editing specs. Most tools are currently geared toward developers, but often times it may be non-technical business users who are interested in an API."),Object(o.b)("li",{parentName:"ul"},"A paid service (SaaS) for generation may be enticing for some users. Such a service would allow for statistics (mentioned earlier in telemetry)"),Object(o.b)("li",{parentName:"ul"},"Additional tools"),Object(o.b)("li",{parentName:"ul"},"node.js build system(s) integration (grunt/gulp/webpack/etc)"),Object(o.b)("li",{parentName:"ul"},"ruby gem"),Object(o.b)("li",{parentName:"ul"},"others (which may require previously mentioned SaaS API)")))}u.isMDXComponent=!0},308:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=a.a.createContext({}),u=function(e){var t=a.a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l({},t,{},e)),r},s=function(e){var t=u(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=Object(n.forwardRef)((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(r),m=n,d=s["".concat(i,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(d,l({ref:t},p,{components:r})):a.a.createElement(d,l({ref:t},p))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:n,i[1]=l;for(var p=2;p use Swagger core v3 (see ",Object(o.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/OpenAPITools/openapi-generator/issues/27%5B#27%5D"}),"https://github.com/OpenAPITools/openapi-generator/issues/27[#27]"),")"))),Object(o.b)("li",{parentName:"ul"},"Documentation"),Object(o.b)("li",{parentName:"ul"},"Static pages, preferably on gh-pages, devoted to each generator"),Object(o.b)("li",{parentName:"ul"},"Explain generator options"),Object(o.b)("li",{parentName:"ul"},"Centralized docs on generated code usage/examples/configuration")),Object(o.b)("h2",{id:"medium-term"},"Medium-term"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Feature set, well-defined API (code and templates), and extensibility improvements.")),Object(o.b)("h3",{id:"api"},"API"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Typed representation of the model bound to our templates. As it is, everything is treated an an Object, and this can lead to changes in the interface which might be unexpected from the template perspective."),Object(o.b)("li",{parentName:"ul"},"Feature set (potential generators to add; not an exhaustive list)",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Azure functions (node.js, server)"),Object(o.b)("li",{parentName:"ul"},"Finagle HTTP Client (Scala, client)"),Object(o.b)("li",{parentName:"ul"},"Finagle Http Server (Scala, server)"),Object(o.b)("li",{parentName:"ul"},"Finatra (Scala, server)"),Object(o.b)("li",{parentName:"ul"},"Kotlin Spring MVC/Springboot (server)"),Object(o.b)("li",{parentName:"ul"},"C++ Server, any framework (server)")))),Object(o.b)("h3",{id:"general"},"General"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Migrate from Maven to Gradle"),Object(o.b)("li",{parentName:"ul"},"Java 9+ support"),Object(o.b)("li",{parentName:"ul"},"Feature set (other options to investigate)"),Object(o.b)("li",{parentName:"ul"},"SPI plugins",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Templating engine"),Object(o.b)("li",{parentName:"ul"},"Language extensions"),Object(o.b)("li",{parentName:"ul"},"Custom extensions (e.g. allowing users to load support for ",Object(o.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/Azure/azure-rest-api-specs%5Bazure-rest-api-specs%5D"}),"https://github.com/Azure/azure-rest-api-specs[azure-rest-api-specs]"),")"))),Object(o.b)("li",{parentName:"ul"},"Customizable templating engines (handlebars support)"),Object(o.b)("li",{parentName:"ul"},"Unit-testing templates (to previously mentioned explicit type as an interface to the template)"),Object(o.b)("li",{parentName:"ul"},"Reduce coupling"),Object(o.b)("li",{parentName:"ul"},"Make types extending ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," become the generation entrypoint"),Object(o.b)("li",{parentName:"ul"},"Allow current ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," types to define templating engine"),Object(o.b)("li",{parentName:"ul"},"Allow current ",Object(o.b)("inlineCode",{parentName:"li"},"CodegenConfig")," types to modify workflow (currently encapsulated in ",Object(o.b)("inlineCode",{parentName:"li"},"DefaultGenerator")," and tightly coupled to the template engine"),Object(o.b)("li",{parentName:"ul"},'Clearer reuse of "language" features, outside of "generator" types. That is, rather than enforcing polymorphic sharing of "language" which currently allows the super type to redefine framework-specific mapping functionality, generators could compose one or more language support types.'),Object(o.b)("li",{parentName:"ul"},"Define template deprecation/removal process")),Object(o.b)("h2",{id:"long-term"},"Long-term"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Expanding tooling offered, integrations, potentially SaaS offering to partially fund efforts.")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Generator UI wrappers",Object(o.b)("ul",{parentName:"li"},Object(o.b)("li",{parentName:"ul"},"Move jimschubert/intellij-swagger-codegen plugin under the org, and rename"),Object(o.b)("li",{parentName:"ul"},"Look into an Eclipse UI wrapper around the generator"),Object(o.b)("li",{parentName:"ul"},"Look at Visual Studio Code (and/or Atom, sublime text) integration"))),Object(o.b)("li",{parentName:"ul"},"Provide a native GUI for viewing/editing specs. Most tools are currently geared toward developers, but often times it may be non-technical business users who are interested in an API."),Object(o.b)("li",{parentName:"ul"},"A paid service (SaaS) for generation may be enticing for some users. Such a service would allow for statistics (mentioned earlier in telemetry)"),Object(o.b)("li",{parentName:"ul"},"Additional tools"),Object(o.b)("li",{parentName:"ul"},"node.js build system(s) integration (grunt/gulp/webpack/etc)"),Object(o.b)("li",{parentName:"ul"},"ruby gem"),Object(o.b)("li",{parentName:"ul"},"others (which may require previously mentioned SaaS API)")))}p.isMDXComponent=!0},308:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=a.a.createContext({}),p=function(e){var t=a.a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l({},t,{},e)),r},s=function(e){var t=p(e.components);return a.a.createElement(u.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=Object(n.forwardRef)((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,d=s["".concat(i,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(d,l({ref:t},u,{components:r})):a.a.createElement(d,l({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:n,i[1]=l;for(var u=2;u=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=o.a.createContext({}),s=function(e){var t=o.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c({},t,{},e)),n},u=function(e){var t=s(e.components);return o.a.createElement(l.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},b=Object(r.forwardRef)((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,a=e.parentName,l=p(e,["components","mdxType","originalType","parentName"]),u=s(n),b=r,d=u["".concat(a,".").concat(b)]||u[b]||f[b]||i;return n?o.a.createElement(d,c({ref:t},l,{components:n})):o.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=b;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var l=2;l=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=o.a.createContext({}),s=function(e){var t=o.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c({},t,{},e)),n},u=function(e){var t=s(e.components);return o.a.createElement(l.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},b=Object(r.forwardRef)((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,a=e.parentName,l=p(e,["components","mdxType","originalType","parentName"]),u=s(n),b=r,d=u["".concat(a,".").concat(b)]||u[b]||f[b]||i;return n?o.a.createElement(d,c({ref:t},l,{components:n})):o.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=b;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var l=2;l=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=a.a.createContext({}),u=function(e){var t=a.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i({},t,{},e)),r},d=function(e){var t=u(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},f=Object(n.forwardRef)((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=u(r),f=n,b=d["".concat(c,".").concat(f)]||d[f]||l[f]||o;return r?a.a.createElement(b,i({ref:t},s,{components:r})):a.a.createElement(b,i({ref:t},s))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=a.a.createContext({}),u=function(e){var t=a.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i({},t,{},e)),r},d=function(e){var t=u(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},f=Object(n.forwardRef)((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=u(r),f=n,b=d["".concat(c,".").concat(f)]||d[f]||l[f]||o;return r?a.a.createElement(b,i({ref:t},s,{components:r})):a.a.createElement(b,i({ref:t},s))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s
-
+
-
+
OpenAPI Generator has a built-in ignore file processor.
For example, to skip git_push.sh, one can create a file named .openapi-generator-ignore in the root of the output directory with the contents:
# Prevent generator from creating these files:
git_push.sh
The ignore file works just like .gitignore, and it is auto-generated by default.
If you need this functionality on initial generation, you can provide the option --ignore-file-override (CLI) or ignoreFileOverride (Maven and Gradle plugins) with a value targeting any existing file. The contents of that file will be evaluated relative to the output directory.
"How can I add a header/footer to generated code?"
"How can I add my own logging to generated code?"
"How can I add my license to the top of files?"
OpenAPI Generator supports user-defined templates without need to recompile the artifact. We also support custom generators (templates and logic) if those generators are accessible on the classpath.
OpenAPI Generator has a built-in ignore file processor.
For example, to skip git_push.sh, one can create a file named .openapi-generator-ignore in the root of the output directory with the contents:
# Prevent generator from creating these files:
git_push.sh
The ignore file works just like .gitignore, and it is auto-generated by default.
If you need this functionality on initial generation, you can provide the option --ignore-file-override (CLI) or ignoreFileOverride (Maven and Gradle plugins) with a value targeting any existing file. The contents of that file will be evaluated relative to the output directory.
"How can I add a header/footer to generated code?"
"How can I add my own logging to generated code?"
"How can I add my license to the top of files?"
OpenAPI Generator supports user-defined templates without need to recompile the artifact. We also support custom generators (templates and logic) if those generators are accessible on the classpath.
#What is the governance structure of the OpenAPI Generator project?
OpenAPI generator (openapi-generator) is managed by the members of the core team.
#What is the difference between Swagger Codegen and OpenAPI Generator?
Swagger Codegen is driven by SmartBear while OpenAPI Generator is driven by the community. More than 40 top contributors and template creators of Swagger Codegen have joined OpenAPI Generator as the founding team members. For more details, see the Fork Q&A.
Swagger is a trademark owned by SmartBear and the use of the term "Swagger" in this project is for demo (reference) purposes only.
#What is the governance structure of the OpenAPI Generator project?
OpenAPI generator (openapi-generator) is managed by the members of the core team.
#What is the difference between Swagger Codegen and OpenAPI Generator?
Swagger Codegen is driven by SmartBear while OpenAPI Generator is driven by the community. More than 40 top contributors and template creators of Swagger Codegen have joined OpenAPI Generator as the founding team members. For more details, see the Fork Q&A.
Swagger is a trademark owned by SmartBear and the use of the term "Swagger" in this project is for demo (reference) purposes only.
This document aims to answer some questions about the fork for historical reference, where these questions don't fit into other documents related to the project itself.
The founding members felt that Swagger Codegen 3.0.0 was diverging too much from the philosophy of Swagger Codegen 2.x.
The founding members were concerned that the maintenance overhead of two separate branches (2.x, 3.x) would result in issues similar to those felt in the Python community.
The founding members wanted a more rapid release cycle (weekly patch release, monthly minor release) so users do not need to wait for several months to get a stable release.
Having a community-driven version allows for innovation, reliability, and a roadmap owned by the community.
#I am currently using Swagger Codegen 2.x. How can I upgrade the generator to OpenAPI Generator?
OpenAPI Generator is based on Swagger Codegen 2.4.0-SNAPSHOT version so the migration should be relatively straightforward. Refer to the migration guide for more information.
This Q&A page is maintained by the core team members. It is not maintained by any single person, nor do these Q&As represent the views of any individual or person.
This document aims to answer some questions about the fork for historical reference, where these questions don't fit into other documents related to the project itself.
The founding members felt that Swagger Codegen 3.0.0 was diverging too much from the philosophy of Swagger Codegen 2.x.
The founding members were concerned that the maintenance overhead of two separate branches (2.x, 3.x) would result in issues similar to those felt in the Python community.
The founding members wanted a more rapid release cycle (weekly patch release, monthly minor release) so users do not need to wait for several months to get a stable release.
Having a community-driven version allows for innovation, reliability, and a roadmap owned by the community.
#I am currently using Swagger Codegen 2.x. How can I upgrade the generator to OpenAPI Generator?
OpenAPI Generator is based on Swagger Codegen 2.4.0-SNAPSHOT version so the migration should be relatively straightforward. Refer to the migration guide for more information.
This Q&A page is maintained by the core team members. It is not maintained by any single person, nor do these Q&As represent the views of any individual or person.
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
disallowAdditionalPropertiesIfNotPresent
Specify the behavior when the 'additionalProperties' keyword is not present in the OAS document. If false: the 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications. If true: when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.This setting is currently ignored for OAS 2.0 documents: 1) When the 'additionalProperties' keyword is not present in a 2.0 schema, additional properties are NOT allowed. 2) Boolean values of the 'additionalProperties' keyword are ignored. It's as if additional properties are NOT allowed.Note: the root cause are issues #1369 and #1371, which must be resolved in the swagger-parser project.
false
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
true
when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is automatically set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.
true
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
exportedName
When the generated code will be deployed to Google Cloud Functions, this option can be used to update the name of the exported function. By default, it refers to the basePath. This does not affect normal standalone nodejs server code.
null
googleCloudFunctions
When specified, it will generate the code which runs within Google Cloud Functions instead of standalone Node.JS server. See https://cloud.google.com/functions/docs/quickstart for the details of how to deploy the generated code.
false
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
serverPort
TCP port to listen on.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
disallowAdditionalPropertiesIfNotPresent
Specify the behavior when the 'additionalProperties' keyword is not present in the OAS document. If false: the 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications. If true: when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.This setting is currently ignored for OAS 2.0 documents: 1) When the 'additionalProperties' keyword is not present in a 2.0 schema, additional properties are NOT allowed. 2) Boolean values of the 'additionalProperties' keyword are ignored. It's as if additional properties are NOT allowed.Note: the root cause are issues #1369 and #1371, which must be resolved in the swagger-parser project.
false
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
true
when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is automatically set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.
true
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
exportedName
When the generated code will be deployed to Google Cloud Functions, this option can be used to update the name of the exported function. By default, it refers to the basePath. This does not affect normal standalone nodejs server code.
null
googleCloudFunctions
When specified, it will generate the code which runs within Google Cloud Functions instead of standalone Node.JS server. See https://cloud.google.com/functions/docs/quickstart for the details of how to deploy the generated code.
false
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
serverPort
TCP port to listen on.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
lenientTypeCast
Accept and cast values for simple types (string->bool, string->int, int->string)
false
objcCompatible
Add additional properties and methods for Objective-C compatibility (default: false)
null
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
lenientTypeCast
Accept and cast values for simple types (string->bool, string->int, int->string)
false
objcCompatible
Add additional properties and methods for Objective-C compatibility (default: false)
null
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
lenientTypeCast
Accept and cast values for simple types (string->bool, string->int, int->string)
false
nonPublicApi
Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)
null
objcCompatible
Add additional properties and methods for Objective-C compatibility (default: false)
null
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
hideGenerationTimestamp
Hides the generation timestamp when files are generated.
true
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
lenientTypeCast
Accept and cast values for simple types (string->bool, string->int, int->string)
false
nonPublicApi
Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)
null
objcCompatible
Add additional properties and methods for Objective-C compatibility (default: false)
null
podAuthors
Authors used for Podspec
null
podDescription
Description used for Podspec
null
podDocsetURL
Docset URL used for Podspec
null
podDocumentationURL
Documentation URL used for Podspec
null
podHomepage
Homepage used for Podspec
null
podLicense
License used for Podspec
null
podScreenshots
Screenshots used for Podspec
null
podSocialMediaURL
Social Media URL used for Podspec
null
podSource
Source information used for Podspec
null
podSummary
Summary used for Podspec
null
podVersion
Version used for Podspec
null
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
projectName
Project name in Xcode
null
responseAs
Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result are available.
null
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
true
swiftUseApiNamespace
Flag to make all the API classes inner-class of {{projectName}}API
null
unwrapRequired
Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
disallowAdditionalPropertiesIfNotPresent
Specify the behavior when the 'additionalProperties' keyword is not present in the OAS document. If false: the 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications. If true: when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.This setting is currently ignored for OAS 2.0 documents: 1) When the 'additionalProperties' keyword is not present in a 2.0 schema, additional properties are NOT allowed. 2) Boolean values of the 'additionalProperties' keyword are ignored. It's as if additional properties are NOT allowed.Note: the root cause are issues #1369 and #1371, which must be resolved in the swagger-parser project.
false
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
true
when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is automatically set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.
true
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
enumNameSuffix
Suffix that will be appended to all enum names.
Enum
enumPropertyNaming
Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'
PascalCase
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
modelPropertyNaming
Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models
original
nullSafeAdditionalProps
Set to make additional properties types declare that their indexer may return undefined
false
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
boolean, toggles whether unicode identifiers are allowed in names or not, default is false
false
disallowAdditionalPropertiesIfNotPresent
Specify the behavior when the 'additionalProperties' keyword is not present in the OAS document. If false: the 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications. If true: when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.This setting is currently ignored for OAS 2.0 documents: 1) When the 'additionalProperties' keyword is not present in a 2.0 schema, additional properties are NOT allowed. 2) Boolean values of the 'additionalProperties' keyword are ignored. It's as if additional properties are NOT allowed.Note: the root cause are issues #1369 and #1371, which must be resolved in the swagger-parser project.
false
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
true
when the 'additionalProperties' keyword is not present in a schema, the value of 'additionalProperties' is automatically set to false, i.e. no additional properties are allowed. Note: this mode is not compliant with the JSON schema specification. This is the original openapi-generator behavior.
true
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not).
true
enumNameSuffix
Suffix that will be appended to all enum names.
Enum
enumPropertyNaming
Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'
PascalCase
legacyDiscriminatorBehavior
This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.
true
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
false
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
true
modelPropertyNaming
Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models
original
nullSafeAdditionalProps
Set to make additional properties types declare that their indexer may return undefined
false
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list.
false
sortModelPropertiesByRequiredFlag
Sort model properties to place required parameters before optional parameters.
true
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters.
There are two ways to provide selective generation properties or "global properties". First, these can be passed as Java System Properties. Second, these can be passed via the global property tooling option (--global-property in CLI and globalProperty in Maven and Gradle configurations). This differentiation is new in version 5.0 with the removal of the -D CLI option and the renaming of systemProperties. If you're upgrading to OpenAPI Generator 5.0+
While the examples seen in Customization use the Java System Property syntax, keep in mind that the following are equivalent:
Why the two differing ways to provide the same properties? We previously accepted a -D tooling option which resembled Java System Property declaration. In older versions of OpenAPI Generator, the option modified the SystemProperties collection directly and was truly a "system property". This option changed during the 4.x release in an effort to make OpenAPI Generator thread-safe and isolate its configuration via thread locals. We no longer mutate System Properties. In the 4.x release and earlier, specifying the tooling -D option with system properties intended for other tools like swagger-parser rather than passing them as true Java System Properties would lead to unexpected behavior for the user; if our tool set the system property after invoking certain code, it would seem to the user like Java System Properties weren't working!
There are two ways to provide selective generation properties or "global properties". First, these can be passed as Java System Properties. Second, these can be passed via the global property tooling option (--global-property in CLI and globalProperty in Maven and Gradle configurations). This differentiation is new in version 5.0 with the removal of the -D CLI option and the renaming of systemProperties. If you're upgrading to OpenAPI Generator 5.0+
While the examples seen in Customization use the Java System Property syntax, keep in mind that the following are equivalent:
Why the two differing ways to provide the same properties? We previously accepted a -D tooling option which resembled Java System Property declaration. In older versions of OpenAPI Generator, the option modified the SystemProperties collection directly and was truly a "system property". This option changed during the 4.x release in an effort to make OpenAPI Generator thread-safe and isolate its configuration via thread locals. We no longer mutate System Properties. In the 4.x release and earlier, specifying the tooling -D option with system properties intended for other tools like swagger-parser rather than passing them as true Java System Properties would lead to unexpected behavior for the user; if our tool set the system property after invoking certain code, it would seem to the user like Java System Properties weren't working!
This gradle plugin offers a declarative DSL via extensions (these are Gradle project extensions). These map almost fully 1:1 with the options you’d pass to the CLI or Maven plugin. The plugin maps the extensions to a task of the same name to provide a clean API. If you’re interested in the extension/task mapping concept from a high-level, you can check out Gradle’s docs.
To include in your project, add the following to build.gradle:
Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents.
openApiGenerators
Lists generators available via Open API Generators.
openApiMeta
Generates a new generator to be consumed via Open API Generator.
openApiValidate
Validates an Open API 2.0 or 3.x specification document.
The plugin implements the above tasks as project extensions of the same name. If you’d like to declare these tasks as dependencies to other tasks (using dependsOn), you’ll need a task reference. e.g.:
compileJava.dependsOn tasks.openApiGenerate
For full details of all options, see the plugin README.
This gradle plugin offers a declarative DSL via extensions (these are Gradle project extensions). These map almost fully 1:1 with the options you’d pass to the CLI or Maven plugin. The plugin maps the extensions to a task of the same name to provide a clean API. If you’re interested in the extension/task mapping concept from a high-level, you can check out Gradle’s docs.
To include in your project, add the following to build.gradle:
Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents.
openApiGenerators
Lists generators available via Open API Generators.
openApiMeta
Generates a new generator to be consumed via Open API Generator.
openApiValidate
Validates an Open API 2.0 or 3.x specification document.
The plugin implements the above tasks as project extensions of the same name. If you’d like to declare these tasks as dependencies to other tasks (using dependsOn), you’ll need a task reference. e.g.:
compileJava.dependsOn tasks.openApiGenerate
For full details of all options, see the plugin README.
This document lists short-term, medium-term, and long-term goals for the project.
NOTE
These are goals, not necessarily commitments. The sections are not intended to represent exclusive focus during these terms. For example, when you start at a college or university you may have a long-term goal to graduate and a short-term goal to find a job for supplemental income. We will similarly work toward many of our medium-term and long-term goals in the near future as we move toward meeting our short-term goals.
Short term are focused on improving contributor and user productivity (part of this is getting the word out).
CLI improvements
Search functionality (e.g. what generators support retrofit, what generators are available for kotlin)
Build automation improvements
Discuss consolidating current third-party build systems
Investigate custom docker containerization for prepared build environments
Automated release stability
General
OAS3.0 features support: anyOf, oneOf, callbacks, etc
Consider opt-in telemetry about generators being used, limited to a counter of invocations by generator name). This would allow us to make prioritization decisions based on statistics.
Code clean up
centralize build scripts
organize samples/bin scripts according to new generator names
Typed representation of the model bound to our templates. As it is, everything is treated an an Object, and this can lead to changes in the interface which might be unexpected from the template perspective.
Feature set (potential generators to add; not an exhaustive list)
Unit-testing templates (to previously mentioned explicit type as an interface to the template)
Reduce coupling
Make types extending CodegenConfig become the generation entrypoint
Allow current CodegenConfig types to define templating engine
Allow current CodegenConfig types to modify workflow (currently encapsulated in DefaultGenerator and tightly coupled to the template engine
Clearer reuse of "language" features, outside of "generator" types. That is, rather than enforcing polymorphic sharing of "language" which currently allows the super type to redefine framework-specific mapping functionality, generators could compose one or more language support types.
Expanding tooling offered, integrations, potentially SaaS offering to partially fund efforts.
Generator UI wrappers
Move jimschubert/intellij-swagger-codegen plugin under the org, and rename
Look into an Eclipse UI wrapper around the generator
Look at Visual Studio Code (and/or Atom, sublime text) integration
Provide a native GUI for viewing/editing specs. Most tools are currently geared toward developers, but often times it may be non-technical business users who are interested in an API.
A paid service (SaaS) for generation may be enticing for some users. Such a service would allow for statistics (mentioned earlier in telemetry)
This document lists short-term, medium-term, and long-term goals for the project.
NOTE
These are goals, not necessarily commitments. The sections are not intended to represent exclusive focus during these terms. For example, when you start at a college or university you may have a long-term goal to graduate and a short-term goal to find a job for supplemental income. We will similarly work toward many of our medium-term and long-term goals in the near future as we move toward meeting our short-term goals.
Short term are focused on improving contributor and user productivity (part of this is getting the word out).
CLI improvements
Search functionality (e.g. what generators support retrofit, what generators are available for kotlin)
Build automation improvements
Discuss consolidating current third-party build systems
Investigate custom docker containerization for prepared build environments
Automated release stability
General
OAS3.0 features support: anyOf, oneOf, callbacks, etc
Consider opt-in telemetry about generators being used, limited to a counter of invocations by generator name). This would allow us to make prioritization decisions based on statistics.
Code clean up
centralize build scripts
organize samples/bin scripts according to new generator names
Typed representation of the model bound to our templates. As it is, everything is treated an an Object, and this can lead to changes in the interface which might be unexpected from the template perspective.
Feature set (potential generators to add; not an exhaustive list)
Unit-testing templates (to previously mentioned explicit type as an interface to the template)
Reduce coupling
Make types extending CodegenConfig become the generation entrypoint
Allow current CodegenConfig types to define templating engine
Allow current CodegenConfig types to modify workflow (currently encapsulated in DefaultGenerator and tightly coupled to the template engine
Clearer reuse of "language" features, outside of "generator" types. That is, rather than enforcing polymorphic sharing of "language" which currently allows the super type to redefine framework-specific mapping functionality, generators could compose one or more language support types.
Expanding tooling offered, integrations, potentially SaaS offering to partially fund efforts.
Generator UI wrappers
Move jimschubert/intellij-swagger-codegen plugin under the org, and rename
Look into an Eclipse UI wrapper around the generator
Look at Visual Studio Code (and/or Atom, sublime text) integration
Provide a native GUI for viewing/editing specs. Most tools are currently geared toward developers, but often times it may be non-technical business users who are interested in an API.
A paid service (SaaS) for generation may be enticing for some users. Such a service would allow for statistics (mentioned earlier in telemetry)
Tags basically group endpoints into the same API class file. For example, an endpoint with the store tag will be generated in the StoreApi class file in most generators.
Tags basically group endpoints into the same API class file. For example, an endpoint with the store tag will be generated in the StoreApi class file in most generators.