![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | Parent Directory | - | ||
![]() | src/ | 10 months ago | - | |
![]() | node_modules/ | 10 months ago | - | |
![]() | dist/ | 10 months ago | - | |
![]() | bin/ | 10 months ago | - | |
![]() | tsconfig.json | 10 months ago | 236 | 595aea1 more query options + view options [كارل مبارك] |
![]() | tsconfig.build.json | 10 months ago | 160 | |
![]() | package.json | 10 months ago | 2.2K | afd0ccc remove unused [كارل مبارك] |
![]() | README.md | 10 months ago | 3.3K | 595aea1 more query options + view options [كارل مبارك] |
![]() | LICENSE | 10 months ago | 1.0K | |
![]() | CONTRIBUTING.md | 10 months ago | 6.9K | |
![]() | CHANGELOG.md | 10 months ago | 32K |
openapi-typescript generates TypeScript types from static OpenAPI schemas quickly using only Node.js. It is fast, lightweight, (almost) dependency-free, and no Java/node-gyp/running OpenAPI servers necessary.
The code is MIT-licensed and free for use.
This library requires the latest version of Node.js installed (20.x or higher recommended). With that present, run the following in your project:
npm i -D openapi-typescript
✨ Tip
Enabling noUncheckedIndexedAccess in
tsconfig.json
can go along way to improve type safety (read more)
First, generate a local type file by running npx openapi-typescript
:
# Local schema
npx openapi-typescript ./path/to/my/schema.yaml -o ./path/to/my/schema.d.ts
# 🚀 ./path/to/my/schema.yaml -> ./path/to/my/schema.d.ts [7ms]
# Remote schema
npx openapi-typescript https://myapi.dev/api/v1/openapi.yaml -o ./path/to/my/schema.d.ts
# 🚀 https://myapi.dev/api/v1/openapi.yaml -> ./path/to/my/schema.d.ts [250ms]
⚠️ Be sure to validate your schemas! openapi-typescript will err on invalid schemas.
Then, import schemas from the generated file like so:
import { paths, components } from "./path/to/my/schema"; // <- generated by openapi-typescript
// Schema Obj
type MyType = components["schemas"]["MyType"];
// Path params
type EndpointParams = paths["/my/endpoint"]["parameters"];
// Response obj
type SuccessResponse = paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"];
type ErrorResponse = paths["/my/endpoint"]["get"]["responses"][500]["content"]["application/json"]["schema"];
npx openapi-typescript "specs/**/*.yaml" --output schemas/
# 🚀 specs/one.yaml -> schemas/specs/one.ts [7ms]
# 🚀 specs/two.yaml -> schemas/specs/two.ts [7ms]
# 🚀 specs/three.yaml -> schemas/specs/three.ts [7ms]
Thanks, @sharmarajdaksh!
npx openapi-typescript https://petstore3.swagger.io/api/v3/openapi.yaml --output petstore.d.ts
# 🚀 https://petstore3.swagger.io/api/v3/openapi.yaml -> petstore.d.ts [250ms]
Thanks, @psmyrdek!