{"id":13469453,"url":"https://github.com/orval-labs/orval","last_synced_at":"2026-04-01T18:26:02.850Z","repository":{"id":36980981,"uuid":"238402553","full_name":"orval-labs/orval","owner":"orval-labs","description":"orval is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺","archived":false,"fork":false,"pushed_at":"2025-05-02T13:24:48.000Z","size":14391,"stargazers_count":3923,"open_issues_count":145,"forks_count":397,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-05-06T20:19:39.877Z","etag":null,"topics":["angular","axios-client","codegen","faker","mock","msw","openapi-specification","orval","react","react-query","swagger","typescript"],"latest_commit_sha":null,"homepage":"https://orval.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orval-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null},"funding":{"github":["anymaniax","melloware","soartec-lab"]}},"created_at":"2020-02-05T08:31:50.000Z","updated_at":"2025-05-06T14:47:24.000Z","dependencies_parsed_at":"2024-01-18T16:02:08.908Z","dependency_job_id":"35e409df-c789-4310-b898-8351d1fb7f2b","html_url":"https://github.com/orval-labs/orval","commit_stats":{"total_commits":1518,"total_committers":171,"mean_commits":8.87719298245614,"dds":0.422266139657444,"last_synced_commit":"47afdfaa77bd4ebf412614cd1f01965d849ec758"},"previous_names":["orval-labs/orval"],"tags_count":196,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orval-labs%2Forval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orval-labs%2Forval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orval-labs%2Forval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orval-labs%2Forval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orval-labs","download_url":"https://codeload.github.com/orval-labs/orval/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254027398,"owners_count":22002051,"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":["angular","axios-client","codegen","faker","mock","msw","openapi-specification","orval","react","react-query","swagger","typescript"],"created_at":"2024-07-31T15:01:40.687Z","updated_at":"2026-04-01T18:26:02.838Z","avatar_url":"https://github.com/orval-labs.png","language":"TypeScript","readme":"[![npm version](https://badge.fury.io/js/orval.svg)](https://badge.fury.io/js/orval)\n![NPM Downloads](https://img.shields.io/npm/dm/orval?color=purple)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![tests](https://github.com/orval-labs/orval/actions/workflows/tests.yaml/badge.svg)](https://github.com/orval-labs/orval/actions/workflows/tests.yaml)\n[![orval](https://snyk.io/advisor/npm-package/orval/badge.svg)](https://snyk.io/advisor/npm-package/orval)\n[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Orval%20Guru-006BFF)](https://gurubase.io/g/orval)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./logo/orval-logo-horizontal.svg?raw=true\" width=\"500\" height=\"160\" alt=\"orval - Restfull Client Generator\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n  Generate Typescript clients from OpenAPI specification!\n\u003c/h1\u003e\n\n### Code Generation\n\n`orval` generates type-safe JS clients (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in `yaml` or `json` formats.\n\n\u003e [!IMPORTANT]\n\u003e Version [8.0.0+](https://orval.dev/docs/versions/v8) comes with a lot of improvements and changes please see the [Migration Guide](https://orval.dev/docs/versions/v8)\n\n### Supported clients\n\n`generate` models, requests, hooks, [mocks](https://mswjs.io/) and more, for these supported clients:\n\n- [React](https://react.dev/)\n- [React Query](https://tanstack.com/query/latest/docs/framework/react/overview)\n- [React with swr](https://swr.vercel.app/)\n- [Vue Query](https://tanstack.com/query/latest/docs/framework/vue/overview)\n- [Svelte Query](https://tanstack.com/query/latest/docs/framework/svelte/overview)\n- [Solid Query](https://tanstack.com/query/latest/docs/framework/solid/overview)\n- [SolidStart](https://start.solidjs.com/)\n- [Angular](https://angular.dev/)\n- [Angular Query](https://tanstack.com/query/latest/docs/framework/angular/overview)\n- [Hono](https://hono.dev/)\n- [zod](https://zod.dev/)\n- [native fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\n- [mcp](https://modelcontextprotocol.io/introduction)\n\n### Samples\n\nYou can find some samples below:\n\n- [react app](https://github.com/orval-labs/orval/tree/master/samples/react-app)\n- [react query](https://github.com/orval-labs/orval/tree/master/samples/react-query)\n- [svelte query](https://github.com/orval-labs/orval/tree/master/samples/svelte-query)\n- [vue query](https://github.com/orval-labs/orval/tree/master/samples/vue-query)\n- [solid query](https://github.com/orval-labs/orval/tree/master/samples/solid-query)\n- [solid start](https://github.com/orval-labs/orval/tree/master/samples/solid-start)\n- [react app with swr](https://github.com/orval-labs/orval/tree/master/samples/react-app-with-swr)\n- [angular app](https://github.com/orval-labs/orval/tree/master/samples/angular-app)\n- [angular query](https://github.com/orval-labs/orval/tree/master/samples/angular-query)\n- [hono](https://github.com/orval-labs/orval/tree/master/samples/hono)\n- [next app with fetch](https://github.com/orval-labs/orval/tree/master/samples/next-app-with-fetch)\n- [mcp server](https://github.com/orval-labs/orval/tree/master/samples/mcp)\n\n### Playground\n\nTry Orval out for yourself using our [Playground](https://orval.dev/playground) application!\n\n## Developers\n\nThis project uses [Bun](https://bun.sh/) for package management and building. Bun [install guide](https://bun.sh/docs/installation).\n\n### Build Scripts\n\n- **`bun run nuke:all`** - Completely clean your workspace by removing all build artifacts, node_modules, and cached files. Use this when you want to start fresh.\n\n- **`bun run build`** - Build the project and make changes available to the workspace. Run this after making code changes to compile TypeScript and prepare the project for use.\n\n- **`bun run typecheck`** - Run TypeScript type checking across all packages.\n\n### Test Scripts\n\n- **`bun run test`** - Run unit tests in all packages.\n\n- **`bun run update-samples`** - Generate sample outputs using the newly built version of Orval. This regenerates the sample code based on the current build.\n\n- **`bun run test:samples`** - Run tests in the samples directory using the newly generated output from `update-samples`.\n\n- **`bun run test:snapshots`** - Run snapshot tests to verify generated sample outputs match the committed snapshots. Fails if any generated file differs from its snapshot.\n\n- **`bun run test:snapshots:update`** - Regenerate snapshot files to match the current generated output. Run this after `bun run update-samples` when the generated output has intentionally changed.\n\n- **`bun run test:cli`** - Test that the generated output (not samples) is valid TypeScript. This validates the TypeScript compilation of the generated code.\n\n### Development Workflow\n\nA typical development workflow would be:\n\n1. Make your code changes\n2. Run `bun run build` to compile your changes\n3. Run `bun run typecheck` to verify package typings\n4. Run `bun run lint` to catch lint issues early\n5. Run `bun run test` to run unit tests in packages\n6. Run `bun run test:snapshots` to verify generated output matches snapshots\n\nIf step 6 fails because the generated output has intentionally changed, run `bun run test:snapshots:update` to update the snapshots.\n\nIf you encounter issues or want to start completely fresh:\n\n1. Run `bun run nuke:all` to clean everything\n2. Reinstall dependencies and rebuild from scratch\n\n## Sponsors\n\nThank you to all our sponsors! 🍻\n\nSupport orval development by [Open Collective](https://opencollective.com/orval) and your logo will be displayed here with a link to your website.\n\n\u003ca href=\"https://opencollective.com/orval\"\u003e\n  \u003cimg src=\"https://orval.dev/images/orval-logo-horizontal.svg?raw=true\" width=\"300\" alt=\"Become a sponsor\" /\u003e\n\u003c/a\u003e\n\n## Backers\n\nThank you to all our backers! 🙏\n\nSupport us with a one-time donation and help us continue our activities on [Open Collective](https://opencollective.com/orval).\n\n\u003ca href=\"https://opencollective.com/orval\"\u003e\n  \u003cimg src=\"https://orval.dev/images/emblem.svg\" width=\"50\" height=\"50\" alt=\"Backer\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/orval\"\u003e\n  \u003cimg src=\"https://orval.dev/images/emblem.svg\" width=\"50\" height=\"50\" alt=\"Backer\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/orval\"\u003e\n  \u003cimg src=\"https://orval.dev/images/emblem.svg\" width=\"50\" height=\"50\" alt=\"Backer\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/tatsuya-asami\"\u003e\n  \u003cimg src=\"https://github.com/tatsuya-asami.png\" width=\"50\" height=\"50\" alt=\"tatsuya-asami\" /\u003e\n\u003c/a\u003e\n\n**Note:** After becoming a sponsor or backer, please contact us on [Discord](https://discord.gg/6fC2sjDU7w) to upload your logo.\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#orval-labs/orval\u0026Date\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=orval-labs/orval\u0026type=Date\u0026theme=dark\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=orval-labs/orval\u0026type=Date\" /\u003e\n    \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=orval-labs/orval\u0026type=Date\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n### All Thanks To Our Contributors:\n\n\u003ca href=\"https://github.com/orval-labs/orval/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=anymaniax/orval\" /\u003e\n\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/anymaniax","https://github.com/sponsors/melloware","https://github.com/sponsors/soartec-lab","https://opencollective.com/orval"],"categories":["TypeScript","angular","HarmonyOS","Developer Tools","Development Utilities"],"sub_categories":["Windows Manager","How to Submit","Generators and Scaffolding"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forval-labs%2Forval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forval-labs%2Forval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forval-labs%2Forval/lists"}