55 lines
28 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="generator" content="Docusaurus">
<link rel="preconnect" href="https://www.google-analytics.com">
<script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-132927057-1","auto"),ga("send","pageview")</script>
<script async src="https://www.google-analytics.com/analytics.js"></script>
<link rel="preconnect" href="https://www.google-analytics.com">
<script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-132927057-1","auto"),ga("send","pageview")</script>
<script async src="https://www.google-analytics.com/analytics.js"></script>
<script src="https://buttons.github.io/buttons.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
<script src="/js/code-block-buttons.js"></script>
<title data-react-helmet="true">Guidelines For Contributing</title>
<meta data-react-helmet="true" http-equiv="x-ua-compatible" content="ie=edge"><meta data-react-helmet="true" property="og:title" content="OpenAPI Generator · Generate clients, servers, and documentation from OpenAPI 2.0/3.x documents"><meta data-react-helmet="true" property="og:image" content="https://openapi-generator.tech/img/docusaurus.png"><meta data-react-helmet="true" property="twitter:image" content="https://openapi-generator.tech/img/docusaurus.png"><meta data-react-helmet="true" name="twitter:image:alt" content="Image for OpenAPI Generator · Generate clients, servers, and documentation from OpenAPI 2.0/3.x documents"><meta data-react-helmet="true" name="twitter:card" content="summary"><meta data-react-helmet="true" name="description" content="## Before submitting an issue"><meta data-react-helmet="true" property="og:description" content="## Before submitting an issue"><meta data-react-helmet="true" property="og:url" content="https://openapi-generator.tech/docs/contributing">
<link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.png">
<link rel="stylesheet" href="/styles.ec5417b5.css">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}function e(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}var n=window.matchMedia("(prefers-color-scheme: dark)");n.addListener((function(n){null===e()&&t(n.matches?"dark":"")}));var a=e();null!==a?t(a):n.matches&&t("dark")}()</script>
<div id="__docusaurus">
<nav class="navbar navbar--light navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a aria-current="page" class="navbar__brand active" href="/"><img class="navbar__logo" src="/img/mono-logo.svg" alt="OpenAPI Tools logo"><strong>OpenAPI Generator</strong></a><a class="navbar__item navbar__link" href="/docs/installation">Getting Started</a><a class="navbar__item navbar__link" href="/docs/generators">Generators</a><a class="navbar__item navbar__link" href="/docs/roadmap">Roadmap</a><a class="navbar__item navbar__link" href="/docs/faq">FAQ</a><a class="navbar__item navbar__link" href="/team">Team</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" activeclassname="navbar__link--active" to="https://api.openapi-generator.tech" href="https://api.openapi-generator.tech">API</a></div><div class="navbar__items navbar__items--right"><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_1gtM"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_keGJ moon_1gwN"></span></div><div class="react-toggle-track-x"><span class="toggle_keGJ sun_3CPA"></span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a aria-current="page" class="navbar__brand active" href="/"><img class="navbar__logo" src="/img/mono-logo.svg" alt="OpenAPI Tools logo"><strong>OpenAPI Generator</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/installation">Getting Started</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/generators">Generators</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/roadmap">Roadmap</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/faq">FAQ</a></li><li class="menu__list-item"><a class="menu__link" href="/team">Team</a></li><li class="menu__list-item"><a class="menu__link" href="/blog">Blog</a></li><li class="menu__list-item"><a class="menu__link" activeclassname="navbar__link--active" to="https://api.openapi-generator.tech" href="https://api.openapi-generator.tech">API</a></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_1kjD"><div class="docSidebarContainer_1cYp"><div class="sidebar_1kLs"><div class="menu menu--responsive"><button aria-label="Open Menu" class="button button--secondary button--sm menu__button" type="button"><svg class="sidebarMenuIcon_2vk4" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 32 32" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/installation">CLI Installation</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/plugins">Plugins</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/online">Online</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/usage">Usage</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/globals">Global Properties</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/configuration">Configuration Options</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/file-post-processing">File post-processing</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Extending</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/templating">Using Templates</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/customization">Customization</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/debugging">Debugging</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/integrations">Workflow Integrations</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Contributing</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/contributing">Guidelines</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/code-of-conduct">Code of Conduct</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/contribute-building">Building the code</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/new-generator">Create a New Generator</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">About</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/roadmap">Roadmap</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/swagger-codegen-migration">Migrating from Swagger Codegen</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/fork-qna">Swagger Codegen Fork: Q&amp;A</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Releases</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/release-summary">Release Summary</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/release-3-0-0">Release Notes: 3.0.0</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">API</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/generators">Generators List</a></li></ul></li></ul></div></div></div><main class="docMainContainer_FFX1"><div class="padding-vert--lg"><div class="container"><div class="row"><div class="col"><div class="docItemContainer_2cwg"><article><header><h1 class="docTitle_1vWb">Guidelines For Contributing</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor" id="before-submitting-an-issue"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#before-submitting-an-issue" title="Direct link to heading">#</a>Before submitting an issue</h2><ul><li>If you&#x27;re not using the latest master to generate API clients or server stubs, please give it another try by pulling the latest master as the issue may have already been addressed. Ref: <a href="https://github.com/openapitools/openapi-generator#getting-started">Getting Started</a></li><li>Search the <a href="https://github.com/openapitools/openapi-generator/issues">open issue</a> and <a href="https://github.com/openapitools/openapi-generator/issues?q=is%3Aissue+is%3Aclosed">closed issue</a> to ensure no one else has reported something similar before.</li><li>File an <a href="https://github.com/openapitools/openapi-generator/issues/new">issue ticket</a> by providing all the required information. Failure to provide enough detail may result in slow response from the community.</li><li>Test with the latest master by building the JAR locally to see if the issue has already been addressed.</li><li>You can also make a suggestion or ask a question by opening an &quot;issue&quot;.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor" id="before-submitting-a-pr"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#before-submitting-a-pr" title="Direct link to heading">#</a>Before submitting a PR</h2><ul><li>Search the <a href="https://github.com/openapitools/openapi-generator/issues">open issue</a> to ensure no one else has reported something similar and no one is actively working on similar proposed change.</li><li>If no one has suggested something similar, open an <a href="https://github.com/openapitools/openapi-generator/issues">&quot;issue&quot;</a> with your suggestion to gather feedback from the community.</li><li>If you&#x27;re adding a new option to a generator, please consider using the <code>-t</code> option with customized templates instead or start a discussion first by opening an issue as we want to avoid adding too many options to the generator.</li><li>It&#x27;s recommended to <strong>create a new git branch</strong> for the change so that the merge commit message looks nicer in the commit history.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor" id="how-to-contribute"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#how-to-contribute" title="Direct link to heading">#</a>How to contribute</h2><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="git"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#git" title="Direct link to heading">#</a>git</h3><p>If you&#x27;re new to git, you may find the following FAQs useful:</p><p><a href="https://github.com/openapitools/openapi-generator/wiki/FAQ#git">https://github.com/openapitools/openapi-generator/wiki/FAQ#git</a></p><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="branches"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#branches" title="Direct link to heading">#</a>Branches</h3><p>Please file the pull request against the correct branch, e.g. <code>master</code> for non-breaking changes. See the <a href="https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches">Git Branches</a> page for more information.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="code-generators"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#code-generators" title="Direct link to heading">#</a>Code generators</h3><p>All the code generators can be found in <a href="https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages">modules/openapi-generator/src/main/java/org/openapitools/codegen/languages</a></p><p>If you want to add a new generator, follow the <a href="https://openapi-generator.tech/docs/new-generator">new-generator</a> guide. </p><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="templates"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#templates" title="Direct link to heading">#</a>Templates</h3><p>All the templates (<a href="https://mustache.github.io/">mustache</a>) can be found in <a href="https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources">modules/openapi-generator/src/main/resources</a>.</p><p>For a list of variables available in the template, please refer to this <a href="https://github.com/openapitools/openapi-generator/wiki/Mustache-Template-Variables">page</a></p><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="style-guide"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#style-guide" title="Direct link to heading">#</a>Style guide</h3><p>Code change should conform to the programming style guide of the respective languages:</p><ul><li>Ada: <a href="https://en.wikibooks.org/wiki/Ada_Style_Guide/Source_Code_Presentation">https://en.wikibooks.org/wiki/Ada_Style_Guide/Source_Code_Presentation</a></li><li>Android: <a href="https://source.android.com/source/code-style.html">https://source.android.com/source/code-style.html</a></li><li>Bash: <a href="https://github.com/bahamas10/bash-style-guide">https://github.com/bahamas10/bash-style-guide</a></li><li>C#: <a href="https://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx">https://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx</a></li><li>C++: <a href="https://google.github.io/styleguide/cppguide.html">https://google.github.io/styleguide/cppguide.html</a></li><li>C++ (Tizen): <a href="https://wiki.tizen.org/Native_Platform_Coding_Idiom_and_Style_Guide#C.2B.2B_Coding_Style">https://wiki.tizen.org/Native_Platform_Coding_Idiom_and_Style_Guide#C.2B.2B_Coding_Style</a></li><li>C++ (Unreal Engine 4): <a href="https://docs.unrealengine.com/en-US/ProductionPipelines/DevelopmentSetup/CodingStandard/index.html">https://docs.unrealengine.com/en-US/ProductionPipelines/DevelopmentSetup/CodingStandard/index.html</a></li><li>Clojure: <a href="https://github.com/bbatsov/clojure-style-guide">https://github.com/bbatsov/clojure-style-guide</a></li><li>Crystal: <a href="https://crystal-lang.org/reference/conventions/coding_style.html">https://crystal-lang.org/reference/conventions/coding_style.html</a></li><li>Dart: <a href="https://www.dartlang.org/guides/language/effective-dart/style">https://www.dartlang.org/guides/language/effective-dart/style</a></li><li>Elixir: <a href="https://github.com/christopheradams/elixir_style_guide">https://github.com/christopheradams/elixir_style_guide</a></li><li>Eiffel: <a href="https://www.eiffel.org/doc/eiffel/Coding%20Standards">https://www.eiffel.org/doc/eiffel/Coding%20Standards</a></li><li>Erlang: <a href="https://github.com/inaka/erlang_guidelines">https://github.com/inaka/erlang_guidelines</a></li><li>Haskell: <a href="https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md">https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md</a></li><li>Java: <a href="https://google.github.io/styleguide/javaguide.html">https://google.github.io/styleguide/javaguide.html</a></li><li>JavaScript: <a href="https://github.com/airbnb/javascript/">https://github.com/airbnb/javascript/</a></li><li>Kotlin: <a href="https://kotlinlang.org/docs/reference/coding-conventions.html">https://kotlinlang.org/docs/reference/coding-conventions.html</a></li><li>Groovy: <a href="http://groovy-lang.org/style-guide.html">http://groovy-lang.org/style-guide.html</a></li><li>Go: <a href="https://github.com/golang/go/wiki/CodeReviewComments">https://github.com/golang/go/wiki/CodeReviewComments</a></li><li>ObjC: <a href="https://github.com/NYTimes/objective-c-style-guide">https://github.com/NYTimes/objective-c-style-guide</a></li><li>Perl: <a href="http://perldoc.perl.org/perlstyle.html">http://perldoc.perl.org/perlstyle.html</a></li><li>PHP: <a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md">https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md</a></li><li>PowerShell: <a href="https://msdn.microsoft.com/en-us/library/dd878270(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/dd878270(v=vs.85).aspx</a></li><li>Python: <a href="https://www.python.org/dev/peps/pep-0008/">https://www.python.org/dev/peps/pep-0008/</a></li><li>R: <a href="https://google.github.io/styleguide/Rguide.xml">https://google.github.io/styleguide/Rguide.xml</a></li><li>Ruby: <a href="https://github.com/bbatsov/ruby-style-guide">https://github.com/bbatsov/ruby-style-guide</a></li><li>Rust: <a href="https://github.com/rust-lang-nursery/fmt-rfcs/blob/master/guide/guide.md">https://github.com/rust-lang-nursery/fmt-rfcs/blob/master/guide/guide.md</a> (the default <a href="https://github.com/rust-lang-nursery/rustfmt">rustfmt</a> configuration)</li><li>Scala: <a href="http://docs.scala-lang.org/style/">http://docs.scala-lang.org/style/</a></li><li>Swift: <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html">Apple Developer</a></li><li>TypeScript: <a href="https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines">https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines</a></li></ul><p>For other languages, feel free to suggest.</p><p>You may find the current code base not 100% conform to the coding style and we welcome contributions to fix those.</p><p>For <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#vendorExtensions">Vendor Extensions</a>, please follow the naming convention below:</p><ul><li>For general vendor extension, use lower case and hyphen. e.g. <code>x-is-unique</code>, <code>x-content-type</code></li><li>For language-specified vendor extension, put it in the form of <code>x-{lang}-{extension-name}</code>. e.g. <code>x-objc-operation-id</code>, <code>x-java-feign-retry-limit</code></li><li>For a list of existing vendor extensions in use, please refer to <a href="https://github.com/openapitools/openapi-generator/wiki/Vendor-Extensions">https://github.com/openapitools/openapi-generator/wiki/Vendor-Extensions</a>. If you&#x27;ve added new vendor extensions as part of your PR, please update the wiki page.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="testing"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#testing" title="Direct link to heading">#</a>Testing</h3><p>To add test cases (optional) covering the change in the code generator, please refer to <a href="https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/test/java/org/openapitools/codegen">modules/openapi-generator/src/test/java/org/openapitools/codegen</a></p><p>To test the templates, please perform the following:</p><ul><li>Update the Petstore sample by running the shell scripts under the <code>bin</code> folder. For example, run <code>./bin/generate-samples.sh ./bin/configs/python*</code> to update the Python-related samples under <a href="https://github.com/openapitools/openapi-generator/tree/master/samples"><code>samples</code></a>. For Windows, please install <a href="https://gitforwindows.org/">GIT bash</a>. (If you find that there are new files generated or unexpected changes as a result of the update, that&#x27;s not unusual as the test cases are added to the OpenAPI spec from time to time. If you&#x27;ve questions or concerns, please open a ticket to start a discussion)</li><li>During development, it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the <code>-t</code> parameter: <code>-t modules/openapi-generator/src/main/resources/python</code>.</li><li>Run the tests in the sample folder using maven <code>mvn integration-test -f /path/to/pom.xml</code>, e.g. <code>mvn integration-test -f samples/client/petstore/python/pom.xml</code>. (some languages may not contain unit testing for Petstore and we&#x27;re looking for contribution from the community to implement those tests)</li><li>Finally, git commit the updated samples files: <code>git commit -a</code> (<code>git add -A</code> if added files with new test cases)</li><li>For new test cases, please add to the <a href="https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml">Fake Petstore spec</a></li></ul><p>To start the CI tests, you can:</p><ul><li>Run <code>mvn verify -Psamples</code>, assuming you have all the required tools installed to run tests for different languages.</li><li>Leverage <a href="http://travis-ci.org">http://travis-ci.org</a> to run the CI tests by adding your own openapi-generator repository.</li><li>Run some of the CI tests in your local workspace.</li></ul><p>See <a href="https://github.com/OpenAPITools/openapi-generator/wiki/Integration-Tests">OpenAPI Tools wiki</a> for more information about the integration tests.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor" id="tips"></a><a aria-hidden="true" tabindex="-1" class="hash-link" href="#tips" title="Direct link to heading">#</a>Tips</h3><ul><li>Smaller changes are easier to review</li><li>[Optional] For bug fixes, provide a OpenAPI Spec to repeat the issue so that the reviewer can use it to confirm the fix</li><li>Add test case(s) to cover the change</li><li>Document the fix in the code to make the code more readable</li><li>Make sure test cases passed after the change (one way is to leverage <a href="https://travis-ci.org/">https://travis-ci.org/</a> to run the CI tests)</li><li>File a PR with meaningful title, description and commit messages</li><li>Make sure the option &quot;Allow edits from maintainers&quot; in the PR is selected so that the maintainers can update your PRs with minor fixes, if needed.</li><li>Recommended git settings<ul><li><code>git config core.autocrlf input</code> to tell Git convert CRLF to LF on commit but not the other way around </li></ul></li><li>To close an issue (e.g. issue 1542) automatically after a PR is merged, use keywords &quot;fix&quot;, &quot;close&quot;, &quot;resolve&quot; in the PR description, e.g. <code>fix #1542</code>. (Ref: <a href="https://help.github.com/articles/closing-issues-using-keywords/">closing issues using keywords</a>)</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/OpenAPITools/openapi-generator/edit/master/website/../docs/contributing.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 40 40" style="margin-right:0.3em;vertical-align:sub"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col text--right"><em><small>Last updated on <time datetime="2021-11-20T17:25:45.000Z" class="docLastUpdatedAt_1sqk">2021-11-20</time> by <strong>Kevin Chen</strong></small></em></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/integrations"><h5 class="pagination-nav__link--sublabel">Previous</h5><h4 class="pagination-nav__link--label">« Workflow Integrations</h4></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/code-of-conduct"><h5 class="pagination-nav__link--sublabel">Next</h5><h4 class="pagination-nav__link--label">Code of Conduct »</h4></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_TbNY"><ul class="contents contents__left-border"><li><a href="#before-submitting-an-issue" class="contents__link">Before submitting an issue</a></li><li><a href="#before-submitting-a-pr" class="contents__link">Before submitting a PR</a></li><li><a href="#how-to-contribute" class="contents__link">How to contribute</a><ul><li><a href="#git" class="contents__link">git</a></li><li><a href="#branches" class="contents__link">Branches</a></li><li><a href="#code-generators" class="contents__link">Code generators</a></li><li><a href="#templates" class="contents__link">Templates</a></li><li><a href="#style-guide" class="contents__link">Style guide</a></li><li><a href="#testing" class="contents__link">Testing</a></li><li><a href="#tips" class="contents__link">Tips</a></li></ul></li></ul></div></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/customization">Customizing Generators</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/installation">Installation</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/integrations">Workflow Integrations</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/users">User Showcase</a></li><li class="footer__item"><a class="footer__link-item" target="_blank" rel="noopener noreferrer" href="https://stackoverflow.com/questions/tagged/openapi-generator">Stack Overflow</a></li><li class="footer__item"><a class="footer__link-item" target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/openapi-generator/shared_invite/enQtNzAyNDMyOTU0OTE1LTY5ZDBiNDI5NzI5ZjQ1Y2E5OWVjMjZkYzY1ZGM2MWQ4YWFjMzcyNDY5MGI4NjQxNDBiMTlmZTc5NjY2ZTQ5MGM">Chat Room</a></li><li class="footer__item"><a class="footer__link-item" target="_blank" rel="noopener noreferrer" href="https://twitter.com/oas_generator">Twitter</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a class="footer__link-item" target="_blank" rel="noopener noreferrer" href="https://github.com/OpenAPITools/openapi-generator">GitHub</a></li></ul></div></div><div class="text--center"><div class="margin-bottom--sm"><a href="https://openapi-generator.tech/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_1Wg7"><img class="footer__logo" alt="OpenAPI Tools" src="/img/mono-logo.svg"></a></div>Copyright © 2021 OpenAPI-Generator Contributors (https://openapi-generator.tech)</div></div></footer>
</div>
<script src="/styles.38be54b8.js"></script>
<script src="/runtime~main.f7c11631.js"></script>
<script src="/main.a437a66b.js"></script>
<script src="/1.df107477.js"></script>
<script src="/2.575ca174.js"></script>
<script src="/3.eada3617.js"></script>
<script src="/1be78505.3e977af1.js"></script>
<script src="/20ac7829.be2ad927.js"></script>
<script src="/17896441.60782a44.js"></script>
<script src="/ecfe08ed.7ccd6fe2.js"></script>
</body>
</html>