{"id":13580050,"url":"https://github.com/fabien0102/openapi-codegen","last_synced_at":"2025-04-13T00:38:45.215Z","repository":{"id":39801958,"uuid":"417437020","full_name":"fabien0102/openapi-codegen","owner":"fabien0102","description":"A tool for generating code base on an OpenAPI schema.","archived":false,"fork":false,"pushed_at":"2025-03-01T20:21:19.000Z","size":2658,"stargazers_count":559,"open_issues_count":44,"forks_count":68,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-05T23:02:45.336Z","etag":null,"topics":["codegenerator","openapi","openapi-cli","openapi-codegen","openapi3","swagger","swagger-codegen","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabien0102.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-15T09:08:51.000Z","updated_at":"2025-04-05T03:08:13.000Z","dependencies_parsed_at":"2024-05-20T11:46:22.695Z","dependency_job_id":"acb5be08-bfc0-4d3c-aeb9-0719085a310f","html_url":"https://github.com/fabien0102/openapi-codegen","commit_stats":{"total_commits":185,"total_committers":15,"mean_commits":"12.333333333333334","dds":"0.28648648648648645","last_synced_commit":"881cc80aaacdcb9d147b409f7ccc6e5b3a88120d"},"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabien0102%2Fopenapi-codegen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabien0102%2Fopenapi-codegen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabien0102%2Fopenapi-codegen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabien0102%2Fopenapi-codegen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabien0102","download_url":"https://codeload.github.com/fabien0102/openapi-codegen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650414,"owners_count":21139671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codegenerator","openapi","openapi-cli","openapi-codegen","openapi3","swagger","swagger-codegen","typescript"],"created_at":"2024-08-01T15:01:46.580Z","updated_at":"2025-04-13T00:38:45.194Z","avatar_url":"https://github.com/fabien0102.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","typescript"],"sub_categories":[],"readme":"\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\" style=\"margin-bottom: 16px\"\u003e\n  \u003cimg src=\"openapi-codegen-logo.svg\" width=\"400px\" /\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n  \u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://www.npmjs.com/package/@openapi-codegen/cli\"\u003e\n      \u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/v/@openapi-codegen/cli.svg?style=for-the-badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/fabien0102/openapi-codegen/blob/main/LICENCE.md\"\u003e\n      \u003cimg alt=\"Read the documentation\" src=\"https://img.shields.io/npm/l/@openapi-codegen/cli.svg?style=for-the-badge\"\u003e\n    \u003c/a\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n    Tooling to give you full type-safety around OpenAPI specs.\n  \n  \u003c/div\u003e\n\n\u003cbr\u003e\n\n### You can generate\n\n- TypeScript types\n- Type-safe Generic Fetchers\n- Type-safe React Query hooks (https://github.com/tanstack/query)\n\n## Getting started\n\n1. **Initialize the generator**\n\n   ```bash\n   npx @openapi-codegen/cli init\n   ```\n\n   \u003cimg style=\"max-width: 400px\" src=\"https://user-images.githubusercontent.com/271912/194000679-5a4501b8-5fc0-430c-9217-028bf91a5dcd.gif\"\u003e\n\n   If you wish to change any of the selections made, you can do so in the generated `openapi-codegen.config.ts` file later..\n\n2. **Start Generation**\n\n   ```bash\n   npx openapi-codegen gen {namespace}\n   ```\n\n   After the code generation is done, you will notice the following files:\n\n   - `{namespace}Fetcher.ts` - defines a function that will make requests to your API.\n   - `{namespace}Context.tsx` - the context that provides `{namespace}Fetcher` to other components.\n   - `{namespace}Components.tsx` - generated React Query components (if you selected React Query as part of initialization).\n   - `{namespace}Schemas.ts` - the generated Typescript types from the provided Open API schemas.\n\n   \u0026nbsp;\n\n   \u003e **Warning**\n   \u003e\n   \u003e If `{namespace}Fetcher.ts` or `{namespace}Context.tsx` already exist in the output folder, they will not be replaced. However, `{namespace}Components.tsx` and `{namespace}Schemas.ts` will be re-generated each time based on the Open API spec file provided.\n\n3. **Configure the Fetcher** (optional)\n\n   After the first step you should see a file called `{namespace}Fetcher.ts` in your ouput directory. This file\n\n   By default it uses the built-in Fetch API, you are free to change this to your fetching library of choice (Axios, Got etc.)\n\n   If your Open API spec contains a configured server, then the base URL for all requests will default to that server's URL. If no such configuration exists, you'll need to specify the base URL value.\n\n4. **Install and Configure React Query** (optional)\n\n   If during generator setup you picked `\u003e React Query components`, then you will need to install and configure React Query in order for the generated React hooks to work properly:\n\n   - Install the library\n\n     ```bash\n     npm i @tanstack/react-query\n     ```\n\n   - Wire up the `QueryClient` as described [here](https://tanstack.com/query/v4/docs/adapters/react-query).\n\n## Usage\n\n### React Query components\n\nUsing [giphy specs](https://api.apis.guru/v2/specs/giphy.com/1.0/openapi.yaml) as example\n\nThis will generate lot of ready-to-use hooks like:\n\n- `useRandomGif` -\u003e Wrapper around `useQuery` with injected types\n- `useSuspenseRandomGif` -\u003e Same but with `useSuspense`\n\nAnd you will have some `useMutation` if the api expose some (not the case with this example)\n\nHere an example of usage of this generated api:\n\n```tsx\nimport { useRandomGif } from \"./giphy\";\n\nexport function GifExplorer() {\n  const [tag, setTag] = useState(\"\");\n  const { data, error, isError, isPending } = useRandomGif({\n    queryParams: {\n      tag,\n    },\n  });\n\n  return (\n    \u003cdiv\u003e\n      \u003cinput value={tag} onChange={(e) =\u003e setTag(e.currentTarget.value)} /\u003e\n      {isPending ? (\n        \u003cdiv\u003eLoading…\u003c/div\u003e\n      ) : isError ? (\n        \u003cdiv\u003e\n          \u003cpre\u003e{error.payload ?? \"Unknown error\"}\u003c/pre\u003e\n        \u003c/div\u003e\n      ) : (\n        // This is typed!\n        \u003cimg src={data.data?.url} /\u003e\n      )}\n    \u003c/div\u003e\n  );\n}\n```\n\nThis also support `reactQuery.skipToken` to stay type-safe when you are waiting for params:\n\n```diff\n+ import { skipToken } from \"@tanstack/react-query\";\n\n- const { data, error, isError, isPending } = useRandomGif({\n-     queryParams: {\n-       tag,\n-     },\n-   });\n+ const { data, error, isError, isPending } = useRandomGif(\n+     tag\n+       ? skipToken\n+       : {\n+           queryParams: {\n+             tag,\n+           },\n+         }\n+   );\n```\n\nYou can also use directly the queryFn for more advanced use cases:\n\n```tsx\nimport { randomGifQuery } from \"./giphy/giphyComponents\";\n\nconst queryClient = new QueryClient();\n\nqueryClient.fetchQuery(randomGifQuery({}));\n```\n\n## Configuration\n\nThe only thing you need to manage is the configuration.\nEverything is typed and self-documented, but just in case, you can find here example configuration below:\n\n### Example Config\n\n```ts\n// openapi-codegen.config.ts\nimport { defineConfig } from \"@openapi-codegen/cli\";\nimport {\n  generateSchemaTypes,\n  generateReactQueryComponents,\n} from \"@openapi-codegen/typescript\";\n\nexport default defineConfig({\n  example: {\n    // can be overridden from cli\n    from: {\n      source: \"github\",\n      owner: \"fabien0102\",\n      repository: \"openapi-codegen\",\n      ref: \"main\",\n      specPath: \"examples/spec.yaml\",\n    },\n\n    // can be overridden from cli\n    outputDir: \"src/queries\",\n\n    to: async (context) =\u003e {\n      // You can transform the `context.openAPIDocument` here, can be useful to remove internal routes or fixing some known issues in the specs ;)\n\n      // Generate all the schemas types (components \u0026 responses)\n      const { schemasFiles } = await generateSchemaTypes(context, {\n        /* config */\n      });\n\n      // Generate all react-query components\n      await generateReactQueryComponents(context, {\n        /* config*/\n        schemasFiles,\n      });\n    },\n  },\n});\n```\n\n### Plugins\n\nthe `@openapi-codegen/cli` supports these generator plugins:\n\n#### **generateSchemaTypes** (frontend/backend)\n\ngenerate all schema types for your specification:\n\n```ts\nconst { schemasFiles } = await generateSchemaTypes(context, {\n  /* config */\n});\n```\n\noutput: `{namespace}Schemas.ts`\n\n#### **generateFetchers** (frontend)\n\ngenerate all fetchers with types for your specification\n\n```ts\nawait generateFetchers(context, {\n  /* config */\n  schemasFiles,\n});\n```\n\noutput: `{namespace}Fetchers.ts`\n\n#### **generateReactQueryComponents** (frontend)\n\ngenerate all React Query Components for useQuery() and useMutation()\n\n```ts\nawait generateReactQueryComponents(context, {\n  /* config*/\n  schemasFiles,\n});\n```\n\noutput: `{namespace}Components.ts`\n\nThis is also generate a query function that can be used in most of React Query functions.\n\nExample with `queryClient.fetchQuery` (data loader case):\n\n```ts\nawait queryClient.fetchQuery(getYourQueryNameQuery({}));\n```\n\nYou can import any generator into the `to` section, those can be the ones provided by this project or your own custom ones. You have full control of what you are generating!\n\nHave fun!\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://fabien0102.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1761469?v=4?s=100\" width=\"100px;\" alt=\"Fabien BERNARD\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFabien BERNARD\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=fabien0102\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-fabien0102\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=fabien0102\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-fabien0102\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#projectManagement-fabien0102\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/pulls?q=is%3Apr+reviewed-by%3Afabien0102\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mpotomin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/639406?v=4?s=100\" width=\"100px;\" alt=\"mpotomin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003empotomin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=mpotomin\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-mpotomin\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/pulls?q=is%3Apr+reviewed-by%3Ampotomin\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/micha-f\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/200647?v=4?s=100\" width=\"100px;\" alt=\"Michael Franzkowiak\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichael Franzkowiak\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=micha-f\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/SferaDev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2181866?v=4?s=100\" width=\"100px;\" alt=\"Alexis Rico\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexis Rico\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=SferaDev\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-SferaDev\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://ned.im/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/271912?v=4?s=100\" width=\"100px;\" alt=\"Nedim Arabacı\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNedim Arabacı\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-needim\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=needim\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-needim\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/antoniel\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17225358?v=4?s=100\" width=\"100px;\" alt=\"Antoniel Magalhães\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAntoniel Magalhães\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#example-antoniel\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/issues?q=author%3Aantoniel\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/DreierF\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5631865?v=4?s=100\" width=\"100px;\" alt=\"Florian Dreier\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFlorian Dreier\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=DreierF\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://fabianalthaus.de\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2795534?v=4?s=100\" width=\"100px;\" alt=\"Fabian Althaus\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFabian Althaus\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=el-j\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ci-vamp\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/116516277?v=4?s=100\" width=\"100px;\" alt=\"ci-vamp\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eci-vamp\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/issues?q=author%3Aci-vamp\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=ci-vamp\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://twitter.com/oalanoliv\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4368481?v=4?s=100\" width=\"100px;\" alt=\"Alan Oliveira\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlan Oliveira\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=alan-oliv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Cellule\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4157103?v=4?s=100\" width=\"100px;\" alt=\"Michael \u0026quot;Mike\u0026quot; Ferris\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichael \u0026quot;Mike\u0026quot; Ferris\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=Cellule\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rajzik\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10364836?v=4?s=100\" width=\"100px;\" alt=\"Jan Šilhan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJan Šilhan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/issues?q=author%3Arajzik\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=rajzik\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=rajzik\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dan-cooke\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22816887?v=4?s=100\" width=\"100px;\" alt=\"Daniel Cooke\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Cooke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/issues?q=author%3Adan-cooke\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=dan-cooke\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Kusmeroglu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1638544?v=4?s=100\" width=\"100px;\" alt=\"Linden Wright\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLinden Wright\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=Kusmeroglu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://tverdohleb.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/172711?v=4?s=100\" width=\"100px;\" alt=\"Valeriy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eValeriy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fabien0102/openapi-codegen/issues?q=author%3Atverdohleb\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/fabien0102/openapi-codegen/commits?author=tverdohleb\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-tverdohleb\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabien0102%2Fopenapi-codegen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabien0102%2Fopenapi-codegen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabien0102%2Fopenapi-codegen/lists"}